aboutsummaryrefslogtreecommitdiff
path: root/continuouscolorscale.cpp
blob: c12db80a5ad4a452bca1ab1a40b12c7f2d482bb9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
#include "continuouscolorscale.h"

#include <cmath>

ContinuousColorScale::ContinuousColorScale()
    : ColorScale{
        QColor(  0,   0,   0),
        QColor( 35,   0,   0),
        QColor( 52,   0,   0),
        QColor( 60,   0,   0),
        QColor( 63,   1,   0),
        QColor( 64,   2,   0),
        QColor( 68,   5,   0),
        QColor( 69,   6,   0),
        QColor( 72,   8,   0),
        QColor( 74,  10,   0),
        QColor( 77,  12,   0),
        QColor( 78,  14,   0),
        QColor( 81,  16,   0),
        QColor( 83,  17,   0),
        QColor( 85,  19,   0),
        QColor( 86,  20,   0),
        QColor( 89,  22,   0),
        QColor( 91,  24,   0),
        QColor( 92,  25,   0),
        QColor( 94,  26,   0),
        QColor( 95,  28,   0),
        QColor( 98,  30,   0),
        QColor(100,  31,   0),
        QColor(102,  33,   0),
        QColor(103,  34,   0),
        QColor(105,  35,   0),
        QColor(106,  36,   0),
        QColor(108,  38,   0),
        QColor(109,  39,   0),
        QColor(111,  40,   0),
        QColor(112,  42,   0),
        QColor(114,  43,   0),
        QColor(115,  44,   0),
        QColor(117,  45,   0),
        QColor(119,  47,   0),
        QColor(119,  47,   0),
        QColor(120,  48,   0),
        QColor(122,  49,   0),
        QColor(123,  51,   0),
        QColor(125,  52,   0),
        QColor(125,  52,   0),
        QColor(126,  53,   0),
        QColor(128,  54,   0),
        QColor(129,  56,   0),
        QColor(129,  56,   0),
        QColor(131,  57,   0),
        QColor(132,  58,   0),
        QColor(134,  59,   0),
        QColor(134,  59,   0),
        QColor(136,  61,   0),
        QColor(137,  62,   0),
        QColor(137,  62,   0),
        QColor(139,  63,   0),
        QColor(139,  63,   0),
        QColor(140,  65,   0),
        QColor(142,  66,   0),
        QColor(142,  66,   0),
        QColor(143,  67,   0),
        QColor(143,  67,   0),
        QColor(145,  68,   0),
        QColor(145,  68,   0),
        QColor(146,  70,   0),
        QColor(146,  70,   0),
        QColor(148,  71,   0),
        QColor(148,  71,   0),
        QColor(149,  72,   0),
        QColor(149,  72,   0),
        QColor(151,  73,   0),
        QColor(151,  73,   0),
        QColor(153,  75,   0),
        QColor(153,  75,   0),
        QColor(154,  76,   0),
        QColor(154,  76,   0),
        QColor(154,  76,   0),
        QColor(156,  77,   0),
        QColor(156,  77,   0),
        QColor(157,  79,   0),
        QColor(157,  79,   0),
        QColor(159,  80,   0),
        QColor(159,  80,   0),
        QColor(159,  80,   0),
        QColor(160,  81,   0),
        QColor(160,  81,   0),
        QColor(162,  82,   0),
        QColor(162,  82,   0),
        QColor(163,  84,   0),
        QColor(163,  84,   0),
        QColor(165,  85,   0),
        QColor(165,  85,   0),
        QColor(166,  86,   0),
        QColor(166,  86,   0),
        QColor(166,  86,   0),
        QColor(168,  87,   0),
        QColor(168,  87,   0),
        QColor(170,  89,   0),
        QColor(170,  89,   0),
        QColor(171,  90,   0),
        QColor(171,  90,   0),
        QColor(173,  91,   0),
        QColor(173,  91,   0),
        QColor(174,  93,   0),
        QColor(174,  93,   0),
        QColor(176,  94,   0),
        QColor(176,  94,   0),
        QColor(177,  95,   0),
        QColor(177,  95,   0),
        QColor(179,  96,   0),
        QColor(179,  96,   0),
        QColor(180,  98,   0),
        QColor(182,  99,   0),
        QColor(182,  99,   0),
        QColor(183, 100,   0),
        QColor(183, 100,   0),
        QColor(185, 102,   0),
        QColor(185, 102,   0),
        QColor(187, 103,   0),
        QColor(187, 103,   0),
        QColor(188, 104,   0),
        QColor(188, 104,   0),
        QColor(190, 105,   0),
        QColor(191, 107,   0),
        QColor(191, 107,   0),
        QColor(193, 108,   0),
        QColor(193, 108,   0),
        QColor(194, 109,   0),
        QColor(196, 110,   0),
        QColor(196, 110,   0),
        QColor(197, 112,   0),
        QColor(197, 112,   0),
        QColor(199, 113,   0),
        QColor(200, 114,   0),
        QColor(200, 114,   0),
        QColor(202, 116,   0),
        QColor(202, 116,   0),
        QColor(204, 117,   0),
        QColor(205, 118,   0),
        QColor(205, 118,   0),
        QColor(207, 119,   0),
        QColor(208, 121,   0),
        QColor(208, 121,   0),
        QColor(210, 122,   0),
        QColor(211, 123,   0),
        QColor(211, 123,   0),
        QColor(213, 124,   0),
        QColor(214, 126,   0),
        QColor(214, 126,   0),
        QColor(216, 127,   0),
        QColor(217, 128,   0),
        QColor(217, 128,   0),
        QColor(219, 130,   0),
        QColor(221, 131,   0),
        QColor(221, 131,   0),
        QColor(222, 132,   0),
        QColor(224, 133,   0),
        QColor(224, 133,   0),
        QColor(225, 135,   0),
        QColor(227, 136,   0),
        QColor(227, 136,   0),
        QColor(228, 137,   0),
        QColor(230, 138,   0),
        QColor(230, 138,   0),
        QColor(231, 140,   0),
        QColor(233, 141,   0),
        QColor(233, 141,   0),
        QColor(234, 142,   0),
        QColor(236, 144,   0),
        QColor(236, 144,   0),
        QColor(238, 145,   0),
        QColor(239, 146,   0),
        QColor(241, 147,   0),
        QColor(241, 147,   0),
        QColor(242, 149,   0),
        QColor(244, 150,   0),
        QColor(244, 150,   0),
        QColor(245, 151,   0),
        QColor(247, 153,   0),
        QColor(247, 153,   0),
        QColor(248, 154,   0),
        QColor(250, 155,   0),
        QColor(251, 156,   0),
        QColor(251, 156,   0),
        QColor(253, 158,   0),
        QColor(255, 159,   0),
        QColor(255, 159,   0),
        QColor(255, 160,   0),
        QColor(255, 161,   0),
        QColor(255, 163,   0),
        QColor(255, 163,   0),
        QColor(255, 164,   0),
        QColor(255, 165,   0),
        QColor(255, 167,   0),
        QColor(255, 167,   0),
        QColor(255, 168,   0),
        QColor(255, 169,   0),
        QColor(255, 169,   0),
        QColor(255, 170,   0),
        QColor(255, 172,   0),
        QColor(255, 173,   0),
        QColor(255, 173,   0),
        QColor(255, 174,   0),
        QColor(255, 175,   0),
        QColor(255, 177,   0),
        QColor(255, 178,   0),
        QColor(255, 179,   0),
        QColor(255, 181,   0),
        QColor(255, 181,   0),
        QColor(255, 182,   0),
        QColor(255, 183,   0),
        QColor(255, 184,   0),
        QColor(255, 187,   7),
        QColor(255, 188,  10),
        QColor(255, 189,  14),
        QColor(255, 191,  18),
        QColor(255, 192,  21),
        QColor(255, 193,  25),
        QColor(255, 195,  29),
        QColor(255, 197,  36),
        QColor(255, 198,  40),
        QColor(255, 200,  43),
        QColor(255, 202,  51),
        QColor(255, 204,  54),
        QColor(255, 206,  61),
        QColor(255, 207,  65),
        QColor(255, 210,  72),
        QColor(255, 211,  76),
        QColor(255, 214,  83),
        QColor(255, 216,  91),
        QColor(255, 219,  98),
        QColor(255, 221, 105),
        QColor(255, 223, 109),
        QColor(255, 225, 116),
        QColor(255, 228, 123),
        QColor(255, 232, 134),
        QColor(255, 234, 142),
        QColor(255, 237, 149),
        QColor(255, 239, 156),
        QColor(255, 240, 160),
        QColor(255, 243, 167),
        QColor(255, 246, 174),
        QColor(255, 248, 182),
        QColor(255, 249, 185),
        QColor(255, 252, 193),
        QColor(255, 253, 196),
        QColor(255, 255, 204),
        QColor(255, 255, 207),
        QColor(255, 255, 211),
        QColor(255, 255, 218),
        QColor(255, 255, 222),
        QColor(255, 255, 225),
        QColor(255, 255, 229),
        QColor(255, 255, 233),
        QColor(255, 255, 236),
        QColor(255, 255, 240),
        QColor(255, 255, 244),
        QColor(255, 255, 247),
        QColor(255, 255, 255)}
{
}

QColor ContinuousColorScale::color(qreal t) const
{
    if (t < m_min || t > m_max)
        return QColor();

    // normalize t
    t = (t - m_min) / (m_max - m_min);

    // find which colors in the scale are adjacent to ours
    qreal step = 1.0 / m_colors.size();
    int i = (int) (t / step);

    if (i >= m_colors.size() - 1)
        return m_colors.last();

    // normalize t between the two colors
    int j = i + 1;
    t = (t - i*step) / (j*step - i*step);
    return m_colors[i + round(t)];
}