Main Page | Class Hierarchy | Alphabetical List | Class List | 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 // vim: expandtab 00011 00012 #ifndef QWT_PLOT_H 00013 #define QWT_PLOT_H 00014 00015 #include <qframe.h> 00016 #include "qwt_global.h" 00017 #include "qwt_array.h" 00018 #include "qwt_grid.h" 00019 #include "qwt_autoscl.h" 00020 #include "qwt_scldraw.h" 00021 #include "qwt_symbol.h" 00022 #include "qwt_curve.h" 00023 #include "qwt_marker.h" 00024 #include "qwt_legend.h" 00025 #include "qwt_plot_printfilter.h" 00026 #include "qwt_plot_classes.h" 00027 #include "qwt_plot_dict.h" 00028 00029 class QLabel; 00030 class QwtPlotLayout; 00031 class QwtScale; 00032 class QwtPlotItem; 00033 class QwtPlotCanvas; 00034 class QwtPlotPrintFilter; 00035 00085 class QWT_EXPORT QwtPlot: public QFrame 00086 { 00087 friend class QwtPlotItem; 00088 friend class QwtPlotCanvas; 00089 friend class QwtPlotPrintFilter; 00090 00091 Q_OBJECT 00092 00093 Q_ENUMS( Axis Position ) 00094 00095 // plot 00096 Q_PROPERTY( bool autoReplot READ autoReplot WRITE setAutoReplot ) 00097 00098 // canvas 00099 Q_PROPERTY( QColor canvasBackground READ canvasBackground 00100 WRITE setCanvasBackground ) 00101 Q_PROPERTY( int canvasLineWidth READ canvasLineWidth 00102 WRITE setCanvasLineWidth ) 00103 00104 // axes 00105 Q_PROPERTY( bool xBottomAxis READ xBottomAxisEnabled 00106 WRITE enableXBottomAxis ) 00107 Q_PROPERTY( bool xTopAxis READ xTopAxisEnabled WRITE enableXTopAxis ) 00108 Q_PROPERTY( bool yLeftAxis READ yLeftAxisEnabled WRITE enableYLeftAxis ) 00109 Q_PROPERTY( bool yRightAxis READ yRightAxisEnabled WRITE enableYRightAxis ) 00110 00111 // title 00112 Q_PROPERTY( QString title READ title WRITE setTitle ) 00113 Q_PROPERTY( QFont titleFont READ titleFont WRITE setTitleFont ) 00114 00115 // grid 00116 Q_PROPERTY( bool xGrid READ gridXEnabled WRITE enableGridX ) 00117 Q_PROPERTY( bool xMinGrid READ gridXMinEnabled WRITE enableGridX ) 00118 Q_PROPERTY( bool yGrid READ gridYEnabled WRITE enableGridY ) 00119 Q_PROPERTY( bool yMinGrid READ gridYMinEnabled WRITE enableGridY ) 00120 00121 // legend 00122 Q_PROPERTY( bool autoLegend READ autoLegend WRITE setAutoLegend ) 00123 Q_PROPERTY( QFont legendFont READ legendFont WRITE setLegendFont ) 00124 Q_PROPERTY( Position legendPosition READ legendPosition 00125 WRITE setLegendPosition) 00126 00127 public: 00129 enum Axis { yLeft, yRight, xBottom, xTop, axisCnt }; 00131 // The enums QwtPlot::Position and Qwt::Position must match, 00132 // because deprecated functions like 00133 // QwtPlot::setLegendPos(Qwt::Left) 00134 // are now implemented in terms of functions like 00135 // QwtPlot::setLegendPosition(QwtPlot::Left). 00136 enum Position { 00137 Left = Qwt::Left, 00138 Right = Qwt::Right, 00139 Bottom = Qwt::Bottom, 00140 Top = Qwt::Top 00141 }; 00142 00143 QwtPlot(QWidget *p = 0, const char *name = 0); 00144 QwtPlot(const QString &title, QWidget *p = 0, const char *name = 0); 00145 virtual ~QwtPlot(); 00146 00148 void enableXBottomAxis(bool b) {enableAxis(xBottom,b);} 00150 bool xBottomAxisEnabled() const {return axisEnabled(xBottom);}; 00152 void enableXTopAxis(bool b) {enableAxis(xTop,b);} 00154 bool xTopAxisEnabled() const {return axisEnabled(xTop);}; 00156 void enableYRightAxis(bool b) {enableAxis(yRight,b);} 00158 bool yRightAxisEnabled() const {return axisEnabled(yRight);}; 00160 void enableYLeftAxis(bool b) {enableAxis(yLeft,b);} 00162 bool yLeftAxisEnabled() const {return axisEnabled(yLeft);}; 00163 00164 void setAutoReplot(bool tf = TRUE); 00165 bool autoReplot() const; 00166 00167 void print(QPaintDevice &p, 00168 const QwtPlotPrintFilter & = QwtPlotPrintFilter()) const; 00169 virtual void print(QPainter *, const QRect &rect, 00170 const QwtPlotPrintFilter & = QwtPlotPrintFilter()) const; 00171 00172 00173 #ifndef QWT_NO_COMPAT 00174 // Outline 00175 00176 void enableOutline(bool tf); 00177 bool outlineEnabled() const; 00178 void setOutlineStyle(Qwt::Shape os); 00179 Qwt::Shape outlineStyle() const; 00180 void setOutlinePen(const QPen &pn); 00181 const QPen& outlinePen() const; 00182 #endif 00183 00184 // Layout 00185 00186 QwtPlotLayout *plotLayout(); 00187 const QwtPlotLayout *plotLayout() const; 00188 00189 void setMargin(int margin); 00190 int margin() const; 00191 00192 // Title 00193 00194 void setTitle(const QString &t); 00195 QString title() const; 00196 void setTitleFont (const QFont &f); 00197 QFont titleFont() const; 00198 00199 QLabel *titleLabel(); 00200 const QLabel *titleLabel() const; 00201 00202 // Canvas 00203 00204 QwtPlotCanvas *canvas(); 00205 const QwtPlotCanvas *canvas() const; 00206 00207 void setCanvasBackground (const QColor &c); 00208 const QColor& canvasBackground() const; 00209 00210 void setCanvasLineWidth(int w); 00211 int canvasLineWidth() const; 00212 00213 QwtPlotCurveIterator curveIterator() const; 00214 QwtPlotMarkerIterator markerIterator() const; 00215 00216 QwtDiMap canvasMap(int axis) const; 00217 00218 double invTransform(int axis, int pos) const; 00219 int transform(int axis, double value) const; 00220 00221 // Curves 00222 00223 long insertCurve(QwtPlotCurve *); 00224 long insertCurve(const QString &title, 00225 int xAxis = xBottom, int yAxis = yLeft); 00226 00227 QwtPlotCurve *curve(long key); 00228 const QwtPlotCurve *curve(long key) const; 00229 00230 QwtArray<long> curveKeys() const; 00231 00232 long closestCurve(int xpos, int ypos, int &dist) const; 00233 long closestCurve(int xpos, int ypos, int &dist, 00234 double &xval, double &yval, int &index) const; 00235 00236 bool setCurveBaseline(long key, double ref); 00237 double curveBaseline(long key) const; 00238 00239 bool setCurveRawData(long key, const double *x, const double *y, int size); 00240 bool setCurveData(long key, const double *x, const double *y, int size); 00241 bool setCurveData(long key, 00242 const QwtArray<double> &x, const QwtArray<double> &y); 00243 bool setCurveData(long key, const QwtArray<QwtDoublePoint> &data); 00244 bool setCurveData(long key, const QwtData &data); 00245 00246 bool setCurveOptions(long key, int t); 00247 int curveOptions(long key) const; 00248 00249 bool setCurvePen(long key, const QPen &pen); 00250 QPen curvePen(long key) const; 00251 00252 bool setCurveBrush(long key, const QBrush &brush); 00253 QBrush curveBrush(long key) const; 00254 00255 bool setCurveSplineSize(long key, int s); 00256 int curveSplineSize(long key) const; 00257 00258 bool setCurveStyle(long key, int s, int options = 0); 00259 int curveStyle(long key) const; 00260 00261 bool setCurveSymbol(long key, const QwtSymbol &s); 00262 QwtSymbol curveSymbol(long key) const; 00263 00264 bool setCurveTitle(long key, const QString &s); 00265 QString curveTitle(long key) const; 00266 00267 bool setCurveXAxis(long key, int axis); 00268 int curveXAxis(long key) const; 00269 bool setCurveYAxis(long key, int axis); 00270 int curveYAxis(long key) const; 00271 00272 void drawCurve(long key, int from = 0, int to = -1); 00273 00274 // Grid 00275 00276 void enableGridX(bool tf = TRUE); 00277 void enableGridXMin(bool tf = TRUE); 00278 void enableGridY(bool tf = TRUE); 00279 void enableGridYMin(bool tf = TRUE); 00280 00281 bool gridXEnabled() const; 00282 bool gridXMinEnabled() const; 00283 bool gridYEnabled() const; 00284 bool gridYMinEnabled() const; 00285 00286 void setGridXAxis(int axis); 00287 int gridXAxis() const; 00288 void setGridYAxis(int axis); 00289 int gridYAxis() const; 00290 00291 void setGridPen(const QPen &p); 00292 void setGridMajPen(const QPen &p); 00293 const QPen& gridMajPen() const; 00294 void setGridMinPen(const QPen &p); 00295 const QPen& gridMinPen() const; 00296 00297 QwtPlotGrid &grid(); 00298 const QwtPlotGrid &grid() const; 00299 00300 // Axes 00301 00302 void setAxisAutoScale(int axis); 00303 bool axisAutoScale(int axis) const; 00304 00305 void enableAxis(int axis, bool tf = TRUE); 00306 bool axisEnabled(int axis) const; 00307 00308 void changeAxisOptions(int axis, int opt, bool value); 00309 void setAxisOptions(int axis, int opt); 00310 int axisOptions(int axis) const; 00311 00312 void setAxisFont(int axis, const QFont &f); 00313 QFont axisFont(int axis) const; 00314 00315 void setAxisMargins(int axis, double mlo, double mhi); 00316 bool axisMargins(int axis, double &mlo, double &mhi) const; 00317 00318 void setAxisScale(int axis, double min, double max, double step = 0); 00319 void setAxisScaleDraw(int axis, QwtScaleDraw *); 00320 const QwtScaleDiv *axisScale(int axis) const; 00321 const QwtScaleDraw *axisScaleDraw(int axis) const; 00322 const QwtScale *axis(int axis) const; 00323 00324 void setAxisLabelFormat(int axis, char f, int prec, int fieldwidth = 0); 00325 void axisLabelFormat(int axis, char &f, int &prec, int &fieldwidth) const; 00326 00327 void setAxisLabelAlignment(int axis, int alignment); 00328 void setAxisLabelRotation(int axis, double rotation); 00329 00330 void setAxisTitle(int axis, const QString &t); 00331 QString axisTitle(int axis) const; 00332 void setAxisTitleFont(int axis, const QFont &f); 00333 QFont axisTitleFont(int axis) const; 00334 void setAxisTitleAlignment(int axis, int align); 00335 int axisTitleAlignment(int axis) const; 00336 00337 void setAxisMaxMinor(int axis, int maxMinor); 00338 int axisMaxMajor(int axis) const; 00339 void setAxisMaxMajor(int axis, int maxMajor); 00340 int axisMaxMinor(int axis) const; 00341 00342 void setAxisReference(int axis, double value); 00343 double axisReference(int axis) const; 00344 00345 // Markers 00346 00347 long insertMarker(QwtPlotMarker *); 00348 long insertMarker(const QString &label = QString::null, 00349 int xAxis = xBottom, int yAxis = yLeft); 00350 long insertLineMarker(const QString &label, int axis); 00351 00352 QwtPlotMarker *marker(long key); 00353 const QwtPlotMarker *marker(long key) const; 00354 00355 long closestMarker(int xpos, int ypos, int &dist) const; 00356 QwtArray<long> markerKeys() const; 00357 00358 bool setMarkerXAxis(long key, int axis); 00359 int markerXAxis(long key) const; 00360 bool setMarkerYAxis(long key, int axis); 00361 int markerYAxis(long key) const; 00362 00363 bool setMarkerPos(long key, double xval, double yVal); 00364 bool setMarkerXPos(long key, double val); 00365 bool setMarkerYPos(long key, double val); 00366 void markerPos(long key, double &mx, double &my) const; 00367 00368 bool setMarkerFont(long key, const QFont &f); 00369 QFont markerFont(long key) const; 00370 bool setMarkerPen(long key, const QPen &p); 00371 00372 bool setMarkerLabel(long key, const QString &text, 00373 const QFont &font = QFont(), const QColor &color = QColor(), 00374 const QPen &pen = QPen(Qt::NoPen), 00375 const QBrush &brush = QBrush(Qt::NoBrush)); 00376 00377 bool setMarkerLabelText(long key, const QString &text); 00378 const QString markerLabel(long key) const; 00379 bool setMarkerLabelAlign(long key, int align); 00380 int markerLabelAlign(long key) const; 00381 bool setMarkerLabelPen(long key, const QPen &p); 00382 QPen markerLabelPen(long key) const; 00383 00384 bool setMarkerLinePen(long key, const QPen &p); 00385 QPen markerLinePen(long key) const; 00386 bool setMarkerLineStyle(long key, QwtMarker::LineStyle st); 00387 QwtMarker::LineStyle markerLineStyle(long key) const; 00388 00389 bool setMarkerSymbol(long key, const QwtSymbol &s); 00390 QwtSymbol markerSymbol(long key) const; 00391 00392 // Legend 00393 00394 void setAutoLegend(bool enabled); 00395 bool autoLegend() const; 00396 00397 void enableLegend(bool tf, long curveKey = -1); 00398 bool legendEnabled(long curveKey) const; 00399 00400 void setLegendPosition(Position pos, double ratio); 00401 00402 void setLegendPosition(Position pos); 00403 Position legendPosition() const; 00404 00405 #ifndef QWT_NO_COMPAT 00406 void setLegendPos(int pos, double ratio = 0.0); 00407 int legendPos() const; 00408 #endif 00409 00410 void setLegendFont(const QFont &f); 00411 const QFont legendFont() const; 00412 00413 void setLegendFrameStyle(int st); 00414 int legendFrameStyle() const; 00415 00416 QwtLegend *legend(); 00417 const QwtLegend *legend() const; 00418 00419 void setLegendDisplayPolicy( 00420 QwtLegend::LegendDisplayPolicy, int mode = -1); 00421 00422 // Misc 00423 virtual QSize sizeHint() const; 00424 virtual QSize minimumSizeHint() const; 00425 00426 virtual bool event(QEvent *); 00427 00428 public slots: 00429 void clear(); 00430 00431 bool removeCurve(long key); 00432 void removeCurves(); 00433 00434 bool removeMarker(long key); 00435 void removeMarkers(); 00436 00437 virtual void replot(); 00438 00439 protected slots: 00440 virtual void lgdClicked(); 00441 00442 #ifndef QWT_NO_COMPAT 00443 signals: 00456 void plotMousePressed(const QMouseEvent &e); 00457 00471 void plotMouseReleased(const QMouseEvent &e); 00472 00485 void plotMouseMoved(const QMouseEvent &e); 00486 #else 00487 private: 00488 // needed for mocs #ifdef ignorance 00489 void plotMousePressed(const QMouseEvent &); 00490 void plotMouseReleased(const QMouseEvent &); 00491 void plotMouseMoved(const QMouseEvent &); 00492 #endif // !QWT_NO_COMPAT 00493 00494 signals: 00507 void legendClicked(long key); 00508 00509 protected: 00510 void autoRefresh(); 00511 static bool axisValid(int axis); 00512 00513 virtual void drawCanvas(QPainter *); 00514 virtual void drawCanvasItems(QPainter *, const QRect &, 00515 const QwtArray<QwtDiMap> &, const QwtPlotPrintFilter &) const; 00516 virtual void drawContents( QPainter* p ); 00517 00518 virtual void updateTabOrder(); 00519 00520 void updateAxes(); 00521 void updateLayout(); 00522 00523 virtual void resizeEvent(QResizeEvent *e); 00524 00525 virtual void insertLegendItem(long curveKey); 00526 virtual void updateLegendItem(long curveKey); 00527 virtual void printLegendItem(QPainter *, 00528 const QWidget *, const QRect &) const; 00529 00530 void updateLegendItem(const QwtPlotCurve *, QwtLegendItem *); 00531 00532 virtual void printTitle(QPainter *, const QRect &) const; 00533 virtual void printScale(QPainter *, int axis, int startDist, int endDist, 00534 int baseDist, const QRect &) const; 00535 virtual void printCanvas(QPainter *, const QRect &, 00536 const QwtArray<QwtDiMap> &, const QwtPlotPrintFilter &) const; 00537 virtual void printLegend(QPainter *, const QRect &) const; 00538 00539 private: 00540 void initAxes(); 00541 long newCurveKey(); 00542 long newMarkerKey(); 00543 void initPlot(const QString &title = QString::null); 00544 00545 QLabel *d_lblTitle; 00546 QwtPlotCanvas *d_canvas; 00547 QwtLegend *d_legend; 00548 QwtPlotLayout *d_layout; 00549 00550 bool d_axisEnabled[axisCnt]; 00551 QwtScale *d_scale[axisCnt]; 00552 QwtAutoScale d_as[axisCnt]; 00553 00554 QwtCurveDict *d_curves; 00555 QwtMarkerDict *d_markers; 00556 QwtPlotGrid *d_grid; 00557 00558 bool d_autoReplot; 00559 bool d_autoLegend; 00560 00561 }; 00562 00563 #endif 00564 00565 // Local Variables: 00566 // mode: C++ 00567 // c-file-style: "stroustrup" 00568 // indent-tabs-mode: nil 00569 // End:

Generated on Tue Nov 16 21:12:20 2004 for Qwt User's Guide by doxygen 1.3.8