Joinig to video broadcast group on OSX improved
[mardrone] / mardrone / gauges / gaugehsi.cpp
index 9c6661b..377fab9 100644 (file)
@@ -1,4 +1,5 @@
 #include "gaugehsi.h"
+#include <QDebug>
 
 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;
     }
 }