00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_PLOT_LAYOUT_H
00011 #define QWT_PLOT_LAYOUT_H
00012
00013 #include <qlayout.h>
00014 #include "qwt_global.h"
00015 #include "qwt_plot.h"
00016
00017 class QwtPlotLayoutData;
00018
00025 class QWT_EXPORT QwtPlotLayout
00026 {
00027 public:
00028 enum Options
00029 {
00030 AlignScales = 1,
00031 IgnoreScrollbars = 2,
00032 IgnoreFrames = 4,
00033 IgnoreMargin = 8,
00034 IgnoreLegend = 16
00035 };
00036
00037 QwtPlotLayout();
00038 virtual ~QwtPlotLayout();
00039
00040 void setMargin(int);
00041 int margin() const;
00042
00043 void setCanvasMargin(int margin, int axis = -1);
00044 int canvasMargin(int axis) const;
00045
00046 void setAlignCanvasToScales(bool);
00047 bool alignCanvasToScales() const;
00048
00049 void setSpacing(int);
00050 int spacing() const;
00051
00052 void setLegendPosition(QwtPlot::Position pos, double ratio);
00053 void setLegendPosition(QwtPlot::Position pos);
00054 QwtPlot::Position legendPosition() const;
00055
00056 void setLegendRatio(double ratio);
00057 double legendRatio() const;
00058
00059 #ifndef QWT_NO_COMPAT
00060
00061 void setLegendPos(int pos, double ratio = 0.0);
00062 int legendPos() const;
00063 #endif
00064
00065 virtual QSize minimumSizeHint(const QwtPlot *) const;
00066
00067 virtual void activate(const QwtPlot *,
00068 const QRect &rect, int options = 0);
00069
00070 virtual void invalidate();
00071
00072 const QRect &titleRect() const;
00073 const QRect &legendRect() const;
00074 const QRect &scaleRect(int axis) const;
00075 const QRect &canvasRect() const;
00076
00077 protected:
00078
00079 QRect layoutLegend(int options, const QRect &) const;
00080 QRect alignLegend(const QRect &canvasRect,
00081 const QRect &legendRect) const;
00082
00083 void expandLineBreaks(int options, const QRect &rect,
00084 int &dimTitle, int dimAxes[QwtPlot::axisCnt]) const;
00085
00086 void alignScales(int options, QRect &canvasRect,
00087 QRect scaleRect[QwtPlot::axisCnt]) const;
00088
00089 QRect d_titleRect;
00090 QRect d_legendRect;
00091 QRect d_scaleRect[QwtPlot::axisCnt];
00092 QRect d_canvasRect;
00093
00094 QwtPlotLayoutData *d_layoutData;
00095
00096 private:
00097 QwtPlot::Position d_legendPos;
00098 double d_legendRatio;
00099 unsigned int d_margin;
00100 unsigned int d_spacing;
00101 unsigned int d_canvasMargin[QwtPlot::axisCnt];
00102 bool d_alignCanvasToScales;
00103 };
00104
00105 #endif