comparison layer/LogColourScale.cpp @ 1324:13d9b422f7fe zoom

Merge from default branch
author Chris Cannam
date Mon, 17 Sep 2018 13:51:31 +0100
parents a34a2a25907c
children f2525e6cbdf1
comparison
equal deleted inserted replaced
1183:57d192e26331 1324:13d9b422f7fe
24 24
25 #include "LayerGeometryProvider.h" 25 #include "LayerGeometryProvider.h"
26 26
27 int 27 int
28 LogColourScale::getWidth(LayerGeometryProvider *, 28 LogColourScale::getWidth(LayerGeometryProvider *,
29 QPainter &paint) 29 QPainter &paint)
30 { 30 {
31 return paint.fontMetrics().width("-000.00") + 15; 31 return paint.fontMetrics().width("-000.00") + 15;
32 } 32 }
33 33
34 void 34 void
35 LogColourScale::paintVertical(LayerGeometryProvider *v, 35 LogColourScale::paintVertical(LayerGeometryProvider *v,
36 const ColourScaleLayer *layer, 36 const ColourScaleLayer *layer,
37 QPainter &paint, 37 QPainter &paint,
38 int /* x0 */, 38 int /* x0 */,
39 double minlog, 39 double minlog,
40 double maxlog) 40 double maxlog)
41 { 41 {
42 int h = v->getPaintHeight(); 42 int h = v->getPaintHeight();
43 43
44 int n = 10; 44 int n = 10;
45 45
58 int tx = 5 + boxx + boxw; 58 int tx = 5 + boxx + boxw;
59 paint.drawRect(boxx, boxy, boxw, boxh); 59 paint.drawRect(boxx, boxy, boxw, boxh);
60 60
61 paint.save(); 61 paint.save();
62 for (int y = 0; y < boxh; ++y) { 62 for (int y = 0; y < boxh; ++y) {
63 double val = ((boxh - y) * (maxlog - minlog)) / boxh + minlog; 63 double val = ((boxh - y) * (maxlog - minlog)) / boxh + minlog;
64 paint.setPen(layer->getColourForValue(v, LogRange::unmap(val))); 64 paint.setPen(layer->getColourForValue(v, LogRange::unmap(val)));
65 paint.drawLine(boxx + 1, y + boxy + 1, boxx + boxw, y + boxy + 1); 65 paint.drawLine(boxx + 1, y + boxy + 1, boxx + boxw, y + boxy + 1);
66 } 66 }
67 paint.restore(); 67 paint.restore();
68 68
69 int dp = 0; 69 int dp = 0;
70 if (inc > 0) { 70 if (inc > 0) {
73 if (prec < 0) dp = -prec; 73 if (prec < 0) dp = -prec;
74 } 74 }
75 75
76 for (int i = 0; i < n; ++i) { 76 for (int i = 0; i < n; ++i) {
77 77
78 int y, ty; 78 int y, ty;
79 79
80 y = boxy + int(boxh - ((val - minlog) * boxh) / (maxlog - minlog)); 80 y = boxy + int(boxh - ((val - minlog) * boxh) / (maxlog - minlog));
81 81
82 ty = y - paint.fontMetrics().height() + 82 ty = y - paint.fontMetrics().height() +
83 paint.fontMetrics().ascent() + 2; 83 paint.fontMetrics().ascent() + 2;
84 84
85 double dv = LogRange::unmap(val); 85 double dv = LogRange::unmap(val);
86 int digits = int(trunc(log10(dv))); 86 int digits = int(trunc(log10(dv)));
87 int sf = dp + (digits > 0 ? digits : 0); 87 int sf = dp + (digits > 0 ? digits : 0);
88 if (sf < 2) sf = 2; 88 if (sf < 2) sf = 2;
89 snprintf(buffer, buflen, "%.*g", sf, dv); 89 snprintf(buffer, buflen, "%.*g", sf, dv);
90 90
91 QString label = QString(buffer); 91 QString label = QString(buffer);
92 92
93 paint.drawLine(boxx + boxw - boxw/3, y, boxx + boxw, y); 93 paint.drawLine(boxx + boxw - boxw/3, y, boxx + boxw, y);
94 paint.drawText(tx, ty, label); 94 paint.drawText(tx, ty, label);
95 95
96 val += inc; 96 val += inc;
97 } 97 }
98 } 98 }