X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=mardrone%2Fgauges%2Fgaugehsi.cpp;fp=mardrone%2Fgauges%2Fgaugehsi.cpp;h=377fab99b08d2ca9e6e9c9012a2bbfeb2d4b749b;hb=323e8e1692d15a3435f1813f038e757cd2614938;hp=9c6661b2eadef69b23bcab323da397f46de889f8;hpb=5338a11daffd03a49ef70b077b37ddc1414063a5;p=mardrone diff --git a/mardrone/gauges/gaugehsi.cpp b/mardrone/gauges/gaugehsi.cpp index 9c6661b..377fab9 100644 --- a/mardrone/gauges/gaugehsi.cpp +++ b/mardrone/gauges/gaugehsi.cpp @@ -1,4 +1,5 @@ #include "gaugehsi.h" +#include GaugeHSI::GaugeHSI(QGraphicsItem *parent) : Gauge(parent) @@ -10,7 +11,8 @@ void GaugeHSI::paintHSI(QPainter *painter,int width,int height) 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); @@ -24,8 +26,10 @@ void GaugeHSI::paintHSI(QPainter *painter,int width,int height) 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; @@ -52,20 +56,20 @@ void GaugeHSI::paintHSI(QPainter *painter,int width,int height) - 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"; @@ -73,24 +77,24 @@ void GaugeHSI::paintHSI(QPainter *painter,int width,int height) 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; } }