Converter class to transform MaterialX document objects into Protobuf MaterialXDocument messages.
More...
#include <materialx_serializer.h>
|
| MaterialXDocument | convert (mx::DocumentPtr doc) |
| | Convert a MaterialX document object to a Protobuf MaterialXDocument message.
|
| |
|
| MaterialXElement | convertElement (mx::ElementPtr mx_elem) |
| | Recursively convert a MaterialX element to a Protobuf MaterialXElement.
|
| |
Converter class to transform MaterialX document objects into Protobuf MaterialXDocument messages.
- Traverses the MaterialX document structure and constructs the corresponding Protobuf message hierarchy.
- Handles attributes and child elements recursively.
- Usage: MaterialXToProtobuf converter; MaterialXDocument pb_doc = converter.convert(mx_doc);
- Where
mx_doc is a MaterialX document pointer.
◆ convert()
| MaterialXDocument MaterialXToProtobuf::convert |
( |
mx::DocumentPtr | doc | ) |
|
Convert a MaterialX document object to a Protobuf MaterialXDocument message.
- Parameters
-
| doc | The MaterialX document pointer to convert. |
- Returns
- The resulting Protobuf MaterialXDocument message.
16 {
17 MaterialXDocument pb_doc;
18
19
20 Version* version = pb_doc.mutable_schema_version();
24
25
26 for (const std::string& name : doc->getAttributeNames()) {
27 Attribute* attr = pb_doc.add_attributes();
28 attr->set_key(name);
29 attr->set_value(doc->getAttribute(name));
30 }
31
32
33 for (mx::ElementPtr child : doc->getChildren()) {
34 MaterialXElement* pb_element = pb_doc.add_elements();
36 }
37
38 return pb_doc;
39}
MaterialXElement convertElement(mx::ElementPtr mx_elem)
Recursively convert a MaterialX element to a Protobuf MaterialXElement.
Definition materialx_serializer.cpp:41
constexpr uint32_t SCHEMA_VERSION_MAJOR
Definition materialx_serializer.h:24
constexpr uint32_t SCHEMA_VERSION_PATCH
Definition materialx_serializer.h:26
constexpr uint32_t SCHEMA_VERSION_MINOR
Definition materialx_serializer.h:25
◆ convertElement()
| MaterialXElement MaterialXToProtobuf::convertElement |
( |
mx::ElementPtr | mx_elem | ) |
|
|
private |
Recursively convert a MaterialX element to a Protobuf MaterialXElement.
- Parameters
-
| mx_elem | The MaterialX element to convert. |
- Returns
- The resulting Protobuf MaterialXElement message.
41 {
42 MaterialXElement pb_elem;
43
44 pb_elem.set_name(mx_elem->getName());
45 pb_elem.set_type(mx_elem->getCategory());
46
47
48 for (const std::string& name : mx_elem->getAttributeNames()) {
49 Attribute* attr = pb_elem.add_attributes();
50 attr->set_key(name);
51 attr->set_value(mx_elem->getAttribute(name));
52 }
53
54
55 for (mx::ElementPtr child : mx_elem->getChildren()) {
56 MaterialXElement* pb_child = pb_elem.add_children();
58 }
59
60 return pb_elem;
61}
The documentation for this class was generated from the following files: