.TH "SoSFImage3" 3 "Tue Dec 26 2023 17:59:22" "Version 4.0.2" "Coin" \" -*- nroff -*- .ad l .nh .SH NAME SoSFImage3 \- The \fBSoSFImage3\fP class is used to store 3D (volume) images\&. .SH SYNOPSIS .br .PP .PP \fC#include \fP .PP Inherits \fBSoSField\fP\&. .SS "Public Member Functions" .in +1c .ti -1c .RI "\fBvirtual\fP \fBSoType\fP \fBgetTypeId\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBcopyFrom\fP (\fBconst\fP \fBSoField\fP &\fBfield\fP)" .br .ti -1c .RI "\fBconst\fP \fBSoSFImage3\fP & \fBoperator=\fP (\fBconst\fP \fBSoSFImage3\fP &\fBfield\fP)" .br .ti -1c .RI "\fBvirtual\fP SbBool \fBisSame\fP (\fBconst\fP \fBSoField\fP &\fBfield\fP) \fBconst\fP" .br .ti -1c .RI "\fBconst\fP \fBunsigned\fP char * \fBgetValue\fP (\fBSbVec3s\fP &size, int &\fBnc\fP) \fBconst\fP" .br .ti -1c .RI "\fBvoid\fP \fBsetValue\fP (\fBconst\fP \fBSbVec3s\fP &size, \fBconst\fP int \fBnc\fP, \fBconst\fP \fBunsigned\fP char *bytes)" .br .ti -1c .RI "int \fBoperator==\fP (\fBconst\fP \fBSoSFImage3\fP &\fBfield\fP) \fBconst\fP" .br .ti -1c .RI "int \fBoperator!=\fP (\fBconst\fP \fBSoSFImage3\fP &\fBfield\fP) \fBconst\fP" .br .ti -1c .RI "\fBunsigned\fP char * \fBstartEditing\fP (\fBSbVec3s\fP &size, int &\fBnc\fP)" .br .ti -1c .RI "\fBvoid\fP \fBfinishEditing\fP (\fBvoid\fP)" .br .in -1c Public Member Functions inherited from \fBSoSField\fP .in +1c .ti -1c .RI "\fBvirtual\fP \fB~SoSField\fP ()" .br .in -1c Public Member Functions inherited from \fBSoField\fP .in +1c .ti -1c .RI "\fBvirtual\fP \fB~SoField\fP ()" .br .ti -1c .RI "\fBvoid\fP \fBsetIgnored\fP (SbBool \fBignore\fP)" .br .ti -1c .RI "SbBool \fBisIgnored\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvoid\fP \fBsetDefault\fP (SbBool \fBdefaultVal\fP)" .br .ti -1c .RI "SbBool \fBisDefault\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "SbBool \fBisOfType\fP (\fBconst\fP \fBSoType\fP type) \fBconst\fP" .br .ti -1c .RI "\fBvoid\fP \fBenableConnection\fP (SbBool \fBflag\fP)" .br .ti -1c .RI "SbBool \fBisConnectionEnabled\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "SbBool \fBconnectFrom\fP (\fBSoEngineOutput\fP *master, SbBool \fBnotnotify\fP=FALSE, SbBool append=FALSE)" .br .ti -1c .RI "SbBool \fBappendConnection\fP (\fBSoEngineOutput\fP *master, SbBool \fBnotnotify\fP=FALSE)" .br .ti -1c .RI "\fBvoid\fP \fBdisconnect\fP (\fBSoEngineOutput\fP *\fBengineoutput\fP)" .br .ti -1c .RI "SbBool \fBisConnectedFromEngine\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "SbBool \fBgetConnectedEngine\fP (\fBSoEngineOutput\fP *&master) \fBconst\fP" .br .ti -1c .RI "SbBool \fBconnectFrom\fP (\fBSoField\fP *master, SbBool \fBnotnotify\fP=FALSE, SbBool append=FALSE)" .br .ti -1c .RI "SbBool \fBappendConnection\fP (\fBSoField\fP *master, SbBool \fBnotnotify\fP=FALSE)" .br .ti -1c .RI "\fBvoid\fP \fBdisconnect\fP (\fBSoField\fP *\fBfield\fP)" .br .ti -1c .RI "SbBool \fBisConnectedFromField\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "SbBool \fBgetConnectedField\fP (\fBSoField\fP *&master) \fBconst\fP" .br .ti -1c .RI "int \fBgetNumConnections\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "int \fBgetForwardConnections\fP (\fBSoFieldList\fP &\fBslavelist\fP) \fBconst\fP" .br .ti -1c .RI "int \fBgetConnections\fP (\fBSoFieldList\fP &\fBmasterlist\fP) \fBconst\fP" .br .ti -1c .RI "\fBvoid\fP \fBdisconnect\fP (\fBvoid\fP)" .br .ti -1c .RI "SbBool \fBisConnected\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvoid\fP \fBsetContainer\fP (\fBSoFieldContainer\fP *\fBcont\fP)" .br .ti -1c .RI "\fBSoFieldContainer\fP * \fBgetContainer\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "SbBool \fBset\fP (\fBconst\fP char *\fBvaluestring\fP)" .br .ti -1c .RI "\fBvoid\fP \fBget\fP (\fBSbString\fP &\fBvaluestring\fP)" .br .ti -1c .RI "SbBool \fBshouldWrite\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBtouch\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBstartNotify\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBnotify\fP (\fBSoNotList\fP *\fBnlist\fP)" .br .ti -1c .RI "SbBool \fBenableNotify\fP (SbBool on)" .br .ti -1c .RI "SbBool \fBisNotifyEnabled\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvoid\fP \fBaddAuditor\fP (\fBvoid\fP *f, \fBSoNotRec::Type\fP type)" .br .ti -1c .RI "\fBvoid\fP \fBremoveAuditor\fP (\fBvoid\fP *f, \fBSoNotRec::Type\fP type)" .br .ti -1c .RI "int \fBoperator==\fP (\fBconst\fP \fBSoField\fP &f) \fBconst\fP" .br .ti -1c .RI "int \fBoperator!=\fP (\fBconst\fP \fBSoField\fP &f) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBconnectionStatusChanged\fP (int \fBnumconnections\fP)" .br .ti -1c .RI "SbBool \fBisReadOnly\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBfixCopy\fP (SbBool \fBcopyconnections\fP)" .br .ti -1c .RI "\fBvirtual\fP SbBool \fBreferencesCopy\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvoid\fP \fBcopyConnection\fP (\fBconst\fP \fBSoField\fP *fromfield)" .br .ti -1c .RI "\fBvirtual\fP SbBool \fBread\fP (\fBSoInput\fP *input, \fBconst\fP \fBSbName\fP &name)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBwrite\fP (\fBSoOutput\fP *\fBout\fP, \fBconst\fP \fBSbName\fP &name) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBcountWriteRefs\fP (\fBSoOutput\fP *\fBout\fP) \fBconst\fP" .br .ti -1c .RI "\fBvoid\fP \fBsetFieldType\fP (int type)" .br .ti -1c .RI "int \fBgetFieldType\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "SbBool \fBgetDirty\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvoid\fP \fBsetDirty\fP (SbBool dirty)" .br .ti -1c .RI "\fBvoid\fP \fBevaluate\fP (\fBvoid\fP) \fBconst\fP" .br .in -1c .SS "Static Public Member Functions" .in +1c .ti -1c .RI "\fBstatic\fP \fBvoid\fP * \fBcreateInstance\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBSoType\fP \fBgetClassTypeId\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBinitClass\fP (\fBvoid\fP)" .br .in -1c Static Public Member Functions inherited from \fBSoSField\fP .in +1c .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBinitClass\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBSoType\fP \fBgetClassTypeId\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBatexit_cleanup\fP (\fBvoid\fP)" .br .in -1c Static Public Member Functions inherited from \fBSoField\fP .in +1c .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBinitClass\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBinitClasses\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBvoid\fP \fBcleanupClass\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBstatic\fP \fBSoType\fP \fBgetClassTypeId\fP (\fBvoid\fP)" .br .in -1c .SS "Additional Inherited Members" Public Types inherited from \fBSoField\fP .in +1c .ti -1c .RI "enum \fBFieldType\fP { \fBNORMAL_FIELD\fP = 0, \fBEVENTIN_FIELD\fP, \fBEVENTOUT_FIELD\fP, \fBEXPOSED_FIELD\fP }" .br .in -1c Protected Member Functions inherited from \fBSoSField\fP .in +1c .ti -1c .RI "\fBSoSField\fP (\fBvoid\fP)" .br .in -1c Protected Member Functions inherited from \fBSoField\fP .in +1c .ti -1c .RI "\fBSoField\fP (\fBvoid\fP)" .br .ti -1c .RI "\fBvoid\fP \fBvalueChanged\fP (SbBool \fBresetdefault\fP=TRUE)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBevaluateConnection\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP SbBool \fBreadConnection\fP (\fBSoInput\fP *\fBin\fP)" .br .ti -1c .RI "\fBvirtual\fP \fBvoid\fP \fBwriteConnection\fP (\fBSoOutput\fP *\fBout\fP) \fBconst\fP" .br .ti -1c .RI "SbBool \fBisDestructing\fP (\fBvoid\fP) \fBconst\fP" .br .ti -1c .RI "\fBvirtual\fP \fBSoNotRec\fP \fBcreateNotRec\fP (\fBSoBase\fP *\fBcont\fP)" .br .in -1c .SH "Detailed Description" .PP The \fBSoSFImage3\fP class is used to store 3D (volume) images\&. The \fBSoSFImage3\fP class provides storage for inline 3D image maps\&. 3D images in Coin are mainly used for 3D texture mapping support\&. .PP \fBSoSFImage3\fP instances can be exported and imported as any other field class in Coin\&. .PP The components of an \fBSoSFImage3\fP is: its image dimensions (width, height and depth), the number of bytes used for describing each pixel (number of components) and an associated pixel buffer\&. The size of the pixel buffer will be width*height*depth*components\&. .PP For texture maps, the components / bytes-per-pixel setting translates as follows: use 1 for a grayscale imagemap, 2 for grayscale + opacity (i\&.e\&. alpha value), 3 for RGB (1 byte each for red, green and blue) and 4 components means 3 bytes for RGB + 1 byte opacity value (aka RGBA)\&. .PP This field is serializable into the Inventor / Coin file format in the following manner: .PP .PP .nf FIELDNAME X Y Z C 0xRRGGBBAA 0xRRGGBBAA \&.\&.\&. .fi .PP .PP 'X', 'Y' and 'Z' are the image dimensions along the given axes, 'C' is the number of components in the image\&. The number of 0xRRGGBBAA pixel color specifications needs to equal the exact number of pixels, which is X*Y*Z\&. Each part of the pixel color value is in the range 0x00 to 0xff (hexadecimal, 0 to 255 decimal)\&. .PP For 3-component images, the pixel-format is 0xXXRRGGBB, where the byte in the pixel color value marked as 'XX' is ignored and can be left out\&. .PP For 2-component images, the pixel-format is 0xXXXXGGAA, where the bytes in the pixel color values marked as 'XX' are ignored and can be left out\&. 'GG' is the part which gives a grayscale value and 'AA' is for opacity\&. .PP For 1-component images, the pixel-format is 0xXXXXXXGG, where the bytes in the pixel color values marked as 'XX' are ignored and can be left out\&. .PP The pixels are read as being ordered in rows along X (width), columns along Y (height, bottom to top) and Z 'planes' (depth, front to back)\&. .PP Here's a simple example of the file format serialization, for a 2x2x2 RGB-image inside an \fBSoTexture3\fP node: .PP .PP .nf Texture3 { images 2 2 2 3 0x000000 0x00ff00 0xff0000 0xffff00 0x000000 0x0000ff 0x00ff00 0x00ffff } .fi .PP .PP The image above is colored black+green on the first line and red+yellow on the second line in the first Z plane\&. The second Z plane is colored black+blue on the first line and green+cyan on the second line\&. .PP Be aware that this class is an extension for Coin, and it is not available in the original SGI Open Inventor \fBv2\&.1\fP API\&. .br .PP \fBSee also\fP .RS 4 \fBSoTexture3\fP, \fBSoSFImage\fP .RE .PP \fBSince\fP .RS 4 Coin \fB2\&.0\fP .PP TGS Inventor \fB2\&.6\fP .RE .PP .SH "Member Function Documentation" .PP .SS "\fBvoid\fP * SoSFImage3::createInstance (\fBvoid\fP)\fC [static]\fP" \fIThis API member is considered internal to the library, as it is not likely to be of interest to the application programmer\&.\fP .br .br Creates a new instance of the class type corresponding to the \fBSoType\fP object\&. .br .SS "\fBSoType\fP SoSFImage3::getClassTypeId (\fBvoid\fP)\fC [static]\fP" This static method returns the \fBSoType\fP object associated with objects of this class\&. .br .SS "\fBSoType\fP SoSFImage3::getTypeId (\fBvoid\fP) const\fC [virtual]\fP" Returns the type identification of an object derived from a class inheriting \fBSoField\fP\&. This is used for runtime type checking and 'downward' casting\&. .br .PP Implements \fBSoField\fP\&. .SS "\fBvoid\fP SoSFImage3::copyFrom (\fBconst\fP \fBSoField\fP & f)\fC [virtual]\fP" Copy value(s) from \fIf\fP into this field\&. \fIf\fP must be of the same type as this field\&. .PP Implements \fBSoField\fP\&. .SS "SbBool SoSFImage3::isSame (\fBconst\fP \fBSoField\fP & f) const\fC [virtual]\fP" Check for equal type and value(s)\&. .PP Implements \fBSoField\fP\&. .SS "\fBvoid\fP SoSFImage3::initClass (\fBvoid\fP)\fC [static]\fP" Internal method called upon initialization of the library (from \fBSoDB::init()\fP) to set up the type system\&. .SS "\fBconst\fP \fBunsigned\fP char * SoSFImage3::getValue (\fBSbVec3s\fP & size, int & nc) const" Return pixel buffer, set \fIsize\fP to contain the image dimensions and \fInc\fP to the number of components in the image\&. .SS "\fBvoid\fP SoSFImage3::setValue (\fBconst\fP \fBSbVec3s\fP & size, \fBconst\fP int nc, \fBconst\fP \fBunsigned\fP char * bytes)" Initialize this field to \fIsize\fP and \fInc\fP\&. .PP If \fIbytes\fP is not \fCNULL\fP, the image data is copied from \fIbytes\fP into this field\&. If \fIbytes\fP is \fCNULL\fP, the image data is cleared by setting all bytes to 0 (note that the behavior on passing a \fCNULL\fP pointer is specific for Coin, Open Inventor will crash if you try it)\&. .SS "int SoSFImage3::operator== (\fBconst\fP \fBSoSFImage3\fP & field) const" Compare image of \fIfield\fP with the image in this field and return \fCTRUE\fP if they are equal\&. .SS "int SoSFImage3::operator!= (\fBconst\fP \fBSoSFImage3\fP & field) const\fC [inline]\fP" Compare image of \fIfield\fP with the image in this field and return \fCFALSE\fP if they are equal\&. .SS "\fBunsigned\fP char * SoSFImage3::startEditing (\fBSbVec3s\fP & size, int & nc)" Return pixel buffer, set \fIsize\fP to contain the image dimensions and \fInc\fP to the number of components in the image\&. .PP The field's container will not be notified about the changes until you call \fBfinishEditing()\fP\&. .SS "\fBvoid\fP SoSFImage3::finishEditing (\fBvoid\fP)" Notify the field's auditors that the image data have been modified\&. .SH "Author" .PP Generated automatically by Doxygen for Coin from the source code\&.