'\"! tbl | mmdoc '\"macro stdmacro .ie n \{\ . ds Cr \fB . ds Cb \fB .\} .el \{\ . ds Cr \f7 . ds Cb \f8 .\} .TH SoCallbackAction(3IV) .SH NAME SoCallbackAction \(em performs a generic traversal of the scene graph .SH INHERITS FROM SoAction > SoCallbackAction .SH SYNOPSIS .ps -1 \*(Cr#include .sp .ta 20m .in 1i+20n .ti 0.5i .ta 20m .ds Pt \*(Crtypedef void .ie \w'\*(Pt'>=20n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbSoTriangleCB\*(Cr(void *userData, SoCallbackAction *action, const SoPrimitiveVertex *v1, const SoPrimitiveVertex *v2, const SoPrimitiveVertex *v3) .br .in 1i+20n .ti 0.5i .ta 20m .ds Pt \*(Crtypedef void .ie \w'\*(Pt'>=20n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbSoLineSegmentCB\*(Cr(void *userData, SoCallbackAction *action, const SoPrimitiveVertex *v1, const SoPrimitiveVertex *v2) .br .in 1i+20n .ti 0.5i .ta 20m .ds Pt \*(Crtypedef void .ie \w'\*(Pt'>=20n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbSoPointCB\*(Cr(void *userData, SoCallbackAction *action, const SoPrimitiveVertex *v) .br .in 1i+20n .ti 0.5i .ta 20m .ds Pt \*(Crtypedef SoCallbackAction::Response .ie \w'\*(Pt'>=20n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbSoCallbackActionCB\*(Cr(void *userData, SoCallbackAction *action, const SoNode *node) .sp .in 0.5i \*(Crenum \*(CbResponse\*(Cr { .in 1i .ta 28m .in 1.5i+28n .ti 1i .ta 28m .ds Pt \*(CbSoCallbackAction::CONTINUE\f1 .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 1i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} Continue traversal as if nothing happened .br .in 1.5i+28n .ti 1i .ta 28m .ds Pt \*(CbSoCallbackAction::ABORT\f1 .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 1i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} Abort traversal .br .in 1.5i+28n .ti 1i .ta 28m .ds Pt \*(CbSoCallbackAction::PRUNE\f1 .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 1i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} Do not traverse node's children, but continue traversal .br .in 0.5i \*(Cr} .sp .in 1i \f1Methods from class SoCallbackAction: .in 0.5i .sp .ta 28m .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Cr .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbSoCallbackAction\*(Cr() .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crvoid .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbaddPreCallback\*(Cr(SoType type, SoCallbackActionCB *cb, void *data) .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crvoid .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbaddPostCallback\*(Cr(SoType type, SoCallbackActionCB *cb, void *data) .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crvoid .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbaddPreTailCallback\*(Cr(SoCallbackActionCB *cb, void *data) .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crvoid .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbaddPostTailCallback\*(Cr(SoCallbackActionCB *cb, void *data) .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crvoid .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbaddTriangleCallback\*(Cr(SoType type, SoTriangleCB *cb, void *data) .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crvoid .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbaddLineSegmentCallback\*(Cr(SoType type, SoLineSegmentCB *cb, void *data) .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crvoid .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbaddPointCallback\*(Cr(SoType type, SoPointCB *cb, void *data) .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crfloat .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetComplexity\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoComplexity::Type .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetComplexityType\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crint32_t .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetNumCoordinates\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbVec3f & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetCoordinate3\*(Cr(int index) const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbVec4f & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetCoordinate4\*(Cr(int index) const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoDrawStyle::Style .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetDrawStyle\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crunsigned short .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetLinePattern\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crfloat .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetLineWidth\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crfloat .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetPointSize\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbName & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetFontName\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crfloat .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetFontSize\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoLightModel::Model .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetLightModel\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbVec3f & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetLightAttenuation\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crvoid .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetMaterial\*(Cr(SbColor &ambient, SbColor &diffuse, SbColor &specular, SbColor &emission, float &shininess, float &transparency, int mtlIndex = 0) const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoMaterialBinding::Binding .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetMaterialBinding\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crlong .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetNumNormals\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbVec3f & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetNormal\*(Cr(int index) const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoNormalBinding::Binding .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetNormalBinding\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crint32_t .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetNumProfileCoordinates\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbVec2f & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetProfileCoordinate2\*(Cr(int index) const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbVec3f & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetProfileCoordinate3\*(Cr(int index) const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SoNodeList & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetProfile\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoShapeHints::VertexOrdering .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetVertexOrdering\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoShapeHints::ShapeType .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetShapeType\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoShapeHints::FaceType .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetFaceType\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crfloat .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetCreaseAngle\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crint32_t .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetNumTextureCoordinates\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbVec2f & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureCoordinate2\*(Cr(int index) const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbVec4f & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureCoordinate4\*(Cr(int index) const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoTextureCoordinateBinding::Binding .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureCoordinateBinding\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbColor & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureBlendColor\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst unsigned char * .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureImage\*(Cr(SbVec2s &size, int &numComps) const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbMatrix & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureMatrix\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoTexture2::Model .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureModel\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoTexture2::Wrap .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureWrapS\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoTexture2::Wrap .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureWrapT\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbMatrix & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetModelMatrix\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoUnits::Units .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetUnits\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crfloat .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetFocalDistance\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbMatrix & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetProjectionMatrix\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbMatrix & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetViewingMatrix\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbViewVolume & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetViewVolume\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoPickStyle::Style .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetPickStyle\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crint32_t .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetSwitch\*(Cr() const .sp .in 1i \f1Methods from class SoAction: .in 0.5i .sp .ta 20m .in 1i+20n .ti 0.5i .ta 20m .ds Pt \*(Crvirtual void .ie \w'\*(Pt'>=20n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(Cbapply\*(Cr(SoNode *node) .br .in 1i+20n .ti 0.5i .ta 20m .ds Pt \*(Crvirtual void .ie \w'\*(Pt'>=20n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(Cbapply\*(Cr(SoPath *path) .br .in 1i+20n .ti 0.5i .ta 20m .ds Pt \*(Crvirtual void .ie \w'\*(Pt'>=20n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(Cbapply\*(Cr(const SoPathList &pathList, SbBool obeysRules = FALSE) .br .in 1i+20n .ti 0.5i .ta 20m .ds Pt \*(Crstatic SoType .ie \w'\*(Pt'>=20n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetClassTypeId\*(Cr() .br .in 1i+20n .ti 0.5i .ta 20m .ds Pt \*(Crvirtual SoType .ie \w'\*(Pt'>=20n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTypeId\*(Cr() .br .in 1i+20n .ti 0.5i .ta 20m .ds Pt \*(Crvirtual SbBool .ie \w'\*(Pt'>=20n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbisOfType\*(Cr(SoType type) .br .in 1i+20n .ti 0.5i .ta 20m .ds Pt \*(Crvirtual void .ie \w'\*(Pt'>=20n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbinvalidateState\*(Cr() .sp .SH DESCRIPTION This action defines a generic traversal of the scene graph. The user can specify callback functions for node types or paths; when those node types or paths are encountered during traversal, the user's callback \&function is called. .sp In addition, callback functions can be registered for primitives generated by shapes in the scene graph. Most shape types can generate primitives that represent or approximate their \&geometries. \f2Triangle\f1 primitives are used for all surfaces (such as cubes, face sets, or 3D text), \f2line segment\f1 primitives are used for line shapes, and \f2point\f1 primitives are used for point shapes. Note that the type of primitives \&generated for a shape is the same, regardless of drawing style or other properties. .sp Most of the methods on this class access information from the traversal state. They should be called only by callback functions \&that are invoked during traversal, so there is a valid state to work with. .SH METHODS .ta 28m .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Cr .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbSoCallbackAction\*(Cr() .br .in 1i \f1The constructor. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crvoid .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbaddPreCallback\*(Cr(SoType type, SoCallbackActionCB *cb, void *data) .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crvoid .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbaddPostCallback\*(Cr(SoType type, SoCallbackActionCB *cb, void *data) .br .in 1i \f1These add a callback function to call when a node of the given type is encountered during traversal. The PreCallback is called just before the node is traversed, and the PostCallback is called just after. \&The value returned by a callback function indicates whether the action should continue with the traversal. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crvoid .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbaddPreTailCallback\*(Cr(SoCallbackActionCB *cb, void *data) .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crvoid .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbaddPostTailCallback\*(Cr(SoCallbackActionCB *cb, void *data) .br .in 1i \f1These can be used to set up callback functions to call when the action is applied to a path. The functions are called just before or after the node at the tail of the path is traversed. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crvoid .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbaddTriangleCallback\*(Cr(SoType type, SoTriangleCB *cb, void *data) .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crvoid .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbaddLineSegmentCallback\*(Cr(SoType type, SoLineSegmentCB *cb, void *data) .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crvoid .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbaddPointCallback\*(Cr(SoType type, SoPointCB *cb, void *data) .br .in 1i \f1Routines to add callbacks for generated primitives (triangles, line segments, and points) for all shapes of the given type. The callback function will be called for each primitive generated for all shapes \&of or derived from that type. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crfloat .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetComplexity\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoComplexity::Type .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetComplexityType\*(Cr() const .br .in 1i \f1Returns complexity information from the state. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crint32_t .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetNumCoordinates\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbVec3f & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetCoordinate3\*(Cr(int index) const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbVec4f & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetCoordinate4\*(Cr(int index) const .br .in 1i \f1Returns the current coordinates from the state. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoDrawStyle::Style .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetDrawStyle\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crunsigned short .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetLinePattern\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crfloat .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetLineWidth\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crfloat .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetPointSize\*(Cr() const .br .in 1i \f1Returns the current drawing style information from the state. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbName & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetFontName\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crfloat .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetFontSize\*(Cr() const .br .in 1i \f1Returns the current font information from the state. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoLightModel::Model .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetLightModel\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbVec3f & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetLightAttenuation\*(Cr() const .br .in 1i \f1Returns the current lighting model information from the state. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crvoid .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetMaterial\*(Cr(SbColor &ambient, SbColor &diffuse, SbColor &specular, SbColor &emission, float &shininess, float &transparency, int mtlIndex = 0) const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoMaterialBinding::Binding .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetMaterialBinding\*(Cr() const .br .in 1i \f1Returns the current material information from the state. Providing a \*(CrmtlIndex\f1 will return the material defined for that index. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crlong .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetNumNormals\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbVec3f & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetNormal\*(Cr(int index) const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoNormalBinding::Binding .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetNormalBinding\*(Cr() const .br .in 1i \f1Returns the current normal information from the state. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crint32_t .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetNumProfileCoordinates\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbVec2f & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetProfileCoordinate2\*(Cr(int index) const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbVec3f & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetProfileCoordinate3\*(Cr(int index) const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SoNodeList & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetProfile\*(Cr() const .br .in 1i \f1Returns the current profiles and their coordinates from the state. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoShapeHints::VertexOrdering .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetVertexOrdering\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoShapeHints::ShapeType .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetShapeType\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoShapeHints::FaceType .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetFaceType\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crfloat .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetCreaseAngle\*(Cr() const .br .in 1i \f1Returns the current shape hints from the state. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crint32_t .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetNumTextureCoordinates\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbVec2f & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureCoordinate2\*(Cr(int index) const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbVec4f & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureCoordinate4\*(Cr(int index) const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoTextureCoordinateBinding::Binding .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureCoordinateBinding\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbColor & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureBlendColor\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst unsigned char * .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureImage\*(Cr(SbVec2s &size, int &numComps) const .br .in 1i \f1Returns texture information from the state. \*(CbgetNumTextureCoordinates()\f1 \*(Cb\f1 returns 0 if texture coordinates are generated by a function. \*(CbgetTextureImage()\f1 \*(Cb\f1 returns NULL if no texture is enabled. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbMatrix & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureMatrix\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoTexture2::Model .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureModel\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoTexture2::Wrap .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureWrapS\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoTexture2::Wrap .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetTextureWrapT\*(Cr() const .br .in 1i \f1Returns the current texture mapping information from the state. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbMatrix & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetModelMatrix\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoUnits::Units .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetUnits\*(Cr() const .br .in 1i \f1Returns the current modeling transformation and the current units from the state. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crfloat .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetFocalDistance\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbMatrix & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetProjectionMatrix\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbMatrix & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetViewingMatrix\*(Cr() const .br .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crconst SbViewVolume & .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetViewVolume\*(Cr() const .br .in 1i \f1Returns the current camera and viewing information from the state. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(CrSoPickStyle::Style .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetPickStyle\*(Cr() const .br .in 1i \f1Returns the current picking style. .sp .in 0.5i .in 1i+28n .ti 0.5i .ta 28m .ds Pt \*(Crint32_t .ie \w'\*(Pt'>=28n \{\ .ne 3 \*(Pt .ti 0.5i \c\ \} .el\{\ .ne 2 \*(Pt \c\ \} \*(CbgetSwitch\*(Cr() const .br .in 1i \f1Returns the current switch value. .sp .in 0.5i .SH SEE ALSO \*(CbSoCallback, SoEventCallback, SoShape