6#ifndef MATERIALX_DOCUMENT
7#define MATERIALX_DOCUMENT
17MATERIALX_NAMESPACE_BEGIN
31class MX_CORE_API Document :
public GraphElement
34 Document(
ElementPtr parent,
const string& name);
40 shared_ptr<T> doc = std::make_shared<T>(
ElementPtr(), EMPTY_STRING);
52 doc->copyContentFrom(
getSelf());
66 _dataLibrary = dataLibrary;
72 return (_dataLibrary !=
nullptr);
137 geomInfo->setGeom(geom);
173 geomPropDef->setGeomProp(geomprop);
344 const string& type = DEFAULT_TYPE_STRING,
345 const string& node = EMPTY_STRING)
348 if (!type.empty() && type != MULTI_OUTPUT_TYPE_STRING)
350 child->addOutput(
"out", type);
354 child->setNodeString(node);
366 const string& category,
const string& newGraphName);
562 throw Exception(
"A unit definition name cannot be empty");
593 throw Exception(
"A unit type definition name cannot be empty");
680 bool validate(
string* message =
nullptr)
const override;
696 bool isDefaultVersion,
const string& nodeGroup,
const string& newGraphName);
699 static const string CATEGORY;
700 static const string CMS_ATTRIBUTE;
701 static const string CMS_CONFIG_ATTRIBUTE;
708 std::unique_ptr<Cache> _cache;
715MATERIALX_NAMESPACE_END
shared_ptr< TargetDef > TargetDefPtr
A shared pointer to a TargetDef.
Definition Definition.h:47
shared_ptr< UnitDef > UnitDefPtr
A shared pointer to a UnitDef.
Definition Definition.h:62
shared_ptr< Implementation > ImplementationPtr
A shared pointer to an Implementation.
Definition Definition.h:37
shared_ptr< AttributeDef > AttributeDefPtr
A shared pointer to an AttributeDef.
Definition Definition.h:72
shared_ptr< UnitTypeDef > UnitTypeDefPtr
A shared pointer to a UnitTypeDef.
Definition Definition.h:67
shared_ptr< const Document > ConstDocumentPtr
A shared pointer to a const Document.
Definition Document.h:24
shared_ptr< Document > DocumentPtr
A shared pointer to a Document.
Definition Document.h:22
shared_ptr< Element > ElementPtr
A shared pointer to an Element.
Definition Element.h:31
shared_ptr< GeomInfo > GeomInfoPtr
A shared pointer to a GeomInfo.
Definition Geom.h:38
shared_ptr< Collection > CollectionPtr
A shared pointer to a Collection.
Definition Geom.h:53
shared_ptr< GeomPropDef > GeomPropDefPtr
A shared pointer to a GeomPropDef.
Definition Geom.h:48
shared_ptr< LookGroup > LookGroupPtr
A shared pointer to a LookGroup.
Definition Look.h:32
shared_ptr< Look > LookPtr
A shared pointer to a Look.
Definition Look.h:27
Import and export declarations for the Core library.
std::set< string > StringSet
A set of strings.
Definition Library.h:64
shared_ptr< NodeGraph > NodeGraphPtr
A shared pointer to a NodeGraph.
Definition Node.h:34
shared_ptr< PropertySet > PropertySetPtr
A shared pointer to a PropertySet.
Definition Property.h:34
shared_ptr< Value > ValuePtr
A shared pointer to a Value.
Definition Value.h:30
shared_ptr< VariantSet > VariantSetPtr
A shared pointer to a VariantSet.
Definition Variant.h:28
A MaterialX document, which represents the top-level element in the MaterialX ownership hierarchy.
Definition Document.h:32
vector< PropertySetPtr > getPropertySets() const
Return a vector of all PropertySet elements in the document.
Definition Document.h:474
TargetDefPtr addTargetDef(const string &name=EMPTY_STRING)
Add an TargetDef to the document.
Definition Document.h:430
void removeLookGroup(const string &name)
Remove the LookGroup, if any, with the given name.
Definition Document.h:261
void removeNodeDef(const string &name)
Remove the NodeDef, if any, with the given name.
Definition Document.h:381
vector< LookPtr > getLooks() const
Return a vector of all Look elements in the document.
Definition Document.h:223
void removeUnitTypeDef(const string &name)
Remove the UnitTypeDef, if any, with the given name.
Definition Document.h:611
void removeVariantSet(const string &name)
Remove the VariantSet, if any, with the given name.
Definition Document.h:512
vector< UnitTypeDefPtr > getUnitTypeDefs() const
Return a vector of all UnitTypeDef elements in the document.
Definition Document.h:605
AttributeDefPtr addAttributeDef(const string &name=EMPTY_STRING)
Add an AttributeDef to the document.
Definition Document.h:398
GeomInfoPtr getGeomInfo(const string &name) const
Return the GeomInfo, if any, with the given name.
Definition Document.h:142
vector< InterfaceElementPtr > getMatchingImplementations(const string &nodeDef) const
Return a vector of all node implementations that match the given NodeDef string.
GeomPropDefPtr getGeomPropDef(const string &name) const
Return the GeomPropDef, if any, with the given name.
Definition Document.h:178
TargetDefPtr getTargetDef(const string &name) const
Return the AttributeDef, if any, with the given name.
Definition Document.h:436
ImplementationPtr getImplementation(const string &name) const
Return the Implementation, if any, with the given name.
Definition Document.h:532
UnitTypeDefPtr getUnitTypeDef(const string &name) const
Return the UnitTypeDef, if any, with the given name.
Definition Document.h:599
void setColorManagementSystem(const string &cms)
Set the color management system string.
Definition Document.h:632
vector< PortElementPtr > getMatchingPorts(const string &nodeName) const
Return a vector of all port elements that match the given node name.
void removeImplementation(const string &name)
Remove the Implementation, if any, with the given name.
Definition Document.h:544
void removeNodeGraph(const string &name)
Remove the NodeGraph, if any, with the given name.
Definition Document.h:114
bool hasColorManagementSystem() const
Return true if a color management system string has been set.
Definition Document.h:638
TypeDefPtr getTypeDef(const string &name) const
Return the TypeDef, if any, with the given name.
Definition Document.h:313
vector< NodeDefPtr > getMatchingNodeDefs(const string &nodeName) const
Return a vector of all NodeDef elements that match the given node name.
CollectionPtr addCollection(const string &name=EMPTY_STRING)
Add a Collection to the document.
Definition Document.h:275
vector< ImplementationPtr > getImplementations() const
Return a vector of all Implementation elements in the document.
Definition Document.h:538
vector< TypeDefPtr > getTypeDefs() const
Return a vector of all TypeDef elements in the document.
Definition Document.h:319
const string & getColorManagementConfig() const
Return the color management config string.
Definition Document.h:666
bool validate(string *message=nullptr) const override
Validate that the given document is consistent with the MaterialX specification.
void removeGeomInfo(const string &name)
Remove the GeomInfo, if any, with the given name.
Definition Document.h:154
vector< NodeGraphPtr > getNodeGraphs() const
Return a vector of all NodeGraph elements in the document.
Definition Document.h:108
NodeDefPtr addNodeDefFromGraph(NodeGraphPtr nodeGraph, const string &nodeDefName, const string &category, const string &newGraphName)
Create a NodeDef and Functional Graph based on a Compound NodeGraph.
vector< UnitDefPtr > getUnitDefs() const
Return a vector of all Member elements in the TypeDef.
Definition Document.h:574
CollectionPtr getCollection(const string &name) const
Return the Collection, if any, with the given name.
Definition Document.h:281
void removeTypeDef(const string &name)
Remove the TypeDef, if any, with the given name.
Definition Document.h:325
static shared_ptr< T > createDocument()
Create a new document of the given subclass.
Definition Document.h:38
bool hasColorManagementConfig() const
Return true if a color management config string has been set.
Definition Document.h:660
vector< TargetDefPtr > getTargetDefs() const
Return a vector of all TargetDef elements in the document.
Definition Document.h:442
GeomPropDefPtr addGeomPropDef(const string &name, const string &geomprop)
Add a GeomPropDef to the document.
Definition Document.h:170
StringSet getReferencedSourceUris() const
Get a list of source URIs referenced by the document.
LookGroupPtr addLookGroup(const string &name=EMPTY_STRING)
Add a LookGroup to the document.
Definition Document.h:243
virtual void initialize()
Initialize the document, removing any existing content.
ConstDocumentPtr getDataLibrary() const
Return the data library, if any, referenced by this document.
Definition Document.h:76
void setColorManagementConfig(const string &cmsConfig)
Set the color management config string.
Definition Document.h:654
void removeTargetDef(const string &name)
Remove the TargetDef, if any, with the given name.
Definition Document.h:448
GeomInfoPtr addGeomInfo(const string &name=EMPTY_STRING, const string &geom=UNIVERSAL_GEOM_NAME)
Add a GeomInfo to the document.
Definition Document.h:134
NodeGraphPtr getNodeGraph(const string &name) const
Return the NodeGraph, if any, with the given name.
Definition Document.h:102
LookPtr addLook(const string &name=EMPTY_STRING)
Add a Look to the document.
Definition Document.h:211
vector< AttributeDefPtr > getAttributeDefs() const
Return a vector of all AttributeDef elements in the document.
Definition Document.h:410
UnitDefPtr getUnitDef(const string &name) const
Return the UnitDef, if any, with the given name.
Definition Document.h:568
void removeLook(const string &name)
Remove the Look, if any, with the given name.
Definition Document.h:229
vector< GeomInfoPtr > getGeomInfos() const
Return a vector of all GeomInfo elements in the document.
Definition Document.h:148
NodeGraphPtr addNodeGraph(const string &name=EMPTY_STRING)
Add a NodeGraph to the document.
Definition Document.h:96
NodeDefPtr addNodeDef(const string &name=EMPTY_STRING, const string &type=DEFAULT_TYPE_STRING, const string &node=EMPTY_STRING)
Add a NodeDef to the document.
Definition Document.h:343
vector< VariantSetPtr > getVariantSets() const
Return a vector of all VariantSet elements in the document.
Definition Document.h:506
VariantSetPtr addVariantSet(const string &name=EMPTY_STRING)
Add a VariantSet to the document.
Definition Document.h:494
NodeDefPtr getNodeDef(const string &name) const
Return the NodeDef, if any, with the given name.
Definition Document.h:369
void upgradeVersion()
Upgrade the content of this document from earlier supported versions to the library version.
AttributeDefPtr getAttributeDef(const string &name) const
Return the AttributeDef, if any, with the given name.
Definition Document.h:404
std::pair< int, int > getVersionIntegers() const override
Return the major and minor versions as an integer pair.
vector< OutputPtr > getMaterialOutputs() const
Return material-type outputs for all nodegraphs in the document.
ImplementationPtr addImplementation(const string &name=EMPTY_STRING)
Add an Implementation to the document.
Definition Document.h:526
void removeAttributeDef(const string &name)
Remove the AttributeDef, if any, with the given name.
Definition Document.h:416
vector< CollectionPtr > getCollections() const
Return a vector of all Collection elements in the document.
Definition Document.h:287
virtual DocumentPtr copy() const
Create a deep copy of the document.
Definition Document.h:49
vector< LookGroupPtr > getLookGroups() const
Return a vector of all LookGroup elements in the document.
Definition Document.h:255
LookGroupPtr getLookGroup(const string &name) const
Return the LookGroup, if any, with the given name.
Definition Document.h:249
PropertySetPtr getPropertySet(const string &name) const
Return the PropertySet, if any, with the given name.
Definition Document.h:468
bool hasDataLibrary() const
Return true if this document has a data library.
Definition Document.h:70
const string & getColorManagementSystem() const
Return the color management system string.
Definition Document.h:644
LookPtr getLook(const string &name) const
Return the Look, if any, with the given name.
Definition Document.h:217
void importLibrary(const ConstDocumentPtr &library)
Import the given data library into this document.
VariantSetPtr getVariantSet(const string &name) const
Return the VariantSet, if any, with the given name.
Definition Document.h:500
void invalidateCache()
Invalidate cached data for optimized lookups within the given document.
vector< GeomPropDefPtr > getGeomPropDefs() const
Return a vector of all GeomPropDef elements in the document.
Definition Document.h:184
void removeCollection(const string &name)
Remove the Collection, if any, with the given name.
Definition Document.h:293
void setDataLibrary(ConstDocumentPtr dataLibrary)
Store a reference to a data library in this document.
Definition Document.h:64
void removeGeomPropDef(const string &name)
Remove the GeomPropDef, if any, with the given name.
Definition Document.h:190
void removeUnitDef(const string &name)
Remove the UnitDef, if any, with the given name.
Definition Document.h:580
vector< NodeDefPtr > getNodeDefs() const
Return a vector of all NodeDef elements in the document.
Definition Document.h:375
TypeDefPtr addTypeDef(const string &name)
Add a TypeDef to the document.
Definition Document.h:307
PropertySetPtr addPropertySet(const string &name=EMPTY_STRING)
Add a PropertySet to the document.
Definition Document.h:462
void removePropertySet(const string &name)
Remove the PropertySet, if any, with the given name.
Definition Document.h:480
ValuePtr getGeomPropValue(const string &geomPropName, const string &geom=UNIVERSAL_GEOM_NAME) const
Return the value of a geometric property for the given geometry string.
const string & getAttribute(const string &attrib) const
Return the value string of the given attribute.
Definition Element.h:489
shared_ptr< T > addChild(const string &name=EMPTY_STRING)
Add a child element of the given subclass and name.
Definition Element.h:1399
void setAttribute(const string &attrib, const string &value)
Set the value string of the given attribute.
shared_ptr< T > getChildOfType(const string &name) const
Return the child element, if any, with the given name and subclass.
ElementPtr getSelf()
Return our self pointer.
Definition Element.h:535
bool hasAttribute(const string &attrib) const
Return true if the given attribute is present.
Definition Element.h:482
void removeChildOfType(const string &name)
Remove the child element, if any, with the given name and subclass.
Definition Element.h:468
vector< shared_ptr< T > > getChildrenOfType(const string &category=EMPTY_STRING) const
Return a vector of all child elements that are instances of the given subclass, optionally filtered b...
The base class for exceptions that are propagated from the MaterialX library to the client applicatio...
Definition Exception.h:22