00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef QWT_DIAL_H
00013 #define QWT_DIAL_H 1
00014
00015 #include <qframe.h>
00016 #include <qpalette.h>
00017 #include "qwt_global.h"
00018 #include "qwt_abstract_slider.h"
00019 #include "qwt_round_scale_draw.h"
00020
00021 class QwtDialNeedle;
00022 class QwtDial;
00023
00030 class QWT_EXPORT QwtDialScaleDraw: public QwtRoundScaleDraw
00031 {
00032 public:
00033 explicit QwtDialScaleDraw(QwtDial *);
00034 virtual QwtText label(double value) const;
00035
00036 void setPenWidth(uint);
00037 uint penWidth() const;
00038
00039 private:
00040 QwtDial *d_parent;
00041 int d_penWidth;
00042 };
00043
00068 class QWT_EXPORT QwtDial: public QwtAbstractSlider
00069 {
00070 Q_OBJECT
00071
00072 Q_ENUMS(Shadow)
00073 Q_ENUMS(Mode)
00074
00075 Q_PROPERTY(bool visibleBackground READ hasVisibleBackground WRITE showBackground)
00076 Q_PROPERTY(int lineWidth READ lineWidth WRITE setLineWidth)
00077 Q_PROPERTY(Shadow frameShadow READ frameShadow WRITE setFrameShadow)
00078 Q_PROPERTY(Mode mode READ mode WRITE setMode)
00079 Q_PROPERTY(double origin READ origin WRITE setOrigin)
00080 Q_PROPERTY(bool wrapping READ wrapping WRITE setWrapping)
00081
00082 friend class QwtDialScaleDraw;
00083 public:
00084
00093 enum Shadow
00094 {
00095 Plain = QFrame::Plain,
00096 Raised = QFrame::Raised,
00097 Sunken = QFrame::Sunken
00098 };
00099
00101 enum ScaleOptions
00102 {
00103 ScaleBackbone = 1,
00104 ScaleTicks = 2,
00105 ScaleLabel = 4
00106 };
00107
00113 enum Mode
00114 {
00115 RotateNeedle,
00116 RotateScale
00117 };
00118
00119 QwtDial( QWidget* parent = NULL);
00120 virtual ~QwtDial();
00121
00122 void setFrameShadow(Shadow);
00123 Shadow frameShadow() const;
00124
00125 bool hasVisibleBackground() const;
00126 void showBackground(bool);
00127
00128 void setLineWidth(int);
00129 int lineWidth() const;
00130
00131 void setMode(Mode);
00132 Mode mode() const;
00133
00134 virtual void setWrapping(bool);
00135 bool wrapping() const;
00136
00137 virtual void setScale(int maxMajIntv, int maxMinIntv, double step = 0.0);
00138
00139 void setScaleArc(double min, double max);
00140 void setScaleOptions(int);
00141 void setScaleTicks(int minLen, int medLen, int majLen, int penWidth = 1);
00142
00143 double minScaleArc() const;
00144 double maxScaleArc() const;
00145
00146 virtual void setOrigin(double);
00147 double origin() const;
00148
00149 virtual void setNeedle(QwtDialNeedle *);
00150 const QwtDialNeedle *needle() const;
00151 QwtDialNeedle *needle();
00152
00153 QRect boundingRect() const;
00154 QRect contentsRect() const;
00155 virtual QRect scaleContentsRect() const;
00156
00157 virtual QSize sizeHint() const;
00158 virtual QSize minimumSizeHint() const;
00159
00160 virtual void setScaleDraw(QwtDialScaleDraw *);
00161
00162 QwtDialScaleDraw *scaleDraw();
00163 const QwtDialScaleDraw *scaleDraw() const;
00164
00165 protected:
00166 virtual void paintEvent(QPaintEvent *);
00167 virtual void resizeEvent(QResizeEvent *);
00168 virtual void keyPressEvent(QKeyEvent *);
00169
00170 virtual void updateMask();
00171
00172 virtual void drawFrame(QPainter *p);
00173 virtual void drawContents(QPainter *) const;
00174 virtual void drawFocusIndicator(QPainter *) const;
00175
00176 virtual void drawScale(QPainter *, const QPoint ¢er,
00177 int radius, double origin, double arcMin, double arcMax) const;
00178
00188 virtual void drawScaleContents(QPainter *painter, const QPoint ¢er,
00189 int radius) const;
00190
00191 virtual void drawNeedle(QPainter *, const QPoint &,
00192 int radius, double direction, QPalette::ColorGroup) const;
00193
00194 virtual QwtText scaleLabel(double) const;
00195 void updateScale();
00196
00197 virtual void rangeChange();
00198 virtual void valueChange();
00199
00200 virtual double getValue(const QPoint &);
00201 virtual void getScrollMode(const QPoint &,
00202 int &scrollMode, int &direction);
00203
00204 private:
00205 class PrivateData;
00206 PrivateData *d_data;
00207 };
00208
00209 #endif