00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_PLOT_RENDERER_H
00011 #define QWT_PLOT_RENDERER_H
00012
00013 #include "qwt_global.h"
00014 #include <qobject.h>
00015
00016 class QwtPlot;
00017 class QwtScaleMap;
00018 class QSizeF;
00019 class QRectF;
00020 class QPainter;
00021 class QPaintDevice;
00022
00023 #ifndef QT_NO_PRINTER
00024 class QPrinter;
00025 #endif
00026
00027 #ifndef QWT_NO_SVG
00028 #ifdef QT_SVG_LIB
00029 class QSvgGenerator;
00030 #endif
00031 #endif
00032
00037 class QWT_EXPORT QwtPlotRenderer: public QObject
00038 {
00039 Q_OBJECT
00040
00041 public:
00043 enum DiscardFlag
00044 {
00046 DiscardNone = 0x00,
00047
00049 DiscardBackground = 0x01,
00050
00052 DiscardTitle = 0x02,
00053
00055 DiscardLegend = 0x04,
00056
00058 DiscardCanvasBackground = 0x08
00059 };
00060
00062 typedef QFlags<DiscardFlag> DiscardFlags;
00063
00068 enum LayoutFlag
00069 {
00071 DefaultLayout = 0x00,
00072
00074 KeepFrames = 0x01,
00075
00080 FrameWithScales = 0x02
00081 };
00082
00084 typedef QFlags<LayoutFlag> LayoutFlags;
00085
00086 explicit QwtPlotRenderer( QObject * = NULL );
00087 virtual ~QwtPlotRenderer();
00088
00089 void setDiscardFlag( DiscardFlag flag, bool on = true );
00090 bool testDiscardFlag( DiscardFlag flag ) const;
00091
00092 void setDiscardFlags( DiscardFlags flags );
00093 DiscardFlags discardFlags() const;
00094
00095 void setLayoutFlag( LayoutFlag flag, bool on = true );
00096 bool testLayoutFlag( LayoutFlag flag ) const;
00097
00098 void setLayoutFlags( LayoutFlags flags );
00099 LayoutFlags layoutFlags() const;
00100
00101 void renderDocument( QwtPlot *, const QString &format,
00102 const QSizeF &sizeMM, int resolution = 85 );
00103
00104 void renderDocument( QwtPlot *,
00105 const QString &title, const QString &format,
00106 const QSizeF &sizeMM, int resolution = 85 );
00107
00108 #ifndef QWT_NO_SVG
00109 #ifdef QT_SVG_LIB
00110 #if QT_VERSION >= 0x040500
00111 void renderTo( QwtPlot *, QSvgGenerator & ) const;
00112 #endif
00113 #endif
00114 #endif
00115
00116 #ifndef QT_NO_PRINTER
00117 void renderTo( QwtPlot *, QPrinter & ) const;
00118 #endif
00119
00120 void renderTo( QwtPlot *, QPaintDevice &p ) const;
00121
00122 virtual void render( QwtPlot *,
00123 QPainter *, const QRectF &rect ) const;
00124
00125 virtual void renderLegendItem( const QwtPlot *,
00126 QPainter *, const QWidget *, const QRectF & ) const;
00127
00128 virtual void renderTitle( const QwtPlot *,
00129 QPainter *, const QRectF & ) const;
00130
00131 virtual void renderScale( const QwtPlot *, QPainter *,
00132 int axisId, int startDist, int endDist,
00133 int baseDist, const QRectF & ) const;
00134
00135 virtual void renderCanvas( const QwtPlot *,
00136 QPainter *, const QRectF &canvasRect,
00137 const QwtScaleMap* maps ) const;
00138
00139 virtual void renderLegend(
00140 const QwtPlot *, QPainter *, const QRectF & ) const;
00141
00142 protected:
00143 void buildCanvasMaps( const QwtPlot *,
00144 const QRectF &, QwtScaleMap maps[] ) const;
00145
00146 private:
00147 class PrivateData;
00148 PrivateData *d_data;
00149 };
00150
00151 Q_DECLARE_OPERATORS_FOR_FLAGS( QwtPlotRenderer::DiscardFlags )
00152 Q_DECLARE_OPERATORS_FOR_FLAGS( QwtPlotRenderer::LayoutFlags )
00153
00154 #endif