3 GaugeHSI::GaugeHSI(QGraphicsItem *parent) :
8 void GaugeHSI::paintHSI(QPainter *painter,int width,int height)
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 ();
18 QBrush cbrush(m_color);
19 painter->setBrush(cbrush);
22 QPen nopen(Qt::NoPen);
23 QBrush nbrush(Qt::NoBrush);
24 QBrush backBrush(m_backColor);
27 painter->setFont(m_font);
28 QFontMetrics fm(m_font);
29 QPolygon zeroTriangle;
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);
48 zeroTriangle+=QPoint(0,-xo+10);
49 zeroTriangle+=QPoint(-5,-xo);
50 zeroTriangle+=QPoint(5,-xo);
51 zeroTriangle+=QPoint(0,-xo+10);
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);
62 painter->drawPolygon(zeroTriangle);
63 painter->drawPolygon(zeroPlane);
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;
97 void GaugeHSI::paint(QPainter *painter,const QStyleOptionGraphicsItem *option,
100 paintHSI(painter,size().width(),size().height());