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_plot_dict.h"
00017 #include "qwt_scale_map.h"
00018 #include "qwt_plot_printfilter.h"
00019 
00020 class QLabel;
00021 class QwtPlotLayout;
00022 class QwtLegend;
00023 class QwtScaleWidget;
00024 class QwtScaleEngine;
00025 class QwtScaleDiv;
00026 class QwtScaleDraw;
00027 class QwtPlotCanvas;
00028 class QwtPlotPrintFilter;
00029 
00074 class QWT_EXPORT QwtPlot: public QFrame, public QwtPlotDict
00075 {
00076     friend class QwtPlotCanvas;
00077 
00078     Q_OBJECT
00079 
00080     Q_ENUMS( Axis Position )
00081         
00082     // plot
00083     Q_PROPERTY( bool autoReplot READ autoReplot WRITE setAutoReplot )
00084 
00085     // canvas
00086     Q_PROPERTY( QColor canvasBackground READ canvasBackground 
00087         WRITE setCanvasBackground )
00088     Q_PROPERTY( int canvasLineWidth READ canvasLineWidth 
00089         WRITE setCanvasLineWidth )
00090 
00091     // axes  
00092     Q_PROPERTY( bool xBottomAxis READ xBottomAxisEnabled 
00093         WRITE enableXBottomAxis )
00094     Q_PROPERTY( bool xTopAxis READ xTopAxisEnabled WRITE enableXTopAxis )
00095     Q_PROPERTY( bool yLeftAxis READ yLeftAxisEnabled WRITE enableYLeftAxis )
00096     Q_PROPERTY( bool yRightAxis READ yRightAxisEnabled WRITE enableYRightAxis )
00097 
00098     // title
00099     Q_PROPERTY( QString title READ title WRITE setTitle )
00100     Q_PROPERTY( QFont titleFont READ titleFont WRITE setTitleFont )
00101 
00102 public:
00104     enum Axis 
00105     { 
00106         yLeft, 
00107         yRight, 
00108         xBottom, 
00109         xTop, 
00110         axisCnt 
00111     };
00112 
00114     enum LegendPosition 
00115     {
00116         LeftLegend,
00117         RightLegend,
00118         BottomLegend,
00119         TopLegend
00120     };
00121 
00122     explicit QwtPlot(QWidget *p = 0);
00123     explicit QwtPlot(const QString &title, QWidget *p = NULL);
00124     virtual ~QwtPlot();
00125 
00127     void enableXBottomAxis(bool b) {enableAxis(xBottom,b);}     
00129     bool xBottomAxisEnabled() const {return axisEnabled(xBottom);};
00131     void enableXTopAxis(bool b) {enableAxis(xTop,b);}       
00133     bool xTopAxisEnabled() const {return axisEnabled(xTop);};
00135     void enableYRightAxis(bool b) {enableAxis(yRight,b);}       
00137     bool yRightAxisEnabled() const {return axisEnabled(yRight);};
00139     void enableYLeftAxis(bool b) {enableAxis(yLeft,b);}     
00141     bool yLeftAxisEnabled() const {return axisEnabled(yLeft);};
00142 
00143     void setAutoReplot(bool tf = true);
00144     bool autoReplot() const;
00145 
00146     void print(QPaintDevice &p,
00147         const QwtPlotPrintFilter & = QwtPlotPrintFilter()) const;
00148     virtual void print(QPainter *, const QRect &rect,
00149         const QwtPlotPrintFilter & = QwtPlotPrintFilter()) const;
00150 
00151     // Layout
00152 
00153     QwtPlotLayout *plotLayout();
00154     const QwtPlotLayout *plotLayout() const;
00155 
00156     void setMargin(int margin);
00157     int margin() const;
00158 
00159     // Title
00160 
00161     void setTitle(const QString &t);
00162     QString title() const;
00163     void setTitleFont (const QFont &f);
00164     QFont titleFont() const;
00165 
00166     QLabel *titleLabel();
00167     const QLabel *titleLabel() const;
00168 
00169     // Canvas
00170 
00171     QwtPlotCanvas *canvas();
00172     const QwtPlotCanvas *canvas() const;
00173 
00174     void setCanvasBackground (const QColor &c);
00175     const QColor& canvasBackground() const;
00176 
00177     void setCanvasLineWidth(int w);
00178     int canvasLineWidth() const;
00179 
00180     QwtScaleMap canvasMap(int axisId) const;
00181 
00182     double invTransform(int axisId, int pos) const;
00183     int transform(int axisId, double value) const;
00184 
00185     // Axes
00186 
00187     QwtScaleEngine *axisScaleEngine(int axisId);
00188     const QwtScaleEngine *axisScaleEngine(int axisId) const;
00189     void setAxisScaleEngine(int axisId, QwtScaleEngine *);
00190 
00191     void setAxisAutoScale(int axisId);
00192     bool axisAutoScale(int axisId) const;
00193 
00194     void enableAxis(int axisId, bool tf = true);
00195     bool axisEnabled(int axisId) const;
00196 
00197     void setAxisFont(int axisId, const QFont &f);
00198     QFont axisFont(int axisId) const;
00199 
00200     void setAxisScale(int axisId, double min, double max, double step = 0);
00201     void setAxisScaleDiv(int axisId, const QwtScaleDiv &);
00202     void setAxisScaleDraw(int axisId, QwtScaleDraw *);
00203 
00204     const QwtScaleDiv *axisScaleDiv(int axisId) const;
00205     QwtScaleDiv *axisScaleDiv(int axisId);
00206 
00207     const QwtScaleDraw *axisScaleDraw(int axisId) const;
00208 
00209     const QwtScaleWidget *axisWidget(int axisId) const;
00210     QwtScaleWidget *axisWidget(int axisId);
00211 
00212     void setAxisLabelFormat(int axisId, char f, int prec, int fieldwidth = 0);
00213     void axisLabelFormat(int axisId, char &f, int &prec, int &fieldwidth) const;
00214 
00215     void setAxisLabelFlags(int axisId, int flags);
00216     void setAxisLabelRotation(int axisId, double rotation);
00217 
00218     void setAxisTitle(int axisId, const QString &t);
00219     QString axisTitle(int axisId) const;
00220     void setAxisTitleFont(int axisId, const QFont &f);
00221     QFont axisTitleFont(int axisId) const;
00222     void setAxisTitleFlags(int axisId, int flags);
00223     int axisTitleFlags(int axisId) const;
00224 
00225     void setAxisMaxMinor(int axisId, int maxMinor);
00226     int axisMaxMajor(int axisId) const;
00227     void setAxisMaxMajor(int axisId, int maxMajor);
00228     int axisMaxMinor(int axisId) const;
00229 
00230     // Legend 
00231 
00232     void insertLegend(QwtLegend *, LegendPosition = QwtPlot::RightLegend,
00233         double ratio = -1.0);
00234 
00235     QwtLegend *legend();
00236     const QwtLegend *legend() const;
00237 
00238     // Misc
00239 
00240     virtual void polish();
00241     virtual QSize sizeHint() const;
00242     virtual QSize minimumSizeHint() const;
00243 
00244     virtual bool event(QEvent *);
00245 
00246 signals:
00257     void legendClicked(QwtPlotItem *);
00258     void legendChecked(QwtPlotItem *, bool on);
00259 
00260 public slots:
00261     void clear();
00262 
00263     virtual void replot();
00264     void autoRefresh();
00265 
00266 protected slots:
00267     virtual void legendItemClicked();
00268     virtual void legendItemChecked(bool);
00269 
00270 protected:
00271     static bool axisValid(int axisId);
00272 
00273     virtual void drawCanvas(QPainter *);
00274     virtual void drawItems(QPainter *, const QRect &,
00275         const QwtArray<QwtScaleMap> &,
00276         const QwtPlotPrintFilter &) const;
00277 
00278     virtual void updateTabOrder();
00279 
00280     void updateAxes();
00281     void updateLayout();
00282 
00283     virtual void resizeEvent(QResizeEvent *e);
00284 
00285     virtual void printLegendItem(QPainter *, 
00286         const QWidget *, const QRect &) const;
00287 
00288     virtual void printTitle(QPainter *, const QRect &) const;
00289     virtual void printScale(QPainter *, int axisId, int startDist, int endDist,
00290         int baseDist, const QRect &) const;
00291     virtual void printCanvas(QPainter *, const QRect &,
00292         const QwtArray<QwtScaleMap> &, const QwtPlotPrintFilter &) const;
00293     virtual void printLegend(QPainter *, const QRect &) const;
00294 
00295 private:
00296     void initAxesData();
00297     void deleteAxesData();
00298     void updateScaleDiv();
00299 
00300     void initPlot(const QString &title = QString::null);
00301 
00302     class AxisData;
00303     AxisData *d_axisData[axisCnt];
00304 
00305     class PrivateData;
00306     PrivateData *d_data;
00307 };
00308 
00309 #endif

Generated on Wed Aug 31 23:02:29 2005 for Qwt User's Guide by  doxygen 1.4.1