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_TRANSFER_FUNCTION_ELEMENT_
00026 #define _SO_TRANSFER_FUNCTION_ELEMENT_
00027
00028 #ifdef _MSC_VER
00029 #pragma warning( push )
00030 #pragma warning(disable:4251)
00031 #endif
00032
00033 #include <Inventor/elements/SoAccumulatedElement.h>
00034
00035 #include <Inventor/STL/vector>
00036 #include <Inventor/STL/map>
00037
00038 class SoTransferFunction;
00039 class SoGLRenderAction;
00040
00041 SoEXTENDER_Documented class SoTransferFunctionElement : public SoAccumulatedElement {
00042 SO_ELEMENT_HEADER( SoTransferFunctionElement );
00043
00044 public:
00045
00047 static void set(SoState* state, SoNode *node, SoTransferFunction *m_transferFunctionNode);
00048 static void get(SoState* state, SoTransferFunction *&m_transferFunctionNode);
00049
00051 static void get(SoState* state, std::vector<SoTransferFunction*>&);
00052
00054 static void getDefault(SoTransferFunction *&m_transferFunctionNode);
00055
00057 static SbBool hasTransparency(SoState *state);
00058
00059
00060 virtual void push(SoState *state) ;
00061
00062 private:
00063
00065 virtual void init(SoState* state);
00066
00067 private:
00068 typedef std::vector<SoTransferFunction*> TransferFunctionVector;
00069 typedef TransferFunctionVector::iterator TransferFunctionVectorIt;
00070 typedef std::map<int, SoTransferFunction*> TransferFunctionMap;
00071
00072
00073 static void initClass();
00074 static void exitClass();
00075
00076
00077 static void get(SoState* state, TransferFunctionMap& tfMap);
00078
00080 static void setVVizUniform(SoGLRenderAction* action);
00081
00083 static bool idEqual(SoTransferFunction* tf, short id);
00084
00086 static int getMinTransferFunctionId(SoState* state);
00088 static int getMaxTransferFunctionId(SoState* state);
00089
00091 static SoTransferFunction* get(SoState* state, int transferFunctionId);
00092
00093 private:
00094
00095
00096
00097 TransferFunctionMap m_transferFunctionList;
00098
00099 SoTransferFunction *m_transferFunctionNode;
00100 int m_minTfId;
00101 int m_maxTfId;
00102
00103 virtual void setElt( SoTransferFunction *m_transferFunctionNode );
00104
00105 virtual ~SoTransferFunctionElement() ;
00106 };
00107
00108 #ifdef _MSC_VER
00109 #pragma warning( pop )
00110 #endif
00111
00112 #endif // _SO_TRANSFER_FUNCTION_ELEMENT_
00113
00114
00115