10#ifndef MATERIALX_SERIALIZER_H
11#define MATERIALX_SERIALIZER_H
13#include <MaterialXCore/Document.h>
14#include <MaterialXCore/Element.h>
15#include <MaterialXFormat/XmlIo.h>
16#include "materialx.pb.h"
21namespace mx = MaterialX;
45 MaterialXDocument
convert(mx::DocumentPtr doc);
74 mx::DocumentPtr
convert(
const MaterialXDocument& pb_doc);
90 mx::ElementPtr
convertElement(
const MaterialXElement& pb_elem, mx::ElementPtr parent);
106 static MaterialXDocument
fromString(
const std::string& data);
113 static std::string
toString(
const MaterialXDocument& pb_doc);
121 static std::string
toJson(
const MaterialXDocument& pb_doc,
int indent = 2);
128 static void debugInspect(
const MaterialXDocument& pb_doc,
int max_depth = 10);
151 static void printElement(
const MaterialXElement& element,
int depth,
int max_depth);
152 static void printElementCompact(
const MaterialXElement& element,
int depth,
int max_depth);
153 static void printTree(
const MaterialXElement& element,
const std::string& prefix,
bool is_last);
154 static void addMermaidElements(
const MaterialXElement& element, std::vector<std::string>& lines);
188 static int compareVersions(uint32_t v1_major, uint32_t v1_minor, uint32_t v1_patch,
189 uint32_t v2_major, uint32_t v2_minor, uint32_t v2_patch);
Converter class to transform MaterialX document objects into Protobuf MaterialXDocument messages.
Definition materialx_serializer.h:38
MaterialXDocument convert(mx::DocumentPtr doc)
Convert a MaterialX document object to a Protobuf MaterialXDocument message.
Definition materialx_serializer.cpp:16
MaterialXElement convertElement(mx::ElementPtr mx_elem)
Recursively convert a MaterialX element to a Protobuf MaterialXElement.
Definition materialx_serializer.cpp:41
Converter class to transform Protobuf MaterialXDocument messages back into MaterialX document objects...
Definition materialx_serializer.h:67
mx::DocumentPtr checkVersionAndUpgrade(const MaterialXDocument &pb_doc)
Check schema version and perform upgrades if necessary.
Definition materialx_serializer.cpp:84
mx::DocumentPtr convert(const MaterialXDocument &pb_doc)
Convert a Protobuf MaterialXDocument message to a MaterialX document object.
Definition materialx_serializer.cpp:67
mx::ElementPtr convertElement(const MaterialXElement &pb_elem, mx::ElementPtr parent)
Recursively convert a Protobuf MaterialXElement to a MaterialX element.
Definition materialx_serializer.cpp:119
Utility class for inspecting and debugging Protobuf MaterialXDocument messages.
Definition materialx_serializer.h:99
static void printElementCompact(const MaterialXElement &element, int depth, int max_depth)
Definition materialx_serializer.cpp:224
static std::string toJson(const MaterialXDocument &pb_doc, int indent=2)
Convert Protobuf document to JSON string.
Definition materialx_serializer.cpp:156
static std::string generateMermaidDiagram(const MaterialXDocument &pb_doc)
Generate a Mermaid diagram from protobuf document hierarchy.
Definition materialx_serializer.cpp:290
static MaterialXDocument fromString(const std::string &data)
Parse binary data to create Protobuf document.
Definition materialx_serializer.cpp:140
static std::string toString(const MaterialXDocument &pb_doc)
Serialize Protobuf document to binary string.
Definition materialx_serializer.cpp:148
static void debugInspect(const MaterialXDocument &pb_doc, int max_depth=10)
Print detailed document structure with attributes and children.
Definition materialx_serializer.cpp:166
static void printTree(const MaterialXElement &element, const std::string &prefix, bool is_last)
Definition materialx_serializer.cpp:276
static void addMermaidElements(const MaterialXElement &element, std::vector< std::string > &lines)
Definition materialx_serializer.cpp:306
static void debugInspectCompact(const MaterialXDocument &pb_doc, int max_depth=10)
Print compact document structure.
Definition materialx_serializer.cpp:205
static void printElement(const MaterialXElement &element, int depth, int max_depth)
Definition materialx_serializer.cpp:185
static void debugInspectSimple(const MaterialXDocument &pb_doc)
Print simple tree structure of document.
Definition materialx_serializer.cpp:256
Handles schema version upgrades for MaterialX protobuf documents.
Definition build/lib/materialx_serializer.py:324
static int compareVersions(uint32_t v1_major, uint32_t v1_minor, uint32_t v1_patch, uint32_t v2_major, uint32_t v2_minor, uint32_t v2_patch)
Compare two versions.
Definition materialx_serializer.cpp:350
static void upgradeV1ToV2(MaterialXDocument &pb_doc)
Example upgrade from version 1.x to 2.x.
Definition materialx_serializer.cpp:335
static std::string getVersionString(const MaterialXDocument &pb_doc)
Get version as a string (e.g., "1.0.0")
Definition materialx_serializer.cpp:340
static void upgradeV0ToV1(MaterialXDocument &pb_doc)
Example upgrade from version 0.x to 1.x.
Definition materialx_serializer.cpp:330
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