BinToUsrDefinedScale.cxx
Go to the documentation of this file.
1 
12 #include "BinToUsrDefinedScale.h"
13 
14 #include <cassert>
15 
16 using namespace hippodraw;
17 
19 BinToUsrDefinedScale ( const char * name )
20  : BinToColor ( name )
21 {
22  m_control_points.push_back(0.5);
23  m_control_points.push_back(0.25);
24 }
25 
28  : BinToColor ( bin_to_color )
29 {
30 }
31 
33 {
34  return new BinToUsrDefinedScale ( *this );
35 }
36 
37 
40 void
42 doubleToColor ( double value, Color & color ) const
43 {
44  double r = 1; double g = 1; double b = 1;
45  double v = value;
46 
47  assert(m_control_points.size()!=0);
48  double brk_pt = m_control_points[0];
49  double flat = m_control_points[1];
50  double col = m_control_points[2];
51 
52 
53  if ( brk_pt <= (1 - brk_pt))
54  flat = flat * ( brk_pt);
55  else flat = flat * ( 1 - brk_pt);
56 
57  if ( v < ( m_vmin + col*m_dv ) )
58  v = v + 1.5 * m_dv;
59 
60  //Red
61  if ( v < ( m_vmin + ( 1.25 * brk_pt - 0.5 * flat + col) * m_dv ) )
62  r = 0;
63 
64  else if ( v > ( m_vmin + ( 1.25 * brk_pt - 0.5 * flat + col) * m_dv ) &&
65  v < ( m_vmin + ( 1.25 * brk_pt + 0.5 * flat + col) * m_dv ) )
66  r = ( v - m_vmin - ( 1.25 * brk_pt - 0.5 * flat + col) * m_dv ) /
67  ( ( (flat+0.001) ) * m_dv );
68 
69  else if( v > ( m_vmin + ( 1.25 * brk_pt + 0.5 * flat + col) * m_dv ) &&
70  v < ( m_vmin + ( 1.25 + col ) * m_dv ) )
71  r = 1;
72 
73  else r = 1 - 4 * ( v - m_vmin - ( 1.25 + col ) * m_dv ) / m_dv;
74 
75 
76  //Green
77  if ( v < (m_vmin + (brk_pt - flat + col) * m_dv ))
78  g = (v - m_vmin - col*m_dv ) / ( (0.001+brk_pt - flat ) * m_dv );
79 
80  else if ( v > (m_vmin + (brk_pt - flat + col) * m_dv ) &&
81  v < ( m_vmin + (brk_pt + flat + col) * m_dv ) )
82  g = 1;
83 
84  else if ( v > ( m_vmin + (brk_pt + flat + col) * m_dv ) &&
85  v < ( m_vmin + ( 1 + col ) * m_dv ) )
86 
87  g = 1 - ( v - m_vmin - ( brk_pt + flat + col )*m_dv)/
88  ( (1.001 - brk_pt - flat ) * m_dv );
89 
90  else g = 0;
91 
92 
93  //Blue
94  if ( v < (m_vmin + ( 0.75 * brk_pt - 0.5 * flat + col ) * m_dv ) )
95  b = 1;
96 
97  else if ( v > (m_vmin + ( 0.75 * brk_pt - 0.5 * flat + col ) * m_dv ) &&
98  v < (m_vmin + ( 0.75 * brk_pt + 0.5 * flat + col) * m_dv ) )
99 
100  b = 1 - ( v - m_vmin - ( 0.75 * brk_pt - 0.5 * flat + col )*m_dv ) /
101  ( ( (flat + 0.001) ) * m_dv );
102 
103  else if ( v > (m_vmin + ( 0.75 * brk_pt + 0.5 * flat + col) * m_dv ) &&
104  v < ( m_vmin + ( 1 + col ) * m_dv ) )
105  b = 0;
106 
107  else if ( v > ( m_vmin + ( 1 + col ) * m_dv ) &&
108  v < ( m_vmin + ( 1.25 + col ) * m_dv ) )
109 
110  b = 4 * ( v - m_vmin - ( 1 + col ) * m_dv ) / m_dv ;
111 
112  else b = 1;
113 
114  int red = static_cast < int > ( r * 255. );
115  int green = static_cast < int > ( g * 255. );
116  int blue = static_cast < int > ( b * 255. );
117 
118 
119  assert ( red < 256 && green < 256 && blue < 256 );
120  color.setColor ( red, green, blue );
121 // double r = 1; double g = 1; double b = 1;
122 // double v = value;
123 
124 // assert(m_control_points.size()!=0);
125 // double brk_pt = m_control_points[0];
126 // double flat = m_control_points[1];
127 
128 // if ( brk_pt <= (1 - brk_pt))
129 // flat = flat * ( brk_pt);
130 // else flat = flat * ( 1 - brk_pt);
131 
132 
133 
134 // if ( v < ( m_vmin + ( 1.25 * brk_pt - 0.5 * flat ) * m_dv ) )
135 // r = 0;
136 
137 // else if( v > ( m_vmin + ( 1.25 * brk_pt + 0.5 * flat ) * m_dv ) )
138 // r = 1;
139 
140 // else r = ( v - m_vmin - ( 1.25 * brk_pt - 0.5 * flat ) * m_dv ) /
141 // ( ( (flat+0.001) ) * m_dv );
142 
143 
144 
145 
146 // if ( v < (m_vmin + (brk_pt - flat) * m_dv ))
147 // g = (v - m_vmin) / ( (0.001+brk_pt - flat) * m_dv );
148 
149 // else if ( v > ( m_vmin + (brk_pt + flat) * m_dv ))
150 
151 // g = 1 - ( v - m_vmin - ( brk_pt + flat )*m_dv)/
152 // ( (1.001 - brk_pt - flat) * m_dv );
153 
154 // else g = 1;
155 
156 
157 
158 
159 // if ( v < (m_vmin + ( 0.75 * brk_pt - 0.5 * flat ) * m_dv ) )
160 // b = 1;
161 
162 // else if( v > (m_vmin + ( 0.75 * brk_pt + 0.5 * flat ) * m_dv ) )
163 // b = 0;
164 
165 // else b = 1 - ( v - m_vmin - ( 0.75 * brk_pt - 0.5 * flat)*m_dv ) /
166 // ( ( (flat + 0.001) ) * m_dv );
167 
168 
169 
170 
171 // int red = static_cast < int > ( r * 255. );
172 // int green = static_cast < int > ( g * 255. );
173 // int blue = static_cast < int > ( b * 255. );
174 
175 
176 // assert ( red < 256 && green < 256 && blue < 256 );
177 // color.setColor ( red, green, blue );
178 }
179 
180 bool
183 {
184  return true;
185 }
186 
187 bool
190 {
191  return true;
192 }

Generated for HippoDraw Class Library by doxygen