MNE-CPP  0.1.9
A Framework for Electrophysiology
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 
67 namespace DISPLIB
68 {
69 
70 const 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 {
339 public:
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 
457 protected:
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 
680 private:
681 
682 };
683 
684 //=============================================================================================================
685 // INLINE DEFINITIONS
686 //=============================================================================================================
687 
688 inline 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 
728 inline 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 
736 inline 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 
744 inline 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 
752 inline 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 
760 inline 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 
768 inline 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 
776 inline 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 
784 inline 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 
796 inline QRgb ColorMap::valueToViridisNegated(double v)
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 
DISPLIB::ColorMap::valueToHot
static QRgb valueToHot(double v)
Definition: colormap.h:736
DISPLIB::ColorMap::rbR
static int rbR(double v)
Definition: colormap.cpp:270
DISPSHARED_EXPORT
#define DISPSHARED_EXPORT
Definition: disp_global.h:55
DISPLIB::ColorMap::coolB
static int coolB(double v)
Definition: colormap.cpp:319
DISPLIB::ColorMap::jetB
static int jetB(double v)
Definition: colormap.cpp:107
DISPLIB::ColorMap::hotR
static int hotR(double v)
Definition: colormap.cpp:122
DISPLIB::ColorMap::valueToViridis
static QRgb valueToViridis(double v)
Definition: colormap.h:784
DISPLIB::ColorMap::ConstSPtr
QSharedPointer< const ColorMap > ConstSPtr
Definition: colormap.h:341
DISPLIB::ColorMap::valueToRedBlue
static QRgb valueToRedBlue(double v)
Definition: colormap.h:768
DISPLIB::ColorMap::hotGNeg2
static int hotGNeg2(double v)
Definition: colormap.cpp:207
DISPLIB::ColorMap::valueToColor
static QRgb valueToColor(double v, const QString &sMap)
Definition: colormap.h:688
DISPLIB::ColorMap::hotBNeg2
static int hotBNeg2(double v)
Definition: colormap.cpp:220
DISPLIB::ColorMap::coolR
static int coolR(double v)
Definition: colormap.cpp:303
DISPLIB::ColorMap::hotRNeg1
static int hotRNeg1(double v)
Definition: colormap.cpp:157
DISPLIB::ColorMap::hotG
static int hotG(double v)
Definition: colormap.cpp:133
DISPLIB::ColorMap::valueToCool
static QRgb valueToCool(double v)
Definition: colormap.h:776
DISPLIB::ColorMap::valueToJet
static QRgb valueToJet(double v)
Definition: colormap.h:728
DISPLIB::ColorMap::valueToHotNegative2
static QRgb valueToHotNegative2(double v)
Definition: colormap.h:752
DISPLIB::ColorMap::rbB
static int rbB(double v)
Definition: colormap.cpp:292
DISPLIB::ColorMap::coolG
static int coolG(double v)
Definition: colormap.cpp:311
DISPLIB::ColorMap::valueToHotNegative1
static QRgb valueToHotNegative1(double v)
Definition: colormap.h:744
DISPLIB::ColorMap
Color map RGB transformations.
Definition: colormap.h:337
DISPLIB::ColorMap::hotBNeg1
static int hotBNeg1(double v)
Definition: colormap.cpp:183
DISPLIB::ColorMap::valueToViridisNegated
static QRgb valueToViridisNegated(double v)
Definition: colormap.h:796
DISPLIB::ColorMap::valueToBone
static QRgb valueToBone(double v)
Definition: colormap.h:760
DISPLIB::ColorMap::hotGNeg1
static int hotGNeg1(double v)
Definition: colormap.cpp:170
DISPLIB::ColorMap::boneB
static int boneB(double v)
Definition: colormap.cpp:257
DISPLIB::ColorMap::boneG
static int boneG(double v)
Definition: colormap.cpp:244
DISPLIB::ColorMap::hotB
static int hotB(double v)
Definition: colormap.cpp:146
DISPLIB::ColorMap::jetR
static int jetR(double v)
Definition: colormap.cpp:73
DISPLIB::ColorMap::SPtr
QSharedPointer< ColorMap > SPtr
Definition: colormap.h:340
DISPLIB::ColorMap::rbG
static int rbG(double v)
Definition: colormap.cpp:281
DISPLIB::ColorMap::boneR
static int boneR(double v)
Definition: colormap.cpp:231
DISPLIB::ColorMap::hotRNeg2
static int hotRNeg2(double v)
Definition: colormap.cpp:194
DISPLIB::ColorMap::jetG
static int jetG(double v)
Definition: colormap.cpp:90