SoSFImage - Online Linux Manual PageSection : 3
Updated : Mon Jan 25 2021
Source : Version 4.0.0
Note : Coin

NAMESoSFImage − The SoSFImage class is used to store pixel images​.

SYNOPSIS
#include <Inventor/fields/SoSFImage​.h> Inherits SoSField​.

Public Typesenum CopyPolicy { COPY, NO_COPY, NO_COPY_AND_DELETE, NO_COPY_AND_FREE }

Public Member Functionsvirtual SoType getTypeId (void) const
virtual void copyFrom (const SoField &field)
const SoSFImage & operator= (const SoSFImage &field)
virtual SbBool isSame (const SoField &field) const
const unsigned char * getValue (SbVec2s &size, int &nc) const
const SbImage & getValue () const
void setValue (const SbVec2s &size, const int nc, const unsigned char *pixels, CopyPolicy copypolicy=COPY)
int operator== (const SoSFImage &field) const
int operator!= (const SoSFImage &field) const
unsigned char * startEditing (SbVec2s &size, int &nc)
void finishEditing (void)
void setSubValue (const SbVec2s &dims, const SbVec2s &offset, unsigned char *pixels)
void setSubValues (const SbVec2s *dims, const SbVec2s *offsets, int num, unsigned char **pixelblocks)
unsigned char * getSubTexture (int idx, SbVec2s &dims, SbVec2s &offset) const
SbBool hasSubTextures (int &numsubtextures)
void setNeverWrite (SbBool flag)
SbBool isNeverWrite (void) const
SbBool hasTransparency (void) const

Static Public Member Functionsstatic void * createInstance (void)
static SoType getClassTypeId (void)
static void initClass (void)

Additional Inherited Members

Detailed DescriptionThe SoSFImage class is used to store pixel images​. The SoSFImage class provides storage for inline 2D image maps​. Images in Coin are mainly used for texture mapping support​. SoSFImage instances can be exported and imported as any other field class in Coin​. The components of an SoSFImage is: its image dimensions (width and height), 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*components​. 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)​. This field is serializable into the Inventor / Coin file format in the following manner: FIELDNAME X Y C 0xRRGGBBAA 0xRRGGBBAA ​.​.​.'X' and 'Y' 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 of course is given by X*Y​. Each part of the pixel color value is in the range 0x00 to 0xff (hexadecimal, 0 to 255 decimal)​. 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​. 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​. 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​. The pixels are read as being ordered in rows along X (width) and columns along Y (height, bottom to top)​. Here's a simple example of the file format serialization, for a 2x2 RGB-image inside an SoTexture2 node, as mapped onto an SoCube: Complexity { textureQuality 0​.1 } # set low to avoid smoothing Texture2 { image 2 2 4 0xffffffff 0x00ff0088 # white semi-transparent green 0xff0000ff 0xffff00ff # red yellow } Cube { }The mini-scenegraph above results in the following mapping on the cube:

 Rendering of Example Scenegraph
The cube has only been slightly rotated, so as you can see from the snapshot, the Y-rows are mapped from bottom to top, while the X-column pixels are mapped onto the cube from left to right​. See also SoTexture2, SoSFImage3

Member Function Documentation

SoType SoSFImage::getTypeId (void) const [virtual]Returns the type identification instance which uniquely identifies the Coin field class the object belongs to​. See also getClassTypeId(), SoType Implements SoField​.

void SoSFImage::copyFrom (const SoField & f) [virtual]Copy value(s) from f into this field​. f must be of the same type as this field​. Implements SoField​.

SbBool SoSFImage::isSame (const SoField & f) const [virtual]Check for equal type and value(s)​. Implements SoField​.

const unsigned char * SoSFImage::getValue (SbVec2s & size, int & nc) constReturn pixel buffer, set size to contain the image dimensions and nc to the number of components in the image​.

const SbImage & SoSFImage::getValue (void) constReturn values SbImage contained by this SoSFImage

void SoSFImage::setValue (const SbVec2s & size, const int nc, const unsigned char * pixels, SoSFImage::CopyPolicy copypolicy = COPY)Initialize this field to size and nc​. If pixels is not NULL, the image data is copied from pixels into this field​. If pixels is NULL, the image data is cleared by setting all bytes to 0 (note that the behavior on passing a NULL pointer is specific for Coin, Open Inventor will crash if you try it)​. The image dimensions is given by the size argument, and the nc argument specifies the number of bytes-pr-pixel​. A 24-bit RGB image would for instance have an nc equal to 3​. The copypolicy argument makes it possible to share image data with SoSFImage without the data being copied (thereby using less memory resources)​. The default is to copy image data from the pixels source into an internal copy​. Important note: if you call this with copypolicy as either NO_COPY_AND_DELETE or NO_COPY_AND_FREE, and your application is running on Mirosoft Windows, be aware that you will get mysterious crashes if your application is not using the same C library run-time as the Coin library​. The cause of this is that a memory block would then be allocated by the application on the memory heap of one C library run-time (say, for instance MSVCRT​.LIB), but attempted deallocated in the memory heap of another C library run-time (e​.g​. MSVCRTD​.LIB), which typically leads to hard-to-debug crashes​. Since The CopyPolicy argument was added in Coin 2​.0​. CopyPolicy was added to TGS Inventor 3​.0​.

