00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_RASTER_DATA_H
00011 #define QWT_RASTER_DATA_H 1
00012
00013 #include "qwt_global.h"
00014 #include "qwt_interval.h"
00015 #include <qmap.h>
00016 #include <qlist.h>
00017 #include <qpolygon.h>
00018
00019 class QwtScaleMap;
00020
00032 class QWT_EXPORT QwtRasterData
00033 {
00034 public:
00036 typedef QMap<double, QPolygonF> ContourLines;
00037
00039 enum ConrecFlag
00040 {
00042 IgnoreAllVerticesOnLevel = 0x01,
00043
00045 IgnoreOutOfRange = 0x02
00046 };
00047
00049 typedef QFlags<ConrecFlag> ConrecFlags;
00050
00051 QwtRasterData();
00052 virtual ~QwtRasterData();
00053
00054 virtual void setInterval( Qt::Axis, const QwtInterval & );
00055 const QwtInterval &interval(Qt::Axis) const;
00056
00057 virtual QRectF pixelHint( const QRectF & ) const;
00058
00059 virtual void initRaster( const QRectF &, const QSize& raster );
00060 virtual void discardRaster();
00061
00067 virtual double value( double x, double y ) const = 0;
00068
00069 virtual ContourLines contourLines( const QRectF &rect,
00070 const QSize &raster, const QList<double> &levels,
00071 ConrecFlags ) const;
00072
00073 class Contour3DPoint;
00074 class ContourPlane;
00075
00076 private:
00077
00078 QwtRasterData( const QwtRasterData & );
00079 QwtRasterData &operator=( const QwtRasterData & );
00080
00081 QwtInterval d_intervals[3];
00082 };
00083
00088 inline const QwtInterval &QwtRasterData::interval( Qt::Axis axis) const
00089 {
00090 return d_intervals[axis];
00091 }
00092
00093 Q_DECLARE_OPERATORS_FOR_FLAGS( QwtRasterData::ConrecFlags )
00094
00095 #endif