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 000000000..f0c917a14 Binary files /dev/null and b/src/MagnumPlugins/AnyImageImporter/Test/rgb.bmp differ