00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _SO_DATA_RANGE__
00026 #define _SO_DATA_RANGE__
00027
00028 #include <Inventor/nodes/SoNode.h>
00029 #include <Inventor/fields/SoSFDouble.h>
00030 #include <Inventor/fields/SoSFBool.h>
00031 #include <Inventor/fields/SoSFInt32.h>
00032
00033 #include <LDM/nodes/SoDataSet.h>
00034 #include <Inventor/algorithms/SoConversion.h>
00035
00191 class SoDataRange : public SoNode {
00192 SO_NODE_HEADER( SoDataRange );
00193
00194 public:
00198 SoDataRange();
00199
00209 SoSFInt32 dataRangeId;
00210
00215 SoSFDouble min;
00216
00220 SoSFDouble max;
00221
00234 SoSFBool mapOnFullColorRange;
00235
00236 private:
00237 static void initClass();
00238 static void exitClass();
00239
00244 static void mapDataRangeToIndex(
00245 const SoDataSet::DataType dataTypeSrc, SoBufferObject* sourceBufferObject,
00246 const SoDataSet::DataType dataTypeDst, SoBufferObject* targetBufferObject,
00247 const double dataRangeMin, const double dataRangeMax, const bool dataRangeMap,
00248 const int shift, const int offset
00249 );
00250
00251
00256 static void mapDataRangeToRgba(
00257 const SoDataSet::DataType dataTypeSrc, SoBufferObject* sourceBufferObject,
00258 const SoDataSet::DataType dataTypeDst, SoBufferObject* targetBufferObject,
00259 const double dataRangeMin, const double dataRangeMax, const bool dataRangeMap,
00260 const int shift, const int offset,
00261 SoBufferObject *rgba, const int numRgba, SoConversion::MappingMethod rgbaMapping
00262 );
00263
00270 static void mapDataToIndex(
00271 const SoDataSet::DataType dataTypeSrc, SoBufferObject* sourceBufferObject,
00272 const SoDataSet::DataType dataTypeDst, SoBufferObject* targetBufferObject,
00273 const int numSigBits, const int shift, const int offset
00274 );
00275
00276
00283 static void mapDataToRgba(
00284 const SoDataSet::DataType dataTypeSrc, SoBufferObject* sourceBufferObject,
00285 const SoDataSet::DataType dataTypeDst, SoBufferObject* targetBufferObject,
00286 const int numSigBits, const int shift, const int offset,
00287 SoBufferObject *rgba, const int numRgba, SoConversion::MappingMethod rgbaMapping
00288 );
00289
00290
00291 private:
00292 virtual void doAction( SoAction *action );
00293 virtual void GLRender( SoGLRenderAction *action );
00294 virtual void callback( SoCallbackAction *action );
00295 virtual void getBoundingBox(SoGetBoundingBoxAction *action);
00296 virtual void pick(SoPickAction *action) ;
00297 virtual void write(SoWriteAction *action);
00298
00299 private:
00300
00301 virtual ~SoDataRange();
00302
00303 private:
00304
00305 static SoConversion* s_conversion;
00306 };
00307
00308 #endif // _SO_DATA_RANGE__
00309
00310
00311