SoOverrideElement(3)

πŸ“¦ version 2.5.0, in fedora 43, fedora 44

πŸ’… SoOverrideElement β€” the manual page, but make it make sense πŸ’…

okay so bestie, welcome to SoOverrideElement(3) from the Library Functions Manual. She's an element class in Coin/Inventor land and she's honestly kind of a big deal. Let's get into it 🫢


✨ NAME ✨

SoOverrideElement β€” the element that keeps a list of which elements are allowed to be overridden, plus a whole other list of which elements should be overridden. Two lists, one icon. πŸ‘‘


πŸŽ€ SYNOPSIS πŸŽ€

#include <Inventor/elements/SoOverrideElement.h>

Inherits SoElement. Yes she's a nepo baby, but a talented one. πŸ’–

Public Types 🌸

  • enum FlagBits with these exact bits, no cap:
    • 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) β€” FIXME: write doc.
  • 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 🌈

(the heirlooms, we keep them all, no decluttering allowed)

  • 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 πŸ“–

SoOverrideElement maintains a list of overridable elements and a list over which elements should be overridden. Two lists, bestie. She's organized like that. πŸ’…

Only certain elements can be overridden. That's the whole vibe β€” not everyone gets the crown. πŸ‘‘

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 nigh 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. all-or-nothing behaviour, literally the worst. 😭

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. slay, a workaround that actually works πŸŽ€

(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.) read that twice bestie, it matters.

Here is a complete, stand-alone 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((void *)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;
}

🧩 Member Enumeration Documentation 🧩

enum SoOverrideElement::FlagBits πŸ’«

FIXME: write doc.


πŸ› οΈ Constructor & Destructor Documentation πŸ› οΈ

SoOverrideElement::~SoOverrideElement (void ) [protected], [virtual] πŸ’€

The destructor.

she's protected and virtual, so handle with care, no touching from the outside bestie πŸ™ˆ

✨ MEMBER FUNCTION DOCUMENTATION ✨

okay bestie, deep breath, because this is the part where we meet every single member function on this class. no skipping, no "eh you get the idea". all of them. periodt. πŸ’…


void * SoOverrideElement::createInstance (void ) [static]

okay so this one is internal to the library β€” like, it's giving backstage-pass energy. it's not likely to be of interest to the application programmer, so if you're just out here writing apps, you can literally scroll past. 🫢


void SoOverrideElement::initClass (void ) [static]

this static method initializes static data for the SoOverrideElement class. housekeeping. iconic behaviour.

Referenced by SoElement::initElements().

void SoOverrideElement::init (SoState * state) [virtual]

the docs are just like "FIXME: write doc." πŸ’€ okay bestie, noted, they'll get to it.

Reimplemented from SoElement. References SoElement::init().

void SoOverrideElement::push (SoState * state) [virtual]

another "FIXME: write doc." moment πŸ™ˆ the mystery continues.

Reimplemented from SoElement. References SoElement::getNextInStack(), and SoElement::push().

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

yep. "FIXME: write doc." πŸŽ€

Implements SoElement. References SoElement::SoElement().

SoElement * SoOverrideElement::copyMatchInfo (void ) const [virtual]

you guessed it β€” "FIXME: write doc." ✨

Implements SoElement. References SoType::createInstance(), and SoElement::getTypeId().

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

"FIXME: write doc." πŸ¦‹


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

"FIXME: write doc." 🌸

Referenced by SoColorIndex::GLRender().

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

"FIXME: write doc." 😭

Referenced by SoComplexity::doAction(), and SoComplexity::getPrimitiveCount().

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

"FIXME: write doc." πŸ’œ

Referenced by SoComplexity::doAction().

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

"FIXME: write doc." πŸ“


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

"FIXME: write doc." πŸ”₯

Referenced by SoBaseColor::doAction(), SoPackedColor::doAction(), and SoVRMLColor::doAction().

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

"FIXME: write doc." πŸ‘‘


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

"FIXME: write doc." 🌈


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

"FIXME: write doc." ⭐


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

"FIXME: write doc." πŸŽ€


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

"FIXME: write doc." πŸ’–

Referenced by SoLightModel::doAction().

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

"FIXME: write doc." 🧚


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

"FIXME: write doc." πŸ¦‹


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

"FIXME: write doc." 🌸

Referenced by SoMaterialBinding::doAction().

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

"FIXME: write doc." ✨

Referenced by SoPickStyle::doAction().

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

"FIXME: write doc." πŸ’…


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

"FIXME: write doc." πŸ’€

Referenced by SoPolygonOffset::doAction().

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

"FIXME: write doc." 🫢


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

"FIXME: write doc." πŸ”₯


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

"FIXME: write doc." 🌈


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

"FIXME: write doc." πŸ‘‘


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

