v2.0.0
Loading...
Searching...
No Matches
colormap.h
Go to the documentation of this file.
1//=============================================================================================================
24
25#ifndef COLORMAP_H
26#define COLORMAP_H
27
28//=============================================================================================================
29// INCLUDES
30//=============================================================================================================
31
32#include "../../disp_global.h"
33
34//=============================================================================================================
35// QT INCLUDES
36//=============================================================================================================
37
38#include <QSharedPointer>
39#include <QColor>
40#include <QVector>
41
42//=============================================================================================================
43// EIGEN INCLUDES
44//=============================================================================================================
45
46#include <Eigen/Core>
47
48//=============================================================================================================
49// FORWARD DECLARATIONS
50//=============================================================================================================
51
52//=============================================================================================================
53// DEFINE NAMESPACE DISPLIB
54//=============================================================================================================
55
56namespace DISPLIB
57{
58
59const Eigen::MatrixX3i m_matViridrisData = (Eigen::MatrixX3i(256, 3) << 68, 1, 84,
60 68, 2, 86,
61 69, 4, 87,
62 69, 5, 89,
63 70, 7, 90,
64 70, 8, 92,
65 70, 10, 93,
66 70, 11, 94,
67 71, 13, 96,
68 71, 14, 97,
69 71, 16, 99,
70 71, 17, 100,
71 71, 19, 101,
72 72, 20, 103,
73 72, 22, 104,
74 72, 23, 105,
75 72, 24, 106,
76 72, 26, 108,
77 72, 27, 109,
78 72, 28, 110,
79 72, 29, 111,
80 72, 31, 112,
81 72, 32, 113,
82 72, 33, 115,
83 72, 35, 116,
84 72, 36, 117,
85 72, 37, 118,
86 72, 38, 119,
87 72, 40, 120,
88 72, 41, 121,
89 71, 42, 122,
90 71, 44, 122,
91 71, 45, 123,
92 71, 46, 124,
93 71, 47, 125,
94 70, 48, 126,
95 70, 50, 126,
96 70, 51, 127,
97 70, 52, 128,
98 69, 53, 129,
99 69, 55, 129,
100 69, 56, 130,
101 68, 57, 131,
102 68, 58, 131,
103 68, 59, 132,
104 67, 61, 132,
105 67, 62, 133,
106 66, 63, 133,
107 66, 64, 134,
108 66, 65, 134,
109 65, 66, 135,
110 65, 68, 135,
111 64, 69, 136,
112 64, 70, 136,
113 63, 71, 136,
114 63, 72, 137,
115 62, 73, 137,
116 62, 74, 137,
117 62, 76, 138,
118 61, 77, 138,
119 61, 78, 138,
120 60, 79, 138,
121 60, 80, 139,
122 59, 81, 139,
123 59, 82, 139,
124 58, 83, 139,
125 58, 84, 140,
126 57, 85, 140,
127 57, 86, 140,
128 56, 88, 140,
129 56, 89, 140,
130 55, 90, 140,
131 55, 91, 141,
132 54, 92, 141,
133 54, 93, 141,
134 53, 94, 141,
135 53, 95, 141,
136 52, 96, 141,
137 52, 97, 141,
138 51, 98, 141,
139 51, 99, 141,
140 50, 100, 142,
141 50, 101, 142,
142 49, 102, 142,
143 49, 103, 142,
144 49, 104, 142,
145 48, 105, 142,
146 48, 106, 142,
147 47, 107, 142,
148 47, 108, 142,
149 46, 109, 142,
150 46, 110, 142,
151 46, 111, 142,
152 45, 112, 142,
153 45, 113, 142,
154 44, 113, 142,
155 44, 114, 142,
156 44, 115, 142,
157 43, 116, 142,
158 43, 117, 142,
159 42, 118, 142,
160 42, 119, 142,
161 42, 120, 142,
162 41, 121, 142,
163 41, 122, 142,
164 41, 123, 142,
165 40, 124, 142,
166 40, 125, 142,
167 39, 126, 142,
168 39, 127, 142,
169 39, 128, 142,
170 38, 129, 142,
171 38, 130, 142,
172 38, 130, 142,
173 37, 131, 142,
174 37, 132, 142,
175 37, 133, 142,
176 36, 134, 142,
177 36, 135, 142,
178 35, 136, 142,
179 35, 137, 142,
180 35, 138, 141,
181 34, 139, 141,
182 34, 140, 141,
183 34, 141, 141,
184 33, 142, 141,
185 33, 143, 141,
186 33, 144, 141,
187 33, 145, 140,
188 32, 146, 140,
189 32, 146, 140,
190 32, 147, 140,
191 31, 148, 140,
192 31, 149, 139,
193 31, 150, 139,
194 31, 151, 139,
195 31, 152, 139,
196 31, 153, 138,
197 31, 154, 138,
198 30, 155, 138,
199 30, 156, 137,
200 30, 157, 137,
201 31, 158, 137,
202 31, 159, 136,
203 31, 160, 136,
204 31, 161, 136,
205 31, 161, 135,
206 31, 162, 135,
207 32, 163, 134,
208 32, 164, 134,
209 33, 165, 133,
210 33, 166, 133,
211 34, 167, 133,
212 34, 168, 132,
213 35, 169, 131,
214 36, 170, 131,
215 37, 171, 130,
216 37, 172, 130,
217 38, 173, 129,
218 39, 173, 129,
219 40, 174, 128,
220 41, 175, 127,
221 42, 176, 127,
222 44, 177, 126,
223 45, 178, 125,
224 46, 179, 124,
225 47, 180, 124,
226 49, 181, 123,
227 50, 182, 122,
228 52, 182, 121,
229 53, 183, 121,
230 55, 184, 120,
231 56, 185, 119,
232 58, 186, 118,
233 59, 187, 117,
234 61, 188, 116,
235 63, 188, 115,
236 64, 189, 114,
237 66, 190, 113,
238 68, 191, 112,
239 70, 192, 111,
240 72, 193, 110,
241 74, 193, 109,
242 76, 194, 108,
243 78, 195, 107,
244 80, 196, 106,
245 82, 197, 105,
246 84, 197, 104,
247 86, 198, 103,
248 88, 199, 101,
249 90, 200, 100,
250 92, 200, 99,
251 94, 201, 98,
252 96, 202, 96,
253 99, 203, 95,
254 101, 203, 94,
255 103, 204, 92,
256 105, 205, 91,
257 108, 205, 90,
258 110, 206, 88,
259 112, 207, 87,
260 115, 208, 86,
261 117, 208, 84,
262 119, 209, 83,
263 122, 209, 81,
264 124, 210, 80,
265 127, 211, 78,
266 129, 211, 77,
267 132, 212, 75,
268 134, 213, 73,
269 137, 213, 72,
270 139, 214, 70,
271 142, 214, 69,
272 144, 215, 67,
273 147, 215, 65,
274 149, 216, 64,
275 152, 216, 62,
276 155, 217, 60,
277 157, 217, 59,
278 160, 218, 57,
279 162, 218, 55,
280 165, 219, 54,
281 168, 219, 52,
282 170, 220, 50,
283 173, 220, 48,
284 176, 221, 47,
285 178, 221, 45,
286 181, 222, 43,
287 184, 222, 41,
288 186, 222, 40,
289 189, 223, 38,
290 192, 223, 37,
291 194, 223, 35,
292 197, 224, 33,
293 200, 224, 32,
294 202, 225, 31,
295 205, 225, 29,
296 208, 225, 28,
297 210, 226, 27,
298 213, 226, 26,
299 216, 226, 25,
300 218, 227, 25,
301 221, 227, 24,
302 223, 227, 24,
303 226, 228, 24,
304 229, 228, 25,
305 231, 228, 25,
306 234, 229, 26,
307 236, 229, 27,
308 239, 229, 28,
309 241, 229, 29,
310 244, 230, 30,
311 246, 230, 32,
312 248, 230, 33,
313 251, 231, 35,
314 253, 231, 37)
315 .finished();
316
317//=============================================================================================================
318// DISPLIB FORWARD DECLARATIONS
319//=============================================================================================================
320
321//=============================================================================================================
334{
335public:
336 typedef QSharedPointer<ColorMap> SPtr;
337 typedef QSharedPointer<const ColorMap> ConstSPtr;
338
339 //=========================================================================================================
343 ColorMap();
344
345 //=========================================================================================================
349 ~ColorMap();
350
351 //=========================================================================================================
361 static inline QRgb valueToColor(double v, const QString& sMap);
362
363 //=========================================================================================================
371 static inline QRgb valueToJet(double v);
372
373 //=========================================================================================================
381 static inline QRgb valueToHot(double v);
382
383 //=========================================================================================================
391 static inline QRgb valueToHotNegative1(double v);
392
393 //=========================================================================================================
401 static inline QRgb valueToHotNegative2(double v);
402
403 //=========================================================================================================
411 static inline QRgb valueToBone(double v);
412
413 //=========================================================================================================
421 static inline QRgb valueToRedBlue(double v);
422
423 //=========================================================================================================
431 static inline QRgb valueToCool(double v);
432
433 //=========================================================================================================
441 static QRgb valueToViridis(double v);
442
443 //=========================================================================================================
451 static QRgb valueToViridisNegated(double v);
452
453protected:
454 //=========================================================================================================
464 static double linearSlope(double x, double m, double n);
465
466 //=========================================================================================================
474 static int jetR(double v);
475
476 //=========================================================================================================
484 static int jetG(double v);
485
486 //=========================================================================================================
494 static int jetB(double v);
495
496 //=========================================================================================================
504 static int hotR(double v);
505
506 //=========================================================================================================
514 static int hotG(double v);
515
516 //=========================================================================================================
524 static int hotB(double v);
525
526 //=========================================================================================================
534 static int hotRNeg1(double v);
535
536 //=========================================================================================================
544 static int hotGNeg1(double v);
545
546 //=========================================================================================================
554 static int hotBNeg1(double v);
555
556 //=========================================================================================================
564 static int hotRNeg2(double v);
565
566 //=========================================================================================================
574 static int hotGNeg2(double v);
575
576 //=========================================================================================================
584 static int hotBNeg2(double v);
585
586 //=========================================================================================================
594 static int boneR(double v);
595
596 //=========================================================================================================
604 static int boneG(double v);
605
606 //=========================================================================================================
614 static int boneB(double v);
615
616 //=========================================================================================================
624 static int rbR(double v);
625
626 //=========================================================================================================
634 static int rbG(double v);
635
636 //=========================================================================================================
644 static int rbB(double v);
645
646 //=========================================================================================================
654 static int coolR(double v);
655
656 //=========================================================================================================
664 static int coolG(double v);
665
666 //=========================================================================================================
674 static int coolB(double v);
675
676private:
677};
678
679//=============================================================================================================
680// INLINE DEFINITIONS
681//=============================================================================================================
682
683inline QRgb ColorMap::valueToColor(double v, const QString& sMap)
684{
685 if (sMap == "Hot") {
686 return valueToHot(v);
687 }
688
689 if (sMap == "HotNegative1") {
690 return valueToHotNegative1(v);
691 }
692
693 if (sMap == "HotNegative2") {
694 return valueToHotNegative2(v);
695 }
696
697 if (sMap == "Bone") {
698 return valueToBone(v);
699 }
700
701 if (sMap == "RedBlue") {
702 return valueToRedBlue(v);
703 }
704
705 if (sMap == "Cool") {
706 return valueToCool(v);
707 }
708
709 if (sMap == "Viridis") {
710 return valueToViridis(v);
711 }
712
713 if (sMap == "ViridisNegated") {
714 return valueToViridisNegated(v);
715 }
716
717 // If no matching colormap was found return Jet
718 return valueToJet(v);
719}
720
721//=============================================================================================================
722
723inline QRgb ColorMap::valueToJet(double v)
724{
725 QRgb p_qRgb = qRgb(jetR(v), jetG(v), jetB(v));
726 return p_qRgb;
727}
728
729//=============================================================================================================
730
731inline QRgb ColorMap::valueToHot(double v)
732{
733 QRgb p_qRgb = qRgb(hotR(v), hotG(v), hotB(v));
734 return p_qRgb;
735}
736
737//=============================================================================================================
738
739inline QRgb ColorMap::valueToHotNegative1(double v)
740{
741 QRgb p_qRgb = qRgb(hotRNeg1(v), hotGNeg1(v), hotBNeg1(v));
742 return p_qRgb;
743}
744
745//=============================================================================================================
746
747inline QRgb ColorMap::valueToHotNegative2(double v)
748{
749 QRgb p_qRgb = qRgb(hotRNeg2(v), hotGNeg2(v), hotBNeg2(v));
750 return p_qRgb;
751}
752
753//=============================================================================================================
754
755inline QRgb ColorMap::valueToBone(double v)
756{
757 QRgb p_qRgb = qRgb(boneR(v), boneG(v), boneB(v));
758 return p_qRgb;
759}
760
761//=============================================================================================================
762
763inline QRgb ColorMap::valueToRedBlue(double v)
764{
765 QRgb p_qRgb = qRgb(rbR(v), rbG(v), rbB(v));
766 return p_qRgb;
767}
768
769//=============================================================================================================
770
771inline QRgb ColorMap::valueToCool(double v)
772{
773 QRgb p_qRgb = qRgb(coolR(v), coolG(v), coolB(v));
774 return p_qRgb;
775}
776
777//=============================================================================================================
778
779inline QRgb ColorMap::valueToViridis(double v)
780{
781 uint idx = static_cast<uint>(v * 255);
782 if (idx >= static_cast<uint>(m_matViridrisData.rows())) {
783 return QRgb();
784 }
785
786 QRgb p_qRgb = qRgb(m_matViridrisData(idx, 0), m_matViridrisData(idx, 1), m_matViridrisData(idx, 2));
787 return p_qRgb;
788}
789
790//=============================================================================================================
791
793{
794 uint idx = 255 - static_cast<uint>(v * 255);
795 if (idx >= static_cast<uint>(m_matViridrisData.rows())) {
796 return QRgb();
797 }
798
799 QRgb p_qRgb = qRgb(m_matViridrisData(idx, 0), m_matViridrisData(idx, 1), m_matViridrisData(idx, 2));
800 return p_qRgb;
801}
802} // NAMESPACE
803
804#endif // COLORMAP_H
Export macros and build-info hooks for the DISPLIB shared library.
#define DISPSHARED_EXPORT
Definition disp_global.h:38
2-D display widgets and visualisation helpers (charts, topography, colour maps).
const Eigen::MatrixX3i m_matViridrisData
Definition colormap.h:59
static int hotG(double v)
Definition colormap.cpp:113
static int coolR(double v)
Definition colormap.cpp:283
static int hotRNeg2(double v)
Definition colormap.cpp:174
static QRgb valueToViridis(double v)
Definition colormap.h:779
static int rbB(double v)
Definition colormap.cpp:272
static QRgb valueToBone(double v)
Definition colormap.h:755
static double linearSlope(double x, double m, double n)
Definition colormap.cpp:45
static int boneR(double v)
Definition colormap.cpp:211
static int hotGNeg2(double v)
Definition colormap.cpp:187
static int jetR(double v)
Definition colormap.cpp:53
static int hotBNeg2(double v)
Definition colormap.cpp:200
static int jetB(double v)
Definition colormap.cpp:87
static QRgb valueToCool(double v)
Definition colormap.h:771
static QRgb valueToJet(double v)
Definition colormap.h:723
static QRgb valueToViridisNegated(double v)
Definition colormap.h:792
static int rbG(double v)
Definition colormap.cpp:261
static QRgb valueToRedBlue(double v)
Definition colormap.h:763
static int jetG(double v)
Definition colormap.cpp:70
QSharedPointer< const ColorMap > ConstSPtr
Definition colormap.h:337
QSharedPointer< ColorMap > SPtr
Definition colormap.h:336
static int rbR(double v)
Definition colormap.cpp:250
static int hotBNeg1(double v)
Definition colormap.cpp:163
static int hotGNeg1(double v)
Definition colormap.cpp:150
static int coolB(double v)
Definition colormap.cpp:299
static int hotRNeg1(double v)
Definition colormap.cpp:137
static int boneB(double v)
Definition colormap.cpp:237
static QRgb valueToHotNegative2(double v)
Definition colormap.h:747
static int hotR(double v)
Definition colormap.cpp:102
static int hotB(double v)
Definition colormap.cpp:126
static int boneG(double v)
Definition colormap.cpp:224
static QRgb valueToColor(double v, const QString &sMap)
Definition colormap.h:683
static int coolG(double v)
Definition colormap.cpp:291
static QRgb valueToHot(double v)
Definition colormap.h:731
static QRgb valueToHotNegative1(double v)
Definition colormap.h:739