Coin  4.0.3
Coin3D core library
Loading...
Searching...
No Matches
SoOverrideElement Class Reference

The SoOverrideElement maintains a list of overridable elements and a list over which elements should be overridden. More...

#include <Inventor/elements/SoOverrideElement.h>

Inheritance diagram for SoOverrideElement:
SoElement

Public Types

enum  FlagBits {
  AMBIENT_COLOR = 0x00000001 , COLOR_INDEX = 0x00000002 , COMPLEXITY = 0x00000004 , COMPLEXITY_TYPE = 0x00000008 ,
  CREASE_ANGLE = 0x00000010 , DIFFUSE_COLOR = 0x00000020 , DRAW_STYLE = 0x00000040 , EMISSIVE_COLOR = 0x00000080 ,
  FONT_NAME = 0x00000100 , FONT_SIZE = 0x00000200 , LIGHT_MODEL = 0x00000400 , LINE_PATTERN = 0x00000800 ,
  LINE_WIDTH = 0x00001000 , MATERIAL_BINDING = 0x00002000 , POINT_SIZE = 0x00004000 , PICK_STYLE = 0x00008000 ,
  SHAPE_HINTS = 0x00010000 , SHININESS = 0x00020000 , SPECULAR_COLOR = 0x00040000 , POLYGON_OFFSET = 0x00080000 ,
  TRANSPARENCY = 0x00100000 , TRANSPARENCY_TYPE = 0x00200000 , NORMAL_VECTOR = 0x00400000 , NORMAL_BINDING = 0x00800000
}
 

Public Member Functions

virtual SoElementcopyMatchInfo (void) const
 FIXME: write doc.
 
virtual void init (SoState *state)
 
virtual SbBool matches (const SoElement *element) const
 FIXME: write doc.
 
virtual void print (FILE *file) const
 FIXME: write doc.
 
virtual void push (SoState *state)
 FIXME: write doc.
 
- Public Member Functions inherited from SoElement
virtual ~SoElement ()
 
int getDepth (void) const
 
int getStackIndex (void) const
 
const SoType getTypeId (void) const
 
virtual void pop (SoState *state, const SoElement *prevTopElement)
 
void setDepth (const int depth)
 

Static Public Member Functions

static voidcreateInstance (void)
 
static SbBool getAmbientColorOverride (SoState *const state)
 
static int getClassStackIndex (void)
 
static SoType getClassTypeId (void)
 
static SbBool getColorIndexOverride (SoState *const state)
 
static SbBool getComplexityOverride (SoState *const state)
 
static SbBool getComplexityTypeOverride (SoState *const state)
 
static SbBool getCreaseAngleOverride (SoState *const state)
 
static SbBool getDiffuseColorOverride (SoState *const state)
 
static SbBool getDrawStyleOverride (SoState *const state)
 
static SbBool getEmissiveColorOverride (SoState *const state)
 
static uint32_t getFlags (SoState *const state)
 
static SbBool getFontNameOverride (SoState *const state)
 
static SbBool getFontSizeOverride (SoState *const state)
 
static SbBool getLightModelOverride (SoState *const state)
 
static SbBool getLinePatternOverride (SoState *const state)
 
static SbBool getLineWidthOverride (SoState *const state)
 
static SbBool getMaterialBindingOverride (SoState *const state)
 
static SbBool getNormalBindingOverride (SoState *const state)
 
static SbBool getNormalVectorOverride (SoState *const state)
 
static SbBool getPickStyleOverride (SoState *const state)
 
static SbBool getPointSizeOverride (SoState *const state)
 
static SbBool getPolygonOffsetOverride (SoState *const state)
 
static SbBool getShapeHintsOverride (SoState *const state)
 
static SbBool getShininessOverride (SoState *const state)
 
static SbBool getSpecularColorOverride (SoState *const state)
 
static SbBool getTransparencyOverride (SoState *const state)
 
static SbBool getTransparencyTypeOverride (SoState *const state)
 
