19 #include "base/LogRange.h" 33 return paint.fontMetrics().width(
"-000.00") + 10;
49 float inc = (maxlog - val) / n;
52 float minDispInc = LogRange::unmap(minlog + inc) - LogRange::unmap(minlog);
54 #ifdef DEBUG_TIME_VALUE_LAYER 55 cerr <<
"min = " << minlog <<
", max = " << maxlog <<
", inc = " << inc <<
", minDispInc = " << minDispInc << endl;
64 int prec = trunc(log10f(minDispInc));
65 if (prec < 0) dp = -prec;
66 round = powf(10.f, prec);
68 #ifdef DEBUG_TIME_VALUE_LAYER 69 cerr <<
"round = " << round <<
", prec = " << prec <<
", dp = " << dp << endl;
75 for (
int i = 0; i < n; ++i) {
81 v->height() < paint.fontMetrics().height() * (n*2)) {
85 float dispval = LogRange::unmap(val);
86 dispval = floor(dispval / round) * round;
88 #ifdef DEBUG_TIME_VALUE_LAYER 89 cerr <<
"val = " << val <<
", dispval = " << dispval << endl;
94 ty = y - paint.fontMetrics().height() + paint.fontMetrics().ascent() + 2;
96 if (prevy >= 0 && (prevy - y) < paint.fontMetrics().height()) {
101 int digits = trunc(log10f(dispval));
102 int sf = dp + (digits > 0 ? digits : 0);
104 #ifdef DEBUG_TIME_VALUE_LAYER 105 cerr <<
"sf = " << sf << endl;
107 sprintf(buffer,
"%.*g", sf, dispval);
109 QString label = QString(buffer);
111 paint.drawLine(w - 5, y, w, y);
114 paint.drawText(w - paint.fontMetrics().width(label) - 6,
void paintVertical(View *v, const VerticalScaleLayer *layer, QPainter &paint, int x0, float minlog, float maxlog)
int getWidth(View *v, QPainter &paint)
virtual int getYForValue(View *, float value) const =0
View is the base class of widgets that display one or more overlaid views of data against a horizonta...
virtual QString getScaleUnits() const =0