SoOverrideElement(3)
β¨ NAME β¨
SoOverrideElement β the element that keeps a list of overridable elements and a list of which elements should be overridden. That's literally the whole job description, bestie. π
(This is the page for SoOverrideElement(3), in case the header up top didn't already tell you. It did. But we're being thorough. π«Ά)
πΈ SYNOPSIS πΈ
#include <Inventor/elements/SoOverrideElement.h>
Inherits SoElement. Yeah she's a nepo baby, but she earned it. π
π Public Types π
enum FlagBits
Okay so this is the bitmask roster β every single flag, every single hex value, no notes skipped, no flags left behind. πβ¨
AMBIENT_COLOR=0x00000001COLOR_INDEX=0x00000002COMPLEXITY=0x00000004COMPLEXITY_TYPE=0x00000008CREASE_ANGLE=0x00000010DIFFUSE_COLOR=0x00000020DRAW_STYLE=0x00000040EMISSIVE_COLOR=0x00000080FONT_NAME=0x00000100FONT_SIZE=0x00000200LIGHT_MODEL=0x00000400LINE_PATTERN=0x00000800LINE_WIDTH=0x00001000MATERIAL_BINDING=0x00002000POINT_SIZE=0x00004000PICK_STYLE=0x00008000SHAPE_HINTS=0x00010000SHININESS=0x00020000SPECULAR_COLOR=0x00040000POLYGON_OFFSET=0x00080000TRANSPARENCY=0x00100000TRANSPARENCY_TYPE=0x00200000NORMAL_VECTOR=0x00400000NORMAL_BINDING=0x00800000
π¦ Public Member Functions π¦
virtual void init (SoState *state)βFIXME: write doc.(yes bestie, the upstream docs literally say that. Not me making it up. π)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) constint getStackIndex (void) constvirtual void pop (SoState *state, const SoElement *prevTopElement)void setDepth (const int depth)int getDepth (void) constvirtual ~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) constvirtual void captureThis (SoState *state) constvoid setTypeId (const SoType typeId)void setStackIndex (const int index)SoElement * getNextInStack (void) constSoElement * 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 typeIdint stackIndexint depth
Static Protected Attributes inherited from SoElement
static int classStackIndexstatic SoTypeList * stackToType
π§ Detailed Description π§
SoOverrideElement maintains a list of overridable elements and a list of which elements should be overridden. Two lists. One element. Multitasking icon behavior. π
Only certain elements can be overridden. (Vibe check: not everything gets to be the main character. π)
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 of parts of the scene graph.
In the original SGI Inventor, this is nigh impossible, because 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, no in-between. It's giving strict parents. π
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 theSoPackedColororSoVertexPropertynode is used to specify diffuse color and transparency β only with theSoMaterialnode.) So if you're using those, bestie, the hack simply does not show up. Periodt.
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. β yeah. That's it. That's the documentation. We move. πΆββοΈπ¨
π· Constructor & Destructor Documentation π·
SoOverrideElement::~SoOverrideElement (void ) [protected], [virtual]
The destructor. She's protected, she's virtual, she says goodbye on her own terms. π
π¦ to be continued, bestie β part 2 is pulling up next π
π MEMBER FUNCTION DOCUMENTATION π
Okay bestie, this is the big one β every single member function of SoOverrideElement, in order, no skips. Buckle up, we're doing all of them. π
β¨ createInstance() β¨
void * SoOverrideElement::createInstance (void ) [static]
Lowkey not your business, bestie. This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. So likeβ¦ it's giving backstage pass only. π
π§ initClass() π§
void SoOverrideElement::initClass (void ) [static]
This static method initializes static data for the SoOverrideElement class. Housekeeping queen. π
π¦ init() π¦
void SoOverrideElement::init (SoState * state) [virtual]
FIXME: write doc. β yeah, the docs are literally not there yet, no cap. π
Reimplemented from SoElement.
πΈ push() πΈ
void SoOverrideElement::push (SoState * state) [virtual]
Also FIXME: write doc. β the mystery continues, bestie. π
Reimplemented from SoElement.
π matches() π
SbBool SoOverrideElement::matches (const SoElement * element) const [virtual]
FIXME: write doc. β she's undocumented but she's still serving. π
Implements SoElement.
π copyMatchInfo() π
SoElement * SoOverrideElement::copyMatchInfo (void ) const [virtual]
FIXME: write doc. β the lore is lost to time. π
Implements SoElement.
π The get*Override() Getters π
Every single one of these is a [static] that takes SoState *const state and gives you back an SbBool. And literally all of them say FIXME: write doc. except the last two, which actually have real info. Not me noticing the differenceβ¦ π
π 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]
Ooh, this one actually says something! Returns normal vector override value. Slay. β¨
\CLASS_FUNCTION_EXTENSION
π°οΈ Since
Coin 2.0
π getNormalBindingOverride()
SbBool SoOverrideElement::getNormalBindingOverride (SoState *const state) [static]
Returns normal binding override value. β¦wait, purple, sorry β Returns normal binding override value. π
\CLASS_FUNCTION_EXTENSION
π°οΈ Since
Coin 2.0
π
The set*Override() Setters π
Every one of these is a [static] taking SoState *const state, SoNode *const node, and const SbBool override. Most of them are FIXME: write doc., but a couple have actual tea to spill. β
πΈ 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]
Okay so this one is actually documented, and it's giving plot twist. Can be used to set diffuse color override. But β and hear me out β This will also set the transparency override. π³
And the manpage is like, "yeah we know that's weird": Since we feel this is a design flaw, it is possible to override this behaviour by setting an environement value called COIN_SEPARATE_DIFFUSE_TRANSPARENCY_OVERRIDE to 1. (Yes, environement β that's the original spelling, I'm not fixing it, periodt. π)
β οΈ Heads up bestie: Please note that separate override will not work for thePackedColororSoVertexPropertynodes. So don't come for me when it doesn't work there. π
πΈ 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. Simple. Clean. Iconic. β¨
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. Chef's kiss. π
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. π¦
\CLASS_FUNCTION_EXTENSION
π°οΈ 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. π¦
\CLASS_FUNCTION_EXTENSION
π°οΈ Since
Coin 2.0
π¨οΈ print() π¨οΈ
void SoOverrideElement::print (FILE * file) const [virtual]
FIXME: write doc. β yeah bestie, even the printer got no docs. π
Reimplemented from SoElement.
π AUTHOR π
Generated automatically by Doxygen for Coin from the source code. So like, not a human, not a bestie, just a doc generator doing its little thing. π€π
And that's a wrap on SoOverrideElement(3), bestie! This page came to you from Coin β that's Version 3.1.3, dated SoOverrideElement(3) β and honestly? She ate. Go forth and override responsibly. πβ¨
π¦ where this page comes from
- fedora 43: Coin3-devel 3.1.3-40.fc43 Β· GPL-2.0-only
- fedora 43: Coin3-devel 3.1.3-40.fc43 Β· GPL-2.0-only
- fedora 44: Coin3-devel 3.1.3-42.fc44 Β· GPL-2.0-only
- fedora 44: Coin3-devel 3.1.3-42.fc44 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms