6 #ifndef MATERIALX_NODE_H
7 #define MATERIALX_NODE_H
67 void setConnectedNode(
const string& inputName,
ConstNodePtr node);
71 NodePtr getConnectedNode(
const string& inputName)
const;
75 void setConnectedNodeName(
const string& inputName,
const string& nodeName);
79 string getConnectedNodeName(
const string& inputName)
const;
104 bool allowRoughMatch =
false)
const;
146 vector<PortElementPtr> getDownstreamPorts()
const;
156 return getNodeDef(
target);
161 InputPtr addInputFromNodeDef(
const string& inputName);
164 void addInputsFromNodeDef();
208 node->setCategory(category);
216 NodePtr node = addNode(nodeDef->getNodeString(),
name, nodeDef->getType());
217 node->setNodeDefString(nodeDef->getName());
224 return getChildOfType<Node>(
name);
231 return getChildrenOfType<Node>(category);
237 vector<NodePtr> nodes;
238 for (
auto node : getNodes())
240 if (node->getType() == nodeType)
242 nodes.push_back(node);
251 removeChildOfType<Node>(
name);
275 return addChild<Backdrop>(
name);
281 return getChildOfType<Backdrop>(
name);
287 return getChildrenOfType<Backdrop>();
293 removeChildOfType<Backdrop>(
name);
311 vector<ElementPtr> topologicalSort()
const;
323 string asStringDot()
const;
343 vector<OutputPtr> getMaterialOutputs()
const;
366 vector<PortElementPtr> getDownstreamPorts()
const;
379 void addInterfaceName(
const string& inputPath,
const string& interfaceName);
383 void removeInterfaceName(
const string& inputPath);
388 void modifyInterfaceName(
const string& inputPath,
const string& interfaceName);
410 Element(parent, CATEGORY, name)
443 setTypedAttribute<float>(WIDTH_ATTRIBUTE,
width);
455 return getTypedAttribute<float>(WIDTH_ATTRIBUTE);
465 setTypedAttribute<float>(HEIGHT_ATTRIBUTE,
height);
477 return getTypedAttribute<float>(HEIGHT_ATTRIBUTE);
485 void setContainsElements(
const vector<ConstTypedElementPtr>& nodes);
488 vector<TypedElementPtr> getContainsElements()
const;
bool hasContainsString() const
Return true if this backdrop has a contains string.
BackdropPtr addBackdrop(const string &name=EMPTY_STRING)
Add a Backdrop to the graph.
GLuint GLsizei const GLchar * message
shared_ptr< Output > OutputPtr
A shared pointer to an Output.
NodeGraph(ElementPtr parent, const string &name)
shared_ptr< NodeDef > NodeDefPtr
#define MATERIALX_NAMESPACE_BEGIN
shared_ptr< const InterfaceElement > ConstInterfaceElementPtr
A shared pointer to a const InterfaceElement.
OutputPtr getConnectedOutput(const string &inputName) const
MATERIALX_NAMESPACE_BEGIN MX_CORE_API const string EMPTY_STRING
static const string HEIGHT_ATTRIBUTE
shared_ptr< const Node > ConstNodePtr
A shared pointer to a const Node.
void removeNode(const string &name)
Remove the Node, if any, with the given name.
shared_ptr< const Backdrop > ConstBackdropPtr
A shared pointer to a const Backdrop.
const string & getAttribute(const string &attrib) const
static const string CATEGORY
static const string CATEGORY
shared_ptr< InterfaceElement > InterfaceElementPtr
A shared pointer to an InterfaceElement.
void setConnectedOutput(const string &inputName, OutputPtr output)
shared_ptr< const GeomPropDef > ConstGeomPropDefPtr
A shared pointer to a const GeomPropDef.
size_t getInputCount() const
Return the number of Input elements.
GraphElement(ElementPtr parent, const string &category, const string &name)
NodePtr getNode(const string &name) const
Return the Node, if any, with the given name.
virtual Edge getUpstreamEdge(size_t index=0) const
GLint GLsizei GLsizei height
Backdrop(ElementPtr parent, const string &name)
size_t getUpstreamEdgeCount() const override
Return the number of queriable upstream edges for this element.
virtual bool validate(string *message=nullptr) const
Node(ElementPtr parent, const string &name)
vector< NodePtr > getNodes(const string &category=EMPTY_STRING) const
vector< BackdropPtr > getBackdrops() const
Return a vector of all Backdrop elements in the graph.
bool hasHeight() const
Return true if this backdrop has a height attribute.
static const string CATEGORY
NodePtr addNode(const string &category, const string &name=EMPTY_STRING, const string &type=DEFAULT_TYPE_STRING)
GLuint const GLchar * name
shared_ptr< const NodeGraph > ConstNodeGraphPtr
A shared pointer to a const NodeGraph.
shared_ptr< Input > InputPtr
A shared pointer to an Input.
MX_CORE_API const string MATERIAL_TYPE_STRING
shared_ptr< const GraphElement > ConstGraphElementPtr
A shared pointer to a const GraphElement.
shared_ptr< Backdrop > BackdropPtr
A shared pointer to a Backdrop.
static const string CONTAINS_ATTRIBUTE
bool hasWidth() const
Return true if this backdrop has a width attribute.
ConstInterfaceElementPtr getDeclaration(const string &target=EMPTY_STRING) const override
void setAttribute(const string &attrib, const string &value)
Set the value string of the given attribute.
MATERIALX_NAMESPACE_BEGIN MX_CORE_API const string DEFAULT_TYPE_STRING
std::function< bool(NodePtr node)> NodePredicate
shared_ptr< const NodeDef > ConstNodeDefPtr
BackdropPtr getBackdrop(const string &name) const
Return the Backdrop, if any, with the given name.
void removeBackdrop(const string &name)
Remove the Backdrop, if any, with the given name.
bool hasAttribute(const string &attrib) const
Return true if the given attribute is present.
shared_ptr< GraphElement > GraphElementPtr
A shared pointer to a GraphElement.
virtual ConstInterfaceElementPtr getDeclaration(const string &target=EMPTY_STRING) const
float getWidth() const
Return the width attribute of the backdrop.
string getContainsString() const
Return the contains string for this backdrop.
void setWidth(float width)
Set the width attribute of the backdrop.
void setContainsString(const string &contains)
Set the contains string for this backdrop.
void setHeight(float height)
Set the height attribute of the backdrop.
shared_ptr< Element > ElementPtr
A shared pointer to an Element.
#define MATERIALX_NAMESPACE_END
shared_ptr< const NodeDef > ConstNodeDefPtr
A shared pointer to a const NodeDef.
vector< NodePtr > getMaterialNodes() const
Return a vector of all material nodes.
NodePtr addNodeInstance(ConstNodeDefPtr nodeDef, const string &name=EMPTY_STRING)
Add a Node that is an instance of the given NodeDef.
bool OIIO_UTIL_API contains(string_view a, string_view b)
Does 'a' contain the string 'b' within it?
shared_ptr< NodeGraph > NodeGraphPtr
A shared pointer to a NodeGraph.
vector< NodePtr > getNodesOfType(const string &nodeType) const
Return a vector of nodes in the graph which have a given type.
InterfaceElementPtr getImplementation(const string &target=EMPTY_STRING) const
static const string WIDTH_ATTRIBUTE
float getHeight() const
Return the height attribute of the backdrop.
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
shared_ptr< Node > NodePtr
A shared pointer to a Node.
shared_ptr< NodeDef > NodeDefPtr
A shared pointer to a NodeDef.