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 <qpalette.h>
00014 #include "qwt_global.h"
00015
00016 class QPainter;
00017 class QPoint;
00018
00031 class QWT_EXPORT QwtDialNeedle
00032 {
00033 public:
00034 QwtDialNeedle();
00035 virtual ~QwtDialNeedle();
00036
00046 virtual void draw(QPainter *painter, const QPoint ¢er,
00047 int length, double direction,
00048 QPalette::ColorGroup cg = QPalette::Active) const = 0;
00049
00050 virtual void setPalette(const QPalette &);
00051 const QPalette &palette() const;
00052
00053 protected:
00054 static void drawKnob(QPainter *, const QPoint &pos,
00055 int width, const QBrush &, bool sunken);
00056
00057 private:
00058 QPalette d_palette;
00059 };
00060
00073 class QWT_EXPORT QwtDialSimpleNeedle: public QwtDialNeedle
00074 {
00075 public:
00077 enum Style
00078 {
00079 Arrow,
00080 Ray
00081 };
00082
00083 QwtDialSimpleNeedle(Style, bool hasKnob = true,
00084 const QColor &mid = Qt::gray, const QColor &base = Qt::darkGray);
00085
00086 virtual void draw(QPainter *, const QPoint &, int length,
00087 double direction, QPalette::ColorGroup = QPalette::Active) const;
00088
00089 static void drawArrowNeedle(QPainter *,
00090 const QPalette&, QPalette::ColorGroup,
00091 const QPoint &, int length, int width, double direction,
00092 bool hasKnob);
00093
00094 static void drawRayNeedle(QPainter *,
00095 const QPalette&, QPalette::ColorGroup,
00096 const QPoint &, int length, int width, double direction,
00097 bool hasKnob);
00098
00099 void setWidth(int width);
00100 int width() const;
00101
00102 private:
00103 Style d_style;
00104 bool d_hasKnob;
00105 int d_width;
00106 };
00107
00125 class QWT_EXPORT QwtCompassMagnetNeedle: public QwtDialNeedle
00126 {
00127 public:
00129 enum Style
00130 {
00131 TriangleStyle,
00132 ThinStyle
00133 };
00134 QwtCompassMagnetNeedle(Style = TriangleStyle,
00135 const QColor &light = Qt::white, const QColor &dark = Qt::red);
00136
00137 virtual void draw(QPainter *, const QPoint &, int length,
00138 double direction, QPalette::ColorGroup = QPalette::Active) const;
00139
00140 static void drawTriangleNeedle(QPainter *,
00141 const QPalette &, QPalette::ColorGroup,
00142 const QPoint &, int length, double direction);
00143
00144 static void drawThinNeedle(QPainter *,
00145 const QPalette &, QPalette::ColorGroup,
00146 const QPoint &, int length, double direction);
00147
00148 protected:
00149 static void drawPointer(QPainter *painter, const QBrush &brush,
00150 int colorOffset, const QPoint ¢er,
00151 int length, int width, double direction);
00152
00153 private:
00154 Style d_style;
00155 };
00156
00170 class QWT_EXPORT QwtCompassWindArrow: public QwtDialNeedle
00171 {
00172 public:
00174 enum Style
00175 {
00176 Style1,
00177 Style2
00178 };
00179
00180 QwtCompassWindArrow(Style, const QColor &light = Qt::white,
00181 const QColor &dark = Qt::gray);
00182
00183 virtual void draw(QPainter *, const QPoint &, int length,
00184 double direction, QPalette::ColorGroup = QPalette::Active) const;
00185
00186 static void drawStyle1Needle(QPainter *,
00187 const QPalette &, QPalette::ColorGroup,
00188 const QPoint &, int length, double direction);
00189
00190 static void drawStyle2Needle(QPainter *,
00191 const QPalette &, QPalette::ColorGroup,
00192 const QPoint &, int length, double direction);
00193
00194 private:
00195 Style d_style;
00196 };
00197
00198 #endif // QWT_DIAL_NEEDLE_H