Mercurial > hg > svgui
comparison layer/LogNumericalScale.cpp @ 922:26da827e8fb5 tonioni
Merge from cxx11 branch
| author | Chris Cannam |
|---|---|
| date | Mon, 23 Mar 2015 11:26:28 +0000 |
| parents | b66fb15de477 |
| children | 4fe7a09be0fe |
comparison
equal
deleted
inserted
replaced
| 921:4968bbaf1ed8 | 922:26da827e8fb5 |
|---|---|
| 36 void | 36 void |
| 37 LogNumericalScale::paintVertical(View *v, | 37 LogNumericalScale::paintVertical(View *v, |
| 38 const VerticalScaleLayer *layer, | 38 const VerticalScaleLayer *layer, |
| 39 QPainter &paint, | 39 QPainter &paint, |
| 40 int x0, | 40 int x0, |
| 41 float minlog, | 41 double minlog, |
| 42 float maxlog) | 42 double maxlog) |
| 43 { | 43 { |
| 44 int w = getWidth(v, paint) + x0; | 44 int w = getWidth(v, paint) + x0; |
| 45 | 45 |
| 46 int n = 10; | 46 int n = 10; |
| 47 | 47 |
| 48 float val = minlog; | 48 double val = minlog; |
| 49 float inc = (maxlog - val) / n; // even increments of log scale | 49 double inc = (maxlog - val) / n; // even increments of log scale |
| 50 | 50 |
| 51 // smallest increment as displayed | 51 // smallest increment as displayed |
| 52 float minDispInc = LogRange::unmap(minlog + inc) - LogRange::unmap(minlog); | 52 double minDispInc = LogRange::unmap(minlog + inc) - LogRange::unmap(minlog); |
| 53 | 53 |
| 54 #ifdef DEBUG_TIME_VALUE_LAYER | 54 #ifdef DEBUG_TIME_VALUE_LAYER |
| 55 cerr << "min = " << minlog << ", max = " << maxlog << ", inc = " << inc << ", minDispInc = " << minDispInc << endl; | 55 cerr << "min = " << minlog << ", max = " << maxlog << ", inc = " << inc << ", minDispInc = " << minDispInc << endl; |
| 56 #endif | 56 #endif |
| 57 | 57 |
| 58 const int buflen = 40; | 58 const int buflen = 40; |
| 59 char buffer[buflen]; | 59 char buffer[buflen]; |
| 60 | 60 |
| 61 float round = 1.f; | 61 double round = 1.f; |
| 62 int dp = 0; | 62 int dp = 0; |
| 63 | 63 |
| 64 if (minDispInc > 0) { | 64 if (minDispInc > 0) { |
| 65 int prec = trunc(log10f(minDispInc)); | 65 int prec = int(trunc(log10(minDispInc))); |
| 66 if (prec < 0) dp = -prec; | 66 if (prec < 0) dp = -prec; |
| 67 round = powf(10.f, prec); | 67 round = pow(10.0, prec); |
| 68 if (dp > 4) dp = 4; | 68 if (dp > 4) dp = 4; |
| 69 #ifdef DEBUG_TIME_VALUE_LAYER | 69 #ifdef DEBUG_TIME_VALUE_LAYER |
| 70 cerr << "round = " << round << ", prec = " << prec << ", dp = " << dp << endl; | 70 cerr << "round = " << round << ", prec = " << prec << ", dp = " << dp << endl; |
| 71 #endif | 71 #endif |
| 72 } | 72 } |
| 81 if (i == n-1 && | 81 if (i == n-1 && |
| 82 v->height() < paint.fontMetrics().height() * (n*2)) { | 82 v->height() < paint.fontMetrics().height() * (n*2)) { |
| 83 if (layer->getScaleUnits() != "") drawText = false; | 83 if (layer->getScaleUnits() != "") drawText = false; |
| 84 } | 84 } |
| 85 | 85 |
| 86 float dispval = LogRange::unmap(val); | 86 double dispval = LogRange::unmap(val); |
| 87 dispval = floor(dispval / round) * round; | 87 dispval = floor(dispval / round) * round; |
| 88 | 88 |
| 89 #ifdef DEBUG_TIME_VALUE_LAYER | 89 #ifdef DEBUG_TIME_VALUE_LAYER |
| 90 cerr << "val = " << val << ", dispval = " << dispval << endl; | 90 cerr << "val = " << val << ", dispval = " << dispval << endl; |
| 91 #endif | 91 #endif |
| 97 if (prevy >= 0 && (prevy - y) < paint.fontMetrics().height()) { | 97 if (prevy >= 0 && (prevy - y) < paint.fontMetrics().height()) { |
| 98 val += inc; | 98 val += inc; |
| 99 continue; | 99 continue; |
| 100 } | 100 } |
| 101 | 101 |
| 102 int digits = trunc(log10f(dispval)); | 102 int digits = int(trunc(log10(dispval))); |
| 103 int sf = dp + (digits > 0 ? digits : 0); | 103 int sf = dp + (digits > 0 ? digits : 0); |
| 104 if (sf < 4) sf = 4; | 104 if (sf < 4) sf = 4; |
| 105 #ifdef DEBUG_TIME_VALUE_LAYER | 105 #ifdef DEBUG_TIME_VALUE_LAYER |
| 106 cerr << "sf = " << sf << endl; | 106 cerr << "sf = " << sf << endl; |
| 107 #endif | 107 #endif |
