00001 //<<<<<< INCLUDES >>>>>> 00002 00003 #include "Iguana/GLBrowsers/interface/IgQtRangeValueFloat.h" 00004 00005 //<<<<<< PRIVATE DEFINES >>>>>> 00006 //<<<<<< PRIVATE CONSTANTS >>>>>> 00007 //<<<<<< PRIVATE TYPES >>>>>> 00008 //<<<<<< PRIVATE VARIABLE DEFINITIONS >>>>>> 00009 //<<<<<< PUBLIC VARIABLE DEFINITIONS >>>>>> 00010 //<<<<<< CLASS STRUCTURE INITIALIZATION >>>>>> 00011 //<<<<<< PRIVATE FUNCTION DEFINITIONS >>>>>> 00012 //<<<<<< PUBLIC FUNCTION DEFINITIONS >>>>>> 00013 //<<<<<< MEMBER FUNCTION DEFINITIONS >>>>>> 00014 00018 00019 IgQtRangeValueFloat::IgQtRangeValueFloat (float value /* = 0 */, 00020 float min /* = SHRT_MIN */, 00021 float max /* = SHRT_MAX */) 00022 : inherited (value, min, max), 00023 IgQtRangeValuePrecision (.01) 00024 { } 00025 00026 void 00027 IgQtRangeValueFloat::setValue (float value) 00028 { 00029 value = roundOff (adjustValue (value), precision ()); 00030 forceValueChanged (value - inherited::value ()); 00031 forceValue (value); 00032 } 00033 00034 bool 00035 IgQtRangeValueFloat::isValueChanged (void) const 00036 { return fabs (valueChange ()) >= precision (); } 00037 00038 00040 float 00041 IgQtRangeValueFloat::roundOff (float number, float precision /* = .0001 */) 00042 { 00043 if ((precision = fabs (precision)) > 0) 00044 { 00045 if (precision < minimumPrecision ()) 00046 precision = minimumPrecision (); 00047 00048 if (precision < 1.0) 00049 number = minValue () + round ((number - minValue ()) / precision) * precision; 00050 else 00051 number = round (number); 00052 } 00053 return number; 00054 }