00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _PB_NON_LINEAR_DATA_MAPPING_
00025 #define _PB_NON_LINEAR_DATA_MAPPING_
00026
00027 #include <MeshViz/graph/PbDataMapping.h>
00028
00047 class PbNonLinearDataMapping : public PbDataMapping {
00048
00049 public:
00050
00054 typedef const SbColor* RGBFunction(void* userData, float);
00055
00059 typedef const float* HLSFunction(void* userData, float);
00060
00061 typedef float TransparencyFunction(void* userData, float);
00062
00066 PbNonLinearDataMapping() ;
00067
00072 void setRGBFunction(RGBFunction* func, void* userData) ;
00073
00078 void setRGBFunction(const SbColor* (*func)(float)) ;
00079
00084 void setHLSFunction(HLSFunction* func, void* userData) ;
00085
00090 void setHLSFunction(const float* (*func)(float)) ;
00091
00097 void setTransparencyFunction(TransparencyFunction* func, void* userData) ;
00098
00103 void setTransparencyFunction(float (*func)(float));
00104
00105
00106 private:
00107 virtual ClassType getClassType() const
00108 { return NON_LINEAR_DATA_MAPPING1 ;}
00109
00110 private:
00111
00112 const SbColor* computeColor(float value) const;
00113 const SbColor* computeColor(float value, float &transparency) const;
00114
00115 static const SbColor* defaultColorFunc(float value) ;
00116
00117
00118 static float defaultTransparencyFunction(float value) ;
00119
00120
00121 const SbColor* (*m_RGBFunc)(float) ;
00122 const float* (*m_HLSFunc)(float) ;
00123 float (*m_TransparencyFunc)(float) ;
00124
00125 const SbColor* (*m_RGBFunc2)(void*, float) ;
00126 const float* (*m_HLSFunc2)(void*, float) ;
00127 float (*m_TransparencyFunc2)(void*, float) ;
00128
00129 void * m_RGBUserData;
00130 void * m_HLSUserData;
00131 void * m_TransparencyUserData;
00132 } ;
00133
00134
00135
00136 #endif
00137
00138