Coin  4.0.3
Coin3D core library
Loading...
Searching...
No Matches
SoElement Class Referenceabstract

SoElement is the abstract base class for all elements. More...

#include <Inventor/elements/SoElement.h>

Inheritance diagram for SoElement:
SoAccumulatedElement SoCacheElement SoCacheHintElement SoCullElement SoDepthBufferElement SoFloatElement SoGLCacheContextElement SoGLRenderPassElement SoGLUpdateAreaElement SoGLVBOElement SoInt32Element SoLazyElement SoLocalBBoxMatrixElement SoMultiTextureCoordinateElement SoMultiTextureEnabledElement SoMultiTextureImageElement SoOverrideElement SoPickRayElement SoProfilerElement SoReplacedElement SoResetMatrixElement SoShapeHintsElement SoShapeStyleElement SoTextureCombineElement SoTextureOverrideElement SoViewportRegionElement SoWindowElement

Public Member Functions

virtual ~SoElement ()
 
virtual SoElementcopyMatchInfo (void) const =0
 
int getDepth (void) const
 
int getStackIndex (void) const
 
const SoType getTypeId (void) const
 
virtual void init (SoState *state)
 
virtual SbBool matches (const SoElement *element) const =0
 
virtual void pop (SoState *state, const SoElement *prevTopElement)
 
virtual void print (FILE *file=stdout) const
 
virtual void push (SoState *state)
 
void setDepth (const int depth)
 

Static Public Member Functions

static int getClassStackIndex (void)
 
static SoType getClassTypeId (void)
 
static SoType getIdFromStackIndex (const int stackIndex)
 
static int getNumStackIndices (void)
 
static void initClass (void)
 
static void initElements (void)
 

Protected Member Functions

 SoElement (void)
 
void capture (SoState *const state) const
 
virtual void captureThis (SoState *state) const
 
SoElementgetNextFree (void) const
 
SoElementgetNextInStack (void) const
 
void setStackIndex (const int index)
 
void setTypeId (const SoType typeId)
 

Static Protected Member Functions

static int createStackIndex (const SoType id)
 
static const SoElementgetConstElement (SoState *const state, const int stackIndex)
 
static SoElementgetElement (SoState *const state, const int stackIndex)
 

Protected Attributes

int depth
 
int stackIndex
 
SoType typeId
 

Static Protected Attributes

static int classStackIndex
 
static SoTypeListstackToType
 

Detailed Description

SoElement is the abstract base class for all elements.

This is the base class for all the element classes in Coin.

Constructor & Destructor Documentation

◆ ~SoElement()

SoElement::~SoElement ( )
virtual

The destructor.

◆ SoElement()

SoElement::SoElement ( void )
protected

The constructor. To create element instances, use SoType::createInstance() for the elements type identifier.

Member Function Documentation

◆ capture()

void SoElement::capture ( SoState *const state) const
inlineprotected

This function does whatever is necessary in the state for caching purposes. If should be called by subclasses of SoElement whenever any value in the element is accessed.

◆ captureThis()

void SoElement::captureThis ( SoState * state) const
protectedvirtual

Adds the element to the cache.

Reimplemented in SoAccumulatedElement.

◆ copyMatchInfo()

◆ createStackIndex()

int SoElement::createStackIndex ( const SoType typeId)
staticprotected

Returns the value of a new available stack index.

◆ getClassStackIndex()

int SoElement::getClassStackIndex ( void )
static

This static method returns the state stack index for the class.

◆ getClassTypeId()

SoType SoElement::getClassTypeId ( void )
static

This static method returns the SoType object associated with objects of this class.

◆ getConstElement()

void const SoElement * SoElement::getConstElement ( SoState *const state,
const int stackIndex )
inlinestaticprotected

This method returns a reference to the top element of the class with stack index stackIndex. The returned element is non-mutable.

