KiCad PCB EDA Suite
Loading...
Searching...
No Matches
SGINDEX Class Reference

Define a generic index interface for a scenegraph object. More...

#include <sg_index.h>

Inheritance diagram for SGINDEX:
SGNODE SGCOORDINDEX

Public Member Functions

 SGINDEX (SGNODE *aParent)
 
virtual ~SGINDEX ()
 
virtual bool SetParent (SGNODE *aParent, bool notify=true) override
 Set the parent SGNODE of this object.
 
SGNODEFindNode (const char *aNodeName, const SGNODE *aCaller) noexcept override
 Search the tree of linked nodes and return a reference to the first node found with the given name.
 
bool AddRefNode (SGNODE *aNode) noexcept override
 
bool AddChildNode (SGNODE *aNode) noexcept override
 
void unlinkChildNode (const SGNODE *aCaller) noexcept override
 Remove references to an owned child.
 
void unlinkRefNode (const SGNODE *aCaller) noexcept override
 Remove pointers to a referenced node.
 
bool GetIndices (size_t &nIndices, int *&aIndexList)
 Retrieve the number of indices and a pointer to the list.
 
void SetIndices (size_t nIndices, int *aIndexList)
 Set the number of indices and creates a copy of the given index data.
 
void AddIndex (int aIndex)
 Add a single index to the list.
 
void ReNameNodes (void) override
 Rename a node and all its child nodes in preparation for write operations.
 
bool WriteVRML (std::ostream &aFile, bool aReuseFlag) override
 Writes this node's data to a VRML file.
 
bool WriteCache (std::ostream &aFile, SGNODE *parentNode) override
 Write this node's data to a binary cache file.
 
bool ReadCache (std::istream &aFile, SGNODE *parentNode) override
 Reads binary format data from a cache file.
 
S3D::SGTYPES GetNodeType (void) const noexcept
 Return the type of this node instance.
 