static void initClass (void)
 
static void setAmbientColorOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setColorIndexOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setComplexityOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setComplexityTypeOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setCreaseAngleOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setDiffuseColorOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setDrawStyleOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setEmissiveColorOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setFontNameOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setFontSizeOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setLightModelOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setLinePatternOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setLineWidthOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setMaterialBindingOverride (SoState *const state, SoNode *const node, const SbBool override)
 FIXME: write doc.
 
static void setNormalBindingOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setNormalVectorOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setPickStyleOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setPointSizeOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setPolygonOffsetOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setShapeHintsOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setShininessOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setSpecularColorOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setTransparencyOverride (SoState *const state, SoNode *const node, const SbBool override)
 
static void setTransparencyTypeOverride (SoState *const state, SoNode *const node, const SbBool override)
 
- Static Public Member Functions inherited from SoElement
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

virtual ~SoOverrideElement ()
 
- Protected Member Functions inherited from SoElement
 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)
 

Additional Inherited Members

- Static Protected Member Functions inherited from SoElement
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 inherited from SoElement
int depth
 
int stackIndex
 
SoType typeId
 
- Static Protected Attributes inherited from SoElement
static int classStackIndex
 
static SoTypeListstackToType
 

Detailed Description

The SoOverrideElement maintains a list of overridable elements and a list over which elements should be overridden.

Only certain elements can be overridden.

The remaining class documentation describes a single, special case:

A common request for functionality is to override only the transparency of the full scene graph, or parts of the scene graph.

In the original SGI Inventor, this is nearly impossible, as the API was designed to only make it possible to override all or none of the fields of a node. So calling SoNode::setOverride() on an SoMaterial node will cause all material settings of that node to override all material settings further on in the scene graph, and there is no way to override only the transparency settings.

In Coin, we have added in a little hack to overcome this problem, since it is such a common request for functionality: to have separate transparency override settings, set the environment variable COIN_SEPARATE_DIFFUSE_TRANSPARENCY_OVERRIDE to "1" to enable this hack.

(Do however note that this will not work when the SoPackedColor or SoVertexProperty node is used to specify diffuse color and transparency – only with the SoMaterial node.)

Here is a complete, standalone example which demonstrates how to accomplish this:

#include <Inventor/Qt/SoQt.h>
#include <Inventor/Qt/viewers/SoQtExaminerViewer.h>
#include <Inventor/nodes/SoSeparator.h>
#include <Inventor/nodes/SoMaterial.h>
// *************************************************************************
const char * scene = "#Inventor V2.1 asci\n"
"\n"
"Separator {"
" Cone { }"
" Translation { translation 1 0 5 }"
""
" DEF OVERRIDEMATERIAL Material { transparency 0.5 }"
""
" DEF OBJMATERIAL Material {"
" diffuseColor 0.5 0 0"
" transparency 0"
" }"
" Sphere { }"
"}"
;
int
main(int argc, char ** argv)
{
QWidget * window = SoQt::init(argv[0]);
(void)coin_setenv("COIN_SEPARATE_DIFFUSE_TRANSPARENCY_OVERRIDE", "1", TRUE);
SoInput * in = new SoInput;
in->setBuffer(scene, strlen(scene));
assert(root);
delete in;
root->ref();
overridemat->diffuseColor.setIgnored(TRUE);
overridemat->setOverride(TRUE);
viewer->setSceneGraph(root);
viewer->show();
SoQt::show(window);
delete viewer;
root->unref();
return 0;
}
The SbList class is a template container class for lists.
Definition SbList.h:70
SbList(const int sizehint=DEFAULTSIZE)
Definition SbList.h:78
void unref(void) const
Definition SoBase.cpp:530
void ref(void) const
Definition SoBase.cpp:478
static SoBase * getNamedBase(const SbName &name, SoType type)
Definition SoBase.cpp:974
static SoSeparator * readAll(SoInput *input)
Definition SoDB.cpp:682
The SoInput class is an abstraction of file import functionality.
Definition SoInput.h:61
The SoMaterial class is a node type for setting up material values for scene geometry.
Definition SoMaterial.h:44
static SoType getClassTypeId(void)
Definition SoMaterial.cpp:336
The SoSeparator class is a state-preserving group node.
Definition SoSeparator.h:44

