Qwt Polar User's Guide  1.1.1
 All Classes Functions Typedefs Enumerations Enumerator Pages
qwt_polar_plot.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_PLOT_H
10 #define QWT_POLAR_PLOT_H 1
11 
12 #include "qwt_polar_global.h"
13 #include "qwt_polar.h"
14 #include "qwt_polar_itemdict.h"
15 #include <qwt_interval.h>
16 #include <qwt_scale_map.h>
17 #include <qwt_point_polar.h>
18 #include <qframe.h>
19 
20 class QwtRoundScaleDraw;
21 class QwtScaleEngine;
22 class QwtScaleDiv;
23 class QwtTextLabel;
24 class QwtPolarCanvas;
25 class QwtPolarLayout;
26 class QwtAbstractLegend;
27 
46 class QWT_POLAR_EXPORT QwtPolarPlot: public QFrame, public QwtPolarItemDict
47 {
48  Q_OBJECT
49 
50  Q_PROPERTY( QBrush plotBackground READ plotBackground WRITE setPlotBackground )
51  Q_PROPERTY( double azimuthOrigin READ azimuthOrigin WRITE setAzimuthOrigin )
52 
53 
54 public:
60  {
63 
66 
69 
72 
81  ExternalLegend
82  };
83 
84  explicit QwtPolarPlot( QWidget *parent = NULL );
85  QwtPolarPlot( const QwtText &title, QWidget *parent = NULL );
86 
87  virtual ~QwtPolarPlot();
88 
89  void setTitle( const QString & );
90  void setTitle( const QwtText & );
91 
92  QwtText title() const;
93 
94  QwtTextLabel *titleLabel();
95  const QwtTextLabel *titleLabel() const;
96 
97  void setAutoReplot( bool tf = true );
98  bool autoReplot() const;
99 
100  void setAutoScale( int scaleId );
101  bool hasAutoScale( int scaleId ) const;
102 
103  void setScaleMaxMinor( int scaleId, int maxMinor );
104  int scaleMaxMinor( int scaleId ) const;
105 
106  int scaleMaxMajor( int scaleId ) const;
107  void setScaleMaxMajor( int scaleId, int maxMajor );
108 
109  QwtScaleEngine *scaleEngine( int scaleId );
110  const QwtScaleEngine *scaleEngine( int scaleId ) const;
111  void setScaleEngine( int scaleId, QwtScaleEngine * );
112 
113  void setScale( int scaleId, double min, double max, double step = 0 );
114 
115  void setScaleDiv( int scaleId, const QwtScaleDiv & );
116  const QwtScaleDiv *scaleDiv( int scaleId ) const;
117  QwtScaleDiv *scaleDiv( int scaleId );
118 
119  QwtScaleMap scaleMap( int scaleId, double radius ) const;
120  QwtScaleMap scaleMap( int scaleId ) const;
121 
122  void updateScale( int scaleId );
123 
124  double azimuthOrigin() const;
125 
126  void zoom( const QwtPointPolar&, double factor );
127  void unzoom();
128 
129  QwtPointPolar zoomPos() const;
130  double zoomFactor() const;
131 
132  // Canvas
133 
134  QwtPolarCanvas *canvas();
135  const QwtPolarCanvas *canvas() const;
136 
137  void setPlotBackground ( const QBrush &c );
138  const QBrush& plotBackground() const;
139 
140  virtual void drawCanvas( QPainter *, const QRectF & ) const;
141 
142  // Legend
143 
144  void insertLegend( QwtAbstractLegend *,
145  LegendPosition = RightLegend, double ratio = -1.0 );
146 
147  QwtAbstractLegend *legend();
148  const QwtAbstractLegend *legend() const;
149 
150  void updateLegend();
151  void updateLegend( const QwtPolarItem * );
152 
153  // Layout
154  QwtPolarLayout *plotLayout();
155  const QwtPolarLayout *plotLayout() const;
156 
157  QwtInterval visibleInterval() const;
158  QRectF plotRect() const;
159  QRectF plotRect( const QRectF & ) const;
160 
161  int plotMarginHint() const;
162 
163  virtual QVariant itemToInfo( QwtPolarItem * ) const;
164  virtual QwtPolarItem *infoToItem( const QVariant & ) const;
165 
166 Q_SIGNALS:
173  void itemAttached( QwtPolarItem *plotItem, bool on );
174 
183  void legendDataChanged( const QVariant &itemInfo,
184  const QList<QwtLegendData> &data );
185 
190  void layoutChanged();
191 
192 public Q_SLOTS:
193  virtual void replot();
194  void autoRefresh();
195  void setAzimuthOrigin( double );
196 
197 protected:
198  virtual bool event( QEvent * );
199  virtual void resizeEvent( QResizeEvent * );
200 
201  virtual void updateLayout();
202 
203  virtual void drawItems( QPainter *painter,
204  const QwtScaleMap &radialMap, const QwtScaleMap &azimuthMap,
205  const QPointF &pole, double radius,
206  const QRectF &canvasRect ) const;
207 
208 private:
209  friend class QwtPolarItem;
210  void attachItem( QwtPolarItem *, bool );
211 
212  void initPlot( const QwtText & );
213 
214  class ScaleData;
215  class PrivateData;
216  PrivateData *d_data;
217 };
218 
219 #endif
The legend will be below the canvas.
Definition: qwt_polar_plot.h:68
A dictionary for polar plot items.
Definition: qwt_polar_itemdict.h:32
The legend will be left from the canvas.
Definition: qwt_polar_plot.h:62
Layout class for QwtPolarPlot.
Definition: qwt_polar_layout.h:24
The legend will be between canvas and title.
Definition: qwt_polar_plot.h:71
Base class for items on a polar plot.
Definition: qwt_polar_item.h:37
Canvas of a QwtPolarPlot.
Definition: qwt_polar_canvas.h:27
LegendPosition
Definition: qwt_polar_plot.h:59
A plotting widget, displaying a polar coordinate system.
Definition: qwt_polar_plot.h:46
The legend will be right from the canvas.
Definition: qwt_polar_plot.h:65