KiCad PCB EDA Suite
IFSG_APPEARANCE Class Reference

#include <ifsg_appearance.h>

Inheritance diagram for IFSG_APPEARANCE:
IFSG_NODE

Public Member Functions

 IFSG_APPEARANCE (bool create)
 
 IFSG_APPEARANCE (SGNODE *aParent)
 
 IFSG_APPEARANCE (IFSG_NODE &aParent)
 
bool Attach (SGNODE *aNode) override
 Function Attach associates a given SGNODE* with this wrapper. More...
 
bool NewNode (SGNODE *aParent) override
 Function NewNode creates a new node to associate with this wrapper. More...
 
bool NewNode (IFSG_NODE &aParent) override
 
bool SetEmissive (float aRVal, float aGVal, float aBVal)
 
bool SetEmissive (const SGCOLOR *aRGBColor)
 
bool SetEmissive (const SGCOLOR &aRGBColor)
 
bool SetDiffuse (float aRVal, float aGVal, float aBVal)
 
bool SetDiffuse (const SGCOLOR *aRGBColor)
 
bool SetDiffuse (const SGCOLOR &aRGBColor)
 
bool SetSpecular (float aRVal, float aGVal, float aBVal)
 
bool SetSpecular (const SGCOLOR *aRGBColor)
 
bool SetSpecular (const SGCOLOR &aRGBColor)
 
bool SetAmbient (float aRVal, float aGVal, float aBVal)
 
bool SetAmbient (const SGCOLOR *aRGBColor)
 
bool SetAmbient (const SGCOLOR &aRGBColor)
 
bool SetShininess (float aShininess) noexcept
 
bool SetTransparency (float aTransparency) noexcept
 
void Destroy (void)
 Function Destroy deletes the object held by this wrapper. More...
 
SGNODEGetRawPtr (void) noexcept
 Function GetRawPtr() returns the raw internal SGNODE pointer. More...
 
S3D::SGTYPES GetNodeType (void) const
 Function GetNodeType returns the type of this node instance. More...
 
