00001
00002
00003
00004
00005
00006
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