00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_PLOT_CANVAS_H
00011 #define QWT_PLOT_CANVAS_H
00012
00013 #include "qwt_global.h"
00014 #include <qframe.h>
00015 #include <qpen.h>
00016 #include <qpainterpath.h>
00017 #include <qbitmap.h>
00018
00019 class QwtPlot;
00020 class QPixmap;
00021
00026 class QWT_EXPORT QwtPlotCanvas : public QFrame
00027 {
00028 Q_OBJECT
00029
00030 public:
00031
00039 enum PaintAttribute
00040 {
00052 BackingStore = 1,
00053
00069 Opaque = 2,
00070
00086 HackStyledBackground = 4,
00087
00094 ImmediatePaint = 8
00095 };
00096
00098 typedef QFlags<PaintAttribute> PaintAttributes;
00099
00118 enum FocusIndicator
00119 {
00120 NoFocusIndicator,
00121 CanvasFocusIndicator,
00122 ItemFocusIndicator
00123 };
00124
00125 explicit QwtPlotCanvas( QwtPlot * );
00126 virtual ~QwtPlotCanvas();
00127
00128 QwtPlot *plot();
00129 const QwtPlot *plot() const;
00130
00131 void setFocusIndicator( FocusIndicator );
00132 FocusIndicator focusIndicator() const;
00133
00134 void setBorderRadius( double );
00135 double borderRadius() const;
00136
00137 QPainterPath borderPath( const QRect &rect ) const;
00138 QBitmap borderMask( const QSize & ) const;
00139
00140 void setPaintAttribute( PaintAttribute, bool on = true );
00141 bool testPaintAttribute( PaintAttribute ) const;
00142
00143 const QPixmap *backingStore() const;
00144 void invalidateBackingStore();
00145
00146 void replot();
00147
00148 virtual bool event( QEvent * );
00149
00150 protected:
00151 virtual void paintEvent( QPaintEvent * );
00152 virtual void resizeEvent( QResizeEvent * );
00153
00154 virtual void drawFocusIndicator( QPainter * );
00155 virtual void drawBorder( QPainter * );
00156
00157 void updateStyleSheetInfo();
00158
00159 private:
00160 void drawCanvas( QPainter *, bool withBackground );
00161
00162 class PrivateData;
00163 PrivateData *d_data;
00164 };
00165
00166 Q_DECLARE_OPERATORS_FOR_FLAGS( QwtPlotCanvas::PaintAttributes )
00167
00168 #endif