MNE-CPP 0.1.9
A Framework for Electrophysiology
Loading...
Searching...
No Matches
colormap.h
Go to the documentation of this file.
1//=============================================================================================================
36#ifndef COLORMAP_H
37#define COLORMAP_H
38
39//=============================================================================================================
40// INCLUDES
41//=============================================================================================================
42
43#include "../../disp_global.h"
44
45//=============================================================================================================
46// QT INCLUDES
47//=============================================================================================================
48
49#include <QSharedPointer>
50#include <QColor>
51#include <QVector>
52
53//=============================================================================================================
54// EIGEN INCLUDES
55//=============================================================================================================
56
57#include <Eigen/Core>
58
59//=============================================================================================================
60// FORWARD DECLARATIONS
61//=============================================================================================================
62
63//=============================================================================================================
64// DEFINE NAMESPACE DISPLIB
65//=============================================================================================================
66
67namespace DISPLIB
68{
69
70const Eigen::MatrixX3i m_matViridrisData = (Eigen::MatrixX3i(256,3) << 68, 1, 84,
71 68, 2, 86,
72 69, 4, 87,
73 69, 5, 89,
74 70, 7, 90,
75 70, 8, 92,
76 70, 10, 93,
77 70, 11, 94,
78 71, 13, 96,
79 71, 14, 97,
80 71, 16, 99,
81 71, 17, 100,
82 71, 19, 101,
83 72, 20, 103,
84 72, 22, 104,
85 72, 23, 105,
86 72, 24, 106,
87 72, 26, 108,
88 72, 27, 109,
89 72, 28, 110,
90 72, 29, 111,
91 72, 31, 112,
92 72, 32, 113,
93 72, 33, 115,
94 72, 35, 116,
95 72, 36, 117,
96 72, 37, 118,
97 72, 38, 119,
98 72, 40, 120,
99 72, 41, 121,
100 71, 42, 122,
101 71, 44, 122,
102 71, 45, 123,
103 71, 46, 124,
104 71, 47, 125,
105 70, 48, 126,
106 70, 50, 126,
107 70, 51, 127,
108 70, 52, 128,
109 69, 53, 129,
110 69, 55, 129,
111 69, 56, 130,
112 68, 57, 131,
113 68, 58, 131,
114 68, 59, 132,
115 67, 61, 132,
116 67, 62, 133,
117 66, 63, 133,
118 66, 64, 134,
119 66, 65, 134,
120 65, 66, 135,
121 65, 68, 135,
122 64, 69, 136,
123 64, 70, 136,
124 63, 71, 136,
125 63, 72, 137,
126 62, 73, 137,
127 62, 74, 137,
128 62, 76, 138,
129 61, 77, 138,
130 61, 78, 138,
131 60, 79, 138,
132 60, 80, 139,
133 59, 81, 139,
134 59, 82, 139,
135 58, 83, 139,
136 58, 84, 140,
137 57, 85, 140,
138 57, 86, 140,
139 56, 88, 140,
140 56, 89, 140,
141 55, 90, 140,
142 55, 91, 141,
143 54, 92, 141,
144 54, 93, 141,
145 53, 94, 141,
146 53, 95, 141,
147 52, 96, 141,
148 52, 97, 141,
149 51, 98, 141,
150 51, 99, 141,
151 50, 100, 142,
152 50, 101, 142,
153 49, 102, 142,
154 49, 103, 142,
155 49, 104, 142,
156 48, 105, 142,
157 48, 106, 142,
158 47, 107, 142,
159 47, 108, 142,
160 46, 109, 142,
161 46, 110, 142,
162 46, 111, 142,
163 45, 112, 142,
164 45, 113, 142,
165 44, 113, 142,
166 44, 114, 142,
167 44, 115, 142,
168 43, 116, 142,
169 43, 117, 142,
170 42, 118, 142,
171 42, 119, 142,
172 42, 120, 142,
173 41, 121, 142,
174 41, 122, 142,
175 41, 123, 142,
176 40, 124, 142,
177 40, 125, 142,
178 39, 126, 142,
179 39, 127, 142,
180 39, 128, 142,
181 38, 129, 142,
182 38, 130, 142,
183 38, 130, 142,
184 37, 131, 142,
185 37, 132, 142,
186 37, 133, 142,
187 36, 134, 142,
188 36, 135, 142,
189 35, 136, 142,
190 35, 137, 142,
191 35, 138, 141,
192 34, 139, 141,
193 34, 140, 141,
194 34, 141, 141,
195 33, 142, 141,
196 33, 143, 141,
197 33, 144, 141,
198 33, 145, 140,
199 32, 146, 140,
200 32, 146, 140,
201 32, 147, 140,
202 31, 148, 140,
203 31, 149, 139,
204 31, 150, 139,
205 31, 151, 139,
206 31, 152, 139,
207 31, 153, 138,
208 31, 154, 138,
209 30, 155, 138,
210 30, 156, 137,
211 30, 157, 137,
212 31, 158, 137,
213 31, 159, 136,
214 31, 160, 136,
215 31, 161, 136,
216 31, 161, 135,
217 31, 162, 135,
218 32, 163, 134,
219 32, 164, 134,
220 33, 165, 133,
221 33, 166, 133,
222 34, 167, 133,
223 34, 168, 132,
224 35, 169, 131,
225 36, 170, 131,
226 37, 171, 130,
227 37, 172, 130,
228 38, 173, 129,
229 39, 173, 129,
230 40, 174, 128,
231 41, 175, 127,
232 42, 176, 127,
233 44, 177, 126,
234 45, 178, 125,
235 46, 179, 124,
236 47, 180, 124,
237 49, 181, 123,
238 50, 182, 122,
239 52, 182, 121,
240 53, 183, 121,
241 55, 184, 120,
242 56, 185, 119,
243 58, 186, 118,
244 59, 187, 117,
245 61, 188, 116,
246 63, 188, 115,
247 64, 189, 114,
248 66, 190, 113,
249 68, 191, 112,
250 70, 192, 111,
251 72, 193, 110,
252 74, 193, 109,
253 76, 194, 108,
254 78, 195, 107,
255 80, 196, 106,
256 82, 197, 105,
257 84, 197, 104,
258 86, 198, 103,
259 88, 199, 101,
260 90, 200, 100,
261 92, 200, 99,
262 94, 201, 98,
263 96, 202, 96,
264 99, 203, 95,
265 101, 203, 94,
266 103, 204, 92,
267 105, 205, 91,
268 108, 205, 90,
269 110, 206, 88,
270 112, 207, 87,
271 115, 208, 86,
272 117, 208, 84,
273 119, 209, 83,
274 122, 209, 81,
275 124, 210, 80,
276 127, 211, 78,
277 129, 211, 77,
278 132, 212, 75,
279 134, 213, 73,
280 137, 213, 72,
281 139, 214, 70,
282 142, 214, 69,
283 144, 215, 67,
284 147, 215, 65,
285 149, 216, 64,
286 152, 216, 62,
287 155, 217, 60,
288 157, 217, 59,
289 160, 218, 57,
290 162, 218, 55,
291 165, 219, 54,
292 168, 219, 52,
293 170, 220, 50,
294 173, 220, 48,
295 176, 221, 47,
296 178, 221, 45,
297 181, 222, 43,
298 184, 222, 41,
299 186, 222, 40,
300 189, 223, 38,
301 192, 223, 37,
302 194, 223, 35,
303 197, 224, 33,
304 200, 224, 32,
305 202, 225, 31,
306 205, 225, 29,
307 208, 225, 28,
308 210, 226, 27,
309 213, 226, 26,
310 216, 226, 25,
311 218, 227, 25,
312 221, 227, 24,
313 223, 227, 24,
314 226, 228, 24,
315 229, 228, 25,
316 231, 228, 25,
317 234, 229, 26,
318 236, 229, 27,
319 239, 229, 28,
320 241, 229, 29,
321 244, 230, 30,
322 246, 230, 32,
323 248, 230, 33,
324 251, 231, 35,
325 253, 231, 37).finished();
326
327//=============================================================================================================
328// DISPLIB FORWARD DECLARATIONS
329//=============================================================================================================
330
331//=============================================================================================================
338{
339public:
340 typedef QSharedPointer<ColorMap> SPtr;
341 typedef QSharedPointer<const ColorMap> ConstSPtr;
343 //=========================================================================================================
347 ColorMap();
348
349 //=========================================================================================================
353 ~ColorMap();
354
355 //=========================================================================================================
365 static inline QRgb valueToColor(double v, const QString& sMap);
366
367 //=========================================================================================================
375 static inline QRgb valueToJet(double v);
376
377 //=========================================================================================================
385 static inline QRgb valueToHot(double v);
386
387 //=========================================================================================================
395 static inline QRgb valueToHotNegative1(double v);
396
397 //=========================================================================================================
405 static inline QRgb valueToHotNegative2(double v);
406
407 //=========================================================================================================
415 static inline QRgb valueToBone(double v);
416
417 //=========================================================================================================
425 static inline QRgb valueToRedBlue(double v);
426
427 //=========================================================================================================
435 static inline QRgb valueToCool(double v);
436
437 //=========================================================================================================
445 static QRgb valueToViridis(double v);
446
447 //=========================================================================================================
455 static QRgb valueToViridisNegated(double v);
456
457protected:
458 //=========================================================================================================
468 static double linearSlope(double x, double m, double n);
469
470 //=========================================================================================================
478 static int jetR(double v);
479
480 //=========================================================================================================
488 static int jetG(double v);
489
490 //=========================================================================================================
498 static int jetB(double v);
499
500 //=========================================================================================================
508 static int hotR(double v);
509
510 //=========================================================================================================
518 static int hotG(double v);
519
520 //=========================================================================================================
528 static int hotB(double v);
529
530 //=========================================================================================================
538 static int hotRNeg1(double v);
539
540 //=========================================================================================================
548 static int hotGNeg1(double v);
549
550 //=========================================================================================================
558 static int hotBNeg1(double v);
559
560 //=========================================================================================================
568 static int hotRNeg2(double v);
569
570 //=========================================================================================================
578 static int hotGNeg2(double v);
579
580 //=========================================================================================================
588 static int hotBNeg2(double v);
589
590 //=========================================================================================================
598 static int boneR(double v);
599
600 //=========================================================================================================
608 static int boneG(double v);
609
610 //=========================================================================================================
618 static int boneB(double v);
619
620 //=========================================================================================================
628 static int rbR(double v);
629
630 //=========================================================================================================
638 static int rbG(double v);
639
640 //=========================================================================================================
648 static int rbB(double v);
649
650 //=========================================================================================================
658 static int coolR(double v);
659
660 //=========================================================================================================
668 static int coolG(double v);
669
670 //=========================================================================================================
678 static int coolB(double v);
679
680private:
681
682};
683
684//=============================================================================================================
685// INLINE DEFINITIONS
686//=============================================================================================================
687
688inline QRgb ColorMap::valueToColor(double v, const QString& sMap)
689{
690 if(sMap == "Hot") {
691 return valueToHot(v);
692 }
693
694 if(sMap == "HotNegative1") {
695 return valueToHotNegative1(v);
696 }
697
698 if(sMap == "HotNegative2") {
699 return valueToHotNegative2(v);
700 }
701
702 if(sMap == "Bone") {
703 return valueToBone(v);
704 }
705
706 if(sMap == "RedBlue") {
707 return valueToRedBlue(v);
708 }
709
710 if(sMap == "Cool") {
711 return valueToCool(v);
712 }
713
714 if(sMap == "Viridis") {
715 return valueToViridis(v);
716 }
717
718 if(sMap == "ViridisNegated") {
719 return valueToViridisNegated(v);
720 }
721
722 // If no matching colormap was found return Jet
723 return valueToJet(v);
724}
725
726//=============================================================================================================
727
728inline QRgb ColorMap::valueToJet(double v)
729{
730 QRgb p_qRgb = qRgb(jetR(v), jetG(v), jetB(v));
731 return p_qRgb;
732}
733
734//=============================================================================================================
735
736inline QRgb ColorMap::valueToHot(double v)
737{
738 QRgb p_qRgb = qRgb(hotR(v), hotG(v), hotB(v));
739 return p_qRgb;
740}
741
742//=============================================================================================================
743
744inline QRgb ColorMap::valueToHotNegative1(double v)
745{
746 QRgb p_qRgb = qRgb(hotRNeg1(v), hotGNeg1(v), hotBNeg1(v));
747 return p_qRgb;
748}
749
750//=============================================================================================================
751
752inline QRgb ColorMap::valueToHotNegative2(double v)
753{
754 QRgb p_qRgb = qRgb(hotRNeg2(v), hotGNeg2(v), hotBNeg2(v));
755 return p_qRgb;
756}
757
758//=============================================================================================================
759
760inline QRgb ColorMap::valueToBone(double v)
761{
762 QRgb p_qRgb = qRgb(boneR(v), boneG(v), boneB(v));
763 return p_qRgb;
764}
765
766//=============================================================================================================
767
768inline QRgb ColorMap::valueToRedBlue(double v)
769{
770 QRgb p_qRgb = qRgb(rbR(v), rbG(v), rbB(v));
771 return p_qRgb;
772}
773
774//=============================================================================================================
775
776inline QRgb ColorMap::valueToCool(double v)
777{
778 QRgb p_qRgb = qRgb(coolR(v), coolG(v), coolB(v));
779 return p_qRgb;
780}
781
782//=============================================================================================================
783
784inline QRgb ColorMap::valueToViridis(double v)
785{
786 if((uint)v*255 >= m_matViridrisData.rows()) {
787 return QRgb();
788 }
789
790 QRgb p_qRgb = qRgb(m_matViridrisData((uint)v*255,0), m_matViridrisData((uint)v*255,1), m_matViridrisData((uint)v*255,2));
791 return p_qRgb;
792}
793
794//=============================================================================================================
795
797{
798 if(255-(uint)v*255 >= m_matViridrisData.rows() || 255-(uint)v*255 < 0) {
799 return QRgb();
800 }
801
802 QRgb p_qRgb = qRgb(m_matViridrisData(255-(uint)v*255,0), m_matViridrisData(255-(uint)v*255,1), m_matViridrisData(255-(uint)v*255,2));
803 return p_qRgb;
804}
805} // NAMESPACE
806
807#endif // COLORMAP_H
808
#define DISPSHARED_EXPORT
Definition disp_global.h:55
Color map RGB transformations.
Definition colormap.h:338
static int hotG(double v)
Definition colormap.cpp:133
static int coolR(double v)
Definition colormap.cpp:303
static int hotRNeg2(double v)
Definition colormap.cpp:194
static QRgb valueToViridis(double v)
Definition colormap.h:784
static int rbB(double v)
Definition colormap.cpp:292
static QRgb valueToBone(double v)
Definition colormap.h:760
static int boneR(double v)
Definition colormap.cpp:231
static int hotGNeg2(double v)
Definition colormap.cpp:207
static int jetR(double v)
Definition colormap.cpp:73
static int hotBNeg2(double v)
Definition colormap.cpp:220
static int jetB(double v)
Definition colormap.cpp:107
static QRgb valueToCool(double v)
Definition colormap.h:776
static QRgb valueToJet(double v)
Definition colormap.h:728
static QRgb valueToViridisNegated(double v)
Definition colormap.h:796
static int rbG(double v)
Definition colormap.cpp:281
static QRgb valueToRedBlue(double v)
Definition colormap.h:768
static int jetG(double v)
Definition colormap.cpp:90
QSharedPointer< const ColorMap > ConstSPtr
Definition colormap.h:341
QSharedPointer< ColorMap > SPtr
Definition colormap.h:340
static int rbR(double v)
Definition colormap.cpp:270
static int hotBNeg1(double v)
Definition colormap.cpp:183
static int hotGNeg1(double v)
Definition colormap.cpp:170
static int coolB(double v)
Definition colormap.cpp:319
static int hotRNeg1(double v)
Definition colormap.cpp:157
static int boneB(double v)
Definition colormap.cpp:257
static QRgb valueToHotNegative2(double v)
Definition colormap.h:752
static int hotR(double v)
Definition colormap.cpp:122
static int hotB(double v)
Definition colormap.cpp:146
static int boneG(double v)
Definition colormap.cpp:244
static QRgb valueToColor(double v, const QString &sMap)
Definition colormap.h:688
static int coolG(double v)
Definition colormap.cpp:311
static QRgb valueToHot(double v)
Definition colormap.h:736
static QRgb valueToHotNegative1(double v)
Definition colormap.h:744