"FIXME: write doc." ⭐

Referenced by SoTransparencyType::doAction().

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

okay this one actually HAS docs, bestie, we're so back πŸ’œ it returns the normal vector override value.

\CLASS_FUNCTION_EXTENSION

Since: Coin 2.0 Referenced by SoNormal::doAction().

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

same energy β€” returns the normal binding override value.

\CLASS_FUNCTION_EXTENSION

Since: Coin 2.0 Referenced by SoNormalBinding::doAction().

πŸŽ€ the setters, aka the main characters πŸŽ€

okay now the ones that actually set things. buckle up, there's like twenty of them and they are all serving SoState *const state, SoNode *const node, const SbBool override. same little trio every time. the way that consistency ate. πŸ’…


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

"FIXME: write doc." πŸ™ˆ

Referenced by SoMaterial::doAction(), and SoVRMLMaterial::doAction().

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

"FIXME: write doc." 🌸

Referenced by SoColorIndex::GLRender().

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

"FIXME: write doc." πŸ¦‹

Referenced by SoComplexity::doAction().

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

"FIXME: write doc." ✨

Referenced by SoComplexity::doAction().

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

"FIXME: write doc." πŸ“

Referenced by SoShapeHints::doAction().

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

okay bestie THIS one has real lore πŸ“– it can be used to set the diffuse color override. but here's the tea: it will also set the transparency override. and the Coin devs are like, yeah, we feel this is a design flaw, so you can override that behaviour by setting an environment value called COIN_SEPARATE_DIFFUSE_TRANSPARENCY_OVERRIDE to 1. not me quoting them verbatim, they said design flaw not me 😭

⚠️ please note: separate override will not work for the PackedColor or SoVertexProperty nodes. that's the rules, i don't make them. Referenced by SoBaseColor::doAction(), SoMaterial::doAction(), SoPackedColor::doAction(), SoVertexProperty::doAction(), SoVRMLColor::doAction(), and SoVRMLMaterial::doAction().

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

"FIXME: write doc." πŸ’…

Referenced by SoDrawStyle::doAction().

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

"FIXME: write doc." πŸ”₯

Referenced by SoMaterial::doAction(), and SoVRMLMaterial::doAction().

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

"FIXME: write doc." πŸŽ€

Referenced by SoFont::doAction(), and SoFontStyle::doAction().

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

"FIXME: write doc." ⭐

Referenced by SoFont::doAction(), and SoFontStyle::doAction().

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

"FIXME: write doc." 🌈

Referenced by SoLightModel::doAction().

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

"FIXME: write doc." 🧚

Referenced by SoDrawStyle::doAction().

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

"FIXME: write doc." πŸ’œ

Referenced by SoDrawStyle::doAction().

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

"FIXME: write doc." ✨

Referenced by SoPickStyle::doAction().

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

"FIXME: write doc." 🫢

Referenced by SoDrawStyle::doAction().

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

"FIXME: write doc." πŸ’€

Referenced by SoPolygonOffset::doAction().

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

"FIXME: write doc." 🌸

Referenced by SoShapeHints::doAction(), and SoShadowCulling::GLRender().

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

"FIXME: write doc." πŸ’…

Referenced by SoMaterial::doAction(), and SoVRMLMaterial::doAction().

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

"FIXME: write doc." πŸ¦‹

Referenced by SoMaterial::doAction(), and SoVRMLMaterial::doAction().

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

can be used to set the transparency override. ✨

See also: setDiffuseColorOverride(). Referenced by SoMaterial::doAction(), and SoVRMLMaterial::doAction().

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(). Referenced by SoTransparencyType::doAction().

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

can be used to set normal vector override. πŸ‘‘

\CLASS_FUNCTION_EXTENSION

Since: Coin 2.0 Referenced by SoNormal::doAction(), and SoVertexProperty::doAction().

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

can be used to set normal binding override. ⭐

\CLASS_FUNCTION_EXTENSION

Since: Coin 2.0 Referenced by SoNormalBinding::doAction(), and SoVertexProperty::doAction().

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

and we close it out with "FIXME: write doc." πŸ’€ a perfect bookend, honestly.

Reimplemented from SoElement.

πŸ‘‘ AUTHOR πŸ‘‘

Generated automatically by Doxygen for Coin from the source code.

no human sat down and hand-wrote this, it's a robot bestie doing its little robot thing, and honestly? we respect the effort. πŸ€–πŸ’–


and that's a wrap on SoOverrideElement(3)!! πŸŽ‰ this page is from Coin, Version 2.5.0, and yes it's literally titled SoOverrideElement(3) at the bottom because that's just how man pages sign their name. go forth and override things responsibly, bestie. mwah. πŸ’‹πŸ«Ά

πŸ“¦ where this page comes from