source: pacpusframework/branches/2.0-beta1/include/extlib/qwt-5.2.1/qwt_dial_needle.h@ 89

Last change on this file since 89 was 89, checked in by morasjul, 11 years ago

PACPUS 2.0 Beta deployed in new branch

Major changes:
-Add communication interface between components
-Add examples for communications interface (TestComponents)
-Move to Qt5 support

  • Property svn:executable set to *
File size: 5.1 KB
Line 
1/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
2 * Qwt Widget Library
3 * Copyright (C) 1997 Josef Wilgen
4 * Copyright (C) 2002 Uwe Rathmann
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the Qwt License, Version 1.0
8 *****************************************************************************/
9
10#ifndef QWT_DIAL_NEEDLE_H
11#define QWT_DIAL_NEEDLE_H 1
12
13#include <qpalette.h>
14#include "qwt_global.h"
15
16class QPainter;
17class QPoint;
18
19/*!
20 \brief Base class for needles that can be used in a QwtDial.
21
22 QwtDialNeedle is a pointer that indicates a value by pointing
23 to a specific direction.
24
25 Qwt is missing a set of good looking needles.
26 Contributions are very welcome.
27
28 \sa QwtDial, QwtCompass
29*/
30
31class QWT_EXPORT QwtDialNeedle
32{
33public:
34 QwtDialNeedle();
35 virtual ~QwtDialNeedle();
36
37 /*!
38 Draw the needle
39
40 \param painter Painter
41 \param center Center of the dial, start position for the needle
42 \param length Length of the needle
43 \param direction Direction of the needle, in degrees counter clockwise
44 \param cg Color group, used for painting
45 */
46 virtual void draw(QPainter *painter, const QPoint &center,
47 int length, double direction,
48 QPalette::ColorGroup cg = QPalette::Active) const = 0;
49
50 virtual void setPalette(const QPalette &);
51 const QPalette &palette() const;
52
53protected:
54 static void drawKnob(QPainter *, const QPoint &pos,
55 int width, const QBrush &, bool sunken);
56
57private:
58 QPalette d_palette;
59};
60
61/*!
62 \brief A needle for dial widgets
63
64 The following colors are used:
65 - QColorGroup::Mid\n
66 Pointer
67 - QColorGroup::base\n
68 Knob
69
70 \sa QwtDial, QwtCompass
71*/
72
73class QWT_EXPORT QwtDialSimpleNeedle: public QwtDialNeedle
74{
75public:
76 //! Style of the needle
77 enum Style
78 {
79 Arrow,
80 Ray
81 };
82
83 QwtDialSimpleNeedle(Style, bool hasKnob = true,
84 const QColor &mid = Qt::gray, const QColor &base = Qt::darkGray);
85
86 virtual void draw(QPainter *, const QPoint &, int length,
87 double direction, QPalette::ColorGroup = QPalette::Active) const;
88
89 static void drawArrowNeedle(QPainter *,
90 const QPalette&, QPalette::ColorGroup,
91 const QPoint &, int length, int width, double direction,
92 bool hasKnob);
93
94 static void drawRayNeedle(QPainter *,
95 const QPalette&, QPalette::ColorGroup,
96 const QPoint &, int length, int width, double direction,
97 bool hasKnob);
98
99 void setWidth(int width);
100 int width() const;
101
102private:
103 Style d_style;
104 bool d_hasKnob;
105 int d_width;
106};
107
108/*!
109 \brief A magnet needle for compass widgets
110
111 A magnet needle points to two opposite directions indicating
112 north and south.
113
114 The following colors are used:
115 - QColorGroup::Light\n
116 Used for pointing south
117 - QColorGroup::Dark\n
118 Used for pointing north
119 - QColorGroup::Base\n
120 Knob (ThinStyle only)
121
122 \sa QwtDial, QwtCompass
123*/
124
125class QWT_EXPORT QwtCompassMagnetNeedle: public QwtDialNeedle
126{
127public:
128 //! Style of the needle
129 enum Style
130 {
131 TriangleStyle,
132 ThinStyle
133 };
134 QwtCompassMagnetNeedle(Style = TriangleStyle,
135 const QColor &light = Qt::white, const QColor &dark = Qt::red);
136
137 virtual void draw(QPainter *, const QPoint &, int length,
138 double direction, QPalette::ColorGroup = QPalette::Active) const;
139
140 static void drawTriangleNeedle(QPainter *,
141 const QPalette &, QPalette::ColorGroup,
142 const QPoint &, int length, double direction);
143
144 static void drawThinNeedle(QPainter *,
145 const QPalette &, QPalette::ColorGroup,
146 const QPoint &, int length, double direction);
147
148protected:
149 static void drawPointer(QPainter *painter, const QBrush &brush,
150 int colorOffset, const QPoint &center,
151 int length, int width, double direction);
152
153private:
154 Style d_style;
155};
156
157/*!
158 \brief An indicator for the wind direction
159
160 QwtCompassWindArrow shows the direction where the wind comes from.
161
162 - QColorGroup::Light\n
163 Used for Style1, or the light half of Style2
164 - QColorGroup::Dark\n
165 Used for the dark half of Style2
166
167 \sa QwtDial, QwtCompass
168*/
169
170class QWT_EXPORT QwtCompassWindArrow: public QwtDialNeedle
171{
172public:
173 //! Style of the arrow
174 enum Style
175 {
176 Style1,
177 Style2
178 };
179
180 QwtCompassWindArrow(Style, const QColor &light = Qt::white,
181 const QColor &dark = Qt::gray);
182
183 virtual void draw(QPainter *, const QPoint &, int length,
184 double direction, QPalette::ColorGroup = QPalette::Active) const;
185
186 static void drawStyle1Needle(QPainter *,
187 const QPalette &, QPalette::ColorGroup,
188 const QPoint &, int length, double direction);
189
190 static void drawStyle2Needle(QPainter *,
191 const QPalette &, QPalette::ColorGroup,
192 const QPoint &, int length, double direction);
193
194private:
195 Style d_style;
196};
197
198#endif // QWT_DIAL_NEEDLE_H
Note: See TracBrowser for help on using the repository browser.