Qwt User's Guide 5.2.2

qwt_plot.h

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