00001 /* 00002 * PROPRIETARY INFORMATION. This software is proprietary to 00003 * Side Effects Software Inc., and is not to be reproduced, 00004 * transmitted, or disclosed in any way without written permission. 00005 * 00006 * Produced by: 00007 * ramin 00008 * Side Effects Software Inc. 00009 * 20 Maud St. 00010 * Toronto, Ontario, M5V 2M5 00011 * Canada 00012 * 416-366-4607 00013 * 00014 * NAME: PRM_Range.h (Parameter Library) 00015 * 00016 * COMMENTS: 00017 * This parameter is used to set upper and lower limits on 00018 * parameters. For simplicity only floating point numbers are 00019 * used. These limits are not actually enforced by the parmeter 00020 * library. But maybe they should. Discuss. 00021 */ 00022 00023 00024 #ifndef __PRM_RANGE__ 00025 #define __PRM_RANGE__ 00026 00027 #include "PRM_API.h" 00028 #include <SYS/SYS_Math.h> 00029 00030 enum PRM_RangeFlag 00031 { 00032 PRM_RANGE_FREE = 0x0, // ie range is ignored. 00033 PRM_RANGE_UI = 0x1, // For some UI (sliders, etc) only 00034 PRM_RANGE_PRM = 0x2, // Strictly enforced by PRM, too 00035 PRM_RANGE_RESTRICTED= (PRM_RANGE_UI | PRM_RANGE_PRM) // both UI and PRM 00036 }; 00037 00038 class PRM_API PRM_Range 00039 { 00040 public: 00041 PRM_Range(PRM_RangeFlag theminflag = PRM_RANGE_UI, float themin = 0, 00042 PRM_RangeFlag themaxflag = PRM_RANGE_UI, float themax = 1) 00043 { 00044 myMinFlag = theminflag; 00045 myMin = themin; 00046 myMaxFlag = themaxflag; 00047 myMax = themax; 00048 } 00049 00050 bool hasParmMin() const 00051 { 00052 return ((myMinFlag & PRM_RANGE_PRM) != 0); 00053 } 00054 bool hasParmMax() const 00055 { 00056 return ((myMaxFlag & PRM_RANGE_PRM) != 0); 00057 } 00058 00059 float getParmMin() const 00060 { 00061 if (myMinFlag != PRM_RANGE_FREE) 00062 return myMin; 00063 return -FP32_REAL_MAX; 00064 } 00065 float getParmMax() const 00066 { 00067 if (myMaxFlag != PRM_RANGE_FREE) 00068 return myMax; 00069 return FP32_REAL_MIN; 00070 } 00071 00072 bool hasUIMin() const 00073 { 00074 return ((myMinFlag & PRM_RANGE_UI) != 0); 00075 } 00076 bool hasUIMax() const 00077 { 00078 return ((myMaxFlag & PRM_RANGE_UI) != 0); 00079 } 00080 00081 float getUIMin() const { return getParmMin(); } 00082 float getUIMax() const { return getParmMax(); } 00083 00084 private: 00085 PRM_RangeFlag myMinFlag; 00086 PRM_RangeFlag myMaxFlag; 00087 float myMin; 00088 float myMax; 00089 }; 00090 00091 #endif
1.5.9