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_ELT_
00026 #define _SO_DATA_RANGE_ELT_
00027
00028 #ifdef _MSC_VER
00029 #pragma warning( push )
00030 #pragma warning(disable:4251)
00031 #endif
00032
00033 #include <Inventor/elements/SoAccumulatedElement.h>
00034 #include <Inventor/STL/map>
00035 #include <Inventor/STL/vector>
00036
00037 class SoDataRange;
00038
00039 SoEXTENDER_Documented class SoDataRangeElement : public SoAccumulatedElement {
00040 SO_ELEMENT_HEADER( SoDataRangeElement );
00041
00042 public:
00043
00044
00045 static void set(SoState* state, SoNode *node, SoDataRange*);
00046 static void get(SoState* state, SoDataRange*&);
00047
00048
00049 virtual void push(SoState *state) ;
00050
00051
00052 static SoDataRange* get( SoState *state, short dataRangeId);
00053
00054
00055 static void getDefault(SoDataRange *&);
00056
00057 #if 1 SoDEPRECATED
00063 static void get(SoState* state, std::vector<SoDataRange*>&);
00064
00065 #endif
00067 private:
00068
00070 virtual void init(SoState* state);
00071
00073 virtual SoElement* copyMatchInfo() const;
00074
00078 virtual SbBool matches(const SoElement* elt) const;
00079
00080 private:
00081
00082 typedef std::map<int, SoDataRange*> DataRangeIdMap;
00083
00084 static void initClass();
00085 static void exitClass();
00086
00087
00088
00089 static void get(SoState* state, DataRangeIdMap&);
00090
00091 private:
00092 struct DataRangeInfos
00093 {
00094 double min;
00095 double max;
00096 bool mapOnFullColorRange;
00097 int dataRangeId;
00098 };
00099
00100 virtual void setElt( SoDataRange* );
00101 virtual ~SoDataRangeElement() ;
00102
00103 private:
00104
00105
00106
00107 std::map<int,SoDataRange*> m_dataRangeMap;
00108 int m_numDataRange;
00109 std::map<int,DataRangeInfos> m_dataRangeInfosMap;
00110 SoDataRange *m_dataRangeNode;
00111 };
00112
00113 #ifdef _MSC_VER
00114 #pragma warning( pop )
00115 #endif
00116
00117 #endif // _SO_DATA_RANGE_ELT_
00118
00119
00120