Allow passing buffer to serializers that support it

This commit is contained in:
Thomas Krijnen
2026-05-09 21:03:15 +02:00
parent 0d8e9f0edc
commit 2eb2d65710
7 changed files with 88 additions and 2 deletions
+10
View File
@@ -50,6 +50,16 @@ plugin::metadata plugin_metadata() {
}
boost::shared_ptr<GeometrySerializer> create_serializer(const geometry_serializer_context& context) {
if (context.output_temp_stream || context.output_stream) {
stream_or_filename obj_filename = context.output_temp_stream
? *context.output_temp_stream
: stream_or_filename(context.output_temp_filename);
stream_or_filename mtl_filename = context.output_stream
? *context.output_stream
: stream_or_filename(obj_mtl_filename(context.output_filename));
return boost::make_shared<WaveFrontOBJSerializer>(
obj_filename, mtl_filename, context.geometry_settings, context.serializer_settings);
}
return boost::make_shared<WaveFrontOBJSerializer>(context.output_temp_filename, obj_mtl_filename(context.output_filename), context.geometry_settings, context.serializer_settings);
}
@@ -54,6 +54,8 @@ struct SERIALIZERS_API geometry_serializer_context {
std::string output_temp_filename;
ifcopenshell::geometry::Settings& geometry_settings;
const ifcopenshell::geometry::SerializerSettings& serializer_settings;
const stream_or_filename* output_stream = nullptr;
const stream_or_filename* output_temp_stream = nullptr;
};
class SERIALIZERS_API geometry_serializer_registry {
+4
View File
@@ -38,6 +38,10 @@ plugin::metadata plugin_metadata() {
}
boost::shared_ptr<GeometrySerializer> create_serializer(const geometry_serializer_context& context) {
if (context.output_temp_stream) {
return boost::make_shared<SvgSerializer>(
*context.output_temp_stream, context.geometry_settings, context.serializer_settings);
}
return boost::make_shared<SvgSerializer>(context.output_temp_filename, context.geometry_settings, context.serializer_settings);
}
+4
View File
@@ -36,6 +36,10 @@ plugin::metadata plugin_metadata() {
}
boost::shared_ptr<GeometrySerializer> create_serializer(const geometry_serializer_context& context) {
if (context.output_temp_stream) {
return boost::make_shared<TtlWktSerializer>(
*context.output_temp_stream, context.geometry_settings, context.serializer_settings);
}
return boost::make_shared<TtlWktSerializer>(context.output_temp_filename, context.geometry_settings, context.serializer_settings);
}