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 
00077 class QWT_EXPORT QwtPlot: public QFrame, public QwtPlotDict
00078 {
00079     friend class QwtPlotCanvas;
00080 
00081     Q_OBJECT
00082     Q_PROPERTY( QString propertiesDocument 
00083         READ grabProperties WRITE applyProperties )
00084 
00085 public:
00087     enum Axis 
00088     { 
00089         yLeft, 
00090         yRight, 
00091         xBottom, 
00092         xTop, 
00093 
00094         axisCnt 
00095     };
00096 
00105     enum LegendPosition 
00106     {
00107         LeftLegend,
00108         RightLegend,
00109         BottomLegend,
00110         TopLegend,
00111         
00112         ExternalLegend
00113     };
00114 
00115     explicit QwtPlot(QWidget * = NULL);
00116     explicit QwtPlot(const QwtText &title, QWidget *p = NULL);
00117 #if QT_VERSION < 0x040000
00118     explicit QwtPlot(QWidget *, const char* name);
00119 #endif
00120 
00121     virtual ~QwtPlot();
00122 
00123     void applyProperties(const QString &);
00124     QString grabProperties() const;
00125 
00126     void setAutoReplot(bool tf = true);
00127     bool autoReplot() const;
00128 
00129     void print(QPaintDevice &p,
00130         const QwtPlotPrintFilter & = QwtPlotPrintFilter()) const;
00131     virtual void print(QPainter *, const QRect &rect,
00132         const QwtPlotPrintFilter & = QwtPlotPrintFilter()) const;
00133 
00134     // Layout
00135 
00136     QwtPlotLayout *plotLayout();
00137     const QwtPlotLayout *plotLayout() const;
00138 
00139     void setMargin(int margin);
00140     int margin() const;
00141 
00142     // Title
00143 
00144     void setTitle(const QString &);
00145     void setTitle(const QwtText &t);
00146     QwtText title() const;
00147 
00148     QwtTextLabel *titleLabel();
00149     const QwtTextLabel *titleLabel() const;
00150 
00151     // Canvas
00152 
00153     QwtPlotCanvas *canvas();
00154     const QwtPlotCanvas *canvas() const;
00155 
00156     void setCanvasBackground (const QColor &c);
00157     const QColor& canvasBackground() const;
00158 
00159     void setCanvasLineWidth(int w);
00160     int canvasLineWidth() const;
00161 
00162     virtual QwtScaleMap canvasMap(int axisId) const;
00163 
00164     double invTransform(int axisId, int pos) const;
00165     int transform(int axisId, double value) const;
00166 
00167     // Axes
00168 
00169     QwtScaleEngine *axisScaleEngine(int axisId);
00170     const QwtScaleEngine *axisScaleEngine(int axisId) const;
00171     void setAxisScaleEngine(int axisId, QwtScaleEngine *);
00172 
00173     void setAxisAutoScale(int axisId);
00174     bool axisAutoScale(int axisId) const;
00175 
00176     void enableAxis(int axisId, bool tf = true);
00177     bool axisEnabled(int axisId) const;
00178 
00179     void setAxisFont(int axisId, const QFont &f);
00180     QFont axisFont(int axisId) const;
00181 
00182     void setAxisScale(int axisId, double min, double max, double step = 0);
00183     void setAxisScaleDiv(int axisId, const QwtScaleDiv &);
00184     void setAxisScaleDraw(int axisId, QwtScaleDraw *);
00185 
00186     const QwtScaleDiv *axisScaleDiv(int axisId) const;
00187     QwtScaleDiv *axisScaleDiv(int axisId);
00188 
00189     const QwtScaleDraw *axisScaleDraw(int axisId) const;
00190     QwtScaleDraw *axisScaleDraw(int axisId);
00191 
00192     const QwtScaleWidget *axisWidget(int axisId) const;
00193     QwtScaleWidget *axisWidget(int axisId);
00194 
00195 #if QT_VERSION < 0x040000
00196     void setAxisLabelAlignment(int axisId, int);
00197 #else
00198     void setAxisLabelAlignment(int axisId, Qt::Alignment);
00199 #endif
00200     void setAxisLabelRotation(int axisId, double rotation);
00201 
00202     void setAxisTitle(int axisId, const QString &);
00203     void setAxisTitle(int axisId, const QwtText &);
00204     QwtText axisTitle(int axisId) const;
00205 
00206     void setAxisMaxMinor(int axisId, int maxMinor);
00207     int axisMaxMajor(int axisId) const;
00208     void setAxisMaxMajor(int axisId, int maxMajor);
00209     int axisMaxMinor(int axisId) const;
00210 
00211     // Legend 
00212 
00213     void insertLegend(QwtLegend *, LegendPosition = QwtPlot::RightLegend,
00214         double ratio = -1.0);
00215 
00216     QwtLegend *legend();
00217     const QwtLegend *legend() const;
00218 
00219     // Misc
00220 
00221     virtual void polish();
00222     virtual QSize sizeHint() const;
00223     virtual QSize minimumSizeHint() const;
00224 
00225     virtual void updateLayout();
00226 
00227     virtual bool event(QEvent *);
00228 
00229 signals:
00240     void legendClicked(QwtPlotItem *plotItem);
00241 
00254     void legendChecked(QwtPlotItem *plotItem, bool on);
00255 
00256 public slots:
00257     void clear();
00258 
00259     virtual void replot();
00260     void autoRefresh();
00261 
00262 protected slots:
00263     virtual void legendItemClicked();
00264     virtual void legendItemChecked(bool);
00265 
00266 protected:
00267     static bool axisValid(int axisId);
00268 
00269     virtual void drawCanvas(QPainter *);
00270     virtual void drawItems(QPainter *, const QRect &,
00271         const QwtScaleMap maps[axisCnt],
00272         const QwtPlotPrintFilter &) const;
00273 
00274     virtual void updateTabOrder();
00275 
00276     void updateAxes();
00277 
00278     virtual void resizeEvent(QResizeEvent *e);
00279 
00280     virtual void printLegendItem(QPainter *, 
00281         const QWidget *, const QRect &) const;
00282 
00283     virtual void printTitle(QPainter *, const QRect &) const;
00284     virtual void printScale(QPainter *, int axisId, int startDist, int endDist,
00285         int baseDist, const QRect &) const;
00286     virtual void printCanvas(QPainter *, const QRect &,
00287         const QwtScaleMap maps[axisCnt], const QwtPlotPrintFilter &) const;
00288     virtual void printLegend(QPainter *, const QRect &) const;
00289 
00290 private:
00291     void initAxesData();
00292     void deleteAxesData();
00293     void updateScaleDiv();
00294 
00295     void initPlot(const QwtText &title);
00296 
00297     class AxisData;
00298     AxisData *d_axisData[axisCnt];
00299 
00300     class PrivateData;
00301     PrivateData *d_data;
00302 };
00303 
00304 #endif

Generated on Mon Feb 26 21:22:37 2007 for Qwt User's Guide by  doxygen 1.4.6