Qwt User's Guide
svn
|
00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- ***************************** 00002 * Qwt Widget Library 00003 * Copyright (C) 1997 Josef Wilgen 00004 * Copyright (C) 2002 Uwe Rathmann 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the Qwt License, Version 1.0 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