54#include <Inventor/misc/SoChildList.h>
55#include <Inventor/fields/SoFieldData.h>
56#include <Inventor/nodes/SoNode.h>
57#include <Inventor/fields/SoSFName.h>
58#include <Inventor/fields/SoSFBool.h>
59#include <Inventor/nodes/SoNode.h>
60#include <Inventor/nodekits/SoNodekitParts.h>
61#include <Inventor/nodekits/SoSubKit.h>
62#include <Inventor/SoNodeKitPath.h>
63#include <Inventor/SbViewportRegion.h>
343 SO_KIT_CATALOG_ENTRY_HEADER(callbackList);
413 template<
typename PartType>
418 part = typeCheck<PartType>( partName, part );
420 return static_cast<PartType*
>(part);
442 template<
typename PartType>
447 part = typeCheck<PartType>( partName, part );
449 return static_cast<PartType*
>(part);
471 SbBool makeIfNeeded,
const SoPath *pathToExtend = NULL );
552 SoNONUNICODE
SbBool set(
const char *partNameString,
const char *parameterString);
592 inline virtual SbBool isBoundingBoxIgnoring()
const
595 virtual void doAction(
SoAction *action );
608 static void initClass();
609 static void exitClass();
615 SbBool set(
char *partNameString,
char *parameterString)
616 {
return set((
const char*)partNameString, (
const char*)parameterString); };
625 template<
typename PartType>
628 return typeCheck( partName, PartType::getClassTypeId(), node );
632 void printSubDiagram(
const SbName &rootName,
int level );
637 virtual void addWriteReference(
SoOutput *out,
638 SbBool isFromField = FALSE);
656 static void enableNotification(
SbBool);
657 static SbBool isEnabledNotification();
665 virtual void internalRemoveChild(
int index ) { removeChild(index); }
666 virtual void internalRemoveChild(
SoNode *child ) { removeChild(findChild(child)); }
667 virtual void internalRemoveAllChildren() { removeAllChildren(); }
668 virtual void internalAddChild(
SoNode *child ) { addChild(child); }
669 virtual int internalFindChild(
const SoNode *child )
const {
return findChild(child); }
670 virtual void internalInsertChild(
SoNode *child,
int newChildIndex ) { insertChild(child, newChildIndex); }
671 virtual SoNode *internalGetChild(
int index)
const {
return getChild(index); }
672 virtual void internalReplaceChild(
int index,
SoNode *newChild) { replaceChild(index, newChild); }
673 virtual void internalReplaceChild(
SoNode *oldChild,
SoNode *newChild) { replaceChild(oldChild,newChild); }
676 virtual SoNode * addToCopyDict()
const;
689 SbBool makeIfNeeded = TRUE );
717 template<
typename PartType>
718 PartType* getAnyPart(
const SbName& partName )
720 SoNode* part = getAnyPart( partName, TRUE, FALSE, FALSE );
722 part = typeCheck<PartType>( partName, part );
724 return static_cast<PartType*
>(part);
746 template<
typename PartType>
747 PartType* checkAnyPart(
const SbName& partName )
749 SoNode* part = getAnyPart( partName, FALSE, FALSE, FALSE );
751 part = typeCheck<PartType>( partName, part );
753 return static_cast<PartType*
>(part);
759 const SoPath *pathToExtend = NULL );
765 void createNodekitPartsList();
768 virtual void createDefaultParts();
772 {
return nodekitPartsList; };
791 virtual SbBool readInstance(
SoInput *in,
unsigned short flags);
803 virtual void setDefaultOnNonWritingFields();
828 static SbBool m_enableBaseKitNotification;
836 void skipWhiteSpace(
char *&
string);
844 void createFieldDataForWriting();
848 SoFieldData *fieldDataForWriting;
856 SbBool readMyFields(
SoInput *in, SoFieldData *&unknownFieldData );
866 void undoSetDefaultOnFieldsThatMustWrite();
869 int getNumChildren()
const {
return (children->getLength()); }
870 void removeChild(
int index );
871 void removeChild(
SoNode *child ) { removeChild(findChild(child)); }
872 void removeAllChildren();
873 void addChild(
SoNode *child );
874 int findChild(
const SoNode *child )
const;
875 void insertChild(
SoNode *child,
int newChildIndex );
876 SoNode *getChild(
int index)
const {
return (*children)[index]; }
877 void replaceChild(
int index,
SoNode *newChild);
879 { replaceChild(findChild(oldChild),newChild); }
881 static SbBool searchingChildren;
899#define SO_GET_PART( kitContainingPart, partName, partClassName ) \
900 ((partClassName *) SoBaseKit::typeCheck( partName, \
901 partClassName::getClassTypeId(), \
902 kitContainingPart->getPart( partName, TRUE )))
904#define SO_CHECK_PART( kitContainingPart, partName, partClassName ) \
905 ((partClassName *) SoBaseKit::typeCheck( partName, \
906 partClassName::getClassTypeId(), \
907 kitContainingPart->getPart( partName, FALSE )))
909#define SO_GET_ANY_PART( kitContainingPart, partName, partClassName ) \
910 ((partClassName *) SoBaseKit::typeCheck( partName, \
911 partClassName::getClassTypeId(), \
912 kitContainingPart->getAnyPart( partName, TRUE, FALSE, FALSE )))
914#define SO_CHECK_ANY_PART( kitContainingPart, partName, partClassName ) \
915 ((partClassName *) SoBaseKit::typeCheck( partName, \
916 partClassName::getClassTypeId(), \
917 kitContainingPart->getAnyPart( partName, FALSE, FALSE, FALSE )))
920#define SO_GET_PART( kitContainingPart, partName, partClassName ) \
921 ((partClassName *) kitContainingPart->getPart( partName, TRUE ))
922#define SO_CHECK_PART( kitContainingPart, partName, partClassName ) \
923 ((partClassName *) kitContainingPart->getPart( partName, FALSE ))
924#define SO_GET_ANY_PART( kitContainingPart, partName, partClassName ) \
925 ((partClassName *) kitContainingPart->getAnyPart( partName, TRUE, \
927#define SO_CHECK_ANY_PART( kitContainingPart, partName, partClassName ) \
928 ((partClassName *) kitContainingPart->getAnyPart( partName, FALSE, \
Character string stored in a hash table.
List of generic (void *) pointers.
Class for smart character strings.
Abstract base class for all actions.
Base class for all nodes, paths, and engines.
Base class for all node kits.
virtual SoNode * getPart(const SbName &partName, SbBool makeIfNeeded)
Searches the nodekit catalog (and those of all nested nodekits) for the part named partName.
friend class SoNodekitParts
static void setSearchingChildren(SbBool newVal)
Sets if nodekit children are searched during SoSearchAction traversal.
PartType * checkPart(const SbName &partName)
Like getPart(const SbName&,SbBool) but casts the returned part to the specified type and sets the mak...
friend class SoNodekitCatalogEntry
virtual const SoNodekitCatalog * getNodekitCatalog() const
Returns the SoNodekitCatalog for this instance of SoBaseKit.
SoSFBool boundingBoxIgnoring
Whether to ignore this node during bounding box traversal.
SoNONUNICODE SbBool set(char *nameValuePairListString)
This function allows field values of parts (nodes) to be set in several different parts simultaneousl...
SbBool set(const SbString &nameValuePairListString)
This function allows field values of parts (nodes) to be set in several different parts simultaneousl...
SbBool set(const SbString &partNameString, const SbString ¶meterString)
This function allows field values of parts (nodes) to be set.
virtual SbBool setPart(const SbName &partName, SoNode *newPart)
Inserts the given node (not a copy) as the new part specified by partName.
virtual SoNodeKitPath * createPathToPart(const SbName &partName, SbBool makeIfNeeded, const SoPath *pathToExtend=NULL)
Returns a path that begins at this nodekit and ends at partName.
SbString getPartString(const SoBase *part)
Given a node or a path to a node, checks if the part exists in the nodekit, in a nested nodekit,...
PartType * getPart(const SbName &partName)
Like getPart(const SbName&,SbBool) but casts the returned part to the specified type and sets the mak...
static const SoNodekitCatalog * getClassNodekitCatalog()
Returns the SoNodekitCatalog for the class SoBaseKit.
static SbBool isSearchingChildren()
Returns TRUE if nodekit children are searched during SoSearchAction traversal.
SoNONUNICODE SbBool set(const char *partNameString, const char *parameterString)
This function allows field values of parts (nodes) to be set.
Performs a generic traversal of a scene graph or path.
Abstract base class for objects that contain fields.
Renders a scene graph using Open Inventor's Render Engine.
Computes bounding box of a scene.
Computes transformation matrix for a subgraph.
<a href="IconLegend.html"><img src="extTGS.gif" alt="VSG extension" border="0"></a> Counts number of...
Class to access a MeshViz view.
Base class for all group nodes.
Allows nodes in a graph to receive input events.
Abstract base class for all database nodes.
Path that points to a list of hierarchical nodekits.
Used to write Open Inventor data files.
Path that points to a list of hierarchical nodes.
Intersects objects with a ray cast into scene.
Field containing a single Boolean value.
SbBool getValue() const
Returns this field's value.
Searches for nodes in a scene graph.
Group node that saves and restores traversal state.
Stores runtime type information.
Writes a scene graph to a file.