From a1c2c9c6b3ab2eeaaa90c665bb486acf0c2cc4ea Mon Sep 17 00:00:00 2001 From: Squareys Date: Tue, 27 Aug 2019 18:48:15 +0200 Subject: [PATCH] AnyImageImporter: Delegate .basis files to BasisImporter Signed-off-by: Squareys --- .../AnyImageImporter/AnyImageImporter.cpp | 9 +++++++-- .../AnyImageImporter/AnyImageImporter.h | 2 ++ .../Test/AnyImageImporterTest.cpp | 3 ++- .../AnyImageImporter/Test/CMakeLists.txt | 1 + src/MagnumPlugins/AnyImageImporter/Test/rgb.basis | Bin 0 -> 390 bytes 5 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 src/MagnumPlugins/AnyImageImporter/Test/rgb.basis diff --git a/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp b/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp index 797463fbc..b147ce14a 100644 --- a/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp +++ b/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp @@ -57,7 +57,9 @@ void AnyImageImporter::doOpenFile(const std::string& filename) { /* Detect type from extension */ std::string plugin; - if(Utility::String::endsWith(normalized, ".bmp")) + if(Utility::String::endsWith(normalized, ".basis")) + plugin = "BasisImporter"; + else if(Utility::String::endsWith(normalized, ".bmp")) plugin = "BmpImporter"; else if(Utility::String::endsWith(normalized, ".dds")) plugin = "DdsImporter"; @@ -128,8 +130,11 @@ void AnyImageImporter::doOpenData(Containers::ArrayView data) { CORRADE_INTERNAL_ASSERT(manager()); std::string plugin; + /* https://github.com/BinomialLLC/basis_universal/blob/7d784c728844c007d8c95d63231f7adcc0f65364/transcoder/basisu_file_headers.h#L78 */ + if(Utility::String::viewBeginsWith(data, "sB\0\x16")) + plugin = "BasisImporter"; /* https://docs.microsoft.com/cs-cz/windows/desktop/direct3ddds/dx-graphics-dds-pguide */ - if(Utility::String::viewBeginsWith(data, "DDS ")) + else if(Utility::String::viewBeginsWith(data, "DDS ")) plugin = "DdsImporter"; /* http://www.openexr.com/openexrfilelayout.pdf */ else if(Utility::String::viewBeginsWith(data, "\x76\x2f\x31\x01")) diff --git a/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h b/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h index 403228edc..5d5ba9a74 100644 --- a/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h +++ b/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h @@ -66,6 +66,8 @@ of the `Magnum` package and link to the `Magnum::AnyImageImporter` target. See Supported formats: +- Basis Universal (`*.basis`), loaded @ref BasisImporter or any other plugin + that provides it - Windows Bitmap (`*.bmp`), loaded with any plugin that provides `BmpImporter` - DirectDraw Surface (`*.dds` or data with corresponding signature), loaded with @ref DdsImporter or any other plugin that provides it diff --git a/src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp b/src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp index ff463ef2c..ff73e427b 100644 --- a/src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp +++ b/src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp @@ -87,7 +87,8 @@ constexpr struct { {"BMP", "image.bmp", nullptr, "BmpImporter"}, {"GIF", "image.gif", nullptr, "GifImporter"}, {"PSD", "image.psd", nullptr, "PsdImporter"}, - {"TIFF", "image.tiff", nullptr, "TiffImporter"} + {"TIFF", "image.tiff", nullptr, "TiffImporter"}, + {"Basis", "rgb.basis", nullptr, "BasisImporter"} /* Not testing everything, just the most important ones */ }; diff --git a/src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt b/src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt index a338071e7..2c4f57014 100644 --- a/src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt +++ b/src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt @@ -56,6 +56,7 @@ corrade_add_test(AnyImageImporterTest AnyImageImporterTest.cpp FILES gray.jpg image.exr + rgb.basis rgb.hdr rgb.png rgba_dxt1.dds diff --git a/src/MagnumPlugins/AnyImageImporter/Test/rgb.basis b/src/MagnumPlugins/AnyImageImporter/Test/rgb.basis new file mode 100644 index 0000000000000000000000000000000000000000..49f3cdbee5cd48edab8ef402e23b64c6164c4225 GIT binary patch literal 390 zcmXSR5@zsaaGzz#$iQ$0L;w*O11TgR#E=5yg)lIPFzf&_d>9y5fC@c3=%2d z8gDN2;AHGz07^2jEXw5AyFE`qvXb$7&!m#&|8I+YUKOETk#S~`vV8H>Pf83*znFzV zPGw;5X!;-V#9?*=BLj=z(aSb!7cJ$uJ{Z|~1vD611vD}}fAsx(_@n6$8pF1=Pu(Lu zegFOc{~csx5|+2PUoz}>l3-+t`0KC+=)RW57tG2rlT@@#H=aNd)FpMixz zqG{{jNf*{|b)*8gMfp1Smm|E6EtrM~gF%!J=@FYjcFEiycXYx&K4{i9pbru@{ D?74hj literal 0 HcmV?d00001