00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef COIN_SOTEXTURE2_H
00021 #define COIN_SOTEXTURE2_H
00022
00023 #include <Inventor/nodes/SoSubNode.h>
00024 #include <Inventor/fields/SoSFEnum.h>
00025 #include <Inventor/fields/SoSFImage.h>
00026 #include <Inventor/fields/SoSFString.h>
00027 #include <Inventor/fields/SoSFColor.h>
00028 #include <Inventor/elements/SoTextureImageElement.h>
00029
00030 class SoFieldSensor;
00031 class SoSensor;
00032
00033 class COIN_DLL_API SoTexture2 : public SoNode {
00034 typedef SoNode inherited;
00035
00036 SO_NODE_HEADER(SoTexture2);
00037
00038 public:
00039 static void initClass(void);
00040 SoTexture2(void);
00041
00042 enum Model {
00043 MODULATE = SoTextureImageElement::MODULATE,
00044 DECAL = SoTextureImageElement::DECAL,
00045 BLEND = SoTextureImageElement::BLEND
00046 };
00047
00048 enum Wrap {
00049 REPEAT = SoTextureImageElement::REPEAT,
00050 CLAMP = SoTextureImageElement::CLAMP
00051 };
00052
00053 SoSFString filename;
00054 SoSFImage image;
00055 SoSFEnum wrapS;
00056 SoSFEnum wrapT;
00057 SoSFEnum model;
00058 SoSFColor blendColor;
00059
00060 virtual void doAction(SoAction * action);
00061 virtual void GLRender(SoGLRenderAction * action);
00062 virtual void callback(SoCallbackAction * action);
00063
00064 static SbBool readImage(const SbString & fname, int & w, int & h, int & nc,
00065 unsigned char *& bytes);
00066 protected:
00067 virtual ~SoTexture2();
00068
00069 virtual SbBool readInstance(SoInput * in, unsigned short flags);
00070 virtual void notify(SoNotList * list);
00071 int getReadStatus(void);
00072 void setReadStatus(int s);
00073
00074 private:
00075 SbBool loadFilename(void);
00076 int readstatus;
00077 class SoGLImage * glimage;
00078 SbBool glimagevalid;
00079
00080 class SoFieldSensor * filenamesensor;
00081 static void filenameSensorCB(void *, SoSensor *);
00082 };
00083
00084 #endif // !COIN_SOTEXTURE2_H