#include "gaugehsi.h"
+#include <QDebug>
GaugeHSI::GaugeHSI(QGraphicsItem *parent) :
Gauge(parent)
float alpha;
int xo=(width/2)/m_scale;
int yo=(height/2)/m_scale;
- painter->setTransform(QTransform().scale(m_scale,m_scale));
+ int r=width/2;
+ painter->setTransform(QTransform().translate(scenePos().x()+width/2,scenePos().y()+height/2).scale(m_scale,m_scale));
QTransform savematrix= painter->transform ();
QPen pen(m_color);
pen.setWidth(1);
QBrush backBrush(m_backColor);
alpha=0;
- painter->setFont(m_font);
- QFontMetrics fm(m_font);
+ QFont font=m_font;
+ font.setPixelSize(font.pixelSize()*width/150.0); // Scale font relative to "default" size
+ painter->setFont(font);
+ QFontMetrics fm(font);
QPolygon zeroTriangle;
QPolygon zeroPlane;
- painter->setTransform(QTransform().translate(xo+scenePos().x()/m_scale, yo+scenePos().y()/m_scale),true);
+
painter->setBrush(backBrush);
painter->setPen(nopen);
- painter->drawChord(QRect(-xo,-xo,2*xo,2*xo),0,360*16);
+ painter->drawChord(QRect(-r,-r,2*r,2*r),0,360*16);
painter->setBrush(cbrush);
painter->setPen(pen);
painter->drawPolygon(zeroTriangle);
- painter->drawPolygon(zeroPlane);
+ painter->drawPolygon(zeroPlane);
while(alpha<360) {
QString label;
painter->setTransform(savematrix);
- painter->setTransform(QTransform().translate(xo+scenePos().x()/m_scale, yo+scenePos().y()/m_scale).rotate(alpha+m_value),true);
+ painter->setTransform(QTransform().rotate(alpha+m_value),true);
label=QString("%1").arg(alpha/10);
if(alpha==0) label=" N";
if(alpha==90) label=" E";
if(alpha==270) label=" W";
int labelWidth=fm.width(label);
int labelHeight=fm.height();
- painter->drawText(labelWidth/-2,-xo+10+labelHeight,label);
- painter->drawLine(0,xo-2,0,xo-12);
+ painter->drawText(labelWidth/-2,-r+10+labelHeight,label);
+ painter->drawLine(0,r-2,0,r-12);
painter->setTransform(savematrix);
- painter->setTransform(QTransform().translate(xo+scenePos().x()/m_scale, yo+scenePos().y()/m_scale).rotate(alpha+m_value+10),true);
- painter->drawLine(0,xo-2,0,xo-7);
+ painter->setTransform(QTransform().rotate(alpha+m_value+10),true);
+ painter->drawLine(0,r-2,0,r-7);
painter->setTransform(savematrix);
- painter->setTransform(QTransform().translate(xo+scenePos().x()/m_scale, yo+scenePos().y()/m_scale).rotate(alpha+m_value+20),true);
- painter->drawLine(0,xo-2,0,xo-7);
+ painter->setTransform(QTransform().rotate(alpha+m_value+20),true);
+ painter->drawLine(0,r-2,0,r-7);
painter->setTransform(savematrix);
- painter->setTransform(QTransform().translate(xo+scenePos().x()/m_scale, yo+scenePos().y()/m_scale).rotate(alpha+m_value+5),true);
- painter->drawLine(0,xo-2,0,xo-7);
+ painter->setTransform(QTransform().rotate(alpha+m_value+5),true);
+ painter->drawLine(0,r-2,0,r-7);
painter->setTransform(savematrix);
- painter->setTransform(QTransform().translate(xo+scenePos().x()/m_scale, yo+scenePos().y()/m_scale).rotate(alpha+m_value+15),true);
- painter->drawLine(0,xo-2,0,xo-7);
+ painter->setTransform(QTransform().rotate(alpha+m_value+15),true);
+ painter->drawLine(0,r-2,0,r-7);
painter->setTransform(savematrix);
- painter->setTransform(QTransform().translate(xo+scenePos().x()/m_scale, yo+scenePos().y()/m_scale).rotate(alpha+m_value+25),true);
- painter->drawLine(0,xo-2,0,xo-7);
- alpha+=m_tickIncrement;
+ painter->setTransform(QTransform().rotate(alpha+m_value+25),true);
+ painter->drawLine(0,r-2,0,r-7);
+ alpha+=m_tickIncrement?m_tickIncrement:10;
}
}