00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00023 #ifndef INCLUDE_LAYOUT_H
00024 #define INCLUDE_LAYOUT_H
00025 
00040 template <class T> class Layout 
00041 {
00042 public:
00043         T constValue;
00044         double percentValue;
00045         T *baseValue;
00046 
00047 public:
00048         Layout()
00049         {
00050                 Zero();
00051         }
00052 
00053         void Zero()
00054         {
00055                 constValue=0;
00056                 percentValue=0;
00057                 baseValue=NULL;
00058         }
00059 
00067         void operator=(int value)
00068         {
00069                 constValue = value;
00070         }
00071 
00072         void operator=(GLdouble value)
00073         {
00074                 constValue = value;
00075         }
00076 
00077         void operator=(Layout &source)
00078         {
00079                 constValue = source.constValue;
00080                 percentValue = source.percentValue;
00081                 baseValue = source.baseValue;
00082         }
00083 
00084         void Set(T _constValue,double _percentValue=0,T *_baseValue=NULL) 
00085         {
00086                 constValue = _constValue;
00087                 SetPercent(_percentValue,_baseValue);
00088         }
00089 
00090         void SetPercent(double _percentValue=0,T *_baseValue=NULL)
00091         {
00092                 percentValue = _percentValue;
00093                 baseValue = _baseValue;
00094         }
00095 
00096         BOOL IsDynamic()
00097         {
00098                 return baseValue?TRUE:FALSE;
00099         }
00100 
00117         T Compute()
00118         {
00119                 if (!percentValue || !baseValue) return constValue;
00120                 return constValue+*baseValue*percentValue;
00121         }
00122 };
00123 
00124 #endif