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 _SO_GL_TEXTURE_COORDINATE3_ELEMENT
00025 #define _SO_GL_TEXTURE_COORDINATE3_ELEMENT
00026
00027 #include <Inventor/SbLinear.h>
00028 #include <Inventor/elements/SoTextureCoordinate3Element.h>
00029 #include <Inventor/STL/vector>
00030 #include <SoDeprecationRules.h>
00031
00032 typedef void SoTexCoordTexgenCB(void *userdata);
00033
00055 SoEXTENDER_Documented class SoDEPRECATED SoGLTextureCoordinate3Element : public SoTextureCoordinate3Element
00056 {
00057 SO_ELEMENT_HEADER(SoGLTextureCoordinate3Element);
00058
00059 public:
00071 static void setTexGen(SoState *state, SoNode *node,
00072 SoTexCoordTexgenCB *texGenFunc, void *texGenData = NULL,
00073 SoTextureCoordinate3FunctionCB *func = NULL,
00074 void *funcData = NULL);
00075
00079 virtual CoordType getType(int unit=0) const;
00080
00087 static const SoGLTextureCoordinate3Element * getInstance(SoState *state);
00088
00093 void send(int index, int unit=0) const;
00094
00098 virtual void push(SoState *state);
00099
00103 virtual void pop(SoState *state, const SoElement *prevTopElement);
00104
00105 private:
00106
00108 virtual void commonInit();
00109
00111 virtual void init(SoState *state);
00112
00113 private:
00114
00115 static void initClass();
00116 static void exitClass();
00117
00118 private:
00119 void setElt(SoTexCoordTexgenCB *function,
00120 void *userData = NULL, int unit=0);
00121
00122 virtual ~SoGLTextureCoordinate3Element();
00123
00124 private:
00125 struct SoTexGenData {
00126
00127 SoTexGenData()
00128 :texgenCB(NULL),texgenCBData(NULL)
00129 {};
00130
00131 SoTexGenData& operator=(const SoTexGenData& data)
00132 {
00133 texgenCB = data.texgenCB ;
00134 texgenCBData = data.texgenCBData ;
00135 return *this ;
00136 }
00137
00138
00139 SoTexCoordTexgenCB *texgenCB;
00140 void *texgenCBData;
00141
00142 } ;
00143
00144 SoTexGenData& getTexGenData(const size_t unit) const;
00145
00146 mutable std::vector<SoTexGenData> m_texGenData ;
00147 SoState *copiedFromParent;
00148 };
00149
00150 #endif
00151
00152
00153