You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
170 lines
4.4 KiB
170 lines
4.4 KiB
/* -*- 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> |
|
#include <qsize.h> |
|
|
|
class QwtPlot; |
|
class QwtScaleMap; |
|
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, |
|
|
|
//! Don't render the footer of the plot |
|
DiscardFooter = 0x10, |
|
|
|
/*! |
|
Don't render the frame of the canvas |
|
|
|
\note This flag has no effect when using |
|
style sheets, where the frame is part |
|
of the background |
|
*/ |
|
DiscardCanvasFrame = 0x20 |
|
|
|
}; |
|
|
|
//! Disard flags |
|
typedef QFlags<DiscardFlag> DiscardFlags; |
|
|
|
/*! |
|
\brief Layout flags |
|
\sa setLayoutFlag(), testLayoutFlag() |
|
*/ |
|
enum LayoutFlag |
|
{ |
|
//! Use the default layout as on screen |
|
DefaultLayout = 0x00, |
|
|
|
/*! |
|
Instead of the scales a box is painted around the plot canvas, |
|
where the scale ticks are aligned to. |
|
*/ |
|
FrameWithScales = 0x01 |
|
}; |
|
|
|
//! 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 renderTitle( const QwtPlot *, |
|
QPainter *, const QRectF & ) const; |
|
|
|
virtual void renderFooter( 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; |
|
|
|
bool exportTo( QwtPlot *, const QString &documentName, |
|
const QSizeF &sizeMM = QSizeF( 300, 200 ), int resolution = 85 ); |
|
|
|
private: |
|
void buildCanvasMaps( const QwtPlot *, |
|
const QRectF &, QwtScaleMap maps[] ) const; |
|
|
|
bool updateCanvasMargins( QwtPlot *, |
|
const QRectF &, const QwtScaleMap maps[] ) const; |
|
|
|
private: |
|
class PrivateData; |
|
PrivateData *d_data; |
|
}; |
|
|
|
Q_DECLARE_OPERATORS_FOR_FLAGS( QwtPlotRenderer::DiscardFlags ) |
|
Q_DECLARE_OPERATORS_FOR_FLAGS( QwtPlotRenderer::LayoutFlags ) |
|
|
|
#endif
|
|
|