4 GaugeHSI::GaugeHSI(QGraphicsItem *parent) :
9 void GaugeHSI::paintHSI(QPainter *painter,int width,int height)
12 int xo=(width/2)/m_scale;
13 int yo=(height/2)/m_scale;
15 painter->setTransform(QTransform().translate(scenePos().x()+width/2,scenePos().y()+height/2).scale(m_scale,m_scale));
16 QTransform savematrix= painter->transform ();
20 QBrush cbrush(m_color);
21 painter->setBrush(cbrush);
24 QPen nopen(Qt::NoPen);
25 QBrush nbrush(Qt::NoBrush);
26 QBrush backBrush(m_backColor);
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;
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);
52 zeroTriangle+=QPoint(0,-xo+10);
53 zeroTriangle+=QPoint(-5,-xo);
54 zeroTriangle+=QPoint(5,-xo);
55 zeroTriangle+=QPoint(0,-xo+10);
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);
66 painter->drawPolygon(zeroTriangle);
67 painter->drawPolygon(zeroPlane);
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;
101 void GaugeHSI::paint(QPainter *painter,const QStyleOptionGraphicsItem *option,
104 paintHSI(painter,size().width(),size().height());