Qwt Polar User's Guide  0.1.0
qwt_polar_curve.h
1 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
2  * QwtPolar Widget Library
3  * Copyright (C) 2008 Uwe Rathmann
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the Qwt License, Version 1.0
7  *****************************************************************************/
8 
9 #ifndef QWT_POLAR_CURVE_H
10 #define QWT_POLAR_CURVE_H
11 
12 #include "qwt_polar_global.h"
13 #include "qwt_data.h"
14 #include "qwt_polar_point.h"
15 #include "qwt_polar_item.h"
16 
17 class QPainter;
18 class QwtSymbol;
19 class QwtCurveFitter;
20 
30 class QWT_POLAR_EXPORT QwtPolarCurve: public QwtPolarItem
31 {
32 public:
46  {
47  NoCurve,
48  Lines,
49  UserCurve = 100
50  };
51 
52  explicit QwtPolarCurve();
53  explicit QwtPolarCurve(const QwtText &title);
54  explicit QwtPolarCurve(const QString &title);
55 
56  virtual ~QwtPolarCurve();
57 
58  virtual int rtti() const;
59 
60  void setData(const QwtData &data);
61  QwtData &data();
62  const QwtData &data() const;
63 
64  int dataSize() const;
65  double radius(int i) const;
66  double azimuth(int i) const;
67  QwtPolarPoint sample(int i) const;
68 
69  void setPen(const QPen &);
70  const QPen &pen() const;
71 
72  void setStyle(CurveStyle style);
73  CurveStyle style() const;
74 
75  void setSymbol(const QwtSymbol &s);
76  const QwtSymbol& symbol() const;
77 
78  void setCurveFitter(QwtCurveFitter *);
79  QwtCurveFitter *curveFitter() const;
80 
81  virtual void draw(QPainter *p,
82  const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap,
83  const QwtDoublePoint &pole, double radius,
84  const QwtDoubleRect &canvasRect) const;
85 
86  virtual void draw(QPainter *p,
87  const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap,
88  const QwtDoublePoint &pole,
89  int from, int to) const;
90 
91  virtual void updateLegend(QwtLegend *) const;
92  virtual QwtDoubleInterval boundingInterval(int scaleId) const;
93 
94 protected:
95 
96  void init();
97 
98  virtual void drawCurve(QPainter *, int style,
99  const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap,
100  const QwtDoublePoint &pole,
101  int from, int to) const;
102 
103  virtual void drawSymbols(QPainter *, const QwtSymbol &,
104  const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap,
105  const QwtDoublePoint &pole,
106  int from, int to) const;
107 
108  void drawLines(QPainter *,
109  const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap,
110  const QwtDoublePoint &pole,
111  int from, int to) const;
112 
113 private:
114  QwtData *d_points;
115 
116  class PrivateData;
117  PrivateData *d_data;
118 };
119 
121 inline QwtData &QwtPolarCurve::data()
122 {
123  return *d_points;
124 }
125 
127 inline const QwtData &QwtPolarCurve::data() const
128 {
129  return *d_points;
130 }
131 
136 inline double QwtPolarCurve::azimuth(int i) const
137 {
138  return d_points->x(i);
139 }
140 
145 inline double QwtPolarCurve::radius(int i) const
146 {
147  return d_points->y(i);
148 }
149 
155 {
156  return QwtPolarPoint(azimuth(i), radius(i));
157 }
158 
159 #endif