From 047c539a17b9b68d9bf6526b8974bf285956010f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 28 Jun 2021 23:45:16 +0200 Subject: [PATCH] =?UTF-8?q?=C3=84nyImageImporter:=20recognize=20BMP=20head?= =?UTF-8?q?er=20magic.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I needed to know the signature for a StbImageConverter test, so why not add it here as well now that I managed to figure that out. --- doc/changelog.dox | 2 +- .../AnyImageImporter/AnyImageImporter.cpp | 3 +++ .../AnyImageImporter/AnyImageImporter.h | 3 ++- .../Test/AnyImageImporterTest.cpp | 3 ++- .../AnyImageImporter/Test/CMakeLists.txt | 1 + src/MagnumPlugins/AnyImageImporter/Test/rgb.bmp | Bin 0 -> 162 bytes 6 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 src/MagnumPlugins/AnyImageImporter/Test/rgb.bmp diff --git a/doc/changelog.dox b/doc/changelog.dox index 9820f2f47..55a855c53 100644 --- a/doc/changelog.dox +++ b/doc/changelog.dox @@ -342,7 +342,7 @@ See also: @relativeref{Trade::AbstractImageConverter,doConvertToData()}, for example when the implementation only neeeds to do a format detection based on file extension -- Recognizing TIFF file header magic in @ref Trade::AnyImageImporter "AnyImageImporter" +- Recognizing BMP and TIFF file header magic in @relativeref{Trade,AnyImageImporter} - @ref Audio::AnyImporter "AnyAudioImporter", @relativeref{Trade,AnyImageImporter}, @relativeref{Trade,AnyImageConverter}, @relativeref{Trade,AnySceneImporter}, @relativeref{Trade,AnySceneConverter} diff --git a/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp b/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp index 877852f55..097a41465 100644 --- a/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp +++ b/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp @@ -162,6 +162,9 @@ void AnyImageImporter::doOpenData(Containers::ArrayView data) { /* https://github.com/BinomialLLC/basis_universal/blob/7d784c728844c007d8c95d63231f7adcc0f65364/transcoder/basisu_file_headers.h#L78 */ if(dataString.hasPrefix("sB"_s)) plugin = "BasisImporter"; + /* https://en.wikipedia.org/wiki/BMP_file_format#Bitmap_file_header */ + else if(dataString.hasPrefix("BM"_s)) + plugin = "BmpImporter"; /* https://docs.microsoft.com/cs-cz/windows/desktop/direct3ddds/dx-graphics-dds-pguide */ else if(dataString.hasPrefix("DDS "_s)) plugin = "DdsImporter"; diff --git a/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h b/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h index 01637d825..abbbb5c63 100644 --- a/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h +++ b/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h @@ -58,7 +58,8 @@ tries to open the file with it. Supported formats: - Basis Universal (`*.basis` or data with corresponding signature), loaded with @ref BasisImporter or any other plugin that provides it -- Windows Bitmap (`*.bmp`), loaded with any plugin that provides `BmpImporter` +- Windows Bitmap (`*.bmp` or data with corresponding signature), 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 - Graphics Interchange Format (`*.gif`), loaded with any plugin that provides diff --git a/src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp b/src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp index d210a440c..c57a205a4 100644 --- a/src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp +++ b/src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp @@ -96,7 +96,8 @@ constexpr struct { {"ICO", "pngs.ico", nullptr, "IcoImporter"}, {"DDS", "rgba_dxt1.dds", nullptr, "DdsImporter"}, {"DDS data", "rgba_dxt1.dds", fileCallback, "DdsImporter"}, - {"BMP", "image.bmp", nullptr, "BmpImporter"}, + {"BMP", "rgb.bmp", nullptr, "BmpImporter"}, + {"BMP data", "rgb.bmp", fileCallback, "BmpImporter"}, {"GIF", "image.gif", nullptr, "GifImporter"}, {"PSD", "image.psd", nullptr, "PsdImporter"}, {"TIFF", "image.tiff", nullptr, "TiffImporter"}, diff --git a/src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt b/src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt index 1510bb328..e70e85c26 100644 --- a/src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt +++ b/src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt @@ -59,6 +59,7 @@ corrade_add_test(AnyImageImporterTest AnyImageImporterTest.cpp image.tiff pngs.ico rgb.basis + rgb.bmp rgb.hdr rgb.png rgb.tga diff --git a/src/MagnumPlugins/AnyImageImporter/Test/rgb.bmp b/src/MagnumPlugins/AnyImageImporter/Test/rgb.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f0c917a14c544e3511f42d67bd2dd9013e148df2 GIT binary patch literal 162 zcmZ?rUBmzZT|lY^h?#+y35XdPB!DCXlms)8i2n=>5CjtY@8lj-+;HftM#2s`QH9pm zj1I=e!VPI@Y7S{>Yzt=2