From 8102d0ed080833eb50f79b5d3eeeba04d53e9976 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 7 May 2018 11:33:42 +0200 Subject: [PATCH] Scale engine: fixed tick text size calculation --- sdrgui/gui/scaleengine.cpp | 13 ++++++++----- sdrgui/gui/scaleengine.h | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/sdrgui/gui/scaleengine.cpp b/sdrgui/gui/scaleengine.cpp index 20eab2fe8..2e921ead7 100644 --- a/sdrgui/gui/scaleengine.cpp +++ b/sdrgui/gui/scaleengine.cpp @@ -281,7 +281,7 @@ double ScaleEngine::calcMajorTickUnits(double distance, int* retDecimalPlaces) return sign * base * pow(10.0, exponent); } -int ScaleEngine::calcTickTextSize() +int ScaleEngine::calcTickTextSize(double distance) { int tmp; int tickLen; @@ -295,7 +295,7 @@ int ScaleEngine::calcTickTextSize() if(tmp > tickLen) tickLen = tmp; - calcMajorTickUnits((m_rangeMax - m_rangeMin) / m_scale, &decimalPlaces); + calcMajorTickUnits(distance, &decimalPlaces); return tickLen + decimalPlaces + 1; } @@ -356,21 +356,24 @@ void ScaleEngine::reCalc() rangeMinScaled = m_rangeMin / m_scale; rangeMaxScaled = m_rangeMax / m_scale; - if(m_orientation == Qt::Vertical) { + if(m_orientation == Qt::Vertical) + { maxNumMajorTicks = (int)(m_size / (fontMetrics.lineSpacing() * 1.3f)); + m_majorTickValueDistance = calcMajorTickUnits((rangeMaxScaled - rangeMinScaled) / maxNumMajorTicks, &m_decimalPlaces); } else { - majorTickSize = (calcTickTextSize() + 2) * m_charSize * 1.2f; + majorTickSize = (calcTickTextSize((rangeMaxScaled - rangeMinScaled) / 20) + 2) * m_charSize; if(majorTickSize != 0.0) { maxNumMajorTicks = (int)(m_size / majorTickSize); } else { maxNumMajorTicks = 20; } + + m_majorTickValueDistance = calcMajorTickUnits((rangeMaxScaled - rangeMinScaled) / maxNumMajorTicks, &m_decimalPlaces); } - m_majorTickValueDistance = calcMajorTickUnits((rangeMaxScaled - rangeMinScaled) / maxNumMajorTicks, &m_decimalPlaces); numMajorTicks = (int)((rangeMaxScaled - rangeMinScaled) / m_majorTickValueDistance); if(numMajorTicks == 0) { diff --git a/sdrgui/gui/scaleengine.h b/sdrgui/gui/scaleengine.h index cdfde9c3b..a66f6b093 100644 --- a/sdrgui/gui/scaleengine.h +++ b/sdrgui/gui/scaleengine.h @@ -62,7 +62,7 @@ private: void calcCharSize(); void calcScaleFactor(); double calcMajorTickUnits(double distance, int* retDecimalPlaces); - int calcTickTextSize(); + int calcTickTextSize(double distance); void forceTwoTicks(); void reCalc();