// // Copyright Contributors to the MaterialX Project // SPDX-License-Identifier: Apache-2.0 // #include #include #include #include namespace ems = emscripten; namespace mx = MaterialX; // The following 3 functions should not be necessary, but due to unexpected behaviour of emscripten, // it reports signature mismatches if the functions are bound directly mx::LinearUnitConverterPtr LinearUnitConverterCreate(mx::UnitTypeDefPtr unitTypeDef) { return mx::LinearUnitConverter::create(unitTypeDef); } mx::UnitConverterPtr UnitConverterRegistryGetUnitConverter(mx::UnitConverterRegistry& registry,mx::UnitTypeDefPtr def){ return registry.getUnitConverter(def); } mx::UnitConverterRegistryPtr UnitConverterRegistrycreate() { return mx::UnitConverterRegistry::create(); } EMSCRIPTEN_BINDINGS(unit) { ems::class_("UnitConverter") .smart_ptr>("UnitConverter") .smart_ptr>("UnitConverter") .function("convertFloat", ems::select_overload(&mx::UnitConverter::convert)) .function("getUnitAsInteger", &mx::UnitConverter::getUnitAsInteger) .function("getUnitFromInteger", &mx::UnitConverter::getUnitFromInteger) .function("convertVector2", ems::select_overload(&mx::UnitConverter::convert)) .function("convertVector3", ems::select_overload(&mx::UnitConverter::convert)) .function("convertVector4", ems::select_overload(&mx::UnitConverter::convert)) .function("write", &mx::UnitConverter::write, ems::pure_virtual()); ems::class_>("LinearUnitConverter") .smart_ptr>("LinearUnitConverter") .smart_ptr>("LinearUnitConverter") .class_function("create", &LinearUnitConverterCreate) .function("getUnitType", &mx::LinearUnitConverter::getUnitType) .function("write", &mx::LinearUnitConverter::write) .function("getUnitScale", &mx::LinearUnitConverter::getUnitScale) .function("conversionRatio", &mx::LinearUnitConverter::conversionRatio) .function("convertFloat", ems::select_overload(&mx::LinearUnitConverter::convert)) .function("convertVector2", ems::select_overload(&mx::LinearUnitConverter::convert)) .function("convertVector3", ems::select_overload(&mx::LinearUnitConverter::convert)) .function("convertVector4", ems::select_overload(&mx::LinearUnitConverter::convert)) .function("getUnitAsInteger", &mx::LinearUnitConverter::getUnitAsInteger) .function("getUnitFromInteger", &mx::LinearUnitConverter::getUnitFromInteger); ems::class_("UnitConverterRegistry") .smart_ptr>("UnitConverterRegistry") .smart_ptr>("UnitConverterRegistry") .class_function("create", &UnitConverterRegistrycreate) .function("addUnitConverter", &mx::UnitConverterRegistry::addUnitConverter) .function("removeUnitConverter", &mx::UnitConverterRegistry::removeUnitConverter) .function("getUnitConverter", &UnitConverterRegistryGetUnitConverter) .function("clearUnitConverters", &mx::UnitConverterRegistry::clearUnitConverters) .function("getUnitAsInteger", &mx::UnitConverterRegistry::getUnitAsInteger) .function("write", &mx::UnitConverterRegistry::write); }