00001 #ifndef COIN_SOSFIMAGE_H
00002 #define COIN_SOSFIMAGE_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <Inventor/fields/SoSField.h>
00028 #include <Inventor/fields/SoSubField.h>
00029 #include <Inventor/SbVec2s.h>
00030
00031
00032 class COIN_DLL_API SoSFImage : public SoSField {
00033 typedef SoSField inherited;
00034
00035 SO_SFIELD_CONSTRUCTOR_HEADER(SoSFImage);
00036 SO_SFIELD_REQUIRED_HEADER(SoSFImage);
00037
00038 public:
00039 enum CopyPolicy {
00040 COPY,
00041 NO_COPY,
00042 NO_COPY_AND_DELETE,
00043 NO_COPY_AND_FREE
00044 };
00045
00046 static void initClass(void);
00047
00048 const unsigned char * getValue(SbVec2s & size, int & nc) const;
00049 void setValue(const SbVec2s & size, const int nc,
00050 const unsigned char * pixels, CopyPolicy copypolicy = COPY);
00051
00052 int operator==(const SoSFImage & field) const;
00053 int operator!=(const SoSFImage & field) const { return ! operator == (field); }
00054
00055 unsigned char * startEditing(SbVec2s & size, int & nc);
00056 void finishEditing(void);
00057
00058 void setSubValue(const SbVec2s & dims, const SbVec2s & offset, unsigned char * pixels);
00059 void setSubValues(const SbVec2s * dims, const SbVec2s * offsets, int num, unsigned char ** pixelblocks);
00060 unsigned char * getSubTexture(int idx, SbVec2s & dims, SbVec2s & offset) const;
00061 SbBool hasSubTextures(int & numsubtextures);
00062
00063 void setNeverWrite(SbBool flag);
00064 SbBool isNeverWrite(void) const;
00065
00066 SbBool hasTransparency(void) const;
00067
00068 private:
00069 virtual SbBool readValue(SoInput * in);
00070 virtual void writeValue(SoOutput * out) const;
00071
00072 class SoSFImageP * pimpl;
00073 };
00074
00075 #endif // !COIN_SOSFIMAGE_H