Browse Source

AnyImageImporter: Delegate .basis files to BasisImporter

Signed-off-by: Squareys <squareys@googlemail.com>
findsdl-include-root
Squareys 7 years ago committed by Vladimír Vondruš
parent
commit
a1c2c9c6b3
  1. 9
      src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp
  2. 2
      src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h
  3. 3
      src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp
  4. 1
      src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt
  5. BIN
      src/MagnumPlugins/AnyImageImporter/Test/rgb.basis

9
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<const char> 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"))

2
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

3
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 */
};

1
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

BIN
src/MagnumPlugins/AnyImageImporter/Test/rgb.basis

Binary file not shown.
Loading…
Cancel
Save