Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

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 
00075 class QWT_EXPORT QwtPlot: public QFrame, public QwtPlotDict
00076 {
00077     friend class QwtPlotCanvas;
00078 
00079     Q_OBJECT
00080 
00081     Q_ENUMS( Axis Position )
00082         
00083     // plot
00084     Q_PROPERTY( bool autoReplot READ autoReplot WRITE setAutoReplot )
00085 
00086     // canvas
00087     Q_PROPERTY( QColor canvasBackground READ canvasBackground 
00088         WRITE setCanvasBackground )
00089     Q_PROPERTY( int canvasLineWidth READ canvasLineWidth 
00090         WRITE setCanvasLineWidth )
00091 
00092     // axes  
00093     Q_PROPERTY( bool xBottomAxis READ xBottomAxisEnabled 
00094         WRITE enableXBottomAxis )
00095     Q_PROPERTY( bool xTopAxis READ xTopAxisEnabled WRITE enableXTopAxis )
00096     Q_PROPERTY( bool yLeftAxis READ yLeftAxisEnabled WRITE enableYLeftAxis )
00097     Q_PROPERTY( bool yRightAxis READ yRightAxisEnabled WRITE enableYRightAxis )
00098 
00099 public:
00101     enum Axis 
00102     { 
00103         yLeft, 
00104         yRight, 
00105         xBottom, 
00106         xTop, 
00107         axisCnt 
00108     };
00109 
00111     enum LegendPosition 
00112     {
00113         LeftLegend,
00114         RightLegend,
00115         BottomLegend,
00116         TopLegend
00117     };
00118 
00119     explicit QwtPlot(QWidget *p = 0);
00120     explicit QwtPlot(const QwtText &title, QWidget *p = NULL);
00121     virtual ~QwtPlot();
00122 
00124     void enableXBottomAxis(bool b) {enableAxis(xBottom,b);}     
00126     bool xBottomAxisEnabled() const {return axisEnabled(xBottom);};
00128     void enableXTopAxis(bool b) {enableAxis(xTop,b);}       
00130     bool xTopAxisEnabled() const {return axisEnabled(xTop);};
00132     void enableYRightAxis(bool b) {enableAxis(yRight,b);}       
00134     bool yRightAxisEnabled() const {return axisEnabled(yRight);};
00136     void enableYLeftAxis(bool b) {enableAxis(yLeft,b);}     
00138     bool yLeftAxisEnabled() const {return axisEnabled(yLeft);};
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     const QwtScaleDiv *axisScaleDiv(int axisId) const;
00201     QwtScaleDiv *axisScaleDiv(int axisId);
00202 
00203     const QwtScaleDraw *axisScaleDraw(int axisId) const;
00204     QwtScaleDraw *axisScaleDraw(int axisId);
00205 
00206     const QwtScaleWidget *axisWidget(int axisId) const;
00207     QwtScaleWidget *axisWidget(int axisId);
00208 
00209 #if QT_VERSION < 0x040000
00210     void setAxisLabelAlignment(int axisId, int);
00211 #else
00212     void setAxisLabelAlignment(int axisId, Qt::Alignment);
00213 #endif
00214     void setAxisLabelRotation(int axisId, double rotation);
00215 
00216     void setAxisTitle(int axisId, const QString &);
00217     void setAxisTitle(int axisId, const QwtText &);
00218     QwtText axisTitle(int axisId) const;
00219 
00220     void setAxisMaxMinor(int axisId, int maxMinor);
00221     int axisMaxMajor(int axisId) const;
00222     void setAxisMaxMajor(int axisId, int maxMajor);
00223     int axisMaxMinor(int axisId) const;
00224 
00225     // Legend 
00226 
00227     void insertLegend(QwtLegend *, LegendPosition = QwtPlot::RightLegend,
00228         double ratio = -1.0);
00229 
00230     QwtLegend *legend();
00231     const QwtLegend *legend() const;
00232 
00233     // Misc
00234 
00235     virtual void polish();
00236     virtual QSize sizeHint() const;
00237     virtual QSize minimumSizeHint() const;
00238 
00239     void updateLayout();
00240 
00241     virtual bool event(QEvent *);
00242 
00243 signals:
00254     void legendClicked(QwtPlotItem *plotItem);
00255 
00268     void legendChecked(QwtPlotItem *plotItem, bool on);
00269 
00270 public slots:
00271     void clear();
00272 
00273     virtual void replot();
00274     void autoRefresh();
00275 
00276 protected slots:
00277     virtual void legendItemClicked();
00278     virtual void legendItemChecked(bool);
00279 
00280 protected:
00281     static bool axisValid(int axisId);
00282 
00283     virtual void drawCanvas(QPainter *);
00284     virtual void drawItems(QPainter *, const QRect &,
00285         const QwtArray<QwtScaleMap> &,
00286         const QwtPlotPrintFilter &) const;
00287 
00288     virtual void updateTabOrder();
00289 
00290     void updateAxes();
00291 
00292     virtual void resizeEvent(QResizeEvent *e);
00293 
00294     virtual void printLegendItem(QPainter *, 
00295         const QWidget *, const QRect &) const;
00296 
00297     virtual void printTitle(QPainter *, const QRect &) const;
00298     virtual void printScale(QPainter *, int axisId, int startDist, int endDist,
00299         int baseDist, const QRect &) const;
00300     virtual void printCanvas(QPainter *, const QRect &,
00301         const QwtArray<QwtScaleMap> &, const QwtPlotPrintFilter &) const;
00302     virtual void printLegend(QPainter *, const QRect &) const;
00303 
00304 private:
00305     void initAxesData();
00306     void deleteAxesData();
00307     void updateScaleDiv();
00308 
00309     void initPlot(const QwtText &title);
00310 
00311     class AxisData;
00312     AxisData *d_axisData[axisCnt];
00313 
00314     class PrivateData;
00315     PrivateData *d_data;
00316 };
00317 
00318 #endif

Generated on Mon Jan 30 22:16:25 2006 for Qwt User's Guide by  doxygen 1.4.4