00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_PLOT_H
00011 #define QWT_PLOT_H
00012
00013 #include "qwt_global.h"
00014 #include "qwt_text.h"
00015 #include "qwt_plot_dict.h"
00016 #include "qwt_scale_map.h"
00017 #include "qwt_plot_printfilter.h"
00018 #include <qframe.h>
00019
00020 class QwtPlotLayout;
00021 class QwtLegend;
00022 class QwtScaleWidget;
00023 class QwtScaleEngine;
00024 class QwtScaleDiv;
00025 class QwtScaleDraw;
00026 class QwtTextLabel;
00027 class QwtPlotCanvas;
00028 class QwtPlotPrintFilter;
00029
00071 class QWT_EXPORT QwtPlot: public QFrame, public QwtPlotDict
00072 {
00073 Q_OBJECT
00074 Q_PROPERTY( QString propertiesDocument
00075 READ grabProperties WRITE applyProperties )
00076
00077 public:
00086 enum Axis
00087 {
00088 yLeft,
00089 yRight,
00090 xBottom,
00091 xTop,
00092
00093 axisCnt
00094 };
00095
00118 enum LegendPosition
00119 {
00120 LeftLegend,
00121 RightLegend,
00122 BottomLegend,
00123 TopLegend,
00124
00125 ExternalLegend
00126 };
00127
00128 explicit QwtPlot(QWidget * = NULL);
00129 explicit QwtPlot(const QwtText &title, QWidget *p = NULL);
00130
00131 virtual ~QwtPlot();
00132
00133 void applyProperties(const QString &);
00134 QString grabProperties() const;
00135
00136 void setAutoReplot(bool tf = true);
00137 bool autoReplot() const;
00138
00139 void print(QPaintDevice &p,
00140 const QwtPlotPrintFilter & = QwtPlotPrintFilter()) const;
00141 virtual void print(QPainter *, const QRectF &rect,
00142 const QwtPlotPrintFilter & = QwtPlotPrintFilter()) const;
00143
00144
00145
00146 QwtPlotLayout *plotLayout();
00147 const QwtPlotLayout *plotLayout() const;
00148
00149 void setMargin(int margin);
00150 int margin() const;
00151
00152
00153
00154 void setTitle(const QString &);
00155 void setTitle(const QwtText &t);
00156 QwtText title() const;
00157
00158 QwtTextLabel *titleLabel();
00159 const QwtTextLabel *titleLabel() const;
00160
00161
00162
00163 QwtPlotCanvas *canvas();
00164 const QwtPlotCanvas *canvas() const;
00165
00166 void setCanvasBackground (const QColor &c);
00167 const QColor& canvasBackground() const;
00168
00169 void setCanvasLineWidth(int w);
00170 int canvasLineWidth() const;
00171
00172 virtual QwtScaleMap canvasMap(int axisId) const;
00173
00174 double invTransform(int axisId, int pos) const;
00175 int transform(int axisId, double value) const;
00176
00177
00178
00179 QwtScaleEngine *axisScaleEngine(int axisId);
00180 const QwtScaleEngine *axisScaleEngine(int axisId) const;
00181 void setAxisScaleEngine(int axisId, QwtScaleEngine *);
00182
00183 void setAxisAutoScale(int axisId);
00184 bool axisAutoScale(int axisId) const;
00185
00186 void enableAxis(int axisId, bool tf = true);
00187 bool axisEnabled(int axisId) const;
00188
00189 void setAxisFont(int axisId, const QFont &f);
00190 QFont axisFont(int axisId) const;
00191
00192 void setAxisScale(int axisId, double min, double max, double step = 0);
00193 void setAxisScaleDiv(int axisId, const QwtScaleDiv &);
00194 void setAxisScaleDraw(int axisId, QwtScaleDraw *);
00195
00196 double axisStepSize(int axisId) const;
00197
00198 const QwtScaleDiv *axisScaleDiv(int axisId) const;
00199 QwtScaleDiv *axisScaleDiv(int axisId);
00200
00201 const QwtScaleDraw *axisScaleDraw(int axisId) const;
00202 QwtScaleDraw *axisScaleDraw(int axisId);
00203
00204 const QwtScaleWidget *axisWidget(int axisId) const;
00205 QwtScaleWidget *axisWidget(int axisId);
00206
00207 void setAxisLabelAlignment(int axisId, Qt::Alignment);
00208 void setAxisLabelRotation(int axisId, double rotation);
00209
00210 void setAxisTitle(int axisId, const QString &);
00211 void setAxisTitle(int axisId, const QwtText &);
00212 QwtText axisTitle(int axisId) const;
00213
00214 void setAxisMaxMinor(int axisId, int maxMinor);
00215 int axisMaxMajor(int axisId) const;
00216 void setAxisMaxMajor(int axisId, int maxMajor);
00217 int axisMaxMinor(int axisId) const;
00218
00219
00220
00221 void insertLegend(QwtLegend *, LegendPosition = QwtPlot::RightLegend,
00222 double ratio = -1.0);
00223
00224 QwtLegend *legend();
00225 const QwtLegend *legend() const;
00226
00227
00228
00229 virtual void polish();
00230 virtual QSize sizeHint() const;
00231 virtual QSize minimumSizeHint() const;
00232
00233 virtual void updateLayout();
00234 virtual void drawCanvas(QPainter *);
00235
00236 void updateAxes();
00237
00238 virtual bool event(QEvent *);
00239
00240 Q_SIGNALS:
00251 void legendClicked(QwtPlotItem *plotItem);
00252
00265 void legendChecked(QwtPlotItem *plotItem, bool on);
00266
00267 public Q_SLOTS:
00268 virtual void clear();
00269
00270 virtual void replot();
00271 void autoRefresh();
00272
00273 protected Q_SLOTS:
00274 virtual void legendItemClicked();
00275 virtual void legendItemChecked(bool);
00276
00277 protected:
00278 static bool axisValid(int axisId);
00279
00280 virtual void drawItems(QPainter *, const QRectF &,
00281 const QwtScaleMap maps[axisCnt],
00282 const QwtPlotPrintFilter &) const;
00283
00284 virtual void updateTabOrder();
00285
00286 virtual void resizeEvent(QResizeEvent *e);
00287
00288 virtual void printLegendItem(QPainter *,
00289 const QWidget *, const QRectF &) const;
00290
00291 virtual void printTitle(QPainter *, const QRectF &) const;
00292
00293 virtual void printScale(QPainter *, int axisId, int startDist, int endDist,
00294 int baseDist, const QRectF &) const;
00295
00296 virtual void printCanvas(QPainter *, const QRectF &canvasRect,
00297 const QwtScaleMap maps[axisCnt], const QwtPlotPrintFilter &) const;
00298
00299 virtual void printLegend(QPainter *, const QRectF &) const;
00300
00301 private:
00302 void initAxesData();
00303 void deleteAxesData();
00304 void updateScaleDiv();
00305
00306 void initPlot(const QwtText &title);
00307
00308 class AxisData;
00309 AxisData *d_axisData[axisCnt];
00310
00311 class PrivateData;
00312 PrivateData *d_data;
00313 };
00314
00315 #endif