00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_DIAL_NEEDLE_H
00011 #define QWT_DIAL_NEEDLE_H 1
00012
00013 #include "qwt_global.h"
00014 #include <qpalette.h>
00015
00016 class QPainter;
00017 class QPoint;
00018
00031 class QWT_EXPORT QwtDialNeedle
00032 {
00033 public:
00034 QwtDialNeedle();
00035 virtual ~QwtDialNeedle();
00036
00037 virtual void setPalette( const QPalette & );
00038 const QPalette &palette() const;
00039
00040 virtual void draw( QPainter *painter, const QPointF ¢er,
00041 double length, double direction,
00042 QPalette::ColorGroup = QPalette::Active ) const;
00043
00044 protected:
00060 virtual void drawNeedle( QPainter *painter,
00061 double length, QPalette::ColorGroup colorGroup ) const = 0;
00062
00063 virtual void drawKnob( QPainter *, double width,
00064 const QBrush &, bool sunken ) const;
00065
00066 private:
00067 QPalette d_palette;
00068 };
00069
00083 class QWT_EXPORT QwtDialSimpleNeedle: public QwtDialNeedle
00084 {
00085 public:
00087 enum Style
00088 {
00090 Arrow,
00091
00093 Ray
00094 };
00095
00096 QwtDialSimpleNeedle( Style, bool hasKnob = true,
00097 const QColor &mid = Qt::gray, const QColor &base = Qt::darkGray );
00098
00099 void setWidth( double width );
00100 double width() const;
00101
00102 protected:
00103 virtual void drawNeedle( QPainter *, double length,
00104 QPalette::ColorGroup ) const;
00105
00106 private:
00107 Style d_style;
00108 bool d_hasKnob;
00109 double d_width;
00110 };
00111
00129 class QWT_EXPORT QwtCompassMagnetNeedle: public QwtDialNeedle
00130 {
00131 public:
00133 enum Style
00134 {
00136 TriangleStyle,
00137
00139 ThinStyle
00140 };
00141
00142 QwtCompassMagnetNeedle( Style = TriangleStyle,
00143 const QColor &light = Qt::white, const QColor &dark = Qt::red );
00144
00145 protected:
00146 virtual void drawNeedle( QPainter *,
00147 double length, QPalette::ColorGroup ) const;
00148
00149 private:
00150 Style d_style;
00151 };
00152
00166 class QWT_EXPORT QwtCompassWindArrow: public QwtDialNeedle
00167 {
00168 public:
00170 enum Style
00171 {
00173 Style1,
00174
00176 Style2
00177 };
00178
00179 QwtCompassWindArrow( Style, const QColor &light = Qt::white,
00180 const QColor &dark = Qt::gray );
00181
00182 protected:
00183 virtual void drawNeedle( QPainter *,
00184 double length, QPalette::ColorGroup ) const;
00185
00186 private:
00187 Style d_style;
00188 };
00189
00190 #endif