00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef QWT_POLAR_PLOT_H
00010 #define QWT_POLAR_PLOT_H 1
00011
00012 #include <qframe.h>
00013 #include "qwt_polar_global.h"
00014 #include "qwt_double_interval.h"
00015 #include "qwt_scale_map.h"
00016 #include "qwt_polar.h"
00017 #include "qwt_polar_point.h"
00018 #include "qwt_polar_itemdict.h"
00019
00020 class QwtRoundScaleDraw;
00021 class QwtScaleEngine;
00022 class QwtScaleDiv;
00023 class QwtTextLabel;
00024 class QwtPolarCanvas;
00025 class QwtPolarLayout;
00026
00045 class QWT_POLAR_EXPORT QwtPolarPlot: public QFrame, public QwtPolarItemDict
00046 {
00047 Q_OBJECT
00048
00049 Q_PROPERTY(QBrush plotBackground READ plotBackground WRITE setPlotBackground)
00050 Q_PROPERTY(double azimuthOrigin READ azimuthOrigin WRITE setAzimuthOrigin)
00051
00052
00053 public:
00076 enum LegendPosition
00077 {
00078 LeftLegend,
00079 RightLegend,
00080 BottomLegend,
00081 TopLegend,
00082
00083 ExternalLegend
00084 };
00085
00086 explicit QwtPolarPlot( QWidget *parent = NULL);
00087 QwtPolarPlot(const QwtText &title, QWidget *parent = NULL);
00088
00089 virtual ~QwtPolarPlot();
00090
00091 void setTitle(const QString &);
00092 void setTitle(const QwtText &);
00093
00094 QwtText title() const;
00095
00096 QwtTextLabel *titleLabel();
00097 const QwtTextLabel *titleLabel() const;
00098
00099 void setAutoReplot(bool tf = true);
00100 bool autoReplot() const;
00101
00102 void setAutoScale(int scaleId);
00103 bool hasAutoScale(int scaleId) const;
00104
00105 void setScaleMaxMinor(int scaleId, int maxMinor);
00106 int scaleMaxMinor(int scaleId) const;
00107
00108 int scaleMaxMajor(int scaleId) const;
00109 void setScaleMaxMajor(int scaleId, int maxMajor);
00110
00111 QwtScaleEngine *scaleEngine(int scaleId);
00112 const QwtScaleEngine *scaleEngine(int scaleId) const;
00113 void setScaleEngine(int scaleId, QwtScaleEngine *);
00114
00115 void setScale(int scaleId, double min, double max, double step = 0);
00116
00117 void setScaleDiv(int scaleId, const QwtScaleDiv &);
00118 const QwtScaleDiv *scaleDiv(int scaleId) const;
00119 QwtScaleDiv *scaleDiv(int scaleId);
00120
00121 QwtScaleMap scaleMap(int scaleId, double radius) const;
00122 QwtScaleMap scaleMap(int scaleId) const;
00123
00124 void updateScale(int scaleId);
00125
00126 double azimuthOrigin() const;
00127
00128 void zoom(const QwtPolarPoint&, double factor);
00129 void unzoom();
00130
00131 QwtPolarPoint zoomPos() const;
00132 double zoomFactor() const;
00133
00134 virtual void polish();
00135
00136
00137
00138 QwtPolarCanvas *canvas();
00139 const QwtPolarCanvas *canvas() const;
00140
00141 void setPlotBackground (const QBrush &c);
00142 const QBrush& plotBackground() const;
00143
00144 virtual void drawCanvas(QPainter *, const QwtDoubleRect &) const;
00145
00146
00147
00148
00149 void insertLegend(QwtLegend *, LegendPosition = QwtPolarPlot::RightLegend,
00150 double ratio = -1.0);
00151
00152 QwtLegend *legend();
00153 const QwtLegend *legend() const;
00154
00155
00156 QwtPolarLayout *plotLayout();
00157 const QwtPolarLayout *plotLayout() const;
00158
00159 QwtDoubleInterval visibleInterval() const;
00160 QwtDoubleRect plotRect() const;
00161 QwtDoubleRect plotRect(const QRect &) const;
00162
00163 int plotMarginHint() const;
00164
00165 void renderTo(QPaintDevice &) const;
00166 virtual void renderTo(QPainter *, const QRect &) const;
00167
00168 signals:
00179 void legendClicked(QwtPolarItem *plotItem);
00180
00192 void legendChecked(QwtPolarItem *plotItem, bool on);
00193
00198 void layoutChanged();
00199
00200 public slots:
00201 virtual void replot();
00202 void autoRefresh();
00203 void setAzimuthOrigin(double);
00204
00205 protected slots:
00206 virtual void legendItemClicked();
00207 virtual void legendItemChecked(bool);
00208
00209 protected:
00210 virtual bool event(QEvent *);
00211 virtual void resizeEvent(QResizeEvent *);
00212
00213 virtual void updateLayout();
00214
00215 virtual void drawItems(QPainter *painter,
00216 const QwtScaleMap &radialMap, const QwtScaleMap &azimuthMap,
00217 const QwtDoublePoint &pole, double radius,
00218 const QwtDoubleRect &canvasRect) const;
00219
00220 virtual void renderTitle(QPainter *, const QRect &) const;
00221 virtual void renderLegend(QPainter *, const QRect &) const;
00222 virtual void renderLegendItem(QPainter *,
00223 const QWidget *, const QRect &) const;
00224
00225 private:
00226 void initPlot(const QwtText &);
00227
00228 class ScaleData;
00229 class PrivateData;
00230 PrivateData *d_data;
00231 };
00232
00233 #endif