qwt_dial_needle.h

00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
00002  * Qwt Widget Library
00003  * Copyright (C) 1997   Josef Wilgen
00004  * Copyright (C) 2002   Uwe Rathmann
00005  * 
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the Qwt License, Version 1.0
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 &center, 
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 &center, 
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

Generated on Mon Feb 26 21:22:36 2007 for Qwt User's Guide by  doxygen 1.4.6