Files
SDL3CPlusPlus/MaterialX/source/JsMaterialX/JsMaterialXFormat/JsXmlIo.cpp
2026-01-06 13:25:49 +00:00

47 lines
1.9 KiB
C++

//
// Copyright Contributors to the MaterialX Project
// SPDX-License-Identifier: Apache-2.0
//
#include <JsMaterialX/Helpers.h>
#include "./StrContainerTypeRegistration.h"
#include <MaterialXFormat/XmlIo.h>
#include <emscripten/bind.h>
namespace ems = emscripten;
namespace mx = MaterialX;
EMSCRIPTEN_BINDINGS(xmlio)
{
ems::function("getMtlxExtension", ems::optional_override([](){ return mx::MTLX_EXTENSION; }));
ems::class_<mx::XmlReadOptions>("XmlReadOptions")
.constructor<>()
.property<bool>("readXIncludes",
[](const mx::XmlReadOptions &self) {
return self.readXIncludeFunction == nullptr;
},
[](mx::XmlReadOptions &self, bool useIncludes) {
if (useIncludes) {
self.readXIncludeFunction = &mx::readFromXmlFile;
} else {
self.readXIncludeFunction = nullptr;
}
})
.property("readComments", &mx::XmlReadOptions::readComments)
.property("upgradeVersion", &mx::XmlReadOptions::upgradeVersion)
.property("parentXIncludes", &mx::XmlReadOptions::parentXIncludes);
ems::class_<mx::XmlWriteOptions>("XmlWriteOptions")
.constructor<>()
.property("writeXIncludeEnable", &mx::XmlWriteOptions::writeXIncludeEnable);
BIND_FUNC_RAW_PTR("_readFromXmlFile", mx::readFromXmlFile, 2, 4, mx::DocumentPtr, mx::FilePath,
mx::FileSearchPath, const mx::XmlReadOptions*);
BIND_FUNC_RAW_PTR("writeToXmlFile", mx::writeToXmlFile, 2, 3, mx::DocumentPtr, const mx::FilePath&, const mx::XmlWriteOptions *);
BIND_FUNC_RAW_PTR("readFromXmlString", mx::readFromXmlString, 2, 4, mx::DocumentPtr,
const mx::string&, const mx::FileSearchPath&, const mx::XmlReadOptions *);
BIND_FUNC_RAW_PTR("writeToXmlString", mx::writeToXmlString, 1, 2, mx::DocumentPtr, const mx::XmlWriteOptions *);
ems::function("prependXInclude", &mx::prependXInclude);
}