From 1f33071b3c53fc4c5808ddd306618d68d5e30d35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sun, 12 Dec 2021 19:45:55 +0100 Subject: [PATCH] AnyImageConverter: support KTX2 also in 3D and 2D/3D levels code paths. And prefere to use it onver OpenEXR in most AnyImage{Converter,Importer} tests, unless the test really needs something that only OpenEXR has (such as the verbose output for threads or configuration that needs to be set on both export and import to make the import succeed). --- .../AnyImageConverter/AnyImageConverter.cpp | 6 + .../Test/AnyImageConverterTest.cpp | 147 ++++++++---------- .../AnyImageConverter/Test/CMakeLists.txt | 6 +- .../AnyImageConverter/Test/configure.h.cmake | 2 +- .../AnyImageImporter/Test/3d.ktx2 | Bin 0 -> 288 bytes .../Test/AnyImageImporterTest.cpp | 10 +- .../AnyImageImporter/Test/CMakeLists.txt | 10 +- .../AnyImageImporter/Test/configure.h.cmake | 2 +- .../AnyImageImporter/Test/cube.exr | Bin 336 -> 0 bytes 9 files changed, 87 insertions(+), 96 deletions(-) create mode 100644 src/MagnumPlugins/AnyImageImporter/Test/3d.ktx2 delete mode 100644 src/MagnumPlugins/AnyImageImporter/Test/cube.exr diff --git a/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.cpp b/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.cpp index e00acaf4e..34920d8cc 100644 --- a/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.cpp +++ b/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.cpp @@ -144,6 +144,8 @@ bool AnyImageConverter::doConvertToFile(const ImageView3D& image, const Containe Containers::StringView plugin; if(normalized.hasSuffix(".exr"_s)) plugin = "OpenExrImageConverter"_s; + else if(normalized.hasSuffix(".ktx2"_s)) + plugin = "KtxImageConverter"_s; else { Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a 3D image"; return false; @@ -223,6 +225,8 @@ bool AnyImageConverter::doConvertToFile(const Containers::ArrayView converter = manager.instantiate("AnyImageConverter"); - /* Well, this is in fact the same as propagateConfiguration3D() but we - can't really do much else. */ - converter->configuration().setValue("envmap", "cube"); - CORRADE_VERIFY(converter->convertToFile(ImageCube, filename)); - CORRADE_VERIFY(Utility::Directory::exists(filename)); + CORRADE_VERIFY(converter->convertToFile(Image3D, filename)); + /* Compare to an expected output to ensure we actually saved the file + including the metadata. This also doubles as a generator for the + 3d.exr file that AnyImageImporterTest uses. */ + CORRADE_COMPARE_AS(filename, KTX_3D_FILE, TestSuite::Compare::File); } void AnyImageConverterTest::convertCompressed1D() { @@ -384,10 +387,10 @@ void AnyImageConverterTest::convertLevels2D() { CORRADE_VERIFY(manager.load(ANYIMAGECONVERTER_PLUGIN_FILENAME) & PluginManager::LoadState::Loaded); #endif - if(manager.loadState("OpenExrImageConverter") < PluginManager::LoadState::Loaded) - CORRADE_SKIP("OpenExrImageConverter plugin can't be loaded."); + if(manager.loadState("KtxImageConverter") < PluginManager::LoadState::Loaded) + CORRADE_SKIP("KtxImageConverter plugin can't be loaded."); - const std::string filename = Utility::Directory::join(ANYIMAGECONVERTER_TEST_OUTPUT_DIR, "output.exr"); + const std::string filename = Utility::Directory::join(ANYIMAGECONVERTER_TEST_OUTPUT_DIR, "levels-2d.ktx2"); if(Utility::Directory::exists(filename)) CORRADE_VERIFY(Utility::Directory::rm(filename)); @@ -396,7 +399,7 @@ void AnyImageConverterTest::convertLevels2D() { Containers::Pointer converter = manager.instantiate("AnyImageConverter"); /* Using the list API even though there's just one image, which should still trigger the correct code path for AnyImageConverter. */ - CORRADE_VERIFY(converter->convertToFile({Image2DFloat}, filename)); + CORRADE_VERIFY(converter->convertToFile({Image2D}, filename)); CORRADE_VERIFY(Utility::Directory::exists(filename)); } @@ -406,21 +409,19 @@ void AnyImageConverterTest::convertLevels3D() { CORRADE_VERIFY(manager.load(ANYIMAGECONVERTER_PLUGIN_FILENAME) & PluginManager::LoadState::Loaded); #endif - if(manager.loadState("OpenExrImageConverter") < PluginManager::LoadState::Loaded) - CORRADE_SKIP("OpenExrImageConverter plugin can't be loaded."); + if(manager.loadState("KtxImageConverter") < PluginManager::LoadState::Loaded) + CORRADE_SKIP("KtxImageConverter plugin can't be loaded."); - const std::string filename = Utility::Directory::join(ANYIMAGECONVERTER_TEST_OUTPUT_DIR, "cube.exr"); + const std::string filename = Utility::Directory::join(ANYIMAGECONVERTER_TEST_OUTPUT_DIR, "levels-3d.ktx2"); if(Utility::Directory::exists(filename)) CORRADE_VERIFY(Utility::Directory::rm(filename)); + /* Just test that the exported file exists */ Containers::Pointer converter = manager.instantiate("AnyImageConverter"); - /* Well, this is in fact the same as propagateConfigurationLevels3D() but - we can't really do much else. */ - converter->configuration().setValue("envmap", "cube"); /* Using the list API even though there's just one image, which should still trigger the correct code path for AnyImageConverter. */ - CORRADE_VERIFY(converter->convertToFile({ImageCube}, filename)); + CORRADE_VERIFY(converter->convertToFile({Image3D}, filename)); CORRADE_VERIFY(Utility::Directory::exists(filename)); } @@ -582,8 +583,8 @@ void AnyImageConverterTest::unknown3D() { std::ostringstream out; Error redirectError{&out}; - CORRADE_VERIFY(!converter->convertToFile(Image3D, "image.ktx2")); - CORRADE_COMPARE(out.str(), "Trade::AnyImageConverter::convertToFile(): cannot determine the format of image.ktx2 for a 3D image\n"); + CORRADE_VERIFY(!converter->convertToFile(Image3D, "image.dds")); + CORRADE_COMPARE(out.str(), "Trade::AnyImageConverter::convertToFile(): cannot determine the format of image.dds for a 3D image\n"); } void AnyImageConverterTest::unknownCompressed1D() { @@ -627,8 +628,8 @@ void AnyImageConverterTest::unknownLevels2D() { std::ostringstream out; Error redirectError{&out}; - CORRADE_VERIFY(!converter->convertToFile({Image2D}, "image.ktx2")); - CORRADE_COMPARE(out.str(), "Trade::AnyImageConverter::convertToFile(): cannot determine the format of image.ktx2 for a multi-level 2D image\n"); + CORRADE_VERIFY(!converter->convertToFile({Image2D}, "image.dds")); + CORRADE_COMPARE(out.str(), "Trade::AnyImageConverter::convertToFile(): cannot determine the format of image.dds for a multi-level 2D image\n"); } void AnyImageConverterTest::unknownLevels3D() { @@ -636,8 +637,8 @@ void AnyImageConverterTest::unknownLevels3D() { std::ostringstream out; Error redirectError{&out}; - CORRADE_VERIFY(!converter->convertToFile({Image3D}, "image.ktx2")); - CORRADE_COMPARE(out.str(), "Trade::AnyImageConverter::convertToFile(): cannot determine the format of image.ktx2 for a multi-level 3D image\n"); + CORRADE_VERIFY(!converter->convertToFile({Image3D}, "image.dds")); + CORRADE_COMPARE(out.str(), "Trade::AnyImageConverter::convertToFile(): cannot determine the format of image.dds for a multi-level 3D image\n"); } void AnyImageConverterTest::unknownCompressedLevels1D() { @@ -868,7 +869,8 @@ void AnyImageConverterTest::propagateConfiguration2D() { converter->configuration().setValue("depth", "height"); CORRADE_VERIFY(converter->convertToFile(Image2DFloat, filename)); /* Compare to an expected output to ensure the custom channels names were - used */ + used. This also doubles as a generator for the + depth32f-custom-channels.exr file that AnyImageImporterTest uses. */ CORRADE_COMPARE_AS(filename, EXR_FILE, TestSuite::Compare::File); } @@ -878,23 +880,20 @@ void AnyImageConverterTest::propagateConfiguration3D() { CORRADE_VERIFY(manager.load(ANYIMAGECONVERTER_PLUGIN_FILENAME) & PluginManager::LoadState::Loaded); #endif - if(manager.loadState("OpenExrImageConverter") < PluginManager::LoadState::Loaded) - CORRADE_SKIP("OpenExrImageConverter plugin can't be loaded."); + if(manager.loadState("KtxImageConverter") < PluginManager::LoadState::Loaded) + CORRADE_SKIP("KtxImageConverter plugin can't be loaded."); - const std::string filename = Utility::Directory::join(ANYIMAGECONVERTER_TEST_OUTPUT_DIR, "cube.exr"); + const std::string filename = Utility::Directory::join(ANYIMAGECONVERTER_TEST_OUTPUT_DIR, "custom-writer-3d.ktx2"); if(Utility::Directory::exists(filename)) CORRADE_VERIFY(Utility::Directory::rm(filename)); Containers::Pointer converter = manager.instantiate("AnyImageConverter"); - /* This should be enough to test -- 3D images can be saved only if this - option is set */ - converter->configuration().setValue("envmap", "cube"); - CORRADE_VERIFY(converter->convertToFile(ImageCube, filename)); - /* Compare to an expected output to ensure we actually saved the file - including the metadata. This also doubles as a generator for the - cube.exr file that AnyImageImporterTest uses. */ - CORRADE_COMPARE_AS(filename, EXR_CUBE_FILE, TestSuite::Compare::File); + converter->configuration().setValue("writerName", "Yello this did Magnum!"); + CORRADE_VERIFY(converter->convertToFile(Image3D, filename)); + CORRADE_VERIFY(Utility::Directory::exists(filename)); + /** @todo clean up once Directory::readString() returns our String */ + CORRADE_VERIFY(Containers::StringView{Containers::ArrayView(Utility::Directory::read(filename))}.contains("KTXwriter\0Yello this did Magnum!")); } void AnyImageConverterTest::propagateConfigurationUnknown1D() { @@ -921,18 +920,17 @@ void AnyImageConverterTest::propagateConfigurationUnknown3D() { CORRADE_VERIFY(manager.load(ANYIMAGECONVERTER_PLUGIN_FILENAME) & PluginManager::LoadState::Loaded); #endif - if(manager.loadState("OpenExrImageConverter") < PluginManager::LoadState::Loaded) - CORRADE_SKIP("OpenExrImageConverter plugin can't be loaded."); + if(manager.loadState("KtxImageConverter") < PluginManager::LoadState::Loaded) + CORRADE_SKIP("KtxImageConverter plugin can't be loaded."); /* Just test that the exported file exists */ Containers::Pointer converter = manager.instantiate("AnyImageConverter"); - converter->configuration().setValue("envmap", "cube"); converter->configuration().setValue("noSuchOption", "isHere"); std::ostringstream out; Warning redirectWarning{&out}; - CORRADE_VERIFY(converter->convertToFile(ImageCube, Utility::Directory::join(ANYIMAGECONVERTER_TEST_OUTPUT_DIR, "output.exr"))); - CORRADE_COMPARE(out.str(), "Trade::AnyImageConverter::convertToFile(): option noSuchOption not recognized by OpenExrImageConverter\n"); + CORRADE_VERIFY(converter->convertToFile(Image3D, Utility::Directory::join(ANYIMAGECONVERTER_TEST_OUTPUT_DIR, "3d.ktx2"))); + CORRADE_COMPARE(out.str(), "Trade::AnyImageConverter::convertToFile(): option noSuchOption not recognized by KtxImageConverter\n"); } void AnyImageConverterTest::propagateConfigurationCompressed1D() { @@ -969,25 +967,22 @@ void AnyImageConverterTest::propagateConfigurationLevels2D() { CORRADE_VERIFY(manager.load(ANYIMAGECONVERTER_PLUGIN_FILENAME) & PluginManager::LoadState::Loaded); #endif - if(manager.loadState("OpenExrImageConverter") < PluginManager::LoadState::Loaded) - CORRADE_SKIP("OpenExrImageConverter plugin can't be loaded."); + if(manager.loadState("KtxImageConverter") < PluginManager::LoadState::Loaded) + CORRADE_SKIP("KtxImageConverter plugin can't be loaded."); - const std::string filename = Utility::Directory::join(ANYIMAGECONVERTER_TEST_OUTPUT_DIR, "depth32f-custom-channels.exr"); + const std::string filename = Utility::Directory::join(ANYIMAGECONVERTER_TEST_OUTPUT_DIR, "custom-writer-2d.ktx2"); if(Utility::Directory::exists(filename)) CORRADE_VERIFY(Utility::Directory::rm(filename)); Containers::Pointer converter = manager.instantiate("AnyImageConverter"); - converter->configuration().setValue("layer", "left"); - converter->configuration().setValue("depth", "height"); + converter->configuration().setValue("writerName", "Yello this did Magnum!"); /* Using the list API even though there's just one image, which should - still trigger the correct code path for AnyImageConverter. For - OpenExrImageConverter both single and list are the same code path so we - can reuse the same expected file. */ - CORRADE_VERIFY(converter->convertToFile({Image2DFloat}, filename)); - /* Compare to an expected output to ensure the custom channels names were - used */ - CORRADE_COMPARE_AS(filename, EXR_FILE, TestSuite::Compare::File); + still trigger the correct code path for AnyImageConverter. */ + CORRADE_VERIFY(converter->convertToFile({Image2D}, filename)); + CORRADE_VERIFY(Utility::Directory::exists(filename)); + /** @todo clean up once Directory::readString() returns our String */ + CORRADE_VERIFY(Containers::StringView{Containers::ArrayView(Utility::Directory::read(filename))}.contains("KTXwriter\0Yello this did Magnum!")); } void AnyImageConverterTest::propagateConfigurationLevels3D() { @@ -996,25 +991,22 @@ void AnyImageConverterTest::propagateConfigurationLevels3D() { CORRADE_VERIFY(manager.load(ANYIMAGECONVERTER_PLUGIN_FILENAME) & PluginManager::LoadState::Loaded); #endif - if(manager.loadState("OpenExrImageConverter") < PluginManager::LoadState::Loaded) - CORRADE_SKIP("OpenExrImageConverter plugin can't be loaded."); + if(manager.loadState("KtxImageConverter") < PluginManager::LoadState::Loaded) + CORRADE_SKIP("KtxImageConverter plugin can't be loaded."); - const std::string filename = Utility::Directory::join(ANYIMAGECONVERTER_TEST_OUTPUT_DIR, "cube.exr"); + const std::string filename = Utility::Directory::join(ANYIMAGECONVERTER_TEST_OUTPUT_DIR, "custom-writer-3d.ktx2"); if(Utility::Directory::exists(filename)) CORRADE_VERIFY(Utility::Directory::rm(filename)); Containers::Pointer converter = manager.instantiate("AnyImageConverter"); - /* This should be enough to test -- 3D images can be saved only if this - option is set */ - converter->configuration().setValue("envmap", "cube"); + converter->configuration().setValue("writerName", "Yello this did Magnum!"); /* Using the list API even though there's just one image, which should - still trigger the correct code path for AnyImageConverter. For - OpenExrImageConverter both single and list are the same code path so we - can reuse the same expected file. */ - CORRADE_VERIFY(converter->convertToFile({ImageCube}, filename)); - /* Compare to an expected output to ensure we actually saved the file */ - CORRADE_COMPARE_AS(filename, EXR_CUBE_FILE, TestSuite::Compare::File); + still trigger the correct code path for AnyImageConverter. */ + CORRADE_VERIFY(converter->convertToFile({Image3D}, filename)); + CORRADE_VERIFY(Utility::Directory::exists(filename)); + /** @todo clean up once Directory::readString() returns our String */ + CORRADE_VERIFY(Containers::StringView{Containers::ArrayView(Utility::Directory::read(filename))}.contains("KTXwriter\0Yello this did Magnum!")); } void AnyImageConverterTest::propagateConfigurationUnknownLevels1D() { @@ -1027,13 +1019,8 @@ void AnyImageConverterTest::propagateConfigurationUnknownLevels2D() { CORRADE_VERIFY(manager.load(ANYIMAGECONVERTER_PLUGIN_FILENAME) & PluginManager::LoadState::Loaded); #endif - if(manager.loadState("OpenExrImageConverter") < PluginManager::LoadState::Loaded) - CORRADE_SKIP("OpenExrImageConverter plugin can't be loaded."); - - const std::string filename = Utility::Directory::join(ANYIMAGECONVERTER_TEST_OUTPUT_DIR, "depth32f-custom-channels.exr"); - - if(Utility::Directory::exists(filename)) - CORRADE_VERIFY(Utility::Directory::rm(filename)); + if(manager.loadState("KtxImageConverter") < PluginManager::LoadState::Loaded) + CORRADE_SKIP("KtxImageConverter plugin can't be loaded."); Containers::Pointer converter = manager.instantiate("AnyImageConverter"); converter->configuration().setValue("noSuchOption", "isHere"); @@ -1042,8 +1029,8 @@ void AnyImageConverterTest::propagateConfigurationUnknownLevels2D() { Warning redirectWarning{&out}; /* Using the list API even though there's just one image, which should still trigger the correct code path for AnyImageConverter. */ - CORRADE_VERIFY(converter->convertToFile({Image2DFloat}, Utility::Directory::join(ANYIMAGECONVERTER_TEST_OUTPUT_DIR, "output.exr"))); - CORRADE_COMPARE(out.str(), "Trade::AnyImageConverter::convertToFile(): option noSuchOption not recognized by OpenExrImageConverter\n"); + CORRADE_VERIFY(converter->convertToFile({Image2D}, Utility::Directory::join(ANYIMAGECONVERTER_TEST_OUTPUT_DIR, "2d.ktx2"))); + CORRADE_COMPARE(out.str(), "Trade::AnyImageConverter::convertToFile(): option noSuchOption not recognized by KtxImageConverter\n"); } void AnyImageConverterTest::propagateConfigurationUnknownLevels3D() { @@ -1052,20 +1039,18 @@ void AnyImageConverterTest::propagateConfigurationUnknownLevels3D() { CORRADE_VERIFY(manager.load(ANYIMAGECONVERTER_PLUGIN_FILENAME) & PluginManager::LoadState::Loaded); #endif - if(manager.loadState("OpenExrImageConverter") < PluginManager::LoadState::Loaded) - CORRADE_SKIP("OpenExrImageConverter plugin can't be loaded."); + if(manager.loadState("KtxImageConverter") < PluginManager::LoadState::Loaded) + CORRADE_SKIP("KtxImageConverter plugin can't be loaded."); - /* Just test that the exported file exists */ Containers::Pointer converter = manager.instantiate("AnyImageConverter"); - converter->configuration().setValue("envmap", "cube"); converter->configuration().setValue("noSuchOption", "isHere"); std::ostringstream out; Warning redirectWarning{&out}; /* Using the list API even though there's just one image, which should still trigger the correct code path for AnyImageConverter. */ - CORRADE_VERIFY(converter->convertToFile({ImageCube}, Utility::Directory::join(ANYIMAGECONVERTER_TEST_OUTPUT_DIR, "output.exr"))); - CORRADE_COMPARE(out.str(), "Trade::AnyImageConverter::convertToFile(): option noSuchOption not recognized by OpenExrImageConverter\n"); + CORRADE_VERIFY(converter->convertToFile({Image3D}, Utility::Directory::join(ANYIMAGECONVERTER_TEST_OUTPUT_DIR, "3d.ktx2"))); + CORRADE_COMPARE(out.str(), "Trade::AnyImageConverter::convertToFile(): option noSuchOption not recognized by KtxImageConverter\n"); } void AnyImageConverterTest::propagateConfigurationCompressedLevels1D() { diff --git a/src/MagnumPlugins/AnyImageConverter/Test/CMakeLists.txt b/src/MagnumPlugins/AnyImageConverter/Test/CMakeLists.txt index 7ae7bad96..ca7eaaa82 100644 --- a/src/MagnumPlugins/AnyImageConverter/Test/CMakeLists.txt +++ b/src/MagnumPlugins/AnyImageConverter/Test/CMakeLists.txt @@ -29,12 +29,12 @@ find_package(Threads REQUIRED) if(CORRADE_TARGET_EMSCRIPTEN OR CORRADE_TARGET_ANDROID) set(ANYIMAGECONVERTER_TEST_OUTPUT_DIR "write") + set(KTX_3D_FILE 3d.ktx2) set(EXR_FILE depth32f-custom-channels.exr) - set(EXR_CUBE_FILE cube.exr) else() set(ANYIMAGECONVERTER_TEST_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}) + set(KTX_3D_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/AnyImageImporter/Test/3d.ktx2) set(EXR_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/AnyImageImporter/Test/depth32f-custom-channels.exr) - set(EXR_CUBE_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/AnyImageImporter/Test/cube.exr) endif() # CMake before 3.8 has broken $ expressions for iOS (see @@ -62,7 +62,7 @@ corrade_add_test(AnyImageConverterTest AnyImageConverterTest.cpp # now Threads::Threads FILES - ../../AnyImageImporter/Test/cube.exr + ../../AnyImageImporter/Test/3d.ktx2 ../../AnyImageImporter/Test/depth32f-custom-channels.exr) target_include_directories(AnyImageConverterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$) if(MAGNUM_ANYIMAGECONVERTER_BUILD_STATIC) diff --git a/src/MagnumPlugins/AnyImageConverter/Test/configure.h.cmake b/src/MagnumPlugins/AnyImageConverter/Test/configure.h.cmake index b0460c3e1..7b544fd61 100644 --- a/src/MagnumPlugins/AnyImageConverter/Test/configure.h.cmake +++ b/src/MagnumPlugins/AnyImageConverter/Test/configure.h.cmake @@ -26,8 +26,8 @@ #cmakedefine ANYIMAGECONVERTER_PLUGIN_FILENAME "${ANYIMAGECONVERTER_PLUGIN_FILENAME}" #cmakedefine TGAIMAGECONVERTER_PLUGIN_FILENAME "${TGAIMAGECONVERTER_PLUGIN_FILENAME}" #define ANYIMAGECONVERTER_TEST_OUTPUT_DIR "${ANYIMAGECONVERTER_TEST_OUTPUT_DIR}" +#define KTX_3D_FILE "${KTX_3D_FILE}" #define EXR_FILE "${EXR_FILE}" -#define EXR_CUBE_FILE "${EXR_CUBE_FILE}" #ifdef CORRADE_TARGET_WINDOWS #ifdef CORRADE_IS_DEBUG_BUILD diff --git a/src/MagnumPlugins/AnyImageImporter/Test/3d.ktx2 b/src/MagnumPlugins/AnyImageImporter/Test/3d.ktx2 new file mode 100644 index 0000000000000000000000000000000000000000..4a81236015e99e020d7f599362c1ff033a3e70bb GIT binary patch literal 288 zcmZ4O9TK5nWU!l;ONvXJfq{V$h?#(x8A<~wuoy@j1Tuiw2Z*--u>%mJgFjFK6*L;8 z2LzZHJQx@mA*O-sfB<$FgW*4r#lgT1vkuG`U|>TVIoE)4CoIoElGC^bk2kjoA literal 0 HcmV?d00001 diff --git a/src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp b/src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp index f2aea15d9..2de69e3cc 100644 --- a/src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp +++ b/src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp @@ -86,8 +86,8 @@ constexpr struct { Containers::Optional>(*callback)(const std::string&, InputFileCallbackPolicy, Containers::Array&); const char* messageFunctionName; } Load3DData[]{ - {"EXR", EXR_CUBE_FILE, nullptr, "OpenExrImporter"}, - {"EXR data", EXR_CUBE_FILE, fileCallback, "OpenExrImporter"}, + {"KTX2", KTX_3D_FILE, nullptr, "KtxImporter"}, + {"KTX2 data", KTX_3D_FILE, fileCallback, "KtxImporter"}, }; constexpr struct { @@ -224,8 +224,8 @@ void AnyImageImporterTest::load3D() { CORRADE_VERIFY(manager.load(ANYIMAGEIMPORTER_PLUGIN_FILENAME) & PluginManager::LoadState::Loaded); #endif - if(manager.loadState("OpenExrImporter") < PluginManager::LoadState::Loaded) - CORRADE_SKIP("OpenExrImporter plugin can't be loaded."); + if(manager.loadState("KtxImporter") < PluginManager::LoadState::Loaded) + CORRADE_SKIP("KtxImporter plugin can't be loaded."); Containers::Pointer importer = manager.instantiate("AnyImageImporter"); @@ -238,7 +238,7 @@ void AnyImageImporterTest::load3D() { /* Check only size, as it is good enough proof that it is working */ Containers::Optional image = importer->image3D(0); CORRADE_VERIFY(image); - CORRADE_COMPARE(image->size(), (Vector3i{1, 1, 6})); + CORRADE_COMPARE(image->size(), (Vector3i{2, 3, 2})); } void AnyImageImporterTest::detect() { diff --git a/src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt b/src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt index daf0d7da3..1e918ad8a 100644 --- a/src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt +++ b/src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt @@ -26,13 +26,13 @@ if(CORRADE_TARGET_EMSCRIPTEN OR CORRADE_TARGET_ANDROID) set(TEST_FILE_DIR .) set(TGA_FILE rgb.tga) + set(KTX_3D_FILE 3d.ktx2) set(EXR_FILE depth32f-custom-channels.exr) - set(EXR_CUBE_FILE cube.exr) else() set(TEST_FILE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) set(TGA_FILE ${CMAKE_CURRENT_SOURCE_DIR}/rgb.tga) + set(KTX_3D_FILE ${CMAKE_CURRENT_SOURCE_DIR}/3d.ktx2) set(EXR_FILE ${CMAKE_CURRENT_SOURCE_DIR}/depth32f-custom-channels.exr) - set(EXR_CUBE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cube.exr) endif() # CMake before 3.8 has broken $ expressions for iOS (see @@ -55,10 +55,10 @@ file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/$/configure.h corrade_add_test(AnyImageImporterTest AnyImageImporterTest.cpp LIBRARIES MagnumTrade MagnumDebugTools FILES - # Taken from OpenExrImporter tests + # Generated by AnyImageConverterTest::propagateConfiguration2D() depth32f-custom-channels.exr - # Generated by AnyImageConverterTest::propagateConfiguration3D() - cube.exr + # Generated by AnyImageConverterTest::convert3D() + 3d.ktx2 gray.jpg image.exr image.tiff diff --git a/src/MagnumPlugins/AnyImageImporter/Test/configure.h.cmake b/src/MagnumPlugins/AnyImageImporter/Test/configure.h.cmake index 13de71276..f1277c9f5 100644 --- a/src/MagnumPlugins/AnyImageImporter/Test/configure.h.cmake +++ b/src/MagnumPlugins/AnyImageImporter/Test/configure.h.cmake @@ -27,8 +27,8 @@ #cmakedefine TGAIMPORTER_PLUGIN_FILENAME "${TGAIMPORTER_PLUGIN_FILENAME}" #define TGA_FILE "${TGA_FILE}" #define TEST_FILE_DIR "${TEST_FILE_DIR}" +#define KTX_3D_FILE "${KTX_3D_FILE}" #define EXR_FILE "${EXR_FILE}" -#define EXR_CUBE_FILE "${EXR_CUBE_FILE}" #ifdef CORRADE_TARGET_WINDOWS #ifdef CORRADE_IS_DEBUG_BUILD diff --git a/src/MagnumPlugins/AnyImageImporter/Test/cube.exr b/src/MagnumPlugins/AnyImageImporter/Test/cube.exr deleted file mode 100644 index 4f3975883c04bb049b5d25e7815169d290fb88cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmah@%L>9U5S;n|kAfGE{(+AVu!`Zo2 zE!W8aKz0*alX8J5b{?~^yC5pDk~ff| zvr0Vv`bbxWuy~L51Bx{rOGza@EDEq(liE8=nLi272DviAW7I}Bsmn?t-6bAK`*5Jz i