SGNODEGetParent (void) const noexcept
 Returns a pointer to the parent SGNODE of this object or NULL if the object has no parent (ie.
 
bool SwapParent (SGNODE *aNewParent)
 Swap the ownership with the given parent.
 
const char * GetName (void)
 
void SetName (const char *aName)
 
const char * GetNodeTypeName (S3D::SGTYPES aNodeType) const noexcept
 
void AssociateWrapper (SGNODE **aWrapperRef) noexcept
 Associate this object with a handle to itself.
 
void DisassociateWrapper (SGNODE **aWrapperRef) noexcept
 Remove the association between an IFSG* wrapper object and this object.
 
void ResetNodeIndex (void) noexcept
 Reset the global SG* node indices in preparation for write operations.
 
void addNodeRef (SGNODE *aNode)
 Add a pointer to a node which references this node, but does not own.
 
void delNodeRef (const SGNODE *aNode)
 Remove a pointer to a node which references this node, but does not own.
 
bool isWritten (void) noexcept
 Return true if the object had already been written to a cache file or VRML file.
 

Public Attributes

std::vector< int > index
 

Protected Member Functions

bool writeCoordIndex (std::ostream &aFile)
 
bool writeColorIndex (std::ostream &aFile)
 
bool writeIndexList (std::ostream &aFile)
 

Protected Attributes

std::list< SGNODE * > m_BackPointers
 nodes which hold a reference to this.
 
SGNODEm_Parent
 Pointer to parent node; may be NULL for top level transform.
 
S3D::SGTYPES m_SGtype
 Type of Scene Graph node.
 
std::string m_Name
 name to use for referencing the entity by name.
 
bool m_written
 Set to true when the object has been written after a ReNameNodes().
 

Private Attributes

SGNODE ** m_Association
 Handle to the instance held by a wrapper.
 

Detailed Description

Define a generic index interface for a scenegraph object.

Definition at line 38 of file sg_index.h.

Constructor & Destructor Documentation

◆ SGINDEX()

SGINDEX::SGINDEX ( SGNODE * aParent)

Definition at line 32 of file sg_index.cpp.

References SGNODE::GetNodeType(), SGNODE::SGNODE(), and S3D::SGTYPE_FACESET.

Referenced by SGCOORDINDEX::SGCOORDINDEX().

◆ ~SGINDEX()

SGINDEX::~SGINDEX ( )
virtual

Definition at line 46 of file sg_index.cpp.

References index.

Member Function Documentation

◆ AddChildNode()

bool SGINDEX::AddChildNode ( SGNODE * aNode)
overridevirtualnoexcept

Implements SGNODE.

Definition at line 117 of file sg_index.cpp.

References SGNODE::SGNODE().

◆ AddIndex()

void SGINDEX::AddIndex ( int aIndex)

Add a single index to the list.

Parameters
aIndexis the index to add.

Definition at line 155 of file sg_index.cpp.

References index.

◆ addNodeRef()

void SGNODE::addNodeRef ( SGNODE * aNode)
inherited

Add a pointer to a node which references this node, but does not own.

Such back-pointers are required to ensure that invalidated references are removed when a node is deleted.

Parameters
aNodeis the node holding a reference to this object.

Definition at line 170 of file sg_node.cpp.

References m_BackPointers, and SGNODE().

◆ AddRefNode()

bool SGINDEX::AddRefNode ( SGNODE * aNode)
overridevirtualnoexcept

Implements SGNODE.

Definition at line 108 of file sg_index.cpp.

References SGNODE::SGNODE().

◆ AssociateWrapper()

void SGNODE::AssociateWrapper ( SGNODE ** aWrapperRef)
noexceptinherited

Associate this object with a handle to itself.

The handle is typically held by an IFSG* wrapper and the pointer which it refers to is set to NULL upon destruction of this object. This mechanism provides a scheme by which a wrapper can be notified of the destruction of the object which it wraps.

Definition at line 207 of file sg_node.cpp.

References m_Association, and SGNODE().

Referenced by S3D::AssociateSGNodeWrapper().

◆ delNodeRef()

void SGNODE::delNodeRef ( const SGNODE * aNode)
inherited

Remove a pointer to a node which references this node, but does not own.

Parameters
aNodeis the node holding a reference to this object.

Definition at line 185 of file sg_node.cpp.

References GetNodeType(), m_BackPointers, m_SGtype, and SGNODE().

Referenced by SGFACESET::unlinkNode(), and SGSHAPE::unlinkNode().

◆ DisassociateWrapper()

void SGNODE::DisassociateWrapper ( SGNODE ** aWrapperRef)
noexceptinherited

Remove the association between an IFSG* wrapper object and this object.

Definition at line 225 of file sg_node.cpp.

References m_Association, and SGNODE().

◆ FindNode()

SGNODE * SGINDEX::FindNode ( const char * aNodeName,
const SGNODE * aCaller )
overridevirtualnoexcept

Search the tree of linked nodes and return a reference to the first node found with the given name.

The reference is then typically added to another node via AddRefNode().

Parameters
aNodeNameis the name of the node to search for.
aCalleris a pointer to the node invoking this function.
Returns
is a valid node pointer on success, otherwise NULL.

Implements SGNODE.

Definition at line 82 of file sg_index.cpp.

References SGNODE::m_Name, and SGNODE::SGNODE().

◆ GetIndices()

bool SGINDEX::GetIndices ( size_t & nIndices,
int *& aIndexList )

Retrieve the number of indices and a pointer to the list.

Note
The returned pointer may be invalidated by future operations on the SGNODE. The caller must make immediate use of the data and must not rely on the pointer's validity in the future.
Parameters
nIndiceswill hold the number of indices in the list.
aIndexListwill store a pointer to the data.
Returns
true if there was available data (nIndices > 0) otherwise false.

Definition at line 126 of file sg_index.cpp.

References index.

Referenced by SGSHAPE::Prepare().

◆ GetName()

◆ GetNodeType()

◆ GetNodeTypeName()

const char * SGNODE::GetNodeTypeName ( S3D::SGTYPES aNodeType) const
noexceptinherited

◆ GetParent()

SGNODE * SGNODE::GetParent ( void ) const
noexceptinherited

Returns a pointer to the parent SGNODE of this object or NULL if the object has no parent (ie.

top level transform).

Definition at line 110 of file sg_node.cpp.

References m_Parent, and SGNODE().

Referenced by S3D::GetSGNodeParent(), SCENEGRAPH::WriteCache(), SGAPPEARANCE::WriteCache(), SGCOLORS::WriteCache(), SGCOORDS::WriteCache(), SGFACESET::WriteCache(), SGINDEX::WriteCache(), SGNORMALS::WriteCache(), and SGSHAPE::WriteCache().

◆ isWritten()

bool SGNODE::isWritten ( void )
inlinenoexceptinherited

Return true if the object had already been written to a cache file or VRML file.

For internal use only.

Definition at line 220 of file sg_node.h.

References m_written.

Referenced by SCENEGRAPH::WriteCache().

◆ ReadCache()

bool SGINDEX::ReadCache ( std::istream & aFile,
SGNODE * parentNode )
overridevirtual

Reads binary format data from a cache file.

To read a cache file, open the file for reading and invoke this function from a new SCENEGRAPH node.

Implements SGNODE.

Definition at line 307 of file sg_index.cpp.

References index, and SGNODE::SGNODE().

◆ ReNameNodes()

void SGINDEX::ReNameNodes ( void )
overridevirtual

Rename a node and all its child nodes in preparation for write operations.

Implements SGNODE.

Definition at line 161 of file sg_index.cpp.

References SGNODE::GetName(), SGNODE::m_Name, and SGNODE::m_written.

◆ ResetNodeIndex()

void SGNODE::ResetNodeIndex ( void )
noexceptinherited

Reset the global SG* node indices in preparation for write operations.

Definition at line 238 of file sg_node.cpp.

References node_counts, and S3D::SGTYPE_END.

Referenced by S3D::ResetNodeIndex(), SCENEGRAPH::WriteCache(), and S3D::WriteVRML().

◆ SetIndices()

void SGINDEX::SetIndices ( size_t nIndices,
int * aIndexList )

Set the number of indices and creates a copy of the given index data.

Parameters
nIndicesthe number of indices to be stored.
aIndexListthe index data.

Definition at line 141 of file sg_index.cpp.

References index.

◆ SetName()

void SGNODE::SetName ( const char * aName)
inherited

Definition at line 155 of file sg_node.cpp.

References getNodeName(), m_Name, and m_SGtype.

Referenced by SCENEGRAPH::ReadCache().

◆ SetParent()

bool SGINDEX::SetParent ( SGNODE * aParent,
bool notify = true )
overridevirtual

Set the parent SGNODE of this object.

Parameters
aParent[in] is the desired parent node
Returns
true if the operation succeeds; false if the given node is not allowed to be a parent to the derived object.

Implements SGNODE.

Definition at line 52 of file sg_index.cpp.

References SGNODE::GetNodeType(), SGNODE::m_Parent, SGNODE::SGNODE(), and S3D::SGTYPE_FACESET.

◆ SwapParent()

bool SGNODE::SwapParent ( SGNODE * aNewParent)
inherited

Swap the ownership with the given parent.

This operation may be required when reordering nodes for optimization.

Parameters
aNewParentwill become the new parent to the object; it must be the same type as the parent of this instance.

Definition at line 116 of file sg_node.cpp.

References AddChildNode(), AddRefNode(), GetNodeType(), m_Parent, SGNODE(), and unlinkRefNode().

◆ unlinkChildNode()

void SGINDEX::unlinkChildNode ( const SGNODE * aNode)
overridevirtualnoexcept

Remove references to an owned child.

This is invoked by the child upon destruction to ensure that the parent has no invalid references.

Parameters
aNodeis the child which is being deleted.

Implements SGNODE.

Definition at line 94 of file sg_index.cpp.

References SGNODE::SGNODE().

◆ unlinkRefNode()

void SGINDEX::unlinkRefNode ( const SGNODE * aNode)
overridevirtualnoexcept

Remove pointers to a referenced node.

This is invoked by the referenced node upon destruction to ensure that the referring node has no invalid references.

Parameters
aNodeis the node which is being deleted.

Implements SGNODE.

Definition at line 101 of file sg_index.cpp.

References SGNODE::SGNODE().

◆ WriteCache()

bool SGINDEX::WriteCache ( std::ostream & aFile,
SGNODE * parentNode )
overridevirtual

Write this node's data to a binary cache file.

The data includes all data of children and references to children. If this function is invoked by the user, parentNode must be set to NULL in order to ensure coherent data.

Implements SGNODE.

Definition at line 262 of file sg_index.cpp.

References SGNODE::GetName(), SGNODE::GetParent(), index, SGNODE::m_Parent, SGNODE::m_written, SGNODE::SGNODE(), and SGNODE::WriteCache().

◆ writeColorIndex()

bool SGINDEX::writeColorIndex ( std::ostream & aFile)
protected

Definition at line 226 of file sg_index.cpp.

References writeIndexList().

Referenced by WriteVRML().

◆ writeCoordIndex()

bool SGINDEX::writeCoordIndex ( std::ostream & aFile)
protected

Definition at line 183 of file sg_index.cpp.

References index.

Referenced by WriteVRML().

◆ writeIndexList()

bool SGINDEX::writeIndexList ( std::ostream & aFile)
protected

Definition at line 233 of file sg_index.cpp.

References index.

Referenced by writeColorIndex().

◆ WriteVRML()

bool SGINDEX::WriteVRML ( std::ostream & aFile,
bool aReuseFlag )
overridevirtual

Writes this node's data to a VRML file.

This includes all data of child and referenced nodes.

Implements SGNODE.

Definition at line 171 of file sg_index.cpp.

References index, SGNODE::m_SGtype, S3D::SGTYPE_COORDINDEX, writeColorIndex(), and writeCoordIndex().

Member Data Documentation

◆ index

◆ m_Association

SGNODE** SGNODE::m_Association
privateinherited

Handle to the instance held by a wrapper.

Definition at line 233 of file sg_node.h.

Referenced by AssociateWrapper(), DisassociateWrapper(), SGNODE(), and ~SGNODE().

◆ m_BackPointers

std::list< SGNODE* > SGNODE::m_BackPointers
protectedinherited

nodes which hold a reference to this.

Definition at line 226 of file sg_node.h.

Referenced by addNodeRef(), SGCOORDS::CalcNormals(), delNodeRef(), and ~SGNODE().

◆ m_Name

◆ m_Parent

◆ m_SGtype

◆ m_written


The documentation for this class was generated from the following files: