sync repo
[mardrone] / mardrone / gauges / gauge.h
1 #ifndef GAUGEBAND_H
2 #define GAUGEBAND_H
3
4 #include <QGraphicsWidget>
5 #include <QGraphicsItem>
6 #include <QPainter>
7
8 #define UP 1
9 #define RIGHT 2
10 #define DOWN 3
11 #define LEFT 4
12 #define COMPASS_UP 5
13
14
15 #define SCROLL 0x10
16 #define SCROLL_UP 0x11
17 #define SCROLL_RIGHT 0x12
18 #define SCROLL_DOWN 0x13
19 #define SCROLL_LEFT 0x14
20
21 class Gauge : public QGraphicsWidget
22 {
23     Q_OBJECT
24     Q_PROPERTY(QString name READ name WRITE setName)
25     Q_PROPERTY(QString format READ format WRITE setFormat)
26     Q_PROPERTY(QString options READ options WRITE setOptions)
27     Q_PROPERTY(QFont font READ getFont WRITE setFont)
28     Q_PROPERTY(QColor color READ getColor WRITE setColor)
29     Q_PROPERTY(QColor backColor READ getBackColor WRITE setBackColor)
30     Q_PROPERTY(QColor borderColor READ getBorderColor WRITE setBorderColor)
31     Q_PROPERTY(int gaugeStyle READ gaugeStyle WRITE setGaugeStyle)
32     Q_PROPERTY(float value2 READ value2 WRITE setValue2)
33     Q_PROPERTY(float value READ value WRITE setValue)
34     Q_PROPERTY(float displayScale READ displayScale WRITE setDisplayScale)
35     Q_PROPERTY(float low READ low WRITE setLow)
36     Q_PROPERTY(float high READ high WRITE setHigh)
37     Q_PROPERTY(float lowRed READ lowRed WRITE setLowRed)
38     Q_PROPERTY(float highRed READ highRed WRITE setHighRed)
39     Q_PROPERTY(float tickIncrement READ tickIncrement WRITE setTickIncrement)
40     Q_PROPERTY(float tickSpacing READ tickSpacing WRITE setTickSpacing)
41     Q_PROPERTY(float tickLength READ tickLength WRITE setTickLength)
42     Q_PROPERTY(float lineWidth READ lineWidth WRITE setLineWidth)
43     Q_PROPERTY(float lowPosition READ lowPosition WRITE setLowPosition)
44     Q_PROPERTY(float highPosition READ highPosition WRITE setHighPosition)
45     Q_PROPERTY(int   tickMinor READ tickMinor WRITE setTickMinor)
46     Q_PROPERTY(QImage* needleImage READ needleImage WRITE setNeedleImage )
47
48 public:
49     explicit Gauge(QGraphicsItem *parent = 0);
50
51     virtual void paint(QPainter *painter,const QStyleOptionGraphicsItem *option,
52                                QWidget *widget);
53
54     QRectF boundingRect() const;
55
56     bool testOption(QString a);
57
58     void propChanged();
59
60
61     QImage *needleImage() { return m_needleImage; }
62     void setNeedleImage(QImage *needle) { m_needleImage=needle ;};
63
64     QString name() const { return m_name;};
65     void setName(const QString &name_) {m_name=name_;propChanged();}
66     QString options() const { return m_options;};
67     void setOptions(const QString &options_) {m_options=options_;propChanged();}
68     QString format() const { return m_format;};
69     void setFormat(const QString &name_) {m_format=name_;propChanged();}
70     void setGaugeStyle(int val_) { m_style=val_;propChanged();};
71     int  gaugeStyle() {return m_style;};
72     void setValue(float val_);
73     float value();
74     void setValue2(float val_);
75     float value2();
76     void setDisplayScale(float val_) { m_scale=val_;update(boundingRect());};
77     float displayScale() {return m_scale;};
78     void setLow(float val_) { m_low=val_;propChanged();};
79     float low() {return m_low;};
80     void setHigh(float val_) { m_high=val_;propChanged();};
81     float high() {return m_high;};
82     void setLowRed(float val_) { m_lowred=val_;propChanged();};
83     float lowRed() {return m_lowred;};
84     void setHighRed(float val_) { m_highred=val_;propChanged();};
85     float highRed() {return m_highred;};
86     void setTickIncrement(float val_) { m_tickIncrement=val_;propChanged();};
87     float tickIncrement() {return m_tickIncrement;};
88     void setTickSpacing(float val_) { m_tickSpacing=val_;propChanged();};
89     float tickSpacing() {return m_tickSpacing;};
90
91     void setTickLength(float val_) { m_tickLength=val_;propChanged();};
92     float tickLength() {return m_tickLength;};
93     void setLineWidth(float val_) { m_lineWidth=val_;propChanged();};
94     float lineWidth() {return m_lineWidth;};
95     float lowPosition() {return m_lowPosition;};
96     void setLowPosition(float val_) { m_lowPosition=val_;propChanged();};
97     float highPosition() {return m_highPosition;};
98     void setHighPosition(float val_) { m_highPosition=val_;propChanged();};
99
100     void setTickMinor(int val_) { m_tickMinor=val_;propChanged();};
101     float tickMinor() {return m_tickMinor;};
102
103     void setFont(QFont val_) { m_font=val_;propChanged();};
104     QFont getFont() {return m_font;};
105     void setColor(QColor val_) { m_color=val_;propChanged();};
106     QColor getColor() {return m_color;};
107     void setBackColor(QColor val_) { m_backColor=val_;propChanged();};
108     QColor getBackColor() {return m_backColor;};
109     void setBorderColor(QColor val_) { m_borderColor=val_;propChanged();};
110     QColor getBorderColor() {return m_borderColor;};
111 signals:
112
113 public slots:
114 public:
115     QString m_name;
116     QString m_format;
117     QString m_options;      // Free format options string
118     int   m_tickIncrement;  // Tick increment
119     int   m_tickSpacing;    // Tick spacing
120     int   m_tickMinor;      // Ninor, non labeled ticks
121     int   m_style;
122     float m_scale;
123     float m_value;  // primary value,pitch in horizon
124     float m_value2; // Roll in horizon
125     float m_low;        // low value to display
126     float m_high;       // High value to display
127     float m_lowred;     // low red limit
128     float m_lowyellow;  // low yellow limit
129     float m_highyellow; // higest yellow limit
130     float m_highred;
131     float m_tickLength;
132     float m_highPosition;
133     float m_lowPosition;
134     float m_lineWidth;
135     int m_textSize;
136     QFont m_font;
137     QColor m_color;
138     QColor m_backColor;
139     QColor m_borderColor;
140     QImage *m_needleImage;
141 };
142
143 #endif // GAUGE_H