Coin: SoOverrideElement Class Reference

| Coin3D is Free Software, published under the BSD 3-clause license. | https://coin3d.github.io https://www.kongsberg.com/en/kogt/

SoOverrideElement Class Reference
Element Classes

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:

## 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 void | init (SoState *state)
virtual void | push (SoState *state)
| FIXME: write doc.
virtual SbBool | matches (const SoElement *element) const
| FIXME: write doc.
virtual SoElement * | copyMatchInfo (void) const
| FIXME: write doc.
virtual void | print (FILE *file) const
| FIXME: write doc.
Public Member Functions inherited from SoElement
const SoType | getTypeId (void) const
int | getStackIndex (void) const
virtual void | pop (SoState *state, const SoElement *prevTopElement)
void | setDepth (const int depth)
int | getDepth (void) const
virtual | ~SoElement ()

## Static Public Member Functions
static SoType | getClassTypeId (void)
static int | getClassStackIndex (void)
static void * | createInstance (void)
static void | initClass (void)
static uint32_t | getFlags (SoState *const state)
static SbBool | getAmbientColorOverride (SoState *const state)
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 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 | 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 SbBool | getNormalVectorOverride (SoState *const state)
static SbBool | getNormalBindingOverride (SoState *const state)
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 | 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 void | setNormalVectorOverride (SoState *const state, SoNode *const node, const SbBool override)
static void | setNormalBindingOverride (SoState *const state, SoNode *const node, const SbBool override)
Static Public Member Functions inherited from SoElement
static void | initClass (void)
static SoType | getClassTypeId (void)
static int | getClassStackIndex (void)
static void | initElements (void)
static int | getNumStackIndices (void)
static SoType | getIdFromStackIndex (const int stackIndex)

## 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
void | setTypeId (const SoType typeId)
void | setStackIndex (const int index)
SoElement * | getNextInStack (void) const
SoElement * | getNextFree (void) const

## Additional Inherited Members
Static Protected Member Functions inherited from SoElement
static SoElement * | getElement (SoState *const state, const int stackIndex)
static const SoElement * | getConstElement (SoState *const state, const int stackIndex)
static int | createStackIndex (const SoType id)
Protected Attributes inherited from SoElement
SoType | typeId
int | stackIndex
int | depth
Static Protected Attributes inherited from SoElement
static int | classStackIndex
static SoTypeList * | stackToType

## 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));
SoSeparator * root = SoDB::readAll(in);
assert(root);
delete in;
root->ref();
SoMaterial * overridemat = (SoMaterial *)
SoBase::getNamedBase("OVERRIDEMATERIAL", SoMaterial::getClassTypeId());
assert(overridemat);
overridemat->diffuseColor.setIgnored(TRUE);
overridemat->setOverride(TRUE);
SoQtExaminerViewer * viewer = new SoQtExaminerViewer(window);
viewer->setSceneGraph(root);
viewer->show();
SoQt::show(window);
SoQt::mainLoop();
delete viewer;
root->unref();
return 0;
}
SoBase::unref
void unref(void) const
Definition SoBase.cpp:530
SoBase::ref
void ref(void) const
Definition SoBase.cpp:478
SoBase::getNamedBase
static SoBase * getNamedBase(const SbName &name, SoType type)
Definition SoBase.cpp:974
SoDB::readAll
static SoSeparator * readAll(SoInput *input)
Definition SoDB.cpp:682
SoField::setIgnored
void setIgnored(SbBool ignore)
Definition SoField.cpp:668
SoInput
The SoInput class is an abstraction of file import functionality.
Definition SoInput.h:61
SoInput::setBuffer
virtual void setBuffer(const void *bufpointer, size_t bufsize)
Definition SoInput.cpp:745
SoMaterial
The SoMaterial class is a node type for setting up material values for scene geometry.
Definition SoMaterial.h:44
SoMaterial::diffuseColor
SoMFColor diffuseColor
Definition SoMaterial.h:54
SoMaterial::getClassTypeId
static SoType getClassTypeId(void)
Definition SoMaterial.cpp:336
SoNode::setOverride
void setOverride(const SbBool state)
Definition SoNode.cpp:762
SoSeparator
The SoSeparator class is a state-preserving group node.
Definition SoSeparator.h:44

## Member Enumeration Documentation

## ◆ FlagBits

enum SoOverrideElement::FlagBits

FIXME: write doc.

## Constructor & Destructor Documentation

## ◆ ~SoOverrideElement()

SoOverrideElement::~SoOverrideElement | ( | void |  | ) |
| protectedvirtual

Destructor.

## Member Function Documentation

## ◆ getClassTypeId()

SoType SoOverrideElement::getClassTypeId | ( | void |  | ) |
| static

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

## ◆ getClassStackIndex()

int SoOverrideElement::getClassStackIndex | ( | void |  | ) |
| static

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

## ◆ 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.

## ◆ initClass()

void SoOverrideElement::initClass | ( | void |  | ) |
| static

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

## ◆ init()

void SoOverrideElement::init | ( | SoState * | state | ) |
| virtual

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

Reimplemented from SoElement.

## ◆ push()

void SoOverrideElement::push | ( | SoState * | state | ) |
| virtual

FIXME: write doc.

Reimplemented from SoElement.

## ◆ matches()

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

FIXME: write doc.

Implements SoElement.

## ◆ copyMatchInfo()

SoElement * SoOverrideElement::copyMatchInfo | ( | void |  | ) | const
| virtual

FIXME: write doc.

Implements SoElement.

## ◆ getAmbientColorOverride()

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

FIXME: write doc.

## ◆ 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.

## ◆ 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.

## ◆ 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

## ◆ 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

## ◆ 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.

## ◆ 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().

## ◆ 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

## ◆ 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

## ◆ print()

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

FIXME: write doc.

Reimplemented from SoElement.

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

- SoOverrideElement.h
- SoOverrideElement.cpp