Browse Source

AnyImage{Importer,Converter}: detect also KTX1.

Even though KtxImporter / KtxImageConverter doesn't support these (and
probably never will), the rationale here is to provide a somewhat better
message than "unable to detect file format" when trying to open a *.ktx
file, or when trying to save to a *.ktx by accident, instead of *.ktx2
(I do that quite often). The concrete plugins are able to provide a much
better error message about version 1 not supported.
ktx1-detection
Vladimír Vondruš 4 years ago
parent
commit
5a8d317ad3
  1. 36
      src/MagnumPlugins/AnyImageConverter/AnyImageConverter.cpp
  2. 6
      src/MagnumPlugins/AnyImageConverter/AnyImageConverter.h
  3. 12
      src/MagnumPlugins/AnyImageConverter/Test/AnyImageConverterTest.cpp
  4. 9
      src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp
  5. 4
      src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h
  6. 2
      src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp
  7. 2
      src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt
  8. BIN
      src/MagnumPlugins/AnyImageImporter/Test/version1.ktx

36
src/MagnumPlugins/AnyImageConverter/AnyImageConverter.cpp

@ -73,7 +73,8 @@ bool AnyImageConverter::doConvertToFile(const ImageView1D& image, const Containe
/* Detect the plugin from extension */ /* Detect the plugin from extension */
Containers::StringView plugin; Containers::StringView plugin;
if(normalizedExtension == ".ktx2"_s) if(normalizedExtension == ".ktx"_s ||
normalizedExtension == ".ktx2"_s)
plugin = "KtxImageConverter"_s; plugin = "KtxImageConverter"_s;
else { else {
Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a 1D image"; Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a 1D image";
@ -129,7 +130,8 @@ bool AnyImageConverter::doConvertToFile(const ImageView2D& image, const Containe
normalizedExtension == ".jpeg"_s || normalizedExtension == ".jpeg"_s ||
normalizedExtension == ".jpe"_s) normalizedExtension == ".jpe"_s)
plugin = "JpegImageConverter"_s; plugin = "JpegImageConverter"_s;
else if(normalizedExtension == ".ktx2"_s) else if(normalizedExtension == ".ktx"_s ||
normalizedExtension == ".ktx2"_s)
plugin = "KtxImageConverter"_s; plugin = "KtxImageConverter"_s;
else if(normalizedExtension == ".png"_s) else if(normalizedExtension == ".png"_s)
plugin = "PngImageConverter"_s; plugin = "PngImageConverter"_s;
@ -184,7 +186,8 @@ bool AnyImageConverter::doConvertToFile(const ImageView3D& image, const Containe
plugin = "BasisImageConverter"_s; plugin = "BasisImageConverter"_s;
else if(normalizedExtension == ".exr"_s) else if(normalizedExtension == ".exr"_s)
plugin = "OpenExrImageConverter"_s; plugin = "OpenExrImageConverter"_s;
else if(normalizedExtension == ".ktx2"_s) else if(normalizedExtension == ".ktx"_s ||
normalizedExtension == ".ktx2"_s)
plugin = "KtxImageConverter"_s; plugin = "KtxImageConverter"_s;
else if(normalizedExtension == ".vdb"_s) else if(normalizedExtension == ".vdb"_s)
plugin = "OpenVdbImageConverter"_s; plugin = "OpenVdbImageConverter"_s;
@ -230,7 +233,8 @@ bool AnyImageConverter::doConvertToFile(const CompressedImageView1D& image, cons
/* Detect the plugin from extension */ /* Detect the plugin from extension */
Containers::StringView plugin; Containers::StringView plugin;
if(normalizedExtension == ".ktx2"_s) if(normalizedExtension == ".ktx"_s ||
normalizedExtension == ".ktx2"_s)
plugin = "KtxImageConverter"_s; plugin = "KtxImageConverter"_s;
else { else {
Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a compressed 1D image"; Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a compressed 1D image";
@ -274,7 +278,8 @@ bool AnyImageConverter::doConvertToFile(const CompressedImageView2D& image, cons
/* Detect the plugin from extension */ /* Detect the plugin from extension */
Containers::StringView plugin; Containers::StringView plugin;
if(normalizedExtension == ".ktx2"_s) if(normalizedExtension == ".ktx"_s ||
normalizedExtension == ".ktx2"_s)
plugin = "KtxImageConverter"_s; plugin = "KtxImageConverter"_s;
else { else {
Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a compressed 2D image"; Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a compressed 2D image";
@ -318,7 +323,8 @@ bool AnyImageConverter::doConvertToFile(const CompressedImageView3D& image, cons
/* Detect the plugin from extension */ /* Detect the plugin from extension */
Containers::StringView plugin; Containers::StringView plugin;
if(normalizedExtension == ".ktx2"_s) if(normalizedExtension == ".ktx"_s ||
normalizedExtension == ".ktx2"_s)
plugin = "KtxImageConverter"_s; plugin = "KtxImageConverter"_s;
else { else {
Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a compressed 3D image"; Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a compressed 3D image";
@ -362,7 +368,8 @@ bool AnyImageConverter::doConvertToFile(const Containers::ArrayView<const ImageV
/* Detect the plugin from extension */ /* Detect the plugin from extension */
Containers::StringView plugin; Containers::StringView plugin;
if(normalizedExtension == ".ktx2"_s) if(normalizedExtension == ".ktx"_s ||
normalizedExtension == ".ktx2"_s)
plugin = "KtxImageConverter"_s; plugin = "KtxImageConverter"_s;
else { else {
Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level 1D image"; Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level 1D image";
@ -410,7 +417,8 @@ bool AnyImageConverter::doConvertToFile(const Containers::ArrayView<const ImageV
plugin = "BasisImageConverter"_s; plugin = "BasisImageConverter"_s;
else if(normalizedExtension == ".exr"_s) else if(normalizedExtension == ".exr"_s)
plugin = "OpenExrImageConverter"_s; plugin = "OpenExrImageConverter"_s;
else if(normalizedExtension == ".ktx2"_s) else if(normalizedExtension == ".ktx"_s ||
normalizedExtension == ".ktx2"_s)
plugin = "KtxImageConverter"_s; plugin = "KtxImageConverter"_s;
else { else {
Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level 2D image"; Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level 2D image";
@ -458,7 +466,8 @@ bool AnyImageConverter::doConvertToFile(const Containers::ArrayView<const ImageV
plugin = "BasisImageConverter"_s; plugin = "BasisImageConverter"_s;
else if(normalizedExtension == ".exr"_s) else if(normalizedExtension == ".exr"_s)
plugin = "OpenExrImageConverter"_s; plugin = "OpenExrImageConverter"_s;
else if(normalizedExtension == ".ktx2"_s) else if(normalizedExtension == ".ktx"_s ||
normalizedExtension == ".ktx2"_s)
plugin = "KtxImageConverter"_s; plugin = "KtxImageConverter"_s;
else { else {
Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level 3D image"; Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level 3D image";
@ -502,7 +511,8 @@ bool AnyImageConverter::doConvertToFile(const Containers::ArrayView<const Compre
/* Detect the plugin from extension */ /* Detect the plugin from extension */
Containers::StringView plugin; Containers::StringView plugin;
if(normalizedExtension == ".ktx2"_s) if(normalizedExtension == ".ktx"_s ||
normalizedExtension == ".ktx2"_s)
plugin = "KtxImageConverter"_s; plugin = "KtxImageConverter"_s;
else { else {
Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level compressed 1D image"; Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level compressed 1D image";
@ -546,7 +556,8 @@ bool AnyImageConverter::doConvertToFile(const Containers::ArrayView<const Compre
/* Detect the plugin from extension */ /* Detect the plugin from extension */
Containers::StringView plugin; Containers::StringView plugin;
if(normalizedExtension == ".ktx2"_s) if(normalizedExtension == ".ktx"_s ||
normalizedExtension == ".ktx2"_s)
plugin = "KtxImageConverter"_s; plugin = "KtxImageConverter"_s;
else { else {
Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level compressed 2D image"; Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level compressed 2D image";
@ -590,7 +601,8 @@ bool AnyImageConverter::doConvertToFile(const Containers::ArrayView<const Compre
/* Detect the plugin from extension */ /* Detect the plugin from extension */
Containers::StringView plugin; Containers::StringView plugin;
if(normalizedExtension == ".ktx2"_s) if(normalizedExtension == ".ktx"_s ||
normalizedExtension == ".ktx2"_s)
plugin = "KtxImageConverter"_s; plugin = "KtxImageConverter"_s;
else { else {
Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level compressed 3D image"; Error{} << "Trade::AnyImageConverter::convertToFile(): cannot determine the format of" << filename << "for a multi-level compressed 3D image";

6
src/MagnumPlugins/AnyImageConverter/AnyImageConverter.h

@ -68,9 +68,9 @@ tries to convert the file with it. Supported formats for uncompressed data:
`HdrImageConverter`. Only uncompressed 2D images. `HdrImageConverter`. Only uncompressed 2D images.
- JPEG (`*.jpg`, `*.jpe`, `*.jpeg`), converted with @ref JpegImageConverter - JPEG (`*.jpg`, `*.jpe`, `*.jpeg`), converted with @ref JpegImageConverter
or any other plugin that provides it. Only uncompressed 2D images. or any other plugin that provides it. Only uncompressed 2D images.
- KTX2 (`*.ktx2`), converted with @ref KtxImageConverter or any other plugin - KTX1 and KTX2 (`*.ktx`, `*.ktx2`), converted with @ref KtxImageConverter or
that provides it. Uncompressed, compressed, 1D/2D/3D and multi-level any other plugin that provides it. Uncompressed, compressed, 1D/2D/3D and
1D/2D/3D images. multi-level 1D/2D/3D images.
- Portable Network Graphics (`*.png`), converted with @ref PngImageConverter - Portable Network Graphics (`*.png`), converted with @ref PngImageConverter
or any other plugin that provides it. Only uncompressed 2D images. or any other plugin that provides it. Only uncompressed 2D images.
- Truevision TGA (`*.tga`, `*.vda`, `*.icb`, `*.vst`), converted with - Truevision TGA (`*.tga`, `*.vda`, `*.icb`, `*.vst`), converted with

12
src/MagnumPlugins/AnyImageConverter/Test/AnyImageConverterTest.cpp

@ -141,6 +141,7 @@ constexpr struct {
const char* filename; const char* filename;
const char* plugin; const char* plugin;
} Detect1DData[]{ } Detect1DData[]{
{"KTX1", "file.ktx", "KtxImageConverter"},
{"KTX2", "file.ktx2", "KtxImageConverter"}, {"KTX2", "file.ktx2", "KtxImageConverter"},
/* Have at least one test case with uppercase */ /* Have at least one test case with uppercase */
{"KTX2 uppercase", "FIL~1.KTX2", "KtxImageConverter"} {"KTX2 uppercase", "FIL~1.KTX2", "KtxImageConverter"}
@ -159,6 +160,7 @@ constexpr struct {
{"JPEG weird extension", "file.jpe", "JpegImageConverter"}, {"JPEG weird extension", "file.jpe", "JpegImageConverter"},
/* Have at least one test case with uppercase */ /* Have at least one test case with uppercase */
{"JPEG uppercase", "output.JPG", "JpegImageConverter"}, {"JPEG uppercase", "output.JPG", "JpegImageConverter"},
{"KTX1", "file.ktx", "KtxImageConverter"},
{"KTX2", "foo.ktx2", "KtxImageConverter"}, {"KTX2", "foo.ktx2", "KtxImageConverter"},
{"PNG", "file.png", "PngImageConverter"} {"PNG", "file.png", "PngImageConverter"}
}; };
@ -170,6 +172,7 @@ constexpr struct {
} Detect3DData[]{ } Detect3DData[]{
{"Basis Universal", "file.basis", "BasisImageConverter"}, {"Basis Universal", "file.basis", "BasisImageConverter"},
{"EXR", "file.exr", "OpenExrImageConverter"}, {"EXR", "file.exr", "OpenExrImageConverter"},
{"KTX1", "file.ktx", "KtxImageConverter"},
{"KTX2", "file.ktx2", "KtxImageConverter"}, {"KTX2", "file.ktx2", "KtxImageConverter"},
{"OpenVDB", "volume.vdb", "OpenVdbImageConverter"}, {"OpenVDB", "volume.vdb", "OpenVdbImageConverter"},
/* Have at least one test case with uppercase */ /* Have at least one test case with uppercase */
@ -181,6 +184,7 @@ constexpr struct {
const char* filename; const char* filename;
const char* plugin; const char* plugin;
} DetectLevels1DData[]{ } DetectLevels1DData[]{
{"KTX1", "file.ktx", "KtxImageConverter"},
{"KTX2", "file.ktx2", "KtxImageConverter"}, {"KTX2", "file.ktx2", "KtxImageConverter"},
/* Have at least one test case with uppercase */ /* Have at least one test case with uppercase */
{"KTX2 uppercase", "FIL~1.KTX2", "KtxImageConverter"} {"KTX2 uppercase", "FIL~1.KTX2", "KtxImageConverter"}
@ -193,6 +197,7 @@ constexpr struct {
} DetectLevels2DData[]{ } DetectLevels2DData[]{
{"Basis Universal", "file.basis", "BasisImageConverter"}, {"Basis Universal", "file.basis", "BasisImageConverter"},
{"EXR", "file.exr", "OpenExrImageConverter"}, {"EXR", "file.exr", "OpenExrImageConverter"},
{"KTX1", "file.ktx", "KtxImageConverter"},
{"KTX2", "file.ktx2", "KtxImageConverter"}, {"KTX2", "file.ktx2", "KtxImageConverter"},
/* Have at least one test case with uppercase */ /* Have at least one test case with uppercase */
{"EXR uppercase", "FIL~1.EXR", "OpenExrImageConverter"} {"EXR uppercase", "FIL~1.EXR", "OpenExrImageConverter"}
@ -205,6 +210,7 @@ constexpr struct {
} DetectLevels3DData[]{ } DetectLevels3DData[]{
{"Basis Universal", "file.basis", "BasisImageConverter"}, {"Basis Universal", "file.basis", "BasisImageConverter"},
{"EXR", "file.exr", "OpenExrImageConverter"}, {"EXR", "file.exr", "OpenExrImageConverter"},
{"KTX1", "file.ktx", "KtxImageConverter"},
{"KTX2", "file.ktx2", "KtxImageConverter"}, {"KTX2", "file.ktx2", "KtxImageConverter"},
/* Have at least one test case with uppercase */ /* Have at least one test case with uppercase */
{"EXR uppercase", "FIL~1.EXR", "OpenExrImageConverter"} {"EXR uppercase", "FIL~1.EXR", "OpenExrImageConverter"}
@ -218,6 +224,7 @@ constexpr struct {
const char* filename; const char* filename;
const char* plugin; const char* plugin;
} DetectCompressed1DData[]{ } DetectCompressed1DData[]{
{"KTX1", "file.ktx", "KtxImageConverter"},
{"KTX2", "file.ktx2", "KtxImageConverter"}, {"KTX2", "file.ktx2", "KtxImageConverter"},
/* Have at least one test case with uppercase */ /* Have at least one test case with uppercase */
{"KTX2 uppercase", "FIL~1.KTX2", "KtxImageConverter"} {"KTX2 uppercase", "FIL~1.KTX2", "KtxImageConverter"}
@ -228,6 +235,7 @@ constexpr struct {
const char* filename; const char* filename;
const char* plugin; const char* plugin;
} DetectCompressed2DData[]{ } DetectCompressed2DData[]{
{"KTX1", "file.ktx", "KtxImageConverter"},
{"KTX2", "file.ktx2", "KtxImageConverter"}, {"KTX2", "file.ktx2", "KtxImageConverter"},
/* Have at least one test case with uppercase */ /* Have at least one test case with uppercase */
{"KTX2 uppercase", "FIL~1.KTX2", "KtxImageConverter"} {"KTX2 uppercase", "FIL~1.KTX2", "KtxImageConverter"}
@ -238,6 +246,7 @@ constexpr struct {
const char* filename; const char* filename;
const char* plugin; const char* plugin;
} DetectCompressed3DData[]{ } DetectCompressed3DData[]{
{"KTX1", "file.ktx", "KtxImageConverter"},
{"KTX2", "file.ktx2", "KtxImageConverter"}, {"KTX2", "file.ktx2", "KtxImageConverter"},
/* Have at least one test case with uppercase */ /* Have at least one test case with uppercase */
{"KTX2 uppercase", "FIL~1.KTX2", "KtxImageConverter"} {"KTX2 uppercase", "FIL~1.KTX2", "KtxImageConverter"}
@ -248,6 +257,7 @@ constexpr struct {
const char* filename; const char* filename;
const char* plugin; const char* plugin;
} DetectCompressedLevels1DData[]{ } DetectCompressedLevels1DData[]{
{"KTX1", "file.ktx", "KtxImageConverter"},
{"KTX2", "file.ktx2", "KtxImageConverter"}, {"KTX2", "file.ktx2", "KtxImageConverter"},
/* Have at least one test case with uppercase */ /* Have at least one test case with uppercase */
{"KTX2 uppercase", "FIL~1.KTX2", "KtxImageConverter"} {"KTX2 uppercase", "FIL~1.KTX2", "KtxImageConverter"}
@ -258,6 +268,7 @@ constexpr struct {
const char* filename; const char* filename;
const char* plugin; const char* plugin;
} DetectCompressedLevels2DData[]{ } DetectCompressedLevels2DData[]{
{"KTX1", "file.ktx", "KtxImageConverter"},
{"KTX2", "file.ktx2", "KtxImageConverter"}, {"KTX2", "file.ktx2", "KtxImageConverter"},
/* Have at least one test case with uppercase */ /* Have at least one test case with uppercase */
{"KTX2 uppercase", "FIL~1.KTX2", "KtxImageConverter"} {"KTX2 uppercase", "FIL~1.KTX2", "KtxImageConverter"}
@ -268,6 +279,7 @@ constexpr struct {
const char* filename; const char* filename;
const char* plugin; const char* plugin;
} DetectCompressedLevels3DData[]{ } DetectCompressedLevels3DData[]{
{"KTX1", "file.ktx", "KtxImageConverter"},
{"KTX2", "file.ktx2", "KtxImageConverter"}, {"KTX2", "file.ktx2", "KtxImageConverter"},
/* Have at least one test case with uppercase */ /* Have at least one test case with uppercase */
{"KTX2 uppercase", "FIL~1.KTX2", "KtxImageConverter"} {"KTX2 uppercase", "FIL~1.KTX2", "KtxImageConverter"}

9
src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp

@ -94,7 +94,8 @@ void AnyImageImporter::doOpenFile(const Containers::StringView filename) {
plugin = "JpegImporter"_s; plugin = "JpegImporter"_s;
else if(normalizedExtension == ".jp2"_s) else if(normalizedExtension == ".jp2"_s)
plugin = "Jpeg2000Importer"_s; plugin = "Jpeg2000Importer"_s;
else if(normalizedExtension == ".ktx2"_s) else if(normalizedExtension == ".ktx"_s ||
normalizedExtension == ".ktx2"_s)
plugin = "KtxImporter"_s; plugin = "KtxImporter"_s;
else if(normalizedExtension == ".mng"_s) else if(normalizedExtension == ".mng"_s)
plugin = "MngImporter"_s; plugin = "MngImporter"_s;
@ -199,8 +200,10 @@ void AnyImageImporter::doOpenData(Containers::Array<char>&& data, DataFlags) {
/* https://en.wikipedia.org/wiki/JPEG#Syntax_and_structure */ /* https://en.wikipedia.org/wiki/JPEG#Syntax_and_structure */
else if(dataString.hasPrefix("\xff\xd8\xff"_s)) else if(dataString.hasPrefix("\xff\xd8\xff"_s))
plugin = "JpegImporter"_s; plugin = "JpegImporter"_s;
/* https://github.khronos.org/KTX-Specification/#_identifier */ /* https://github.khronos.org/KTX-Specification/#_identifier and
else if(dataString.hasPrefix("\xabKTX 20\xbb\r\n\x1a\n"_s)) https://www.khronos.org/registry/KTX/specs/1.0/ktxspec_v1.html */
else if(dataString.hasPrefix("\xabKTX 20\xbb\r\n\x1a\n"_s) ||
dataString.hasPrefix("\xabKTX 11\xbb\r\n\x1a\n"_s))
plugin = "KtxImporter"_s; plugin = "KtxImporter"_s;
/* https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header */ /* https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header */
else if(dataString.hasPrefix("\x89PNG\x0d\x0a\x1a\x0a"_s)) else if(dataString.hasPrefix("\x89PNG\x0d\x0a\x1a\x0a"_s))

4
src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h

@ -78,8 +78,8 @@ Supported formats:
loaded with @ref JpegImporter or any other plugin that provides it loaded with @ref JpegImporter or any other plugin that provides it
- JPEG 2000 (`*.jp2`), loaded with any plugin that provides - JPEG 2000 (`*.jp2`), loaded with any plugin that provides
`Jpeg2000Importer` `Jpeg2000Importer`
- KTX2 (`*.ktx2` or data with corresponding signature), loaded with - KTX and KTX2 (`*.ktx`, `*.ktx2` or data with corresponding signature),
@ref KtxImporter or any other plugin that provides it loaded with @ref KtxImporter or any other plugin that provides it
- Multiple-image Network Graphics (`*.mng`), loaded with any plugin that - Multiple-image Network Graphics (`*.mng`), loaded with any plugin that
provides `MngImporter` provides `MngImporter`
- Portable Bitmap (`*.pbm`), loaded with any plugin that provides `PbmImporter` - Portable Bitmap (`*.pbm`), loaded with any plugin that provides `PbmImporter`

2
src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp

@ -110,6 +110,8 @@ constexpr struct {
{"JPEG data", "gray.jpg", true, "JpegImporter"}, {"JPEG data", "gray.jpg", true, "JpegImporter"},
{"JPEG uppercase", "uppercase.JPG", false, "JpegImporter"}, {"JPEG uppercase", "uppercase.JPG", false, "JpegImporter"},
{"JPEG2000", "image.jp2", false, "Jpeg2000Importer"}, {"JPEG2000", "image.jp2", false, "Jpeg2000Importer"},
{"KTX1", "version1.ktx", false, "KtxImporter"},
{"KTX1 data", "version1.ktx", true, "KtxImporter"},
{"HDR", "rgb.hdr", false, "HdrImporter"}, {"HDR", "rgb.hdr", false, "HdrImporter"},
{"HDR data", "rgb.hdr", true, "HdrImporter"}, {"HDR data", "rgb.hdr", true, "HdrImporter"},
{"ICO", "pngs.ico", false, "IcoImporter"}, {"ICO", "pngs.ico", false, "IcoImporter"},

2
src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt

@ -68,6 +68,8 @@ corrade_add_test(AnyImageImporterTest AnyImageImporterTest.cpp
# Generated by AnyImageConverterTest::convert{1D,3D}() # Generated by AnyImageConverterTest::convert{1D,3D}()
1d.ktx2 1d.ktx2
3d.ktx2 3d.ktx2
# From KtxImporter test data (in magnum-plugins)
version1.ktx
gray.jpg gray.jpg
image.exr image.exr
image.tiff image.tiff

BIN
src/MagnumPlugins/AnyImageImporter/Test/version1.ktx

Binary file not shown.
Loading…
Cancel
Save