From b3a958245595f2d3a772ac5ab3ef9d74a99c99ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Fri, 11 Nov 2022 17:44:43 +0100 Subject: [PATCH] Trade: add verbose output for SceneConverter::addImporterContents(). Because otherwise it's impossible to know the progress when converting a file with 1700 4K PNG textures. --- .../SceneTools/Test/SceneConverterTest.cpp | 26 ++- src/Magnum/Trade/AbstractSceneConverter.cpp | 48 +++++ .../Trade/Test/AbstractSceneConverterTest.cpp | 173 ++++++++++++++---- 3 files changed, 205 insertions(+), 42 deletions(-) diff --git a/src/Magnum/SceneTools/Test/SceneConverterTest.cpp b/src/Magnum/SceneTools/Test/SceneConverterTest.cpp index b402379de..73ad71919 100644 --- a/src/Magnum/SceneTools/Test/SceneConverterTest.cpp +++ b/src/Magnum/SceneTools/Test/SceneConverterTest.cpp @@ -103,7 +103,7 @@ const struct { }; const struct { - const char* name; + TestSuite::TestCaseDescriptionSourceLocation name; Containers::Array args; const char* requiresImporter; const char* requiresImporter2; @@ -233,7 +233,8 @@ const struct { /* There should be a minimal difference compared to the original */ "two-quads.gltf", "two-quads.bin", "Mesh 0 duplicate removal: 5 -> 4 vertices\n" - "Mesh 1 duplicate removal: 6 -> 4 vertices\n"}, + "Mesh 1 duplicate removal: 6 -> 4 vertices\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding scene 0 out of 1\n"}, {"one implicit mesh, remove duplicate vertices fuzzy", Containers::array({ "--remove-duplicate-vertices-fuzzy", "1.0e-1", Utility::Path::join(SCENETOOLS_TEST_DIR, "SceneConverterTestFiles/quad-duplicates-fuzzy.obj"), Utility::Path::join(SCENETOOLS_TEST_OUTPUT_DIR, "SceneConverterTestFiles/quad.ply")}), @@ -268,7 +269,8 @@ const struct { "GltfImporter", nullptr, "GltfSceneConverter", {}, nullptr, "two-quads.gltf", "two-quads.bin", "Mesh 0 fuzzy duplicate removal: 5 -> 4 vertices\n" - "Mesh 1 fuzzy duplicate removal: 6 -> 4 vertices\n"}, + "Mesh 1 fuzzy duplicate removal: 6 -> 4 vertices\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding scene 0 out of 1\n"}, {"one implicit mesh, two converters", Containers::array({ "-C", "MeshOptimizerSceneConverter", Utility::Path::join(SCENETOOLS_TEST_DIR, "SceneConverterTestFiles/quad-strip.gltf"), Utility::Path::join(SCENETOOLS_TEST_OUTPUT_DIR, "SceneConverterTestFiles/quad.gltf")}), @@ -291,6 +293,7 @@ const struct { of MeshOptimizerSceneConverter got actually passed further and not discarded */ "Trade::AnySceneImporter::openFile(): using GltfImporter\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding mesh 0 out of 1\n" "Trade::MeshOptimizerSceneConverter::convert(): processing stats:\n" " vertex cache:\n" " 4 -> 4 transformed vertices\n" @@ -304,7 +307,8 @@ const struct { " 65536 -> 65536 shaded pixels\n" " 65536 -> 65536 covered pixels\n" " overdraw 1 -> 1\n" - "Trade::AnySceneConverter::beginFile(): using GltfSceneConverter\n"}, + "Trade::AnySceneConverter::beginFile(): using GltfSceneConverter\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding mesh 0 out of 1\n"}, {"one implicit mesh, two converters, explicit last, verbose", Containers::array({ "-C", "MeshOptimizerSceneConverter", "-C", "GltfSceneConverter", "-v", Utility::Path::join(SCENETOOLS_TEST_DIR, "SceneConverterTestFiles/quad-strip.gltf"), Utility::Path::join(SCENETOOLS_TEST_OUTPUT_DIR, "SceneConverterTestFiles/quad.gltf")}), @@ -315,6 +319,7 @@ const struct { option the verbose output includes a progress info */ "Trade::AnySceneImporter::openFile(): using GltfImporter\n" "Processing (1/2) with MeshOptimizerSceneConverter...\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding mesh 0 out of 1\n" "Trade::MeshOptimizerSceneConverter::convert(): processing stats:\n" " vertex cache:\n" " 4 -> 4 transformed vertices\n" @@ -328,7 +333,8 @@ const struct { " 65536 -> 65536 shaded pixels\n" " 65536 -> 65536 covered pixels\n" " overdraw 1 -> 1\n" - "Saving output (2/2) with GltfSceneConverter...\n"}, + "Saving output (2/2) with GltfSceneConverter...\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding mesh 0 out of 1\n"}, {"one implicit mesh, two converters, options for the first only", Containers::array({ "-C", "MeshOptimizerSceneConverter", "-c", "nonexistentMeshOptimizerOption=yes", @@ -389,7 +395,8 @@ const struct { " 65536 -> 65536 shaded pixels\n" " 65536 -> 65536 covered pixels\n" " overdraw 1 -> 1\n" - "Trade::AnySceneConverter::beginFile(): using StanfordSceneConverter\n"}, + "Trade::AnySceneConverter::beginFile(): using StanfordSceneConverter\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding mesh 0 out of 1\n"}, {"implicit custom-processed mesh with a name and custom attributes", Containers::array({ /* Removing the generator identifier to have the file closer to the original */ @@ -459,7 +466,8 @@ const struct { " overdraw:\n" " 65536 -> 65536 shaded pixels\n" " 65536 -> 65536 covered pixels\n" - " overdraw 1 -> 1\n"}, + " overdraw 1 -> 1\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding scene 0 out of 1\n"}, {"two mesh converters, two options, one mesh, verbose", Containers::array({ "-I", "GltfImporter", "-C", "GltfSceneConverter", "-M", "MeshOptimizerSceneConverter", @@ -566,7 +574,9 @@ const struct { "Trade::AnyImageImporter::openFile(): using KtxImporter\n" "Processing 3D image 0 with StbResizeImageConverter...\n" "Trade::AnyImageImporter::openFile(): using KtxImporter\n" - "Processing 3D image 1 with StbResizeImageConverter...\n"}, + "Processing 3D image 1 with StbResizeImageConverter...\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding texture 0 out of 2\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding texture 1 out of 2\n"}, }; const struct { diff --git a/src/Magnum/Trade/AbstractSceneConverter.cpp b/src/Magnum/Trade/AbstractSceneConverter.cpp index 2f316647d..94b7e56b6 100644 --- a/src/Magnum/Trade/AbstractSceneConverter.cpp +++ b/src/Magnum/Trade/AbstractSceneConverter.cpp @@ -1284,6 +1284,9 @@ bool AbstractSceneConverter::addImporterContentsInternal(AbstractImporter& impor if(contents & SceneContent::Meshes) { Containers::Array levels; for(UnsignedInt i = 0, iMax = importer.meshCount(); i != iMax; ++i) { + if(flags() & SceneConverterFlag::Verbose) + Debug{} << "Trade::AbstractSceneConverter::addImporterContents(): adding mesh" << i << "out of" << iMax; + UnsignedInt levelCount = contents & SceneContent::MeshLevels ? importer.meshLevelCount(i) : 1; if(levelCount != 1 && !(contentsSupported & SceneContent::MeshLevels)) { if(noLevelsIfUnsupported) { @@ -1300,6 +1303,9 @@ bool AbstractSceneConverter::addImporterContentsInternal(AbstractImporter& impor arrayReserve(levels, levelCount); arrayResize(levels, NoInit, 0); /** @todo arrayClear() */ for(UnsignedInt j = 0; j != levelCount; ++j) { + if((flags() & SceneConverterFlag::Verbose) && levelCount != 1) + Debug{} << "Trade::AbstractSceneConverter::addImporterContents(): importing mesh" << i << "level" << j << "out of" << levelCount; + Containers::Optional mesh = importer.mesh(i, j); if(!mesh) return false; @@ -1333,6 +1339,9 @@ bool AbstractSceneConverter::addImporterContentsInternal(AbstractImporter& impor if(contents & SceneContent::Images1D) { Containers::Array levels; for(UnsignedInt i = 0, iMax = importer.image1DCount(); i != iMax; ++i) { + if(flags() & SceneConverterFlag::Verbose) + Debug{} << "Trade::AbstractSceneConverter::addImporterContents(): adding 1D image" << i << "out of" << iMax; + UnsignedInt levelCount = contents & SceneContent::ImageLevels ? importer.image1DLevelCount(i) : 1; if(levelCount != 1 && !(contentsSupported & SceneContent::ImageLevels)) { if(noLevelsIfUnsupported) { @@ -1350,6 +1359,9 @@ bool AbstractSceneConverter::addImporterContentsInternal(AbstractImporter& impor arrayReserve(levels, levelCount); arrayResize(levels, NoInit, 0); /** @todo arrayClear() */ for(UnsignedInt j = 0; j != levelCount; ++j) { + if((flags() & SceneConverterFlag::Verbose) && levelCount != 1) + Debug{} << "Trade::AbstractSceneConverter::addImporterContents(): importing 1D image" << i << "level" << j << "out of" << levelCount; + Containers::Optional image = importer.image1D(i, j); if(!image) return false; @@ -1380,6 +1392,9 @@ bool AbstractSceneConverter::addImporterContentsInternal(AbstractImporter& impor if(contents & SceneContent::Images2D) { Containers::Array levels; for(UnsignedInt i = 0, iMax = importer.image2DCount(); i != iMax; ++i) { + if(flags() & SceneConverterFlag::Verbose) + Debug{} << "Trade::AbstractSceneConverter::addImporterContents(): adding 2D image" << i << "out of" << iMax; + UnsignedInt levelCount = contents & SceneContent::ImageLevels ? importer.image2DLevelCount(i) : 1; if(levelCount != 1 && !(contentsSupported & SceneContent::ImageLevels)) { if(noLevelsIfUnsupported) { @@ -1397,6 +1412,9 @@ bool AbstractSceneConverter::addImporterContentsInternal(AbstractImporter& impor arrayReserve(levels, levelCount); arrayResize(levels, NoInit, 0); /** @todo arrayClear() */ for(UnsignedInt j = 0; j != levelCount; ++j) { + if((flags() & SceneConverterFlag::Verbose) && levelCount != 1) + Debug{} << "Trade::AbstractSceneConverter::addImporterContents(): importing 2D image" << i << "level" << j << "out of" << levelCount; + Containers::Optional image = importer.image2D(i, j); if(!image) return false; @@ -1427,6 +1445,9 @@ bool AbstractSceneConverter::addImporterContentsInternal(AbstractImporter& impor if(contents & SceneContent::Images3D) { Containers::Array levels; for(UnsignedInt i = 0, iMax = importer.image3DCount(); i != iMax; ++i) { + if(flags() & SceneConverterFlag::Verbose) + Debug{} << "Trade::AbstractSceneConverter::addImporterContents(): adding 3D image" << i << "out of" << iMax; + UnsignedInt levelCount = contents & SceneContent::ImageLevels ? importer.image3DLevelCount(i) : 1; if(levelCount != 1 && !(contentsSupported & SceneContent::ImageLevels)) { if(noLevelsIfUnsupported) { @@ -1444,6 +1465,9 @@ bool AbstractSceneConverter::addImporterContentsInternal(AbstractImporter& impor arrayReserve(levels, levelCount); arrayResize(levels, NoInit, 0); /** @todo arrayClear() */ for(UnsignedInt j = 0; j != levelCount; ++j) { + if((flags() & SceneConverterFlag::Verbose) && levelCount != 1) + Debug{} << "Trade::AbstractSceneConverter::addImporterContents(): importing 3D image" << i << "level" << j << "out of" << levelCount; + Containers::Optional image = importer.image3D(i, j); if(!image) return false; @@ -1473,6 +1497,9 @@ bool AbstractSceneConverter::addImporterContentsInternal(AbstractImporter& impor if(contents & SceneContent::Textures) { for(UnsignedInt i = 0, iMax = importer.textureCount(); i != iMax; ++i) { + if(flags() & SceneConverterFlag::Verbose) + Debug{} << "Trade::AbstractSceneConverter::addImporterContents(): adding texture" << i << "out of" << iMax; + const Containers::Optional texture = importer.texture(i); if(!texture || !add(*texture, contents & SceneContent::Names ? importer.textureName(i) : Containers::String{})) return false; @@ -1481,6 +1508,9 @@ bool AbstractSceneConverter::addImporterContentsInternal(AbstractImporter& impor if(contents & SceneContent::Materials) { for(UnsignedInt i = 0, iMax = importer.materialCount(); i != iMax; ++i) { + if(flags() & SceneConverterFlag::Verbose) + Debug{} << "Trade::AbstractSceneConverter::addImporterContents(): adding material" << i << "out of" << iMax; + const Containers::Optional material = importer.material(i); if(!material || !add(*material, contents & SceneContent::Names ? importer.materialName(i) : Containers::String{})) return false; @@ -1489,6 +1519,9 @@ bool AbstractSceneConverter::addImporterContentsInternal(AbstractImporter& impor if(contents & SceneContent::Lights) { for(UnsignedInt i = 0, iMax = importer.lightCount(); i != iMax; ++i) { + if(flags() & SceneConverterFlag::Verbose) + Debug{} << "Trade::AbstractSceneConverter::addImporterContents(): adding light" << i << "out of" << iMax; + const Containers::Optional light = importer.light(i); if(!light || !add(*light, contents & SceneContent::Names ? importer.lightName(i) : Containers::String{})) return false; @@ -1497,6 +1530,9 @@ bool AbstractSceneConverter::addImporterContentsInternal(AbstractImporter& impor if(contents & SceneContent::Cameras) { for(UnsignedInt i = 0, iMax = importer.cameraCount(); i != iMax; ++i) { + if(flags() & SceneConverterFlag::Verbose) + Debug{} << "Trade::AbstractSceneConverter::addImporterContents(): adding camera" << i << "out of" << iMax; + const Containers::Optional camera = importer.camera(i); if(!camera || !add(*camera, contents & SceneContent::Names ? importer.cameraName(i) : Containers::String{})) return false; @@ -1511,6 +1547,9 @@ bool AbstractSceneConverter::addImporterContentsInternal(AbstractImporter& impor } for(UnsignedInt i = 0, iMax = importer.sceneCount(); i != iMax; ++i) { + if(flags() & SceneConverterFlag::Verbose) + Debug{} << "Trade::AbstractSceneConverter::addImporterContents(): adding scene" << i << "out of" << iMax; + Containers::Optional scene = importer.scene(i); if(!scene) return false; @@ -1537,6 +1576,9 @@ bool AbstractSceneConverter::addImporterContentsInternal(AbstractImporter& impor if(contents & SceneContent::Skins2D) { for(UnsignedInt i = 0, iMax = importer.skin2DCount(); i != iMax; ++i) { + if(flags() & SceneConverterFlag::Verbose) + Debug{} << "Trade::AbstractSceneConverter::addImporterContents(): adding 2D skin" << i << "out of" << iMax; + const Containers::Optional skin = importer.skin2D(i); if(!skin || !add(*skin, contents & SceneContent::Names ? importer.skin2DName(i) : Containers::String{})) return false; @@ -1545,6 +1587,9 @@ bool AbstractSceneConverter::addImporterContentsInternal(AbstractImporter& impor if(contents & SceneContent::Skins3D) { for(UnsignedInt i = 0, iMax = importer.skin3DCount(); i != iMax; ++i) { + if(flags() & SceneConverterFlag::Verbose) + Debug{} << "Trade::AbstractSceneConverter::addImporterContents(): adding 3D skin" << i << "out of" << iMax; + const Containers::Optional skin = importer.skin3D(i); if(!skin || !add(*skin, contents & SceneContent::Names ? importer.skin3DName(i) : Containers::String{})) return false; @@ -1553,6 +1598,9 @@ bool AbstractSceneConverter::addImporterContentsInternal(AbstractImporter& impor if(contents & SceneContent::Animations) { for(UnsignedInt i = 0, iMax = importer.animationCount(); i != iMax; ++i) { + if(flags() & SceneConverterFlag::Verbose) + Debug{} << "Trade::AbstractSceneConverter::addImporterContents(): adding animation" << i << "out of" << iMax; + const Containers::Optional animation = importer.animation(i); if(!animation || !add(*animation, contents & SceneContent::Names ? importer.animationName(i) : Containers::String{})) return false; diff --git a/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp b/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp index 8c826b819..4533ef836 100644 --- a/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp +++ b/src/Magnum/Trade/Test/AbstractSceneConverterTest.cpp @@ -315,128 +315,232 @@ struct AbstractSceneConverterTest: TestSuite::Tester { using namespace Containers::Literals; const struct { - const char* name; + TestSuite::TestCaseDescriptionSourceLocation name; SceneContents contents; + SceneConverterFlags flags; const char* expected; } AddImporterContentsData[]{ - {"scenes", SceneContent::Scenes, + {"scenes", SceneContent::Scenes, {}, + "Adding scene 0 named with 0x5ce00000\n" + "Adding scene 1 named with 0x5ce00001\n" + "Setting default scene to 1\n"}, + {"scenes, verbose", SceneContent::Scenes, SceneConverterFlag::Verbose, + "Trade::AbstractSceneConverter::addImporterContents(): adding scene 0 out of 2\n" "Adding scene 0 named with 0x5ce00000\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding scene 1 out of 2\n" "Adding scene 1 named with 0x5ce00001\n" "Setting default scene to 1\n"}, - {"scenes + names", SceneContent::Scenes|SceneContent::Names, + {"scenes + names", SceneContent::Scenes|SceneContent::Names, {}, "Setting object 0 name to Object 0\n" "Setting object 1 name to Object 1\n" "Setting object 2 name to Object 2\n" "Adding scene 0 named Scene 0 with 0x5ce00000\n" "Adding scene 1 named Scene 1 with 0x5ce00001\n" "Setting default scene to 1\n"}, - {"animations", SceneContent::Animations, + {"animations", SceneContent::Animations, {}, + "Adding animation 0 named with 0x40100000\n" + "Adding animation 1 named with 0x40100001\n"}, + {"animations, verbose", SceneContent::Animations, SceneConverterFlag::Verbose, + "Trade::AbstractSceneConverter::addImporterContents(): adding animation 0 out of 2\n" "Adding animation 0 named with 0x40100000\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding animation 1 out of 2\n" "Adding animation 1 named with 0x40100001\n"}, - {"animations + names", SceneContent::Animations|SceneContent::Names, + {"animations + names", SceneContent::Animations|SceneContent::Names, {}, "Adding animation 0 named Animation 0 with 0x40100000\n" "Adding animation 1 named Animation 1 with 0x40100001\n"}, - {"lights", SceneContent::Lights, + {"lights", SceneContent::Lights, {}, "Adding light 0 named with 0x11600000\n" "Adding light 1 named with 0x11600001\n"}, - {"lights + names", SceneContent::Lights|SceneContent::Names, + {"lights, verbose", SceneContent::Lights, SceneConverterFlag::Verbose, + "Trade::AbstractSceneConverter::addImporterContents(): adding light 0 out of 2\n" + "Adding light 0 named with 0x11600000\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding light 1 out of 2\n" + "Adding light 1 named with 0x11600001\n"}, + {"lights + names", SceneContent::Lights|SceneContent::Names, {}, "Adding light 0 named Light 0 with 0x11600000\n" "Adding light 1 named Light 1 with 0x11600001\n"}, - {"cameras", SceneContent::Cameras, + {"cameras", SceneContent::Cameras, {}, "Adding camera 0 named with 0xca0e0000\n" "Adding camera 1 named with 0xca0e0001\n"}, - {"cameras + names", SceneContent::Cameras|SceneContent::Names, + {"cameras, verbose", SceneContent::Cameras, SceneConverterFlag::Verbose, + "Trade::AbstractSceneConverter::addImporterContents(): adding camera 0 out of 2\n" + "Adding camera 0 named with 0xca0e0000\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding camera 1 out of 2\n" + "Adding camera 1 named with 0xca0e0001\n"}, + {"cameras + names", SceneContent::Cameras|SceneContent::Names, {}, "Adding camera 0 named Camera 0 with 0xca0e0000\n" "Adding camera 1 named Camera 1 with 0xca0e0001\n"}, - {"2D skins", SceneContent::Skins2D, + {"2D skins", SceneContent::Skins2D, {}, + "Adding 2D skin 0 named with 0x50102d00\n" + "Adding 2D skin 1 named with 0x50102d01\n"}, + {"2D skins, verbose", SceneContent::Skins2D, SceneConverterFlag::Verbose, + "Trade::AbstractSceneConverter::addImporterContents(): adding 2D skin 0 out of 2\n" "Adding 2D skin 0 named with 0x50102d00\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding 2D skin 1 out of 2\n" "Adding 2D skin 1 named with 0x50102d01\n"}, - {"2D skins + names", SceneContent::Skins2D|SceneContent::Names, + {"2D skins + names", SceneContent::Skins2D|SceneContent::Names, {}, "Adding 2D skin 0 named 2D skin 0 with 0x50102d00\n" "Adding 2D skin 1 named 2D skin 1 with 0x50102d01\n"}, - {"3D skins", SceneContent::Skins3D, + {"3D skins", SceneContent::Skins3D, {}, + "Adding 3D skin 0 named with 0x50103d00\n" + "Adding 3D skin 1 named with 0x50103d01\n"}, + {"3D skins, verbose", SceneContent::Skins3D, SceneConverterFlag::Verbose, + "Trade::AbstractSceneConverter::addImporterContents(): adding 3D skin 0 out of 2\n" "Adding 3D skin 0 named with 0x50103d00\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding 3D skin 1 out of 2\n" "Adding 3D skin 1 named with 0x50103d01\n"}, - {"3D skins + names", SceneContent::Skins3D|SceneContent::Names, + {"3D skins + names", SceneContent::Skins3D|SceneContent::Names, {}, "Adding 3D skin 0 named 3D skin 0 with 0x50103d00\n" "Adding 3D skin 1 named 3D skin 1 with 0x50103d01\n"}, - {"meshes", SceneContent::Meshes, + {"meshes", SceneContent::Meshes, {}, "Adding mesh 0 named with 0xe500000\n" "Adding mesh 1 named with 0xe500001\n"}, - {"meshes + names", SceneContent::Meshes|SceneContent::Names, + {"meshes, verbose", SceneContent::Meshes, SceneConverterFlag::Verbose, + "Trade::AbstractSceneConverter::addImporterContents(): adding mesh 0 out of 2\n" + "Adding mesh 0 named with 0xe500000\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding mesh 1 out of 2\n" + "Adding mesh 1 named with 0xe500001\n"}, + {"meshes + names", SceneContent::Meshes|SceneContent::Names, {}, "Adding mesh 0 named Mesh 0 with 0xe500000\n" "Adding mesh 1 named Mesh 1 with 0xe500001\n"}, - {"meshes + levels", SceneContent::Meshes|SceneContent::MeshLevels, + {"meshes + levels", SceneContent::Meshes|SceneContent::MeshLevels, {}, "Adding mesh 0 named with 0xe500000\n" "Adding mesh 1 level 0 named with 0xe500001\n" "Adding mesh 1 level 1 named with 0xe500011\n" "Adding mesh 1 level 2 named with 0xe500021\n"}, - {"meshes + levels + names", SceneContent::Meshes|SceneContent::MeshLevels|SceneContent::Names, + {"meshes + levels, verbose", SceneContent::Meshes|SceneContent::MeshLevels, SceneConverterFlag::Verbose, + "Trade::AbstractSceneConverter::addImporterContents(): adding mesh 0 out of 2\n" + "Adding mesh 0 named with 0xe500000\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding mesh 1 out of 2\n" + "Trade::AbstractSceneConverter::addImporterContents(): importing mesh 1 level 0 out of 3\n" + "Trade::AbstractSceneConverter::addImporterContents(): importing mesh 1 level 1 out of 3\n" + "Trade::AbstractSceneConverter::addImporterContents(): importing mesh 1 level 2 out of 3\n" + "Adding mesh 1 level 0 named with 0xe500001\n" + "Adding mesh 1 level 1 named with 0xe500011\n" + "Adding mesh 1 level 2 named with 0xe500021\n"}, + {"meshes + levels + names", SceneContent::Meshes|SceneContent::MeshLevels|SceneContent::Names, {}, "Adding mesh 0 named Mesh 0 with 0xe500000\n" "Adding mesh 1 level 0 named Mesh 1 with 0xe500001\n" "Adding mesh 1 level 1 named Mesh 1 with 0xe500011\n" "Adding mesh 1 level 2 named Mesh 1 with 0xe500021\n"}, - {"materials", SceneContent::Materials, + {"materials", SceneContent::Materials, {}, + "Adding material 0 named with 0xa7e0000\n" + "Adding material 1 named with 0xa7e0001\n"}, + {"materials, verbose", SceneContent::Materials, SceneConverterFlag::Verbose, + "Trade::AbstractSceneConverter::addImporterContents(): adding material 0 out of 2\n" "Adding material 0 named with 0xa7e0000\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding material 1 out of 2\n" "Adding material 1 named with 0xa7e0001\n"}, - {"materials + names", SceneContent::Materials|SceneContent::Names, + {"materials + names", SceneContent::Materials|SceneContent::Names, {}, "Adding material 0 named Material 0 with 0xa7e0000\n" "Adding material 1 named Material 1 with 0xa7e0001\n"}, - {"textures", SceneContent::Textures, + {"textures", SceneContent::Textures, {}, "Adding texture 0 named with 0x7e070000\n" "Adding texture 1 named with 0x7e070001\n"}, - {"textures + names", SceneContent::Textures|SceneContent::Names, + {"textures, verbose", SceneContent::Textures, SceneConverterFlag::Verbose, + "Trade::AbstractSceneConverter::addImporterContents(): adding texture 0 out of 2\n" + "Adding texture 0 named with 0x7e070000\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding texture 1 out of 2\n" + "Adding texture 1 named with 0x7e070001\n"}, + {"textures + names", SceneContent::Textures|SceneContent::Names, {}, "Adding texture 0 named Texture 0 with 0x7e070000\n" "Adding texture 1 named Texture 1 with 0x7e070001\n"}, - {"1D images", SceneContent::Images1D, + {"1D images", SceneContent::Images1D, {}, + "Adding 1D image 0 named with 0x10a91d00\n" + "Adding 1D image 1 named with 0x10a91d01\n"}, + {"1D images, verbose", SceneContent::Images1D, SceneConverterFlag::Verbose, + "Trade::AbstractSceneConverter::addImporterContents(): adding 1D image 0 out of 2\n" "Adding 1D image 0 named with 0x10a91d00\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding 1D image 1 out of 2\n" "Adding 1D image 1 named with 0x10a91d01\n"}, - {"1D images + names", SceneContent::Images1D|SceneContent::Names, + {"1D images + names", SceneContent::Images1D|SceneContent::Names, {}, "Adding 1D image 0 named 1D image 0 with 0x10a91d00\n" "Adding 1D image 1 named 1D image 1 with 0x10a91d01\n"}, - {"1D images + levels", SceneContent::Images1D|SceneContent::ImageLevels, + {"1D images + levels", SceneContent::Images1D|SceneContent::ImageLevels, {}, "Adding 1D image 0 named with 0x10a91d00\n" "Adding 1D image 1 level 0 named with 0x10a91d01\n" "Adding 1D image 1 level 1 named with 0x10a91d11\n" "Adding 1D image 1 level 2 named with 0x10a91d21\n" "Adding 1D image 1 level 3 named with 0x10a91d31\n"}, - {"1D images + levels + names", SceneContent::Images1D|SceneContent::ImageLevels|SceneContent::Names, + {"1D images + levels, verbose", SceneContent::Images1D|SceneContent::ImageLevels, SceneConverterFlag::Verbose, + "Trade::AbstractSceneConverter::addImporterContents(): adding 1D image 0 out of 2\n" + "Adding 1D image 0 named with 0x10a91d00\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding 1D image 1 out of 2\n" + "Trade::AbstractSceneConverter::addImporterContents(): importing 1D image 1 level 0 out of 4\n" + "Trade::AbstractSceneConverter::addImporterContents(): importing 1D image 1 level 1 out of 4\n" + "Trade::AbstractSceneConverter::addImporterContents(): importing 1D image 1 level 2 out of 4\n" + "Trade::AbstractSceneConverter::addImporterContents(): importing 1D image 1 level 3 out of 4\n" + "Adding 1D image 1 level 0 named with 0x10a91d01\n" + "Adding 1D image 1 level 1 named with 0x10a91d11\n" + "Adding 1D image 1 level 2 named with 0x10a91d21\n" + "Adding 1D image 1 level 3 named with 0x10a91d31\n"}, + {"1D images + levels + names", SceneContent::Images1D|SceneContent::ImageLevels|SceneContent::Names, {}, "Adding 1D image 0 named 1D image 0 with 0x10a91d00\n" "Adding 1D image 1 level 0 named 1D image 1 with 0x10a91d01\n" "Adding 1D image 1 level 1 named 1D image 1 with 0x10a91d11\n" "Adding 1D image 1 level 2 named 1D image 1 with 0x10a91d21\n" "Adding 1D image 1 level 3 named 1D image 1 with 0x10a91d31\n"}, - {"2D images", SceneContent::Images2D, + {"2D images", SceneContent::Images2D, {}, + "Adding 2D image 0 named with 0x10a92d00\n" + "Adding 2D image 1 named with 0x10a92d01\n"}, + {"2D images, verbose", SceneContent::Images2D, SceneConverterFlag::Verbose, + "Trade::AbstractSceneConverter::addImporterContents(): adding 2D image 0 out of 2\n" "Adding 2D image 0 named with 0x10a92d00\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding 2D image 1 out of 2\n" "Adding 2D image 1 named with 0x10a92d01\n"}, - {"2D images + names", SceneContent::Images2D|SceneContent::Names, + {"2D images + names", SceneContent::Images2D|SceneContent::Names, {}, "Adding 2D image 0 named 2D image 0 with 0x10a92d00\n" "Adding 2D image 1 named 2D image 1 with 0x10a92d01\n"}, - {"2D images + levels", SceneContent::Images2D|SceneContent::ImageLevels, + {"2D images + levels", SceneContent::Images2D|SceneContent::ImageLevels, {}, "Adding 2D image 0 level 0 named with 0x10a92d00\n" "Adding 2D image 0 level 1 named with 0x10a92d10\n" "Adding 2D image 0 level 2 named with 0x10a92d20\n" "Adding 2D image 1 named with 0x10a92d01\n"}, - {"2D images + names", SceneContent::Images2D|SceneContent::ImageLevels|SceneContent::Names, + {"2D images + levels, verbose", SceneContent::Images2D|SceneContent::ImageLevels, SceneConverterFlag::Verbose, + "Trade::AbstractSceneConverter::addImporterContents(): adding 2D image 0 out of 2\n" + "Trade::AbstractSceneConverter::addImporterContents(): importing 2D image 0 level 0 out of 3\n" + "Trade::AbstractSceneConverter::addImporterContents(): importing 2D image 0 level 1 out of 3\n" + "Trade::AbstractSceneConverter::addImporterContents(): importing 2D image 0 level 2 out of 3\n" + "Adding 2D image 0 level 0 named with 0x10a92d00\n" + "Adding 2D image 0 level 1 named with 0x10a92d10\n" + "Adding 2D image 0 level 2 named with 0x10a92d20\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding 2D image 1 out of 2\n" + "Adding 2D image 1 named with 0x10a92d01\n"}, + {"2D images + names", SceneContent::Images2D|SceneContent::ImageLevels|SceneContent::Names, {}, "Adding 2D image 0 level 0 named 2D image 0 with 0x10a92d00\n" "Adding 2D image 0 level 1 named 2D image 0 with 0x10a92d10\n" "Adding 2D image 0 level 2 named 2D image 0 with 0x10a92d20\n" "Adding 2D image 1 named 2D image 1 with 0x10a92d01\n"}, - {"3D images", SceneContent::Images3D, + {"3D images", SceneContent::Images3D, {}, + "Adding 3D image 0 named with 0x10a93d00\n" + "Adding 3D image 1 named with 0x10a93d01\n"}, + {"3D images, verbose", SceneContent::Images3D, SceneConverterFlag::Verbose, + "Trade::AbstractSceneConverter::addImporterContents(): adding 3D image 0 out of 2\n" "Adding 3D image 0 named with 0x10a93d00\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding 3D image 1 out of 2\n" "Adding 3D image 1 named with 0x10a93d01\n"}, - {"3D images + names", SceneContent::Images3D|SceneContent::Names, + {"3D images + names", SceneContent::Images3D|SceneContent::Names, {}, "Adding 3D image 0 named 3D image 0 with 0x10a93d00\n" "Adding 3D image 1 named 3D image 1 with 0x10a93d01\n"}, - {"3D images + levels", SceneContent::Images3D|SceneContent::ImageLevels, + {"3D images + levels", SceneContent::Images3D|SceneContent::ImageLevels, {}, "Adding 3D image 0 named with 0x10a93d00\n" "Adding 3D image 1 level 0 named with 0x10a93d01\n" "Adding 3D image 1 level 1 named with 0x10a93d11\n"}, - {"3D images + names", SceneContent::Images3D|SceneContent::ImageLevels|SceneContent::Names, + {"3D images + levels, verbose", SceneContent::Images3D|SceneContent::ImageLevels, SceneConverterFlag::Verbose, + "Trade::AbstractSceneConverter::addImporterContents(): adding 3D image 0 out of 2\n" + "Adding 3D image 0 named with 0x10a93d00\n" + "Trade::AbstractSceneConverter::addImporterContents(): adding 3D image 1 out of 2\n" + "Trade::AbstractSceneConverter::addImporterContents(): importing 3D image 1 level 0 out of 2\n" + "Trade::AbstractSceneConverter::addImporterContents(): importing 3D image 1 level 1 out of 2\n" + "Adding 3D image 1 level 0 named with 0x10a93d01\n" + "Adding 3D image 1 level 1 named with 0x10a93d11\n"}, + {"3D images + names", SceneContent::Images3D|SceneContent::ImageLevels|SceneContent::Names, {}, "Adding 3D image 0 named 3D image 0 with 0x10a93d00\n" "Adding 3D image 1 level 0 named 3D image 1 with 0x10a93d01\n" "Adding 3D image 1 level 1 named 3D image 1 with 0x10a93d11\n"}, - {"names only", SceneContent::Names, + {"names only", SceneContent::Names, {}, + "" /* Nothing */}, + {"names only, verbose", SceneContent::Names, SceneConverterFlag::Verbose, "" /* Nothing */}, }; @@ -6083,6 +6187,7 @@ void AbstractSceneConverterTest::addImporterContents() { } } converter; + converter.addFlags(data.flags); CORRADE_VERIFY(converter.beginData()); std::ostringstream out;