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_interval.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
00070 class QWT_EXPORT QwtPlot: public QFrame, public QwtPlotDict
00071 {
00072 Q_OBJECT
00073 Q_PROPERTY( QString propertiesDocument
00074 READ grabProperties WRITE applyProperties )
00075
00076 public:
00078 enum Axis
00079 {
00081 yLeft,
00082
00084 yRight,
00085
00087 xBottom,
00088
00090 xTop,
00091
00093 axisCnt
00094 };
00095
00103 enum LegendPosition
00104 {
00106 LeftLegend,
00107
00109 RightLegend,
00110
00112 BottomLegend,
00113
00115 TopLegend,
00116
00123 ExternalLegend
00124 };
00125
00126 explicit QwtPlot( QWidget * = NULL );
00127 explicit QwtPlot( const QwtText &title, QWidget *p = NULL );
00128
00129 virtual ~QwtPlot();
00130
00131 void applyProperties( const QString & );
00132 QString grabProperties() const;
00133
00134 void setAutoReplot( bool tf = true );
00135 bool autoReplot() const;
00136
00137
00138
00139 QwtPlotLayout *plotLayout();
00140 const QwtPlotLayout *plotLayout() const;
00141
00142
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
00152
00153 QwtPlotCanvas *canvas();
00154 const QwtPlotCanvas *canvas() const;
00155
00156 void setCanvasBackground( const QBrush & );
00157 QBrush 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 double transform( int axisId, double value ) const;
00166
00167
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, bool on = true );
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 double axisStepSize( int axisId ) const;
00187 QwtInterval axisInterval( int axisId ) const;
00188
00189 const QwtScaleDiv *axisScaleDiv( int axisId ) const;
00190 QwtScaleDiv *axisScaleDiv( int axisId );
00191
00192 const QwtScaleDraw *axisScaleDraw( int axisId ) const;
00193 QwtScaleDraw *axisScaleDraw( int axisId );
00194
00195 const QwtScaleWidget *axisWidget( int axisId ) const;
00196 QwtScaleWidget *axisWidget( int axisId );
00197
00198 void setAxisLabelAlignment( int axisId, Qt::Alignment );
00199 void setAxisLabelRotation( int axisId, double rotation );
00200
00201 void setAxisTitle( int axisId, const QString & );
00202 void setAxisTitle( int axisId, const QwtText & );
00203 QwtText axisTitle( int axisId ) const;
00204
00205 void setAxisMaxMinor( int axisId, int maxMinor );
00206 int axisMaxMinor( int axisId ) const;
00207
00208 void setAxisMaxMajor( int axisId, int maxMajor );
00209 int axisMaxMajor( int axisId ) const;
00210
00211
00212
00213 void insertLegend( QwtLegend *, LegendPosition = QwtPlot::RightLegend,
00214 double ratio = -1.0 );
00215
00216 QwtLegend *legend();
00217 const QwtLegend *legend() const;
00218
00219
00220
00221 virtual QSize sizeHint() const;
00222 virtual QSize minimumSizeHint() const;
00223
00224 virtual void updateLayout();
00225 virtual void drawCanvas( QPainter * );
00226
00227 void updateAxes();
00228
00229 virtual bool event( QEvent * );
00230
00231 virtual void drawItems( QPainter *, const QRectF &,
00232 const QwtScaleMap maps[axisCnt] ) const;
00233
00234 Q_SIGNALS:
00245 void legendClicked( QwtPlotItem *plotItem );
00246
00259 void legendChecked( QwtPlotItem *plotItem, bool on );
00260
00261 public Q_SLOTS:
00262 virtual void replot();
00263 void autoRefresh();
00264
00265 protected Q_SLOTS:
00266 virtual void legendItemClicked();
00267 virtual void legendItemChecked( bool );
00268
00269 protected:
00270 static bool axisValid( int axisId );
00271
00272 virtual void updateTabOrder();
00273
00274 virtual void resizeEvent( QResizeEvent *e );
00275
00276 private:
00277 void initAxesData();
00278 void deleteAxesData();
00279 void updateScaleDiv();
00280
00281 void initPlot( const QwtText &title );
00282
00283 class AxisData;
00284 AxisData *d_axisData[axisCnt];
00285
00286 class PrivateData;
00287 PrivateData *d_data;
00288 };
00289
00290 #endif