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_sldbase.h"
00019
#include "qwt_scldraw.h"
00020
00021
class QwtDialNeedle;
00022
class QwtDial;
00023
00030 class QWT_EXPORT QwtDialScaleDraw:
public QwtScaleDraw
00031 {
00032
public:
00033 QwtDialScaleDraw(
QwtDial *);
00034
virtual QString
label(
double value)
const;
00035
00036
void showLabels(
bool);
00037
bool visibleLabels()
const;
00038
00039
void setPenWidth(uint);
00040 uint penWidth()
const;
00041
00042
private:
00043
QwtDial *d_parent;
00044
int d_penWidth;
00045
bool d_visibleLabels;
00046 };
00047
00072 class QWT_EXPORT QwtDial:
public QwtSliderBase
00073 {
00074 Q_OBJECT
00075
00076 Q_ENUMS(Shadow)
00077 Q_ENUMS(Mode)
00078
00079 Q_PROPERTY(
bool visibleBackground READ hasVisibleBackground WRITE showBackground)
00080 Q_PROPERTY(
int lineWidth READ lineWidth WRITE setLineWidth)
00081 Q_PROPERTY(Shadow frameShadow READ frameShadow WRITE setFrameShadow)
00082 Q_PROPERTY(Mode mode READ mode WRITE setMode)
00083 Q_PROPERTY(
double origin READ origin WRITE setOrigin)
00084 Q_PROPERTY(
bool wrapping READ wrapping WRITE setWrapping)
00085
00086
friend class QwtDialScaleDraw;
00087
public:
00088
00097 enum Shadow
00098 {
00099 Plain = QFrame::Plain,
00100 Raised = QFrame::Raised,
00101 Sunken = QFrame::Sunken
00102 };
00103
00105 enum ScaleOptions
00106 {
00107 ScaleBackbone = 1,
00108 ScaleTicks = 2,
00109 ScaleLabel = 4
00110 };
00111
00117 enum Mode
00118 {
00119 RotateNeedle,
00120 RotateScale
00121 };
00122
00123 QwtDial( QWidget* parent=0,
const char* name = 0);
00124
virtual ~QwtDial();
00125
00126
void setFrameShadow(Shadow);
00127 Shadow frameShadow() const;
00128
00129
bool hasVisibleBackground() const;
00130
void showBackground(
bool);
00131
00132
void setLineWidth(
int);
00133
int lineWidth() const;
00134
00135
void setMode(Mode);
00136 Mode mode() const;
00137
00138 virtual
void setWrapping(
bool);
00139
bool wrapping() const;
00140
00141 virtual
void setScale(
int maxMajIntv,
int maxMinIntv,
double step = 0.0);
00142
00143
void setScaleArc(
double min,
double max);
00144
void setScaleOptions(
int);
00145
void setScaleTicks(
int minLen,
int medLen,
int majLen,
int penWidth = 1);
00146
00148 double minScaleArc()
const {
return d_minScaleArc; }
00150 double maxScaleArc()
const {
return d_maxScaleArc; }
00151
00152
virtual void setOrigin(
double);
00153
double origin() const;
00154
00155 virtual
void setNeedle(
QwtDialNeedle *);
00156 const QwtDialNeedle *needle() const;
00157 QwtDialNeedle *needle();
00158
00159 QRect boundingRect() const;
00160 QRect contentsRect() const;
00161 virtual QRect scaleContentsRect() const;
00162
00163 virtual QSize sizeHint() const;
00164 virtual QSize minimumSizeHint() const;
00165
00166 virtual
void setScaleDraw(QwtDialScaleDraw *);
00167
00169 QwtDialScaleDraw *scaleDraw() {
return d_scaleDraw; }
00171 const QwtDialScaleDraw *scaleDraw()
const {
return d_scaleDraw; }
00172
00173
protected:
00174
virtual void paintEvent(QPaintEvent *);
00175
virtual void resizeEvent(QResizeEvent *);
00176
virtual void keyPressEvent(QKeyEvent *);
00177
00178
virtual void drawFrame(QPainter *p);
00179
virtual void drawContents(QPainter *) const;
00180 virtual
void drawFocusIndicator(QPainter *) const;
00181
00182 virtual
void drawScale(QPainter *, const QPoint ¢er,
00183
int radius,
double origin,
double arcMin,
double arcMax) const;
00184
00194 virtual
void drawScaleContents(QPainter *painter, const QPoint ¢er,
00195
int radius) const;
00196
00197 virtual
void drawNeedle(QPainter *, const QPoint &,
00198
int radius,
double direction, QPalette::ColorGroup) const;
00199
00200 virtual QString scaleLabel(
double) const;
00201
void updateScale();
00202
00203 virtual
void rangeChange();
00204 virtual
void valueChange();
00205
00206 virtual
double getValue(const QPoint &);
00207 virtual
void getScrollMode(const QPoint &,
00208
int &scrollMode,
int &direction);
00209
00210 private:
00211
bool d_visibleBackground;
00212 Shadow d_frameShadow;
00213
int d_lineWidth;
00214
00215 Mode d_mode;
00216
00217
double d_origin;
00218
double d_minScaleArc;
00219
double d_maxScaleArc;
00220
00221 QwtDialScaleDraw *d_scaleDraw;
00222
int d_maxMajIntv;
00223
int d_maxMinIntv;
00224
double d_scaleStep;
00225
00226
QwtDialNeedle *d_needle;
00227
00228 static
double d_previousDir;
00229 };
00230
00231 #endif