SGNODEGetParent (void) const
 Function GetParent returns a pointer to the parent SGNODE of this object or NULL if the object has no parent (ie. More...
 
bool SetParent (SGNODE *aParent)
 Function SetParent sets the parent SGNODE of this object. More...
 
const char * GetName (void)
 Function GetName returns a pointer to the node name (NULL if no name assigned) More...
 
bool SetName (const char *aName)
 Function SetName sets the node's name; if the pointer passed is NULL then the node's name is erased. More...
 
const char * GetNodeTypeName (S3D::SGTYPES aNodeType) const
 Function GetNodeTypeName returns the text representation of the node type or NULL if the node somehow has an invalid type. More...
 
SGNODEFindNode (const char *aNodeName)
 Function FindNode searches the tree of linked nodes and returns a reference to the first node found with the given name. More...
 
bool AddRefNode (SGNODE *aNode)
 Function AddRefNode adds a reference to an existing node which is not owned by (not a child of) this node. More...
 
bool AddRefNode (IFSG_NODE &aNode)
 
bool AddChildNode (SGNODE *aNode)
 Function AddChildNode adds a node as a child owned by this node. More...
 
bool AddChildNode (IFSG_NODE &aNode)
 

Protected Attributes

SGNODEm_node
 

Detailed Description

Definition at line 34 of file ifsg_appearance.h.

Constructor & Destructor Documentation

◆ IFSG_APPEARANCE() [1/3]

IFSG_APPEARANCE::IFSG_APPEARANCE ( bool  create)

Definition at line 37 of file ifsg_appearance.cpp.

38{
39 m_node = nullptr;
40
41 if( !create )
42 return ;
43
44 m_node = new SGAPPEARANCE( nullptr );
45
47}
SGNODE * m_node
Definition: ifsg_node.h:57
Defines the generic material appearance of a scenegraph object.
Definition: sg_appearance.h:38
void AssociateWrapper(SGNODE **aWrapperRef) noexcept
Associate this object with a handle to itself.
Definition: sg_node.cpp:207

References SGNODE::AssociateWrapper(), and IFSG_NODE::m_node.

◆ IFSG_APPEARANCE() [2/3]

IFSG_APPEARANCE::IFSG_APPEARANCE ( SGNODE aParent)

Definition at line 50 of file ifsg_appearance.cpp.

51{
52 m_node = new SGAPPEARANCE( nullptr );
53
54 if( !m_node->SetParent( aParent ) )
55 {
56 delete m_node;
57 m_node = nullptr;
58
59 wxLogTrace( MASK_3D_SG, wxT( "%s:%s:%d %s" ), __FILE__, __FUNCTION__, __LINE__,
61
62 return;
63 }
64
66}
virtual bool SetParent(SGNODE *aParent, bool notify=true)=0
Set the parent SGNODE of this object.
char WrongParent[]
Definition: ifsg_node.cpp:39

References SGNODE::AssociateWrapper(), IFSG_NODE::m_node, SGNODE::SetParent(), and WrongParent.

◆ IFSG_APPEARANCE() [3/3]

IFSG_APPEARANCE::IFSG_APPEARANCE ( IFSG_NODE aParent)

Definition at line 69 of file ifsg_appearance.cpp.

70{
71 SGNODE* pp = aParent.GetRawPtr();
72
73#ifdef DEBUG
74 if( ! pp )
75 {
76 wxLogTrace( MASK_3D_SG, wxT( "%s:%s:%d %s" ), __FILE__, __FUNCTION__, __LINE__,
77 BadParent );
78 }
79#endif
80
81 m_node = new SGAPPEARANCE( nullptr );
82
83 if( !m_node->SetParent( pp ) )
84 {
85 delete m_node;
86 m_node = nullptr;
87
88 wxLogTrace( MASK_3D_SG, wxT( "%s:%s:%d %s" ), __FILE__, __FUNCTION__, __LINE__,
90
91 return;
92 }
93
95}
SGNODE * GetRawPtr(void) noexcept
Function GetRawPtr() returns the raw internal SGNODE pointer.
Definition: ifsg_node.cpp:65
The base class of all Scene Graph nodes.
Definition: sg_node.h:75
char BadParent[]
Definition: ifsg_node.cpp:38

References SGNODE::AssociateWrapper(), BadParent, IFSG_NODE::GetRawPtr(), IFSG_NODE::m_node, SGNODE::SetParent(), and WrongParent.

Member Function Documentation

◆ AddChildNode() [1/2]

bool IFSG_NODE::AddChildNode ( IFSG_NODE aNode)
inherited

Definition at line 156 of file ifsg_node.cpp.

157{
158 wxCHECK( m_node, false );
159
160 SGNODE* np = aNode.GetRawPtr();
161
162 wxCHECK( np, false );
163
164 return m_node->AddChildNode( np );
165}
virtual bool AddChildNode(SGNODE *aNode)=0

References SGNODE::AddChildNode(), IFSG_NODE::GetRawPtr(), and IFSG_NODE::m_node.

◆ AddChildNode() [2/2]

bool IFSG_NODE::AddChildNode ( SGNODE aNode)
inherited

Function AddChildNode adds a node as a child owned by this node.

Returns
true on success

Definition at line 148 of file ifsg_node.cpp.

149{
150 wxCHECK( m_node, false );
151
152 return m_node->AddChildNode( aNode );
153}

References SGNODE::AddChildNode(), and IFSG_NODE::m_node.

Referenced by SHAPE::CalcShape(), EXPORTER_PCB_VRML::create_vrml_plane(), EXPORTER_PCB_VRML::create_vrml_shell(), EXPORTER_PCB_VRML::ExportVrmlFootprint(), and makeComponents().

◆ AddRefNode() [1/2]

bool IFSG_NODE::AddRefNode ( IFSG_NODE aNode)
inherited

Definition at line 136 of file ifsg_node.cpp.

137{
138 wxCHECK( m_node, false );
139
140 SGNODE* np = aNode.GetRawPtr();
141
142 wxCHECK( np, false );
143
144 return m_node->AddRefNode( np );
145}
virtual bool AddRefNode(SGNODE *aNode)=0

References SGNODE::AddRefNode(), IFSG_NODE::GetRawPtr(), and IFSG_NODE::m_node.

◆ AddRefNode() [2/2]

bool IFSG_NODE::AddRefNode ( SGNODE aNode)
inherited

Function AddRefNode adds a reference to an existing node which is not owned by (not a child of) this node.

Returns
true on success

Definition at line 128 of file ifsg_node.cpp.

129{
130 wxCHECK( m_node, false );
131
132 return m_node->AddRefNode( aNode );
133}

References SGNODE::AddRefNode(), and IFSG_NODE::m_node.

Referenced by SHAPE::CalcShape(), EXPORTER_PCB_VRML::create_vrml_plane(), EXPORTER_PCB_VRML::create_vrml_shell(), EXPORTER_PCB_VRML::ExportVrmlFootprint(), makeComponents(), and vrmlToSG().

◆ Attach()

bool IFSG_APPEARANCE::Attach ( SGNODE aNode)
overridevirtual

Function Attach associates a given SGNODE* with this wrapper.

Implements IFSG_NODE.

Definition at line 98 of file ifsg_appearance.cpp.

99{
100 if( m_node )
102
103 m_node = nullptr;
104
105 if( !aNode )
106 return false;
107
108 if( S3D::SGTYPE_APPEARANCE != aNode->GetNodeType() )
109 {
110 return false;
111 }
112
113 m_node = aNode;
115
116 return true;
117}
S3D::SGTYPES GetNodeType(void) const noexcept
Return the type of this node instance.
Definition: sg_node.cpp:104
void DisassociateWrapper(SGNODE **aWrapperRef) noexcept
Remove the association between an IFSG* wrapper object and this object.
Definition: sg_node.cpp:225
@ SGTYPE_APPEARANCE
Definition: sg_types.h:37

References SGNODE::AssociateWrapper(), SGNODE::DisassociateWrapper(), SGNODE::GetNodeType(), IFSG_NODE::m_node, and S3D::SGTYPE_APPEARANCE.

Referenced by X3DSHAPE::TranslateToSG().

◆ Destroy()

◆ FindNode()

SGNODE * IFSG_NODE::FindNode ( const char *  aNodeName)
inherited

Function FindNode searches the tree of linked nodes and returns 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
Returns
is a valid node pointer on success, otherwise NULL

Definition at line 120 of file ifsg_node.cpp.

121{
122 wxCHECK( m_node, nullptr );
123
124 return m_node->FindNode( aNodeName, nullptr );
125}
virtual SGNODE * FindNode(const char *aNodeName, const SGNODE *aCaller)=0
Search the tree of linked nodes and return a reference to the first node found with the given name.

References SGNODE::FindNode(), and IFSG_NODE::m_node.

◆ GetName()

const char * IFSG_NODE::GetName ( void  )
inherited

Function GetName returns a pointer to the node name (NULL if no name assigned)

Definition at line 95 of file ifsg_node.cpp.

96{
97 wxCHECK( m_node, nullptr );
98
99 return m_node->GetName();
100}
const char * GetName(void)
Definition: sg_node.cpp:146

References SGNODE::GetName(), and IFSG_NODE::m_node.

◆ GetNodeType()

S3D::SGTYPES IFSG_NODE::GetNodeType ( void  ) const
inherited

Function GetNodeType returns the type of this node instance.

Definition at line 71 of file ifsg_node.cpp.

72{
73 wxCHECK( m_node, S3D::SGTYPE_END );
74
75 return m_node->GetNodeType();
76}
@ SGTYPE_END
Definition: sg_types.h:45

References SGNODE::GetNodeType(), IFSG_NODE::m_node, and S3D::SGTYPE_END.

◆ GetNodeTypeName()

const char * IFSG_NODE::GetNodeTypeName ( S3D::SGTYPES  aNodeType) const
inherited

Function GetNodeTypeName returns the text representation of the node type or NULL if the node somehow has an invalid type.

Definition at line 112 of file ifsg_node.cpp.

113{
114 wxCHECK( m_node, nullptr );
115
116 return m_node->GetNodeTypeName( aNodeType );
117}
const char * GetNodeTypeName(S3D::SGTYPES aNodeType) const noexcept
Definition: sg_node.cpp:164

References SGNODE::GetNodeTypeName(), and IFSG_NODE::m_node.

◆ GetParent()

SGNODE * IFSG_NODE::GetParent ( void  ) const
inherited

Function GetParent 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 79 of file ifsg_node.cpp.

80{
81 wxCHECK( m_node, nullptr );
82
83 return m_node->GetParent();
84}
SGNODE * GetParent(void) const noexcept
Returns a pointer to the parent SGNODE of this object or NULL if the object has no parent (ie.
Definition: sg_node.cpp:110

References SGNODE::GetParent(), and IFSG_NODE::m_node.

Referenced by makeComponents().

◆ GetRawPtr()

◆ NewNode() [1/2]

bool IFSG_APPEARANCE::NewNode ( IFSG_NODE aParent)
overridevirtual

Implements IFSG_NODE.

Definition at line 145 of file ifsg_appearance.cpp.

146{
147 SGNODE* np = aParent.GetRawPtr();
148
149 wxCHECK( np, false );
150
151 return NewNode( np );
152}
bool NewNode(SGNODE *aParent) override
Function NewNode creates a new node to associate with this wrapper.

References IFSG_NODE::GetRawPtr(), and NewNode().

◆ NewNode() [2/2]

bool IFSG_APPEARANCE::NewNode ( SGNODE aParent)
overridevirtual

Function NewNode creates a new node to associate with this wrapper.

Implements IFSG_NODE.

Definition at line 120 of file ifsg_appearance.cpp.

121{
122 if( m_node )
124
125 m_node = new SGAPPEARANCE( aParent );
126
127 if( aParent != m_node->GetParent() )
128 {
129 wxLogTrace( MASK_3D_SG,
130 wxT( "%s:%s:%d * [BUG] invalid SGNODE parent (%s) to SGAPPEARANCE" ),
131 __FILE__, __FUNCTION__, __LINE__,
132 aParent->GetNodeTypeName( aParent->GetNodeType() ) );
133
134 delete m_node;
135 m_node = nullptr;
136 return false;
137 }
138
140
141 return true;
142}

References SGNODE::AssociateWrapper(), SGNODE::DisassociateWrapper(), SGNODE::GetNodeType(), SGNODE::GetNodeTypeName(), SGNODE::GetParent(), and IFSG_NODE::m_node.

Referenced by NewNode().

◆ SetAmbient() [1/3]

bool IFSG_APPEARANCE::SetAmbient ( const SGCOLOR aRGBColor)

Definition at line 243 of file ifsg_appearance.cpp.

244{
245 wxCHECK( m_node, false );
246
247 return ( (SGAPPEARANCE*) m_node )->SetAmbient( aRGBColor );
248}

References IFSG_NODE::m_node.

◆ SetAmbient() [2/3]

bool IFSG_APPEARANCE::SetAmbient ( const SGCOLOR aRGBColor)

Definition at line 235 of file ifsg_appearance.cpp.

236{
237 wxCHECK( m_node, false );
238
239 return ( (SGAPPEARANCE*) m_node )->SetAmbient( aRGBColor );
240}

References IFSG_NODE::m_node.

◆ SetAmbient() [3/3]

bool IFSG_APPEARANCE::SetAmbient ( float  aRVal,
float  aGVal,
float  aBVal 
)

Definition at line 227 of file ifsg_appearance.cpp.

228{
229 wxCHECK( m_node, false );
230
231 return ( (SGAPPEARANCE*) m_node )->SetAmbient( aRVal, aGVal, aBVal );
232}

References IFSG_NODE::m_node.

Referenced by WRL1MATERIAL::GetAppearance(), DATA::GetColor(), EXPORTER_PCB_VRML::getSGColor(), WRL2MATERIAL::TranslateToSG(), and X3DAPP::TranslateToSG().

◆ SetDiffuse() [1/3]

bool IFSG_APPEARANCE::SetDiffuse ( const SGCOLOR aRGBColor)

Definition at line 195 of file ifsg_appearance.cpp.

196{
197 wxCHECK( m_node, false );
198
199 return ( (SGAPPEARANCE*) m_node )->SetDiffuse( aRGBColor );
200}

References IFSG_NODE::m_node.

◆ SetDiffuse() [2/3]

bool IFSG_APPEARANCE::SetDiffuse ( const SGCOLOR aRGBColor)

Definition at line 187 of file ifsg_appearance.cpp.

188{
189 wxCHECK( m_node, false );
190
191 return ( (SGAPPEARANCE*) m_node )->SetDiffuse( aRGBColor );
192}

References IFSG_NODE::m_node.

◆ SetDiffuse() [3/3]

bool IFSG_APPEARANCE::SetDiffuse ( float  aRVal,
float  aGVal,
float  aBVal 
)

Definition at line 179 of file ifsg_appearance.cpp.

180{
181 wxCHECK( m_node, false );
182
183 return ( (SGAPPEARANCE*) m_node )->SetDiffuse( aRVal, aGVal, aBVal );
184}

References IFSG_NODE::m_node.

Referenced by WRL1MATERIAL::GetAppearance(), getColor(), DATA::GetColor(), EXPORTER_PCB_VRML::getSGColor(), WRL2APPEARANCE::TranslateToSG(), WRL2MATERIAL::TranslateToSG(), and X3DAPP::TranslateToSG().

◆ SetEmissive() [1/3]

bool IFSG_APPEARANCE::SetEmissive ( const SGCOLOR aRGBColor)

Definition at line 171 of file ifsg_appearance.cpp.

172{
173 wxCHECK( m_node, false );
174
175 return ( (SGAPPEARANCE*) m_node )->SetEmissive( aRGBColor );
176}

References IFSG_NODE::m_node.

◆ SetEmissive() [2/3]

bool IFSG_APPEARANCE::SetEmissive ( const SGCOLOR aRGBColor)

Definition at line 163 of file ifsg_appearance.cpp.

164{
165 wxCHECK( m_node, false );
166
167 return ( (SGAPPEARANCE*) m_node )->SetEmissive( aRGBColor );
168}

References IFSG_NODE::m_node.

◆ SetEmissive() [3/3]

bool IFSG_APPEARANCE::SetEmissive ( float  aRVal,
float  aGVal,
float  aBVal 
)

Definition at line 155 of file ifsg_appearance.cpp.

156{
157 wxCHECK( m_node, false );
158
159 return ( (SGAPPEARANCE*) m_node )->SetEmissive( aRVal, aGVal, aBVal );
160}

References IFSG_NODE::m_node.

Referenced by WRL1MATERIAL::GetAppearance(), WRL2APPEARANCE::TranslateToSG(), WRL2MATERIAL::TranslateToSG(), and X3DAPP::TranslateToSG().

◆ SetName()

bool IFSG_NODE::SetName ( const char *  aName)
inherited

Function SetName sets the node's name; if the pointer passed is NULL then the node's name is erased.

Returns
true on success

Definition at line 103 of file ifsg_node.cpp.

104{
105 wxCHECK( m_node, false );
106
107 m_node->SetName( aName );
108 return true;
109}
void SetName(const char *aName)
Definition: sg_node.cpp:155

References IFSG_NODE::m_node, and SGNODE::SetName().

◆ SetParent()

bool IFSG_NODE::SetParent ( SGNODE aParent)
inherited

Function SetParent sets 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

Definition at line 87 of file ifsg_node.cpp.

88{
89 wxCHECK( m_node, false );
90
91 return m_node->SetParent( aParent );
92}

References IFSG_NODE::m_node, and SGNODE::SetParent().

Referenced by processFace(), and EXPORTER_PCB_VRML::~EXPORTER_PCB_VRML().

◆ SetShininess()

bool IFSG_APPEARANCE::SetShininess ( float  aShininess)
noexcept

Definition at line 251 of file ifsg_appearance.cpp.

252{
253 wxCHECK( m_node, false );
254
255 if( aShininess < 0 || aShininess > 1.0 )
256 {
257 wxLogTrace( MASK_3D_SG, wxT( "%s:%s:%d * [BUG] shininess out of range [0..1]" ),
258 __FILE__, __FUNCTION__, __LINE__ );
259
260 return false;
261 }
262
263 ( (SGAPPEARANCE*) m_node )->shininess = aShininess;
264
265 return true;
266}

Referenced by WRL1MATERIAL::GetAppearance(), getColor(), DATA::GetColor(), EXPORTER_PCB_VRML::getSGColor(), WRL2APPEARANCE::TranslateToSG(), WRL2MATERIAL::TranslateToSG(), and X3DAPP::TranslateToSG().

◆ SetSpecular() [1/3]

bool IFSG_APPEARANCE::SetSpecular ( const SGCOLOR aRGBColor)

Definition at line 219 of file ifsg_appearance.cpp.

220{
221 wxCHECK( m_node, false );
222
223 return ( (SGAPPEARANCE*) m_node )->SetSpecular( aRGBColor );
224}

References IFSG_NODE::m_node.

◆ SetSpecular() [2/3]

bool IFSG_APPEARANCE::SetSpecular ( const SGCOLOR aRGBColor)

Definition at line 211 of file ifsg_appearance.cpp.

212{
213 wxCHECK( m_node, false );
214
215 return ( (SGAPPEARANCE*) m_node )->SetSpecular( aRGBColor );
216}

References IFSG_NODE::m_node.

◆ SetSpecular() [3/3]

bool IFSG_APPEARANCE::SetSpecular ( float  aRVal,
float  aGVal,
float  aBVal 
)

Definition at line 203 of file ifsg_appearance.cpp.

204{
205 wxCHECK( m_node, false );
206
207 return ( (SGAPPEARANCE*) m_node )->SetSpecular( aRVal, aGVal, aBVal );
208}

References IFSG_NODE::m_node.

Referenced by WRL1MATERIAL::GetAppearance(), getColor(), DATA::GetColor(), EXPORTER_PCB_VRML::getSGColor(), WRL2APPEARANCE::TranslateToSG(), WRL2MATERIAL::TranslateToSG(), and X3DAPP::TranslateToSG().

◆ SetTransparency()

bool IFSG_APPEARANCE::SetTransparency ( float  aTransparency)
noexcept

Definition at line 269 of file ifsg_appearance.cpp.

270{
271 wxCHECK( m_node, false );
272
273 if( aTransparency < 0 || aTransparency > 1.0 )
274 {
275 wxLogTrace( MASK_3D_SG, wxT( "%s:%s:%d * [BUG] transparency out of range [0..1]" ),
276 __FILE__, __FUNCTION__, __LINE__ );
277
278 return false;
279 }
280
281 ( (SGAPPEARANCE*) m_node )->transparency = aTransparency;
282
283 return true;
284}

Referenced by WRL1MATERIAL::GetAppearance(), EXPORTER_PCB_VRML::getSGColor(), WRL2APPEARANCE::TranslateToSG(), WRL2MATERIAL::TranslateToSG(), and X3DAPP::TranslateToSG().

Member Data Documentation

◆ m_node

SGNODE* IFSG_NODE::m_node
protectedinherited

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