diff options
Diffstat (limited to 'src/libpcp_qwt/src/qwt_plot_renderer.h')
-rw-r--r-- | src/libpcp_qwt/src/qwt_plot_renderer.h | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/src/libpcp_qwt/src/qwt_plot_renderer.h b/src/libpcp_qwt/src/qwt_plot_renderer.h new file mode 100644 index 0000000..f79146a --- /dev/null +++ b/src/libpcp_qwt/src/qwt_plot_renderer.h @@ -0,0 +1,154 @@ +/* -*- mode: C++ ; c-file-style: "stroustrup" -*- ***************************** + * Qwt Widget Library + * Copyright (C) 1997 Josef Wilgen + * Copyright (C) 2002 Uwe Rathmann + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the Qwt License, Version 1.0 + *****************************************************************************/ + +#ifndef QWT_PLOT_RENDERER_H +#define QWT_PLOT_RENDERER_H + +#include "qwt_global.h" +#include <qobject.h> + +class QwtPlot; +class QwtScaleMap; +class QSizeF; +class QRectF; +class QPainter; +class QPaintDevice; + +#ifndef QT_NO_PRINTER +class QPrinter; +#endif + +#ifndef QWT_NO_SVG +#ifdef QT_SVG_LIB +class QSvgGenerator; +#endif +#endif + +/*! + \brief Renderer for exporting a plot to a document, a printer + or anything else, that is supported by QPainter/QPaintDevice +*/ +class QWT_EXPORT QwtPlotRenderer: public QObject +{ + Q_OBJECT + +public: + //! Disard flags + enum DiscardFlag + { + //! Render all components of the plot + DiscardNone = 0x00, + + //! Don't render the background of the plot + DiscardBackground = 0x01, + + //! Don't render the title of the plot + DiscardTitle = 0x02, + + //! Don't render the legend of the plot + DiscardLegend = 0x04, + + //! Don't render the background of the canvas + DiscardCanvasBackground = 0x08 + }; + + //! Disard flags + typedef QFlags<DiscardFlag> DiscardFlags; + + /*! + \brief Layout flags + \sa setLayoutFlag(), testLayoutFlag() + */ + enum LayoutFlag + { + //! Use the default layout without margins and frames + DefaultLayout = 0x00, + + //! Render all frames of the plot + KeepFrames = 0x01, + + /*! + Instead of the scales a box is painted around the plot canvas, + where the scale ticks are aligned to. + */ + FrameWithScales = 0x02 + }; + + //! Layout flags + typedef QFlags<LayoutFlag> LayoutFlags; + + explicit QwtPlotRenderer( QObject * = NULL ); + virtual ~QwtPlotRenderer(); + + void setDiscardFlag( DiscardFlag flag, bool on = true ); + bool testDiscardFlag( DiscardFlag flag ) const; + + void setDiscardFlags( DiscardFlags flags ); + DiscardFlags discardFlags() const; + + void setLayoutFlag( LayoutFlag flag, bool on = true ); + bool testLayoutFlag( LayoutFlag flag ) const; + + void setLayoutFlags( LayoutFlags flags ); + LayoutFlags layoutFlags() const; + + void renderDocument( QwtPlot *, const QString &fileName, + const QSizeF &sizeMM, int resolution = 85 ); + + void renderDocument( QwtPlot *, + const QString &fileName, const QString &format, + const QSizeF &sizeMM, int resolution = 85 ); + +#ifndef QWT_NO_SVG +#ifdef QT_SVG_LIB +#if QT_VERSION >= 0x040500 + void renderTo( QwtPlot *, QSvgGenerator & ) const; +#endif +#endif +#endif + +#ifndef QT_NO_PRINTER + void renderTo( QwtPlot *, QPrinter & ) const; +#endif + + void renderTo( QwtPlot *, QPaintDevice &p ) const; + + virtual void render( QwtPlot *, + QPainter *, const QRectF &rect ) const; + + virtual void renderLegendItem( const QwtPlot *, + QPainter *, const QWidget *, const QRectF & ) const; + + virtual void renderTitle( const QwtPlot *, + QPainter *, const QRectF & ) const; + + virtual void renderScale( const QwtPlot *, QPainter *, + int axisId, int startDist, int endDist, + int baseDist, const QRectF & ) const; + + virtual void renderCanvas( const QwtPlot *, + QPainter *, const QRectF &canvasRect, + const QwtScaleMap* maps ) const; + + virtual void renderLegend( + const QwtPlot *, QPainter *, const QRectF & ) const; + +protected: + void buildCanvasMaps( const QwtPlot *, + const QRectF &, QwtScaleMap maps[] ) const; + +private: + class PrivateData; + PrivateData *d_data; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS( QwtPlotRenderer::DiscardFlags ) +Q_DECLARE_OPERATORS_FOR_FLAGS( QwtPlotRenderer::LayoutFlags ) + +#endif |