20 #define DOUBLE_DIFF_THRESHOLD 0.0000001
40 return QString(
"INTERPOLATED" );
43 return QString(
"DISCRETE" );
46 return QString(
"EXACT" );
49 return QString(
"Unknown" );
55 if ( myColorRampItemCount <= 0 )
60 double myTinyDiff = 0.0;
66 myTinyDiff = qAbs( theValue - myColorRampItem.
value );
75 *theReturnRedValue = myColorRampItem.
color.red();
76 *theReturnGreenValue = myColorRampItem.
color.green();
77 *theReturnBlueValue = myColorRampItem.
color.blue();
98 if ( myColorRampItemCount <= 0 )
103 double myTinyDiff = 0.0;
109 myTinyDiff = qAbs( theValue - myColorRampItem.
value );
112 *theReturnRedValue = myColorRampItem.
color.red();
113 *theReturnGreenValue = myColorRampItem.
color.green();
114 *theReturnBlueValue = myColorRampItem.
color.blue();
130 else if ( theValue > myColorRampItem.
value )
145 theReturnRedValue,
int* theReturnGreenValue,
int* theReturnBlueValue )
148 if ( myColorRampItemCount <= 0 )
153 double myTinyDiff = 0.0;
154 double myCurrentRampRange;
155 double myOffsetInRange;
161 myTinyDiff = qAbs( theValue - myColorRampItem.
value );
170 myCurrentRampRange = myColorRampItem.
value - myPreviousColorRampItem.
value;
171 myOffsetInRange = theValue - myPreviousColorRampItem.
value;
173 *theReturnRedValue = ( int )((
double ) myPreviousColorRampItem.
color.red() + ((( double )( myColorRampItem.
color.red() - myPreviousColorRampItem.
color.red() ) / myCurrentRampRange ) * myOffsetInRange ) );
174 *theReturnGreenValue = ( int )((
double ) myPreviousColorRampItem.
color.green() + ((( double )( myColorRampItem.
color.green() - myPreviousColorRampItem.
color.green() ) / myCurrentRampRange ) * myOffsetInRange ) );
175 *theReturnBlueValue = ( int )((
double ) myPreviousColorRampItem.
color.blue() + ((( double )( myColorRampItem.
color.blue() - myPreviousColorRampItem.
color.blue() ) / myCurrentRampRange ) * myOffsetInRange ) );
178 QColor myNewColor( *theReturnRedValue, *theReturnGreenValue, *theReturnBlueValue );
186 myCurrentRampRange = myColorRampItem.
value - myPreviousColorRampItem.
value;
187 myOffsetInRange = theValue - myPreviousColorRampItem.
value;
189 *theReturnRedValue = myColorRampItem.
color.red();
190 *theReturnGreenValue = myColorRampItem.
color.green();
191 *theReturnBlueValue = myColorRampItem.
color.blue();
194 QColor myNewColor( *theReturnRedValue, *theReturnGreenValue, *theReturnBlueValue );
200 else if ( theValue > myColorRampItem.
value )
231 if ( theType ==
"INTERPOLATED" )
235 else if ( theType ==
"DISCRETE" )
250 if ( myColor.isValid() )
252 *theReturnRedValue = myColor.red();
253 *theReturnGreenValue = myColor.green();
254 *theReturnBlueValue = myColor.blue();
272 return exactColor( theValue, theReturnRedValue, theReturnGreenValue, theReturnBlueValue );
276 return interpolatedColor( theValue, theReturnRedValue, theReturnGreenValue, theReturnBlueValue );
279 return discreteColor( theValue, theReturnRedValue, theReturnGreenValue, theReturnBlueValue );
283 double theBlueValue,
int* theReturnRedValue,
int* theReturnGreenValue,
int*
286 *theReturnRedValue = 0;
287 *theReturnGreenValue = 0;
288 *theReturnBlueValue = 0;