Qwt Polar User's Guide  0.1.0
qwt_polar_grid.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_GRID_H
10 #define QWT_POLAR_GRID_H
11 
12 #include "qwt_polar_global.h"
13 #include "qwt_polar.h"
14 #include "qwt_polar_item.h"
15 #include "qwt_polar_plot.h"
16 #include "qwt_scale_div.h"
17 
18 class QPainter;
19 class QPen;
20 class QwtScaleMap;
21 class QwtScaleDiv;
22 class QwtRoundScaleDraw;
23 class QwtScaleDraw;
24 
42 class QWT_POLAR_EXPORT QwtPolarGrid: public QwtPolarItem
43 {
44 public:
71  {
72  SmartOriginLabel = 1,
73  HideMaxRadiusLabel = 2,
74  ClipAxisBackground = 4,
75  SmartScaleDraw = 8,
76  ClipGridLines = 16
77  };
78 
87  {
88  AutoScaling = 1
89  };
90 
91  explicit QwtPolarGrid();
92  virtual ~QwtPolarGrid();
93 
94  virtual int rtti() const;
95 
96  void setDisplayFlag(DisplayFlag, bool on = true);
97  bool testDisplayFlag(DisplayFlag) const;
98 
99  void setGridAttribute(GridAttribute, bool on = true);
100  bool testGridAttribute(GridAttribute) const;
101 
102  void showGrid(int scaleId, bool show = true);
103  bool isGridVisible(int scaleId) const;
104 
105  void showMinorGrid(int scaleId, bool show = true);
106  bool isMinorGridVisible(int scaleId) const;
107 
108  void showAxis(int axisId, bool show = true);
109  bool isAxisVisible(int axisId) const;
110 
111  void setPen(const QPen &p);
112  void setFont(const QFont &);
113 
114  void setMajorGridPen(const QPen &p);
115  void setMajorGridPen(int scaleId, const QPen &p);
116  QPen majorGridPen(int scaleId) const;
117 
118  void setMinorGridPen(const QPen &p);
119  void setMinorGridPen(int scaleId, const QPen &p);
120  QPen minorGridPen(int scaleId) const;
121 
122  void setAxisPen(int axisId, const QPen &p);
123  QPen axisPen(int axisId) const;
124 
125  void setAxisFont(int axisId, const QFont &p);
126  QFont axisFont(int axisId) const;
127 
128  virtual void draw(QPainter *p,
129  const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap,
130  const QwtDoublePoint &pole, double radius,
131  const QwtDoubleRect &rect) const;
132 
133  virtual void updateScaleDiv(const QwtScaleDiv &azimuthMap,
134  const QwtScaleDiv &radialMap, const QwtDoubleInterval &);
135 
136  virtual int marginHint() const;
137 
138 protected:
139  void drawRays(QPainter *, const QwtDoubleRect &,
140  const QwtDoublePoint &pole, double radius,
141  const QwtScaleMap &azimuthMap, const QwtValueList &) const;
142  void drawCircles(QPainter *, const QwtDoubleRect &,
143  const QwtDoublePoint &pole, const QwtScaleMap &radialMap,
144  const QwtValueList &) const;
145 
146  void drawAxis(QPainter *, int axisId) const;
147 
148 private:
149  void updateScaleDraws(
150  const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap,
151  const QwtDoublePoint &pole, const double radius) const;
152 
153 private:
154  class GridData;
155  class AxisData;
156  class PrivateData;
157  PrivateData *d_data;
158 };
159 
160 #endif