MaterialX 1.38.2
Variant.h
Go to the documentation of this file.
1//
2// TM & (c) 2017 Lucasfilm Entertainment Company Ltd. and Lucasfilm Ltd.
3// All rights reserved. See LICENSE.txt for license.
4//
5
6#ifndef MATERIALX_VARIANT_H
7#define MATERIALX_VARIANT_H
8
11
13
15
16namespace MaterialX
17{
18
19class Variant;
20class VariantSet;
21class VariantAssign;
22
24using VariantPtr = shared_ptr<Variant>;
26using ConstVariantPtr = shared_ptr<const Variant>;
27
29using VariantSetPtr = shared_ptr<VariantSet>;
31using ConstVariantSetPtr = shared_ptr<const VariantSet>;
32
34using VariantAssignPtr = shared_ptr<VariantAssign>;
36using ConstVariantAssignPtr = shared_ptr<const VariantAssign>;
37
40class MX_CORE_API Variant : public InterfaceElement
41{
42 public:
43 Variant(ElementPtr parent, const string& name) :
44 InterfaceElement(parent, CATEGORY, name)
45 {
46 }
47 virtual ~Variant() { }
48
49 public:
50 static const string CATEGORY;
51};
52
55class MX_CORE_API VariantSet : public Element
56{
57 public:
58 VariantSet(ElementPtr parent, const string& name) :
59 Element(parent, CATEGORY, name)
60 {
61 }
62 virtual ~VariantSet() { }
63
66
72 VariantPtr addVariant(const string& name = EMPTY_STRING)
73 {
74 return addChild<Variant>(name);
75 }
76
78 VariantPtr getVariant(const string& name) const
79 {
80 return getChildOfType<Variant>(name);
81 }
82
84 vector<VariantPtr> getVariants() const
85 {
86 return getChildrenOfType<Variant>();
87 }
88
90 void removeVariant(const string& name)
91 {
92 removeChildOfType<Variant>(name);
93 }
94
96
97 public:
98 static const string CATEGORY;
99};
100
105class MX_CORE_API VariantAssign : public Element
106{
107 public:
108 VariantAssign(ElementPtr parent, const string& name) :
109 Element(parent, CATEGORY, name)
110 {
111 }
112 virtual ~VariantAssign() { }
113
116
118 void setVariantSetString(const string& variantSet)
119 {
120 setAttribute(VARIANT_SET_ATTRIBUTE, variantSet);
121 }
122
125 {
126 return hasAttribute(VARIANT_SET_ATTRIBUTE);
127 }
128
130 const string& getVariantSetString() const
131 {
132 return getAttribute(VARIANT_SET_ATTRIBUTE);
133 }
134
138
140 void setVariantString(const string& variant)
141 {
142 setAttribute(VARIANT_ATTRIBUTE, variant);
143 }
144
146 bool hasVariantString() const
147 {
148 return hasAttribute(VARIANT_ATTRIBUTE);
149 }
150
152 const string& getVariantString() const
153 {
154 return getAttribute(VARIANT_ATTRIBUTE);
155 }
156
158
159public:
160 static const string CATEGORY;
161 static const string VARIANT_SET_ATTRIBUTE;
162 static const string VARIANT_ATTRIBUTE;
163};
164
165} // namespace MaterialX
166
167#endif
shared_ptr< Element > ElementPtr
A shared pointer to an Element.
Definition: Element.h:31
Interface element subclasses.
Import and export declarations for the Core library.
shared_ptr< VariantSet > VariantSetPtr
A shared pointer to a VariantSet.
Definition: Variant.h:29
shared_ptr< const VariantAssign > ConstVariantAssignPtr
A shared pointer to a const VariantAssign.
Definition: Variant.h:36
shared_ptr< const Variant > ConstVariantPtr
A shared pointer to a const Variant.
Definition: Variant.h:26
shared_ptr< Variant > VariantPtr
A shared pointer to a Variant.
Definition: Variant.h:24
shared_ptr< const VariantSet > ConstVariantSetPtr
A shared pointer to a const VariantSet.
Definition: Variant.h:31
shared_ptr< VariantAssign > VariantAssignPtr
A shared pointer to a VariantAssign.
Definition: Variant.h:34
The base class for MaterialX elements.
Definition: Element.h:75
The base class for interface elements such as Node, NodeDef, and NodeGraph.
Definition: Interface.h:317
A variant assignment element within a Look.
Definition: Variant.h:106
bool hasVariantString() const
Return true if the given element has a variant string.
Definition: Variant.h:146
void setVariantString(const string &variant)
Set the element's variant string.
Definition: Variant.h:140
void setVariantSetString(const string &variantSet)
Set the element's variant set string.
Definition: Variant.h:118
const string & getVariantString() const
Return the element's variant string.
Definition: Variant.h:152
const string & getVariantSetString() const
Return the element's variant set string.
Definition: Variant.h:130
bool hasVariantSetString() const
Return true if the given element has a variant set string.
Definition: Variant.h:124
A variant element within a VariantSet.
Definition: Variant.h:41
A variant set element within a Document.
Definition: Variant.h:56
VariantPtr getVariant(const string &name) const
Return the Variant, if any, with the given name.
Definition: Variant.h:78
vector< VariantPtr > getVariants() const
Return a vector of all Variant elements in the look.
Definition: Variant.h:84
void removeVariant(const string &name)
Remove the Variant, if any, with the given name.
Definition: Variant.h:90
VariantPtr addVariant(const string &name=EMPTY_STRING)
Add a Variant to the variant set.
Definition: Variant.h:72