CMS 3D CMS Logo

IgQtRangeValueFloat.cc

Go to the documentation of this file.
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 }

Generated on Tue Jun 9 17:38:39 2009 for CMSSW by  doxygen 1.5.4