Member Enumeration Documentation

◆ FlagBits

FIXME: write doc.

Constructor & Destructor Documentation

◆ ~SoOverrideElement()

SoOverrideElement::~SoOverrideElement ( void )
protectedvirtual

Destructor.

Member Function Documentation

◆ copyMatchInfo()

SoElement * SoOverrideElement::copyMatchInfo ( void ) const
virtual

FIXME: write doc.

Implements SoElement.

◆ createInstance()

void * SoOverrideElement::createInstance ( void )
static

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

Creates a new instance of the class type corresponding to the SoType object.

◆ getAmbientColorOverride()

SbBool SoOverrideElement::getAmbientColorOverride ( SoState *const state)
static

FIXME: write doc.

◆ getClassStackIndex()

int SoOverrideElement::getClassStackIndex ( void )
static

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

◆ getClassTypeId()

SoType SoOverrideElement::getClassTypeId ( void )
static

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

◆ getColorIndexOverride()

SbBool SoOverrideElement::getColorIndexOverride ( SoState *const state)
static

FIXME: write doc.

◆ getComplexityOverride()

SbBool SoOverrideElement::getComplexityOverride ( SoState *const state)
static

FIXME: write doc.

◆ getComplexityTypeOverride()

SbBool SoOverrideElement::getComplexityTypeOverride ( SoState *const state)
static

FIXME: write doc.

◆ getCreaseAngleOverride()

SbBool SoOverrideElement::getCreaseAngleOverride ( SoState *const state)
static

FIXME: write doc.

◆ getDiffuseColorOverride()

SbBool SoOverrideElement::getDiffuseColorOverride ( SoState *const state)
static

FIXME: write doc.

◆ getDrawStyleOverride()

SbBool SoOverrideElement::getDrawStyleOverride ( SoState *const state)
static

FIXME: write doc.

◆ getEmissiveColorOverride()

SbBool SoOverrideElement::getEmissiveColorOverride ( SoState *const state)
static

FIXME: write doc.

◆ getFontNameOverride()

SbBool SoOverrideElement::getFontNameOverride ( SoState *const state)
static

FIXME: write doc.

◆ getFontSizeOverride()

SbBool SoOverrideElement::getFontSizeOverride ( SoState *const state)
static

FIXME: write doc.

◆ getLightModelOverride()

SbBool SoOverrideElement::getLightModelOverride ( SoState *const state)
static

FIXME: write doc.

◆ getLinePatternOverride()

SbBool SoOverrideElement::getLinePatternOverride ( SoState *const state)
static

FIXME: write doc.

◆ getLineWidthOverride()

SbBool SoOverrideElement::getLineWidthOverride ( SoState *const state)
static

FIXME: write doc.

◆ getMaterialBindingOverride()

SbBool SoOverrideElement::getMaterialBindingOverride ( SoState *const state)
static

FIXME: write doc.

◆ getNormalBindingOverride()

SbBool SoOverrideElement::getNormalBindingOverride ( SoState *const state)
static

Returns normal binding override value.

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.

Since
Coin 2.0

◆ getNormalVectorOverride()

SbBool SoOverrideElement::getNormalVectorOverride ( SoState *const state)
static

Returns normal vector override value.

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.

Since
Coin 2.0

◆ getPickStyleOverride()

SbBool SoOverrideElement::getPickStyleOverride ( SoState *const state)
static

FIXME: write doc.

◆ getPointSizeOverride()

SbBool SoOverrideElement::getPointSizeOverride ( SoState *const state)
static

FIXME: write doc.

◆ getPolygonOffsetOverride()

SbBool SoOverrideElement::getPolygonOffsetOverride ( SoState *const state)
static

