/* -*- 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_LAYOUT_H #define QWT_PLOT_LAYOUT_H #include "qwt_global.h" #include "qwt_plot.h" /*! \brief Layout engine for QwtPlot. It is used by the QwtPlot widget to organize its internal widgets or by QwtPlot::print() to render its content to a QPaintDevice like a QPrinter, QPixmap/QImage or QSvgRenderer. */ class QWT_EXPORT QwtPlotLayout { public: /*! Options to configure the plot layout engine - AlignScales\n Unused - IgnoreScrollbars\n Ignore the dimension of the scrollbars. There are no scrollbars, when the plot is rendered to a paint device (QwtPlot::print() ). - IgnoreFrames\n Ignore all frames. QwtPlot::print() doesn't paint them. - IgnoreMargin\n Ignore the margin(). - IgnoreLegend\n Ignore the legend. \sa activate() */ enum Options { AlignScales = 1, IgnoreScrollbars = 2, IgnoreFrames = 4, IgnoreMargin = 8, IgnoreLegend = 16 }; explicit QwtPlotLayout(); virtual ~QwtPlotLayout(); void setMargin(int); int margin() const; void setCanvasMargin(int margin, int axis = -1); int canvasMargin(int axis) const; void setAlignCanvasToScales(bool); bool alignCanvasToScales() const; void setSpacing(int); int spacing() const; void setLegendPosition(QwtPlot::LegendPosition pos, double ratio); void setLegendPosition(QwtPlot::LegendPosition pos); QwtPlot::LegendPosition legendPosition() const; void setLegendRatio(double ratio); double legendRatio() const; virtual QSize minimumSizeHint(const QwtPlot *) const; virtual void activate(const QwtPlot *, const QRect &rect, int options = 0); virtual void invalidate(); const QRect &titleRect() const; const QRect &legendRect() const; const QRect &scaleRect(int axis) const; const QRect &canvasRect() const; class LayoutData; protected: QRect layoutLegend(int options, const QRect &) const; QRect alignLegend(const QRect &canvasRect, const QRect &legendRect) const; void expandLineBreaks(int options, const QRect &rect, int &dimTitle, int dimAxes[QwtPlot::axisCnt]) const; void alignScales(int options, QRect &canvasRect, QRect scaleRect[QwtPlot::axisCnt]) const; private: class PrivateData; PrivateData *d_data; }; #endif