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