(Don't try to be clever and cast away the constness – if the returned instance is modified, strange, hard to find and generally wonderful bugs will most likely start to happen.)

If no instance can be returned, NULL is returned.

See also
SoElement * SoElement::getElement(SoState * const state, const int stackIndex)

◆ getDepth()

int SoElement::getDepth ( void ) const

Returns the state stack depth value of the element instance.

◆ getElement()

SoElement * SoElement::getElement ( SoState *const state,
const int stackIndex )
inlinestaticprotected

This method returns the top instance (in the state stack) of the element class with stack index stackIndex.

The returned instance is writable. To make this instance, some lazy evaluation may have to be performed, so use getConstElement() instead if the instance shouldn't be modified.

If no instance is available and cannot be made, NULL is returned.

See also
const SoElement * SoElement::getConstElement(SoState * const state, const int stackIndex)

◆ getIdFromStackIndex()

SoType SoElement::getIdFromStackIndex ( const int stackIndex)
static

Returns the SoType identifier for the element class with element state stack index stackIndex.

◆ getNextFree()

SoElement * SoElement::getNextFree ( void ) const
protected

Returns the next free element, i.e. the next element up in the stack.

◆ getNextInStack()

SoElement * SoElement::getNextInStack ( void ) const
protected

Returns the next element down in the stack. Should be used in push() to get the previous element.

This method has a slightly misleading name, but we didn't change it to stay compatible with the original SGI Inventor API.

◆ getNumStackIndices()

int SoElement::getNumStackIndices ( void )
static

Returns the number of allocated element stack index slots.

◆ getStackIndex()

int SoElement::getStackIndex ( void ) const

Returns the stack index for an element instance.

◆ getTypeId()

const SoType SoElement::getTypeId ( void ) const

Returns the type identification of an object derived from a class inheriting SoElement. This is used for runtime type checking and "downward" casting.

For a more thorough explanation of the runtime type identification functionality, see the documentation of SoBase::getTypeId().

◆ init()

void SoElement::init ( SoState * state)
virtual

This function initializes the element type in the given SoState. It is called for the first element of each enabled element type in SoState objects.

Reimplemented in SoGLShadowCullingElement, SoShadowStyleElement, SoAccumulatedElement, SoAmbientColorElement, SoAnnoText3CharOrientElement, SoAnnoText3FontSizeHintElement, SoAnnoText3RenderPrintElement, SoBBoxModelMatrixElement, SoBumpMapCoordinateElement, SoBumpMapElement, SoBumpMapMatrixElement, SoCacheElement, SoCacheHintElement, SoClipPlaneElement, SoComplexityElement, SoComplexityTypeElement, SoCoordinateElement, SoCreaseAngleElement, SoCullElement, SoDecimationPercentageElement, SoDecimationTypeElement, SoDepthBufferElement, SoDiffuseColorElement, SoDrawStyleElement, SoEmissiveColorElement, SoEnvironmentElement, SoFloatElement, SoFocalDistanceElement, SoFontNameElement, SoFontSizeElement, SoGeoElement, SoGLCacheContextElement, SoGLClipPlaneElement, SoGLColorIndexElement, SoGLDepthBufferElement, SoGLDrawStyleElement, SoGLEnvironmentElement, SoGLLazyElement, SoGLLightIdElement, SoGLLinePatternElement, SoGLLineWidthElement, SoGLModelMatrixElement, SoGLMultiTextureCoordinateElement, SoGLMultiTextureEnabledElement, SoGLMultiTextureImageElement, SoGLMultiTextureMatrixElement, SoGLNormalElement, SoGLPointSizeElement, SoGLPolygonOffsetElement, SoGLRenderPassElement, SoGLShaderProgramElement, SoGLShapeHintsElement, SoGLUpdateAreaElement, SoGLVBOElement, SoGLVertexAttributeElement, SoGLViewingMatrixElement, SoGLViewportRegionElement, SoInt32Element, SoLazyElement, SoLightAttenuationElement, SoLightElement, SoLightModelElement, SoLinePatternElement, SoLineWidthElement, SoListenerDopplerElement, SoListenerGainElement, SoListenerOrientationElement, SoListenerPositionElement, SoLocalBBoxMatrixElement, SoMaterialBindingElement, SoModelMatrixElement, SoMultiTextureCoordinateElement, SoMultiTextureEnabledElement, SoMultiTextureImageElement, SoMultiTextureMatrixElement, SoNormalBindingElement, SoNormalElement, SoOverrideElement, SoPickRayElement, SoPickStyleElement, SoPointSizeElement, SoPolygonOffsetElement, SoProfileCoordinateElement, SoProfileElement, SoProjectionMatrixElement, SoReplacedElement, SoShapeHintsElement, SoShapeStyleElement, SoShininessElement, SoSoundElement, SoSpecularColorElement, SoSwitchElement, SoTextOutlineEnabledElement, SoTextureCombineElement, SoTextureCoordinateBindingElement, SoTextureOverrideElement, SoTextureQualityElement, SoTextureUnitElement, SoTransparencyElement, SoUnitsElement, SoVertexAttributeBindingElement, SoVertexAttributeElement, SoViewingMatrixElement, SoViewportRegionElement, SoViewVolumeElement, SoWindowElement, and SoResetMatrixElement.

◆ initClass()

void SoElement::initClass ( void )
static

Initialize relevant common data for all instances, like the type system.

◆ initElements()

void SoElement::initElements ( void )
static

This function initializes all the built-in Coin element classes.

◆ matches()

◆ pop()

◆ print()

◆ push()

void SoElement::push ( SoState * state)
virtual

This method is called every time a new element is required in one of the stacks. This happens when a writable element is requested, using SoState::getElement() or indirectly SoElement::getElement(), and the depth of the current element is less than the state depth.

Override this method if your element needs to copy data from the previous top of stack. The push() method is called on the new element, and the previous element can be found using SoElement::getNextInStack().

Reimplemented in SoGLShaderProgramElement, SoGLShadowCullingElement, SoAccumulatedElement, SoBBoxModelMatrixElement, SoBumpMapMatrixElement, SoCacheElement, SoCacheHintElement, SoClipPlaneElement, SoCullElement, SoDepthBufferElement, SoGLDepthBufferElement, SoGLDrawStyleElement, SoGLLazyElement, SoGLLightIdElement, SoGLLinePatternElement, SoGLLineWidthElement, SoGLModelMatrixElement, SoGLMultiTextureCoordinateElement, SoGLMultiTextureEnabledElement, SoGLMultiTextureImageElement, SoGLMultiTextureMatrixElement, SoGLPointSizeElement, SoGLPolygonOffsetElement, SoGLShapeHintsElement, SoGLUpdateAreaElement, SoGLVBOElement, SoGLViewingMatrixElement, SoGLViewportRegionElement, SoLazyElement, SoLightElement, SoLocalBBoxMatrixElement, SoModelMatrixElement, SoMultiTextureCoordinateElement, SoMultiTextureEnabledElement, SoMultiTextureImageElement, SoMultiTextureMatrixElement, SoOverrideElement, SoProfileElement, SoShapeHintsElement, SoShapeStyleElement, SoSoundElement, SoTextOutlineEnabledElement, SoTextureCombineElement, SoTextureOverrideElement, SoVertexAttributeElement, and SoWindowElement.

◆ setDepth()

void SoElement::setDepth ( const int depth)

Sets the depth value of the element instance in the state stack.

◆ setStackIndex()

void SoElement::setStackIndex ( const int stackIndex)
protected

Sets the stack index in an instance. Used in constructors of derived elements.

◆ setTypeId()

void SoElement::setTypeId ( const SoType typeId)
protected

Sets the type identifier of an instance.

Note that this is fundamentally different from the SoNode runtime type system.

Member Data Documentation

◆ classStackIndex

int SoElement::classStackIndex
staticprotected

This is the static state stack index for the class.

◆ depth

int SoElement::depth
protected

The depth of the element instance in the state stack.

◆ stackIndex

int SoElement::stackIndex
protected

The index in the state stack for this particular element instance.

◆ stackToType

SoTypeList * SoElement::stackToType
staticprotected

Provides mapping from state stack indices to element types.

◆ typeId

SoType SoElement::typeId
protected

The element's unique SoType type identification.


The documentation for this class was generated from the following files: