]> Devoid-pointer.net GitWeb - anyanka.git/commitdiff
Draw numeric cues on axes with the same font as value labels and do not
authorMichal Malý <madcatxster@devoid-pointer.net>
Thu, 9 Oct 2014 19:11:32 +0000 (21:11 +0200)
committerMichal Malý <madcatxster@devoid-pointer.net>
Thu, 9 Oct 2014 19:11:32 +0000 (21:11 +0200)
draw cues that would overflow

signaldrawer.cpp

index 91f334e6f0ec92061ee2f54bb8ff89217f19b4fa..013088d2bdd7bb5917d96ff103b67b2695964e13 100644 (file)
@@ -22,7 +22,7 @@
 
 #include "logger.h"
 #include "signaldrawer.h"
-
+#include <QFontMetrics>
 #include <QDebug>
 
 const QString SignalDrawer::ME_SENDER_STR("SignalDrawer");
@@ -220,6 +220,7 @@ bool SignalDrawer::drawScale(const SignalController::Axis axis, QPixmap* const t
   }
 
   p.begin(target);
+  p.setFont(m_axisLabelFont);
   switch (axis) {
   case SignalController::Axis::TIME:
     relMin = m_relXMin; relMax = m_relXMax;
@@ -269,13 +270,24 @@ bool SignalDrawer::drawScale(const SignalController::Axis axis, QPixmap* const t
 void SignalDrawer::renderTimeScaleText(QPainter* const p, const double rel, const double value)
 {
   const int xPix = relToXPix(rel);
+  const QString text = m_locale.toString(value, 'f', 3);
 
+  /* Do not draw labels that would overflow */
+  QRect br = p->fontMetrics().boundingRect(text);
+  if (xPix + br.width() > m_gWidth)
+    return;
   p->drawText(xPix + 2, m_gHeight + 15, m_locale.toString(value, 'f', 3));
 }
 
 void SignalDrawer::renderValueScaleText(QPainter* const p, const double rel, const double value)
 {
   const int yPix = relToYPix(rel);
+  const QString text = m_locale.toString(value, 'f', 2);
+
+  /* Do not draw labels that would overflow */
+  QRect br = p->fontMetrics().boundingRect(text);
+  if (yPix - br.height() < 0)
+    return;
 
   p->drawText(1, yPix + 5, m_locale.toString(value, 'f', 2));
 }