Mercurial > hg > svgui
comparison layer/TimeValueLayer.cpp @ 669:123ebecd12e6 tonioni
Merge from default branch
author | Chris Cannam |
---|---|
date | Tue, 16 Jul 2013 14:45:55 +0100 |
parents | ab9fefdaa103 |
children | d52751e2728b |
comparison
equal
deleted
inserted
replaced
663:1a0fdad4af4d | 669:123ebecd12e6 |
---|---|
744 { | 744 { |
745 min = 0.0; | 745 min = 0.0; |
746 max = 0.0; | 746 max = 0.0; |
747 log = false; | 747 log = false; |
748 | 748 |
749 bool haveAutoAlignment = false; | |
750 | |
749 if (shouldAutoAlign()) { | 751 if (shouldAutoAlign()) { |
750 | 752 |
751 if (!v->getValueExtents(m_model->getScaleUnits(), min, max, log)) { | 753 if (!v->getValueExtents(m_model->getScaleUnits(), min, max, log)) { |
752 min = m_model->getValueMinimum(); | 754 min = m_model->getValueMinimum(); |
753 max = m_model->getValueMaximum(); | 755 max = m_model->getValueMaximum(); |
754 } else if (log) { | 756 } else { |
755 LogRange::mapRange(min, max); | 757 haveAutoAlignment = true; |
758 if (log) { | |
759 LogRange::mapRange(min, max); | |
760 } | |
756 } | 761 } |
757 | 762 |
758 } else if (m_verticalScale == PlusMinusOneScale) { | 763 } else if (m_verticalScale == PlusMinusOneScale) { |
759 | 764 |
760 min = -1.0; | 765 min = -1.0; |
772 | 777 |
773 #ifdef DEBUG_TIME_VALUE_LAYER | 778 #ifdef DEBUG_TIME_VALUE_LAYER |
774 std::cerr << "TimeValueLayer::getScaleExtents: min = " << min << ", max = " << max << std::endl; | 779 std::cerr << "TimeValueLayer::getScaleExtents: min = " << min << ", max = " << max << std::endl; |
775 #endif | 780 #endif |
776 | 781 |
777 if (max == min) { | 782 if (!haveAutoAlignment) { |
778 max = max + 0.5; | 783 |
779 min = min - 0.5; | 784 if (max == min) { |
780 } else { | 785 max = max + 0.5; |
781 float margin = (max - min) / 10.0; | 786 min = min - 0.5; |
782 max = max + margin; | 787 } else { |
783 min = min - margin; | 788 float margin = (max - min) / 10.0; |
784 } | 789 max = max + margin; |
785 | 790 min = min - margin; |
786 #ifdef DEBUG_TIME_VALUE_LAYER | 791 } |
787 std::cerr << "TimeValueLayer::getScaleExtents: min = " << min << ", max = " << max << " (after adjustment)" << std::endl; | 792 |
788 #endif | 793 #ifdef DEBUG_TIME_VALUE_LAYER |
794 std::cerr << "TimeValueLayer::getScaleExtents: min = " << min << ", max = " << max << " (after adjustment)" << std::endl; | |
795 #endif | |
796 } | |
789 } | 797 } |
790 | 798 |
791 int | 799 int |
792 TimeValueLayer::getYForValue(View *v, float val) const | 800 TimeValueLayer::getYForValue(View *v, float val) const |
793 { | 801 { |
1253 int prec = trunc(log10f(inc)); | 1261 int prec = trunc(log10f(inc)); |
1254 prec -= 1; | 1262 prec -= 1; |
1255 if (prec < 0) dp = -prec; | 1263 if (prec < 0) dp = -prec; |
1256 round = powf(10.f, prec); | 1264 round = powf(10.f, prec); |
1257 #ifdef DEBUG_TIME_VALUE_LAYER | 1265 #ifdef DEBUG_TIME_VALUE_LAYER |
1258 std::cerr << "inc = " << inc << ", round = " << round << std::endl; | 1266 std::cerr << "inc = " << inc << ", round = " << round << ", dp = " << dp << std::endl; |
1259 #endif | 1267 #endif |
1260 } | 1268 } |
1261 | 1269 |
1262 int prevy = -1; | 1270 int prevy = -1; |
1263 | 1271 |
1293 continue; | 1301 continue; |
1294 } | 1302 } |
1295 } | 1303 } |
1296 | 1304 |
1297 if (logarithmic) { | 1305 if (logarithmic) { |
1298 sprintf(buffer, "%.*g", dp < 2 ? 2 : dp, LogRange::unmap(dispval)); | 1306 double dv = LogRange::unmap(dispval); |
1307 int digits = trunc(log10f(dv)); | |
1308 int sf = dp + (digits > 0 ? digits : 0); | |
1309 if (sf < 2) sf = 2; | |
1310 sprintf(buffer, "%.*g", sf, dv); | |
1299 } else { | 1311 } else { |
1300 sprintf(buffer, "%.*f", dp, dispval); | 1312 sprintf(buffer, "%.*f", dp, dispval); |
1301 } | 1313 } |
1302 QString label = QString(buffer); | 1314 QString label = QString(buffer); |
1303 | 1315 |