~l3on/ubuntu/oneiric/qwt/fix-921430

« back to all changes in this revision

Viewing changes to qwt-5.0.1/src/qwt_dial_needle.h

  • Committer: Bazaar Package Importer
  • Author(s): Fathi Boudra
  • Date: 2007-10-05 15:20:41 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20071005152041-qmybqh4fj9jejyo2
Tags: 5.0.2-2
* Handle nostrip build option. (Closes: #437877)
* Build libqwt5-doc package in binary-indep target. (Closes: #443110)

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
 
 
16
 
class QPainter;
17
 
class 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
 
 
31
 
class QWT_EXPORT QwtDialNeedle
32
 
{
33
 
public:
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
 
 
53
 
protected:
54
 
    static void drawKnob(QPainter *, const QPoint &pos, 
55
 
        int width, const QBrush &, bool sunken);
56
 
 
57
 
private:
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
 
 
73
 
class QWT_EXPORT QwtDialSimpleNeedle: public QwtDialNeedle
74
 
{
75
 
public:
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
 
 
102
 
private:
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
 
 
125
 
class QWT_EXPORT QwtCompassMagnetNeedle: public QwtDialNeedle
126
 
{
127
 
public:
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
 
 
148
 
protected:
149
 
    static void drawPointer(QPainter *painter, const QBrush &brush,
150
 
        int colorOffset, const QPoint &center, 
151
 
        int length, int width, double direction);
152
 
 
153
 
private:
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
 
 
170
 
class QWT_EXPORT QwtCompassWindArrow: public QwtDialNeedle
171
 
{
172
 
public:
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
 
 
194
 
private:
195
 
    Style d_style;
196
 
};
197
 
 
198
 
#endif // QWT_DIAL_NEEDLE_H