BinToFullColorScale.cxx
Go to the documentation of this file.
1 
12 #include "BinToFullColorScale.h"
13 
14 #include <cassert>
15 
16 namespace hippodraw {
17 
19 BinToFullColorScale ( const char * name )
20  : BinToColor ( name )
21 {
22 }
23 
25 BinToFullColorScale ( const BinToFullColorScale & bin_to_color )
26  : BinToColor ( bin_to_color )
27 {
28 }
29 
31 {
32  return new BinToFullColorScale ( *this );
33 }
34 
35 void
37 doubleToColor ( double value, Color & color ) const
38 {
39  double r=1;
40  double g=1;
41  double b=1;
42  double v = value;
43 
44  if (v < (m_vmin + ( 0.1667 ) * m_dv)) {
45  r = 0;
46  g = 6 * (v - m_vmin) / m_dv;
47 
48  } else if (v < (m_vmin + (0.3333) * m_dv)) {
49  r = 0;
50  b = 1 + 6 * (m_vmin + (0.1667) * m_dv - v) / m_dv;
51 
52  } else if (v < (m_vmin + (0.5) * m_dv)) {
53  r = 6 * (v - m_vmin - (0.3333) * m_dv) / m_dv;
54  b = 0;
55 
56  } else if (v < (m_vmin + (0.6667) * m_dv) ) {
57  g = 1 + 6 * (m_vmin + (0.5) * m_dv - v) / m_dv;
58  b = 0;
59 
60  } else if (v < (m_vmin + (0.8333) * m_dv) ) {
61  g = 0;
62  b = 6 * (v- m_vmin - (0.6667)*m_dv) /m_dv;
63 
64  } else if (v < (m_vmin + m_dv )){
65  g=0;
66  r = 1 + 6 * ( m_vmin + (0.8333)*m_dv - v) / m_dv;
67  } else{ //this else is for guarding against numerical errors
68  g = 0;
69  r = 0;
70  }
71 
72 
73  int red = static_cast < int > ( r * 255. );
74  int green = static_cast < int > ( g * 255. );
75  int blue = static_cast < int > ( b * 255. );
76 
77  assert ( red < 256 && green < 256 && blue < 256 );
78  color.setColor ( red, green, blue );
79 }
80 
81 } // namespace hippodraw
82 

Generated for HippoDraw Class Library by doxygen