FIXME: write doc.

◆ getShapeHintsOverride()

SbBool SoOverrideElement::getShapeHintsOverride ( SoState *const state)
static

FIXME: write doc.

◆ getShininessOverride()

SbBool SoOverrideElement::getShininessOverride ( SoState *const state)
static

FIXME: write doc.

◆ getSpecularColorOverride()

SbBool SoOverrideElement::getSpecularColorOverride ( SoState *const state)
static

FIXME: write doc.

◆ getTransparencyOverride()

SbBool SoOverrideElement::getTransparencyOverride ( SoState *const state)
static

FIXME: write doc.

◆ getTransparencyTypeOverride()

SbBool SoOverrideElement::getTransparencyTypeOverride ( SoState *const state)
static

FIXME: write doc.

◆ init()

void SoOverrideElement::init ( SoState * state)
virtual

Initializes the element to its default value. The default value for flags is 0.

Reimplemented from SoElement.

◆ initClass()

void SoOverrideElement::initClass ( void )
static

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

◆ matches()

SbBool SoOverrideElement::matches ( const SoElement * element) const
virtual

FIXME: write doc.

Implements SoElement.

◆ print()

void SoOverrideElement::print ( FILE * file) const
virtual

FIXME: write doc.

Reimplemented from SoElement.

◆ push()

void SoOverrideElement::push ( SoState * state)
virtual

FIXME: write doc.

Reimplemented from SoElement.

◆ setAmbientColorOverride()

void SoOverrideElement::setAmbientColorOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setColorIndexOverride()

void SoOverrideElement::setColorIndexOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setComplexityOverride()

void SoOverrideElement::setComplexityOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setComplexityTypeOverride()

void SoOverrideElement::setComplexityTypeOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setCreaseAngleOverride()

void SoOverrideElement::setCreaseAngleOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setDiffuseColorOverride()

void SoOverrideElement::setDiffuseColorOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

Can be used to set diffuse color override. This will also set the transparency override. Since we feel this is a design flaw, it is possible to override this behaviour by setting an environment value called COIN_SEPARATE_DIFFUSE_TRANSPARENCY_OVERRIDE to 1.

Please note that separate override will not work for the PackedColor or SoVertexProperty nodes.

◆ setDrawStyleOverride()

void SoOverrideElement::setDrawStyleOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setEmissiveColorOverride()

void SoOverrideElement::setEmissiveColorOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setFontNameOverride()

void SoOverrideElement::setFontNameOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setFontSizeOverride()

void SoOverrideElement::setFontSizeOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setLightModelOverride()

void SoOverrideElement::setLightModelOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setLinePatternOverride()

void SoOverrideElement::setLinePatternOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setLineWidthOverride()

void SoOverrideElement::setLineWidthOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setNormalBindingOverride()

void SoOverrideElement::setNormalBindingOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

Can be used to set normal binding override.

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.

Since
Coin 2.0

◆ setNormalVectorOverride()

void SoOverrideElement::setNormalVectorOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

Can be used to set normal vector override.

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.

Since
Coin 2.0

◆ setPickStyleOverride()

void SoOverrideElement::setPickStyleOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setPointSizeOverride()

void SoOverrideElement::setPointSizeOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setPolygonOffsetOverride()

void SoOverrideElement::setPolygonOffsetOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setShapeHintsOverride()

void SoOverrideElement::setShapeHintsOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setShininessOverride()

void SoOverrideElement::setShininessOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setSpecularColorOverride()

void SoOverrideElement::setSpecularColorOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

FIXME: write doc.

◆ setTransparencyOverride()

void SoOverrideElement::setTransparencyOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

Can be used to set the transparency override.

See also
setDiffuseColorOverride().

◆ setTransparencyTypeOverride()

void SoOverrideElement::setTransparencyTypeOverride ( SoState *const state,
SoNode *const node,
const SbBool override )
static

Can be used to set the transparency type override.

See also
setDiffuseColorOverride().

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