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 <qframe.h>
00018
00019 class QwtPlotLayout;
00020 class QwtLegend;
00021 class QwtScaleWidget;
00022 class QwtScaleEngine;
00023 class QwtScaleDiv;
00024 class QwtScaleDraw;
00025 class QwtTextLabel;
00026 class QwtPlotCanvas;
00027
00069 class QWT_EXPORT QwtPlot: public QFrame, public QwtPlotDict
00070 {
00071 Q_OBJECT
00072 Q_PROPERTY( QString propertiesDocument
00073 READ grabProperties WRITE applyProperties )
00074
00075 public:
00084 enum Axis
00085 {
00086 yLeft,
00087 yRight,
00088 xBottom,
00089 xTop,
00090
00091 axisCnt
00092 };
00093
00116 enum LegendPosition
00117 {
00118 LeftLegend,
00119 RightLegend,
00120 BottomLegend,
00121 TopLegend,
00122
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 void setMargin( int margin );
00143 int margin() const;
00144
00145
00146
00147 void setTitle( const QString & );
00148 void setTitle( const QwtText &t );
00149 QwtText title() const;
00150
00151 QwtTextLabel *titleLabel();
00152 const QwtTextLabel *titleLabel() const;
00153
00154
00155
00156 QwtPlotCanvas *canvas();
00157 const QwtPlotCanvas *canvas() const;
00158
00159 void setCanvasBackground ( const QColor &c );
00160 const QColor& canvasBackground() const;
00161
00162 void setCanvasLineWidth( int w );
00163 int canvasLineWidth() const;
00164
00165 virtual QwtScaleMap canvasMap( int axisId ) const;
00166
00167 double invTransform( int axisId, int pos ) const;
00168 double transform( int axisId, double value ) const;
00169
00170
00171
00172 QwtScaleEngine *axisScaleEngine( int axisId );
00173 const QwtScaleEngine *axisScaleEngine( int axisId ) const;
00174 void setAxisScaleEngine( int axisId, QwtScaleEngine * );
00175
00176 void setAxisAutoScale( int axisId );
00177 bool axisAutoScale( int axisId ) const;
00178
00179 void enableAxis( int axisId, bool tf = true );
00180 bool axisEnabled( int axisId ) const;
00181
00182 void setAxisFont( int axisId, const QFont &f );
00183 QFont axisFont( int axisId ) const;
00184
00185 void setAxisScale( int axisId, double min, double max, double step = 0 );
00186 void setAxisScaleDiv( int axisId, const QwtScaleDiv & );
00187 void setAxisScaleDraw( int axisId, QwtScaleDraw * );
00188
00189 double axisStepSize( int axisId ) const;
00190
00191 const QwtScaleDiv *axisScaleDiv( int axisId ) const;
00192 QwtScaleDiv *axisScaleDiv( int axisId );
00193
00194 const QwtScaleDraw *axisScaleDraw( int axisId ) const;
00195 QwtScaleDraw *axisScaleDraw( int axisId );
00196
00197 const QwtScaleWidget *axisWidget( int axisId ) const;
00198 QwtScaleWidget *axisWidget( int axisId );
00199
00200 void setAxisLabelAlignment( int axisId, Qt::Alignment );
00201 void setAxisLabelRotation( int axisId, double rotation );
00202
00203 void setAxisTitle( int axisId, const QString & );
00204 void setAxisTitle( int axisId, const QwtText & );
00205 QwtText axisTitle( int axisId ) const;
00206
00207 void setAxisMaxMinor( int axisId, int maxMinor );
00208 int axisMaxMinor( int axisId ) const;
00209
00210 void setAxisMaxMajor( int axisId, int maxMajor );
00211 int axisMaxMajor( int axisId ) const;
00212
00213
00214
00215 void insertLegend( QwtLegend *, LegendPosition = QwtPlot::RightLegend,
00216 double ratio = -1.0 );
00217
00218 QwtLegend *legend();
00219 const QwtLegend *legend() const;
00220
00221
00222
00223 virtual void polish();
00224 virtual QSize sizeHint() const;
00225 virtual QSize minimumSizeHint() const;
00226
00227 virtual void updateLayout();
00228 virtual void drawCanvas( QPainter * );
00229
00230 void updateAxes();
00231
00232 virtual bool event( QEvent * );
00233
00234 virtual void drawItems( QPainter *, const QRectF &,
00235 const QwtScaleMap maps[axisCnt] ) const;
00236
00237 Q_SIGNALS:
00248 void legendClicked( QwtPlotItem *plotItem );
00249
00262 void legendChecked( QwtPlotItem *plotItem, bool on );
00263
00264 public Q_SLOTS:
00265 virtual void replot();
00266 void autoRefresh();
00267
00268 protected Q_SLOTS:
00269 virtual void legendItemClicked();
00270 virtual void legendItemChecked( bool );
00271
00272 protected:
00273 static bool axisValid( int axisId );
00274
00275 virtual void updateTabOrder();
00276
00277 virtual void resizeEvent( QResizeEvent *e );
00278
00279 private:
00280 void initAxesData();
00281 void deleteAxesData();
00282 void updateScaleDiv();
00283
00284 void initPlot( const QwtText &title );
00285
00286 class AxisData;
00287 AxisData *d_axisData[axisCnt];
00288
00289 class PrivateData;
00290 PrivateData *d_data;
00291 };
00292
00293 #endif