Qwt User's Guide svn
qwt_plot_canvas.h
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
qmi style