Qwt Polar User's Guide 0.1.0
|
00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- ***************************** 00002 * QwtPolar Widget Library 00003 * Copyright (C) 2008 Uwe Rathmann 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the Qwt License, Version 1.0 00007 *****************************************************************************/ 00008 00009 #ifndef QWT_POLAR_CURVE_H 00010 #define QWT_POLAR_CURVE_H 00011 00012 #include "qwt_polar_global.h" 00013 #include "qwt_data.h" 00014 #include "qwt_polar_point.h" 00015 #include "qwt_polar_item.h" 00016 00017 class QPainter; 00018 class QwtSymbol; 00019 class QwtCurveFitter; 00020 00030 class QWT_POLAR_EXPORT QwtPolarCurve: public QwtPolarItem 00031 { 00032 public: 00045 enum CurveStyle 00046 { 00047 NoCurve, 00048 Lines, 00049 UserCurve = 100 00050 }; 00051 00052 explicit QwtPolarCurve(); 00053 explicit QwtPolarCurve(const QwtText &title); 00054 explicit QwtPolarCurve(const QString &title); 00055 00056 virtual ~QwtPolarCurve(); 00057 00058 virtual int rtti() const; 00059 00060 void setData(const QwtData &data); 00061 QwtData &data(); 00062 const QwtData &data() const; 00063 00064 int dataSize() const; 00065 double radius(int i) const; 00066 double azimuth(int i) const; 00067 QwtPolarPoint sample(int i) const; 00068 00069 void setPen(const QPen &); 00070 const QPen &pen() const; 00071 00072 void setStyle(CurveStyle style); 00073 CurveStyle style() const; 00074 00075 void setSymbol(const QwtSymbol &s); 00076 const QwtSymbol& symbol() const; 00077 00078 void setCurveFitter(QwtCurveFitter *); 00079 QwtCurveFitter *curveFitter() const; 00080 00081 virtual void draw(QPainter *p, 00082 const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap, 00083 const QwtDoublePoint &pole, double radius, 00084 const QwtDoubleRect &canvasRect) const; 00085 00086 virtual void draw(QPainter *p, 00087 const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap, 00088 const QwtDoublePoint &pole, 00089 int from, int to) const; 00090 00091 virtual void updateLegend(QwtLegend *) const; 00092 virtual QwtDoubleInterval boundingInterval(int scaleId) const; 00093 00094 protected: 00095 00096 void init(); 00097 00098 virtual void drawCurve(QPainter *, int style, 00099 const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap, 00100 const QwtDoublePoint &pole, 00101 int from, int to) const; 00102 00103 virtual void drawSymbols(QPainter *, const QwtSymbol &, 00104 const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap, 00105 const QwtDoublePoint &pole, 00106 int from, int to) const; 00107 00108 void drawLines(QPainter *, 00109 const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap, 00110 const QwtDoublePoint &pole, 00111 int from, int to) const; 00112 00113 private: 00114 QwtData *d_points; 00115 00116 class PrivateData; 00117 PrivateData *d_data; 00118 }; 00119 00121 inline QwtData &QwtPolarCurve::data() 00122 { 00123 return *d_points; 00124 } 00125 00127 inline const QwtData &QwtPolarCurve::data() const 00128 { 00129 return *d_points; 00130 } 00131 00136 inline double QwtPolarCurve::azimuth(int i) const 00137 { 00138 return d_points->x(i); 00139 } 00140 00145 inline double QwtPolarCurve::radius(int i) const 00146 { 00147 return d_points->y(i); 00148 } 00149 00154 inline QwtPolarPoint QwtPolarCurve::sample(int i) const 00155 { 00156 return QwtPolarPoint(azimuth(i), radius(i)); 00157 } 00158 00159 #endif