.TH "SoOverrideElement" 3 "Thu May 29 2014" "Version 4.0.0a" "Coin" \" -*- nroff -*- .ad l .nh .SH NAME SoOverrideElement \- .PP The \fBSoOverrideElement\fP maintains a list of overridable elements and a list over which elements should be overridden\&. .PP Only certain elements can be overridden\&. .SH SYNOPSIS .br .PP .PP \fC#include \fP .PP Inherits \fBSoElement\fP\&. .SS "Public Types" .in +1c .ti -1c .RI "enum \fBFlagBits\fP { \fBAMBIENT_COLOR\fP = 0x00000001, \fBCOLOR_INDEX\fP = 0x00000002, \fBCOMPLEXITY\fP = 0x00000004, \fBCOMPLEXITY_TYPE\fP = 0x00000008, \fBCREASE_ANGLE\fP = 0x00000010, \fBDIFFUSE_COLOR\fP = 0x00000020, \fBDRAW_STYLE\fP = 0x00000040, \fBEMISSIVE_COLOR\fP = 0x00000080, \fBFONT_NAME\fP = 0x00000100, \fBFONT_SIZE\fP = 0x00000200, \fBLIGHT_MODEL\fP = 0x00000400, \fBLINE_PATTERN\fP = 0x00000800, \fBLINE_WIDTH\fP = 0x00001000, \fBMATERIAL_BINDING\fP = 0x00002000, \fBPOINT_SIZE\fP = 0x00004000, \fBPICK_STYLE\fP = 0x00008000, \fBSHAPE_HINTS\fP = 0x00010000, \fBSHININESS\fP = 0x00020000, \fBSPECULAR_COLOR\fP = 0x00040000, \fBPOLYGON_OFFSET\fP = 0x00080000, \fBTRANSPARENCY\fP = 0x00100000, \fBTRANSPARENCY_TYPE\fP = 0x00200000, \fBNORMAL_VECTOR\fP = 0x00400000, \fBNORMAL_BINDING\fP = 0x00800000 }" .br .in -1c .SS "Public Member Functions" .in +1c .ti -1c .RI "virtual void \fBinit\fP (\fBSoState\fP *state)" .br .RI "\fIFIXME: write doc\&. \fP" .ti -1c .RI "virtual void \fBpush\fP (\fBSoState\fP *state)" .br .RI "\fIFIXME: write doc\&. \fP" .ti -1c .RI "virtual SbBool \fBmatches\fP (const \fBSoElement\fP *element) const " .br .RI "\fIFIXME: write doc\&. \fP" .ti -1c .RI "virtual \fBSoElement\fP * \fBcopyMatchInfo\fP (void) const " .br .RI "\fIFIXME: write doc\&. \fP" .ti -1c .RI "virtual void \fBprint\fP (FILE *file) const " .br .RI "\fIFIXME: write doc\&. \fP" .in -1c .SS "Static Public Member Functions" .in +1c .ti -1c .RI "static \fBSoType\fP \fBgetClassTypeId\fP (void)" .br .ti -1c .RI "static int \fBgetClassStackIndex\fP (void)" .br .ti -1c .RI "static void * \fBcreateInstance\fP (void)" .br .ti -1c .RI "static void \fBinitClass\fP (void)" .br .ti -1c .RI "static uint32_t \fBgetFlags\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetAmbientColorOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetColorIndexOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetComplexityOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetComplexityTypeOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetCreaseAngleOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetDiffuseColorOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetDrawStyleOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetEmissiveColorOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetFontNameOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetFontSizeOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetLightModelOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetLinePatternOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetLineWidthOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetMaterialBindingOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetPickStyleOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetPointSizeOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetPolygonOffsetOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetShapeHintsOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetShininessOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetSpecularColorOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetTransparencyOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetTransparencyTypeOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetNormalVectorOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static SbBool \fBgetNormalBindingOverride\fP (\fBSoState\fP *const state)" .br .ti -1c .RI "static void \fBsetAmbientColorOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetColorIndexOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetComplexityOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetComplexityTypeOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetCreaseAngleOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetDiffuseColorOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetDrawStyleOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetEmissiveColorOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetFontNameOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetFontSizeOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetLightModelOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetLinePatternOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetLineWidthOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetMaterialBindingOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .RI "\fIFIXME: write doc\&. \fP" .ti -1c .RI "static void \fBsetPickStyleOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetPointSizeOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetPolygonOffsetOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetShapeHintsOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetShininessOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetSpecularColorOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetTransparencyOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetTransparencyTypeOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetNormalVectorOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .ti -1c .RI "static void \fBsetNormalBindingOverride\fP (\fBSoState\fP *const state, \fBSoNode\fP *const node, const SbBool override)" .br .in -1c .SS "Protected Member Functions" .in +1c .ti -1c .RI "virtual \fB~SoOverrideElement\fP ()" .br .in -1c .SS "Additional Inherited Members" .SH "Detailed Description" .PP The \fBSoOverrideElement\fP maintains a list of overridable elements and a list over which elements should be overridden\&. .PP Only certain elements can be overridden\&. The remaining class documentation describes a single, special case: .PP A common request for functionality is to override only the transparency of the full scene graph, or parts of the scene graph\&. .PP 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 \fBSoNode::setOverride()\fP on an \fBSoMaterial\fP 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\&. .PP 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 \fCCOIN_SEPARATE_DIFFUSE_TRANSPARENCY_OVERRIDE\fP to '1' to enable this hack\&. .PP (Do however note that this will not work when the \fBSoPackedColor\fP or \fBSoVertexProperty\fP node is used to specify diffuse color and transparency -- only with the \fBSoMaterial\fP node\&.) .PP Here is a complete, stand-alone example which demonstrates how to accomplish this: .PP .PP .nf #include #include #include #include // ************************************************************************* 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; } .fi .PP .SH "Member Enumeration Documentation" .PP .SS "enum \fBSoOverrideElement::FlagBits\fP" FIXME: write doc\&. .SH "Constructor & Destructor Documentation" .PP .SS "SoOverrideElement::~SoOverrideElement (void)\fC [protected]\fP, \fC [virtual]\fP" The destructor\&. .SH "Member Function Documentation" .PP .SS "void * SoOverrideElement::createInstance (void)\fC [static]\fP" \fIThis API member is considered internal to the library, as it is not likely to be of interest to the application programmer\&.\fP .SS "void SoOverrideElement::initClass (void)\fC [static]\fP" This static method initializes static data for the \fBSoOverrideElement\fP class\&. .SS "SbBool SoOverrideElement::getAmbientColorOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getColorIndexOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getComplexityOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getComplexityTypeOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getCreaseAngleOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getDiffuseColorOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getDrawStyleOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getEmissiveColorOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getFontNameOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getFontSizeOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getLightModelOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getLinePatternOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getLineWidthOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getMaterialBindingOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getPickStyleOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getPointSizeOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getPolygonOffsetOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getShapeHintsOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getShininessOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getSpecularColorOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getTransparencyOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getTransparencyTypeOverride (\fBSoState\fP *conststate)\fC [static]\fP" FIXME: write doc\&. .SS "SbBool SoOverrideElement::getNormalVectorOverride (\fBSoState\fP *conststate)\fC [static]\fP" Returns normal vector override value\&. .PP \fBSince:\fP .RS 4 Coin 2\&.0 .RE .PP .SS "SbBool SoOverrideElement::getNormalBindingOverride (\fBSoState\fP *conststate)\fC [static]\fP" Returns normal binding override value\&. .PP \fBSince:\fP .RS 4 Coin 2\&.0 .RE .PP .SS "void SoOverrideElement::setAmbientColorOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setColorIndexOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setComplexityOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setComplexityTypeOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setCreaseAngleOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setDiffuseColorOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" 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 environement value called COIN_SEPARATE_DIFFUSE_TRANSPARENCY_OVERRIDE to 1\&. .PP Please note that separate override will not work for the PackedColor or \fBSoVertexProperty\fP nodes\&. .SS "void SoOverrideElement::setDrawStyleOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setEmissiveColorOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setFontNameOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setFontSizeOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setLightModelOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setLinePatternOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setLineWidthOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setPickStyleOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setPointSizeOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setPolygonOffsetOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setShapeHintsOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setShininessOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setSpecularColorOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" FIXME: write doc\&. .SS "void SoOverrideElement::setTransparencyOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" Can be used to set the transparency override\&. .PP \fBSee also:\fP .RS 4 \fBsetDiffuseColorOverride()\fP\&. .RE .PP .SS "void SoOverrideElement::setTransparencyTypeOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" Can be used to set the transparency type override\&. .PP \fBSee also:\fP .RS 4 \fBsetDiffuseColorOverride()\fP\&. .RE .PP .SS "void SoOverrideElement::setNormalVectorOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" Can be used to set normal vector override\&. .PP \fBSince:\fP .RS 4 Coin 2\&.0 .RE .PP .SS "void SoOverrideElement::setNormalBindingOverride (\fBSoState\fP *conststate, \fBSoNode\fP *constnode, const SbBooloverride)\fC [static]\fP" Can be used to set normal binding override\&. .PP \fBSince:\fP .RS 4 Coin 2\&.0 .RE .PP .SH "Author" .PP Generated automatically by Doxygen for Coin from the source code\&.