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).finished();
315
316//=============================================================================================================
317// DISPLIB FORWARD DECLARATIONS
318//=============================================================================================================
319
320//=============================================================================================================
331{
332public:
333 typedef QSharedPointer<ColorMap> SPtr;
334 typedef QSharedPointer<const ColorMap> ConstSPtr;
335
336 //=========================================================================================================
340 ColorMap();
341
342 //=========================================================================================================
346 ~ColorMap();
347
348 //=========================================================================================================
358 static inline QRgb valueToColor(double v, const QString& sMap);
359
360 //=========================================================================================================
368 static inline QRgb valueToJet(double v);
369
370 //=========================================================================================================
378 static inline QRgb valueToHot(double v);
379
380 //=========================================================================================================
388 static inline QRgb valueToHotNegative1(double v);
389
390 //=========================================================================================================
398 static inline QRgb valueToHotNegative2(double v);
399
400 //=========================================================================================================
408 static inline QRgb valueToBone(double v);
409
410 //=========================================================================================================
418 static inline QRgb valueToRedBlue(double v);
419
420 //=========================================================================================================
428 static inline QRgb valueToCool(double v);
429
430 //=========================================================================================================
438 static QRgb valueToViridis(double v);
439
440 //=========================================================================================================
448 static QRgb valueToViridisNegated(double v);
449
450protected:
451 //=========================================================================================================
461 static double linearSlope(double x, double m, double n);
462
463 //=========================================================================================================
471 static int jetR(double v);
472
473 //=========================================================================================================
481 static int jetG(double v);
482
483 //=========================================================================================================
491 static int jetB(double v);
492
493 //=========================================================================================================
501 static int hotR(double v);
502
503 //=========================================================================================================
511 static int hotG(double v);
512
513 //=========================================================================================================
521 static int hotB(double v);
522
523 //=========================================================================================================
531 static int hotRNeg1(double v);
532
533 //=========================================================================================================
541 static int hotGNeg1(double v);
542
543 //=========================================================================================================
551 static int hotBNeg1(double v);
552
553 //=========================================================================================================
561 static int hotRNeg2(double v);
562
563 //=========================================================================================================
571 static int hotGNeg2(double v);
572
573 //=========================================================================================================
581 static int hotBNeg2(double v);
582
583 //=========================================================================================================
591 static int boneR(double v);
592
593 //=========================================================================================================
601 static int boneG(double v);
602
603 //=========================================================================================================
611 static int boneB(double v);
612
613 //=========================================================================================================
621 static int rbR(double v);
622
623 //=========================================================================================================
631 static int rbG(double v);
632
633 //=========================================================================================================
641 static int rbB(double v);
642
643 //=========================================================================================================
651 static int coolR(double v);
652
653 //=========================================================================================================
661 static int coolG(double v);
662
663 //=========================================================================================================
671 static int coolB(double v);
672
673private:
674
675};
676
677//=============================================================================================================
678// INLINE DEFINITIONS
679//=============================================================================================================
680
681inline QRgb ColorMap::valueToColor(double v, const QString& sMap)
682{
683 if(sMap == "Hot") {
684 return valueToHot(v);
685 }
686
687 if(sMap == "HotNegative1") {
688 return valueToHotNegative1(v);
689 }
690
691 if(sMap == "HotNegative2") {
692 return valueToHotNegative2(v);
693 }
694
695 if(sMap == "Bone") {
696 return valueToBone(v);
697 }
698
699 if(sMap == "RedBlue") {
700 return valueToRedBlue(v);
701 }
702
703 if(sMap == "Cool") {
704 return valueToCool(v);
705 }
706
707 if(sMap == "Viridis") {
708 return valueToViridis(v);
709 }
710
711 if(sMap == "ViridisNegated") {
712 return valueToViridisNegated(v);
713 }
714
715 // If no matching colormap was found return Jet
716 return valueToJet(v);
717}
718
719//=============================================================================================================
720
721inline QRgb ColorMap::valueToJet(double v)
722{
723 QRgb p_qRgb = qRgb(jetR(v), jetG(v), jetB(v));
724 return p_qRgb;
725}
726
727//=============================================================================================================
728
729inline QRgb ColorMap::valueToHot(double v)
730{
731 QRgb p_qRgb = qRgb(hotR(v), hotG(v), hotB(v));
732 return p_qRgb;
733}
734
735//=============================================================================================================
736
737inline QRgb ColorMap::valueToHotNegative1(double v)
738{
739 QRgb p_qRgb = qRgb(hotRNeg1(v), hotGNeg1(v), hotBNeg1(v));
740 return p_qRgb;
741}
742
743//=============================================================================================================
744
745inline QRgb ColorMap::valueToHotNegative2(double v)
746{
747 QRgb p_qRgb = qRgb(hotRNeg2(v), hotGNeg2(v), hotBNeg2(v));
748 return p_qRgb;
749}
750
751//=============================================================================================================
752
753inline QRgb ColorMap::valueToBone(double v)
754{
755 QRgb p_qRgb = qRgb(boneR(v), boneG(v), boneB(v));
756 return p_qRgb;
757}
758
759//=============================================================================================================
760
761inline QRgb ColorMap::valueToRedBlue(double v)
762{
763 QRgb p_qRgb = qRgb(rbR(v), rbG(v), rbB(v));
764 return p_qRgb;
765}
766
767//=============================================================================================================
768
769inline QRgb ColorMap::valueToCool(double v)
770{
771 QRgb p_qRgb = qRgb(coolR(v), coolG(v), coolB(v));
772 return p_qRgb;
773}
774
775//=============================================================================================================
776
777inline QRgb ColorMap::valueToViridis(double v)
778{
779 uint idx = static_cast<uint>(v * 255);
780 if(idx >= static_cast<uint>(m_matViridrisData.rows())) {
781 return QRgb();
782 }
783
784 QRgb p_qRgb = qRgb(m_matViridrisData(idx,0), m_matViridrisData(idx,1), m_matViridrisData(idx,2));
785 return p_qRgb;
786}
787
788//=============================================================================================================
789
791{
792 uint idx = 255 - static_cast<uint>(v * 255);
793 if(idx >= static_cast<uint>(m_matViridrisData.rows())) {
794 return QRgb();
795 }
796
797 QRgb p_qRgb = qRgb(m_matViridrisData(idx,0), m_matViridrisData(idx,1), m_matViridrisData(idx,2));
798 return p_qRgb;
799}
800} // NAMESPACE
801
802#endif // COLORMAP_H
803
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:777
static int rbB(double v)
Definition colormap.cpp:272
static QRgb valueToBone(double v)
Definition colormap.h:753
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:769
static QRgb valueToJet(double v)
Definition colormap.h:721
static QRgb valueToViridisNegated(double v)
Definition colormap.h:790
static int rbG(double v)
Definition colormap.cpp:261
static QRgb valueToRedBlue(double v)
Definition colormap.h:761
static int jetG(double v)
Definition colormap.cpp:70
QSharedPointer< const ColorMap > ConstSPtr
Definition colormap.h:334
QSharedPointer< ColorMap > SPtr
Definition colormap.h:333
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:745
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:681
static int coolG(double v)
Definition colormap.cpp:291
static QRgb valueToHot(double v)
Definition colormap.h:729
static QRgb valueToHotNegative1(double v)
Definition colormap.h:737