00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_PLOT_RASTERITEM_H
00011 #define QWT_PLOT_RASTERITEM_H
00012
00013 #include "qwt_global.h"
00014 #include "qwt_plot_item.h"
00015 #include "qwt_interval.h"
00016 #include <qglobal.h>
00017 #include <qstring.h>
00018 #include <qimage.h>
00019
00037 class QWT_EXPORT QwtPlotRasterItem: public QwtPlotItem
00038 {
00039 public:
00052 enum CachePolicy
00053 {
00054 NoCache,
00055 PaintCache
00056 };
00057
00062 enum PaintAttribute
00063 {
00076 PaintInDeviceResolution = 1
00077 };
00078
00080 typedef QFlags<PaintAttribute> PaintAttributes;
00081
00082 explicit QwtPlotRasterItem( const QString& title = QString::null );
00083 explicit QwtPlotRasterItem( const QwtText& title );
00084 virtual ~QwtPlotRasterItem();
00085
00086 void setPaintAttribute( PaintAttribute, bool on = true );
00087 bool testPaintAttribute( PaintAttribute ) const;
00088
00089 void setAlpha( int alpha );
00090 int alpha() const;
00091
00092 void setCachePolicy( CachePolicy );
00093 CachePolicy cachePolicy() const;
00094
00095 void invalidateCache();
00096
00097 virtual void draw( QPainter *p,
00098 const QwtScaleMap &xMap, const QwtScaleMap &yMap,
00099 const QRectF &rect ) const;
00100
00101 virtual QRectF pixelHint( const QRectF & ) const;
00102
00103 virtual QwtInterval interval(Qt::Axis) const;
00104 virtual QRectF boundingRect() const;
00105
00106 protected:
00121 virtual QImage renderImage( const QwtScaleMap &xMap,
00122 const QwtScaleMap &yMap, const QRectF &area,
00123 const QSize &imageSize ) const = 0;
00124
00125 virtual QwtScaleMap imageMap( Qt::Orientation,
00126 const QwtScaleMap &map, const QRectF &area,
00127 const QSize &imageSize, double pixelSize) const;
00128
00129 private:
00130 QwtPlotRasterItem( const QwtPlotRasterItem & );
00131 QwtPlotRasterItem &operator=( const QwtPlotRasterItem & );
00132
00133 void init();
00134
00135 QImage compose( const QwtScaleMap &, const QwtScaleMap &,
00136 const QRectF &imageArea, const QRectF &paintRect,
00137 const QSize &imageSize, bool doCache) const;
00138
00139
00140 class PrivateData;
00141 PrivateData *d_data;
00142 };
00143
00144 Q_DECLARE_OPERATORS_FOR_FLAGS( QwtPlotRasterItem::PaintAttributes )
00145
00146 #endif