int SoSFImage::operator== (const SoSFImage & field) constCompare image of field with the image in this field and return TRUE if they are equal​.

int SoSFImage::operator!= (const SoSFImage & field) const [inline]Compare image of field with the image in this field and return FALSE if they are equal​.

unsigned char * SoSFImage::startEditing (SbVec2s & size, int & nc)Return pixel buffer​. Return the image size and components in size and nc​. You can not use this method to set a new image size​. Use setValue() to change the size of the image buffer​. The field's container will not be notified about the changes until you call finishEditing()​.

void SoSFImage::finishEditing (void)Notify the field's auditors that the image data has been modified​.

void SoSFImage::setSubValue (const SbVec2s & dims, const SbVec2s & offset, unsigned char * pixels)Not yet implemented for Coin​. Get in touch if you need this method​. Since Coin 2​.0 TGS Inventor 3​.0

void SoSFImage::setSubValues (const SbVec2s * dims, const SbVec2s * offsets, int num, unsigned char ** pixelblocks)Not yet implemented for Coin​. Get in touch if you need this method​. Since Coin 2​.0 TGS Inventor 3​.0

unsigned char * SoSFImage::getSubTexture (int idx, SbVec2s & dims, SbVec2s & offset) constNot yet implemented for Coin​. Get in touch if you need this method​. Since Coin 2​.0 TGS Inventor 3​.0

SbBool SoSFImage::hasSubTextures (int & numsubtextures)Returns whether or not sub textures was set up for this field​. If TRUE is returned, the numsubtextures argument will be set to the number of sub textures in this image​. This number can be used for iterating over all textures with the SoSFImage::getSubTextures() method​. Since Coin 2​.0 TGS Inventor 3​.0

void SoSFImage::setNeverWrite (SbBool flag)Set this flag to true to avoid writing out the texture to file​. This can save a lot on file size​. Default value is FALSE (i​.e​. write texture data to file​.) (Note: yet unimplemented for Coin​.) Since Coin 2​.0 TGS Inventor ?​.?

SbBool SoSFImage::isNeverWrite (void) constReturns value of 'never write texture data' flag​. See also SoSFImage::setNeverWrite() Since Coin 2​.0 TGS Inventor ?​.?

SbBool SoSFImage::hasTransparency (void) constReturns TRUE if at least one pixel of the image in this field is not completely opaque, otherwise FALSE​. Since Coin 2​.0 TGS Inventor ?​.?

AuthorGenerated automatically by Doxygen for Coin from the source code​.
0
Johanes Gumabo
Data Size   :   43,616 byte
man-SoSFImage.3coin4Build   :   2024-12-05, 20:55   :  
Visitor Screen   :   x
Visitor Counter ( page / site )   :   2 / 199,102
Visitor ID   :     :  
Visitor IP   :   18.220.196.68   :  
Visitor Provider   :   AMAZON-02   :  
Provider Position ( lat x lon )   :   39.962500 x -83.006100   :   x
Provider Accuracy Radius ( km )   :   1000   :  
Provider City   :   Columbus   :  
Provider Province   :   Ohio ,   :   ,
Provider Country   :   United States   :  
Provider Continent   :   North America   :  
Visitor Recorder   :   Version   :  
Visitor Recorder   :   Library   :  
Online Linux Manual Page   :   Version   :   Online Linux Manual Page - Fedora.40 - march=x86-64 - mtune=generic - 24.12.05
Online Linux Manual Page   :   Library   :   lib_c - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Online Linux Manual Page   :   Library   :   lib_m - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Data Base   :   Version   :   Online Linux Manual Page Database - 24.04.13 - march=x86-64 - mtune=generic - fedora-38
Data Base   :   Library   :   lib_c - 23.02.07 - march=x86-64 - mtune=generic - fedora.36

Very long time ago, I have the best tutor, Wenzel Svojanovsky . If someone knows the email address of Wenzel Svojanovsky , please send an email to johanes_gumabo@yahoo.co.id .
If error, please print screen and send to johanes_gumabo@yahoo.co.id
Under development. Support me via PayPal.

ERROR : Need New Coding :         (parse_manual_page_|249|SoSFImage.3coin4|113|X'|'X' and 'Y' 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 of course is given by X*Y\&. Each part of the pixel color value is in the range 0x00 to 0xff (hexadecimal, 0 to 255 decimal)\&. )