UIname added
[mardrone] / mardrone / gauges / gaugehsi.cpp
1 #include "gaugehsi.h"
2
3 GaugeHSI::GaugeHSI(QGraphicsItem *parent) :
4     Gauge(parent)
5 {
6 }
7
8 void GaugeHSI::paintHSI(QPainter *painter,int width,int height)
9 {
10     float alpha;
11     int xo=(width/2)/m_scale;
12     int yo=(height/2)/m_scale;
13     painter->setTransform(QTransform().scale(m_scale,m_scale));
14     QTransform savematrix= painter->transform ();
15     QPen pen(m_color);
16     pen.setWidth(1);
17     painter->setPen(pen);
18     QBrush cbrush(m_color);
19     painter->setBrush(cbrush);
20
21
22     QPen nopen(Qt::NoPen);
23     QBrush nbrush(Qt::NoBrush);
24     QBrush backBrush(m_backColor);
25
26     alpha=0;
27     painter->setFont(m_font);
28     QFontMetrics fm(m_font);
29     QPolygon zeroTriangle;
30     QPolygon zeroPlane;
31
32     zeroPlane+=QPoint(-2,0);
33     zeroPlane+=QPoint(-20,0);
34     zeroPlane+=QPoint(-20,-2);
35     zeroPlane+=QPoint(-2,-4);
36     zeroPlane+=QPoint(0,-14);
37     zeroPlane+=QPoint(2,-4);
38     zeroPlane+=QPoint(20,-2);
39     zeroPlane+=QPoint(20,0);
40     zeroPlane+=QPoint(2,0);
41     zeroPlane+=QPoint(2,15);
42     zeroPlane+=QPoint(10,15);
43     zeroPlane+=QPoint(10,18);
44     zeroPlane+=QPoint(-10,18);
45     zeroPlane+=QPoint(-10,15);
46     zeroPlane+=QPoint(-2,15);
47
48     zeroTriangle+=QPoint(0,-xo+10);
49     zeroTriangle+=QPoint(-5,-xo);
50     zeroTriangle+=QPoint(5,-xo);
51     zeroTriangle+=QPoint(0,-xo+10);
52
53
54
55     painter->setTransform(QTransform().translate(xo+scenePos().x()/m_scale, yo+scenePos().y()/m_scale),true);
56     painter->setBrush(backBrush);
57     painter->setPen(nopen);
58     painter->drawChord(QRect(-xo,-xo,2*xo,2*xo),0,360*16);
59     painter->setBrush(cbrush);
60     painter->setPen(pen);
61
62     painter->drawPolygon(zeroTriangle);
63      painter->drawPolygon(zeroPlane);
64
65     while(alpha<360) {
66         QString label;
67         painter->setTransform(savematrix);
68         painter->setTransform(QTransform().translate(xo+scenePos().x()/m_scale, yo+scenePos().y()/m_scale).rotate(alpha+m_value),true);
69         label=QString("%1").arg(alpha/10);
70         if(alpha==0)   label=" N";
71         if(alpha==90)  label=" E";
72         if(alpha==180) label=" S";
73         if(alpha==270) label=" W";
74         int labelWidth=fm.width(label);
75         int labelHeight=fm.height();
76         painter->drawText(labelWidth/-2,-xo+10+labelHeight,label);
77         painter->drawLine(0,xo-2,0,xo-12);
78         painter->setTransform(savematrix);
79         painter->setTransform(QTransform().translate(xo+scenePos().x()/m_scale, yo+scenePos().y()/m_scale).rotate(alpha+m_value+10),true);
80         painter->drawLine(0,xo-2,0,xo-7);
81         painter->setTransform(savematrix);
82         painter->setTransform(QTransform().translate(xo+scenePos().x()/m_scale, yo+scenePos().y()/m_scale).rotate(alpha+m_value+20),true);
83         painter->drawLine(0,xo-2,0,xo-7);
84         painter->setTransform(savematrix);
85         painter->setTransform(QTransform().translate(xo+scenePos().x()/m_scale, yo+scenePos().y()/m_scale).rotate(alpha+m_value+5),true);
86         painter->drawLine(0,xo-2,0,xo-7);
87         painter->setTransform(savematrix);
88         painter->setTransform(QTransform().translate(xo+scenePos().x()/m_scale, yo+scenePos().y()/m_scale).rotate(alpha+m_value+15),true);
89         painter->drawLine(0,xo-2,0,xo-7);
90         painter->setTransform(savematrix);
91         painter->setTransform(QTransform().translate(xo+scenePos().x()/m_scale, yo+scenePos().y()/m_scale).rotate(alpha+m_value+25),true);
92         painter->drawLine(0,xo-2,0,xo-7);
93         alpha+=m_tickIncrement;
94     }
95 }
96
97 void GaugeHSI::paint(QPainter *painter,const QStyleOptionGraphicsItem *option,
98                            QWidget *widget)
99 {
100         paintHSI(painter,size().width(),size().height());
101 };