1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-04 23:14:47 -04:00

Spectrum averaging: fixed average (3): scale engine fix

This commit is contained in:
f4exb
2018-07-01 04:10:36 +02:00
parent 0b496bd800
commit 9913d550e0
6 changed files with 47 additions and 31 deletions
+32 -23
View File
@@ -27,43 +27,48 @@ static double trunc(double d)
}
*/
QString ScaleEngine::formatTick(double value, int decimalPlaces, bool fancyTime)
QString ScaleEngine::formatTick(double value, int decimalPlaces)
{
if((m_physicalUnit != Unit::Time) || (!fancyTime))
if (m_physicalUnit != Unit::TimeHMS)
{
return QString("%1").arg(m_makeOpposite ? -value : value, 0, 'f', decimalPlaces);
}
else
{
if (m_scale < 1.0f) { // sub second prints just as is
return QString("%1").arg(m_makeOpposite ? -value : value, 0, 'f', decimalPlaces);
}
QString str;
double orig = fabs(value);
double actual = value * m_scale; // this is the actual value in seconds
double orig = fabs(actual);
double tmp;
if(orig >= 86400.0) {
tmp = floor(value / 86400.0);
tmp = floor(actual / 86400.0);
str = QString("%1.").arg(tmp, 0, 'f', 0);
value -= tmp * 86400.0;
if(value < 0.0)
value *= -1.0;
actual -= tmp * 86400.0;
if(actual < 0.0)
actual *= -1.0;
}
if(orig >= 3600.0) {
tmp = floor(value / 3600.0);
tmp = floor(actual / 3600.0);
str += QString("%1:").arg(tmp, 2, 'f', 0, QChar('0'));
value -= tmp * 3600.0;
if(value < 0.0)
value *= -1.0;
actual -= tmp * 3600.0;
if(actual < 0.0)
actual *= -1.0;
}
if(orig >= 60.0) {
tmp = floor(value / 60.0);
tmp = floor(actual / 60.0);
str += QString("%1:").arg(tmp, 2, 'f', 0, QChar('0'));
value -= tmp * 60.0;
if(value < 0.0)
value *= -1.0;
actual -= tmp * 60.0;
if(actual < 0.0)
actual *= -1.0;
}
tmp = m_makeOpposite ? -value : value;
tmp = m_makeOpposite ? -actual : actual;
str += QString("%1").arg(tmp, 2, 'f', decimalPlaces, QChar('0'));
return str;
@@ -164,14 +169,18 @@ void ScaleEngine::calcScaleFactor()
break;
case Unit::Time:
if(median < 0.001) {
case Unit::TimeHMS:
if (median < 0.001) {
m_unitStr = QString("µs");
m_scale = 0.000001;
} else if(median < 1.0) {
} else if (median < 1.0) {
m_unitStr = QString("ms");
m_scale = 0.001;
} else {
} else if (median < 1000.0) {
m_unitStr = QString("s");
} else {
m_unitStr = QString("ks");
m_scale = 1000.0;
}
break;
@@ -581,15 +590,15 @@ const ScaleEngine::TickList& ScaleEngine::getTickList()
QString ScaleEngine::getRangeMinStr()
{
if(m_unitStr.length() > 0)
return QString("%1 %2").arg(formatTick(m_rangeMin / m_scale, m_decimalPlaces, false)).arg(m_unitStr);
else return QString("%1").arg(formatTick(m_rangeMin / m_scale, m_decimalPlaces, false));
return QString("%1 %2").arg(formatTick(m_rangeMin / m_scale, m_decimalPlaces)).arg(m_unitStr);
else return QString("%1").arg(formatTick(m_rangeMin / m_scale, m_decimalPlaces));
}
QString ScaleEngine::getRangeMaxStr()
{
if(m_unitStr.length() > 0)
return QString("%1 %2").arg(formatTick(m_rangeMax / m_scale, m_decimalPlaces, false)).arg(m_unitStr);
else return QString("%1").arg(formatTick(m_rangeMax / m_scale, m_decimalPlaces, false));
return QString("%1 %2").arg(formatTick(m_rangeMax / m_scale, m_decimalPlaces)).arg(m_unitStr);
else return QString("%1").arg(formatTick(m_rangeMax / m_scale, m_decimalPlaces));
}
float ScaleEngine::getScaleWidth()