00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __TRANSFER_FUNCTION_PARAMETERS_DOT_H
00023 #define __TRANSFER_FUNCTION_PARAMETERS_DOT_H
00024
00025
00026 #ifdef max
00027 # undef max
00028 #endif
00029 #ifdef min
00030 # undef min
00031 #endif
00032
00033 #include <mathGutz.h>
00034 #include <vector>
00035 #include <limits>
00036
00037
00038 namespace STF {
00039
00040
00041
00042
00043 enum MIN_NUM_TF_PARAMS {
00044 TF_MAX_D = 10,
00045 TF_MAX_R = 10
00046 };
00047
00048
00049
00050 typedef float tfSType;
00051
00052 const tfSType tfSType_bad = std::numeric_limits<tfSType>::quiet_NaN();
00053 const tfSType tfSType_max = std::numeric_limits<tfSType>::max();
00054 const tfSType tfSType_min = std::numeric_limits<tfSType>::min();
00055
00056 inline tfSType randval() { return tfSType(DRAND48); }
00057
00058
00059
00060
00061
00062
00063 typedef gutz::vec<tfSType, TF_MAX_R> tfRangeType;
00064
00065 const tfRangeType tfRangeType_bad(tfSType_bad);
00066 const tfRangeType tfRangeType_max(tfSType_max);
00067 const tfRangeType tfRangeType_min(tfSType_min);
00068
00069 typedef gutz::vec<int, TF_MAX_R> tfRangeIdx;
00070
00071 const tfRangeIdx tfRangeIdx_ao(0,1,2,3,4,5,6,7,8,9);
00072
00073
00074 const tfRangeType tfRangeType_default(0,
00075 0,
00076 0,
00077 0,
00078 0,
00079 0,
00080 0,
00081 0,
00082 0,
00083 0);
00084
00085
00086
00087 typedef gutz::vec<tfSType, 4> tfRangeVec4;
00088
00089
00090 typedef std::vector<tfRangeType> tfRangeVec;
00091 typedef tfRangeVec::iterator tfRangeVecIter;
00092
00093
00094 enum TF_RANGE_SYMANTICS {
00095
00096 RED = 0,
00097 GREEN = 1,
00098 BLUE = 2,
00099 ALPHA = 3,
00100
00101 RF_RED = 0,
00102 RF_GREEN = 1,
00103 RF_BLUE = 2,
00104
00105 TP_RED = 4,
00106 TP_GREEN = 5,
00107 TP_BLUE = 6,
00108
00109 FRESNEL = 7,
00110
00111 SURFACE = 8,
00112 TFS_LAST = TF_MAX_R
00113 };
00114
00115
00116
00117 enum TF_4MAP_KINDS {
00118 TF_RGBA
00119 };
00120
00121 const tfRangeIdx tfRGBA_idx(0,1,2,3);
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132 typedef gutz::vec<tfSType, TF_MAX_D> tfDomainType;
00133
00134 const tfDomainType tfDomainType_bad(tfSType_bad);
00135 const tfDomainType tfDomainType_max(tfSType_max);
00136 const tfDomainType tfDomainType_min(tfSType_min);
00137
00138
00139 typedef std::vector<tfDomainType> tfDomainVec;
00140 typedef tfDomainVec::iterator tfDomainVecIter;
00141
00142
00143
00144
00145 typedef gutz::vec2<tfSType> tfVec2;
00146 const tfVec2 tfVec2_bad = tfVec2(tfSType_bad);
00147
00148
00149
00150
00151 }
00152
00153 #endif
00154