00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef QWT_POLAR_GRID_H
00010 #define QWT_POLAR_GRID_H
00011
00012 #include "qwt_polar_global.h"
00013 #include "qwt_polar.h"
00014 #include "qwt_polar_item.h"
00015 #include "qwt_polar_plot.h"
00016 #include "qwt_scale_div.h"
00017
00018 class QPainter;
00019 class QPen;
00020 class QwtScaleMap;
00021 class QwtScaleDiv;
00022 class QwtRoundScaleDraw;
00023 class QwtScaleDraw;
00024
00042 class QWT_POLAR_EXPORT QwtPolarGrid: public QwtPolarItem
00043 {
00044 public:
00070 enum DisplayFlag
00071 {
00072 SmartOriginLabel = 1,
00073 HideMaxRadiusLabel = 2,
00074 ClipAxisBackground = 4,
00075 SmartScaleDraw = 8,
00076 ClipGridLines = 16
00077 };
00078
00086 enum GridAttribute
00087 {
00088 AutoScaling = 1
00089 };
00090
00091 explicit QwtPolarGrid();
00092 virtual ~QwtPolarGrid();
00093
00094 virtual int rtti() const;
00095
00096 void setDisplayFlag(DisplayFlag, bool on = true);
00097 bool testDisplayFlag(DisplayFlag) const;
00098
00099 void setGridAttribute(GridAttribute, bool on = true);
00100 bool testGridAttribute(GridAttribute) const;
00101
00102 void showGrid(int scaleId, bool show = true);
00103 bool isGridVisible(int scaleId) const;
00104
00105 void showMinorGrid(int scaleId, bool show = true);
00106 bool isMinorGridVisible(int scaleId) const;
00107
00108 void showAxis(int axisId, bool show = true);
00109 bool isAxisVisible(int axisId) const;
00110
00111 void setPen(const QPen &p);
00112 void setFont(const QFont &);
00113
00114 void setMajorGridPen(const QPen &p);
00115 void setMajorGridPen(int scaleId, const QPen &p);
00116 QPen majorGridPen(int scaleId) const;
00117
00118 void setMinorGridPen(const QPen &p);
00119 void setMinorGridPen(int scaleId, const QPen &p);
00120 QPen minorGridPen(int scaleId) const;
00121
00122 void setAxisPen(int axisId, const QPen &p);
00123 QPen axisPen(int axisId) const;
00124
00125 void setAxisFont(int axisId, const QFont &p);
00126 QFont axisFont(int axisId) const;
00127
00128 virtual void draw(QPainter *p,
00129 const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap,
00130 const QwtDoublePoint &pole, double radius,
00131 const QwtDoubleRect &rect) const;
00132
00133 virtual void updateScaleDiv(const QwtScaleDiv &azimuthMap,
00134 const QwtScaleDiv &radialMap, const QwtDoubleInterval &);
00135
00136 virtual int marginHint() const;
00137
00138 protected:
00139 void drawRays(QPainter *, const QwtDoubleRect &,
00140 const QwtDoublePoint &pole, double radius,
00141 const QwtScaleMap &azimuthMap, const QwtValueList &) const;
00142 void drawCircles(QPainter *, const QwtDoubleRect &,
00143 const QwtDoublePoint &pole, const QwtScaleMap &radialMap,
00144 const QwtValueList &) const;
00145
00146 void drawAxis(QPainter *, int axisId) const;
00147
00148 private:
00149 void updateScaleDraws(
00150 const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap,
00151 const QwtDoublePoint &pole, const double radius) const;
00152
00153 private:
00154 class GridData;
00155 class AxisData;
00156 class PrivateData;
00157 PrivateData *d_data;
00158 };
00159
00160 #endif