Browse Source

AnyImageImporter: detect KTX2

pull/529/head
Pablo Escobar 5 years ago
parent
commit
6e2ff2b707
  1. 5
      src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp
  2. 4
      src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp

5
src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp

@ -84,6 +84,8 @@ void AnyImageImporter::doOpenFile(const std::string& filename) {
plugin = "JpegImporter"; plugin = "JpegImporter";
else if(Utility::String::endsWith(normalized, ".jp2")) else if(Utility::String::endsWith(normalized, ".jp2"))
plugin = "Jpeg2000Importer"; plugin = "Jpeg2000Importer";
else if(Utility::String::endsWith(normalized, ".ktx2"))
plugin = "KtxImporter";
else if(Utility::String::endsWith(normalized, ".mng")) else if(Utility::String::endsWith(normalized, ".mng"))
plugin = "MngImporter"; plugin = "MngImporter";
else if(Utility::String::endsWith(normalized, ".pbm")) else if(Utility::String::endsWith(normalized, ".pbm"))
@ -177,6 +179,9 @@ void AnyImageImporter::doOpenData(Containers::ArrayView<const char> data) {
/* 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"; plugin = "JpegImporter";
/* https://github.khronos.org/KTX-Specification/#_identifier */
else if(dataString.hasPrefix("\xabKTX 20\xbb\r\n\x1a\n"_s))
plugin = "KtxImporter";
/* 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))
plugin = "PngImporter"; plugin = "PngImporter";

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

@ -91,6 +91,7 @@ constexpr struct {
{"JPEG data", "gray.jpg", fileCallback, "JpegImporter"}, {"JPEG data", "gray.jpg", fileCallback, "JpegImporter"},
{"JPEG uppercase", "uppercase.JPG", nullptr, "JpegImporter"}, {"JPEG uppercase", "uppercase.JPG", nullptr, "JpegImporter"},
{"JPEG2000", "image.jp2", nullptr, "Jpeg2000Importer"}, {"JPEG2000", "image.jp2", nullptr, "Jpeg2000Importer"},
{"KTX", "image.ktx2", nullptr, "KtxImporter"},
{"EXR", "image.exr", nullptr, "OpenExrImporter"}, {"EXR", "image.exr", nullptr, "OpenExrImporter"},
{"EXR data", "image.exr", fileCallback, "OpenExrImporter"}, {"EXR data", "image.exr", fileCallback, "OpenExrImporter"},
{"HDR", "rgb.hdr", nullptr, "HdrImporter"}, {"HDR", "rgb.hdr", nullptr, "HdrImporter"},
@ -123,7 +124,8 @@ const struct {
{"just one zero byte", "\x00"_s, "00"}, {"just one zero byte", "\x00"_s, "00"},
{"DDS, but no space", "DDS!"_s, "44445321"}, {"DDS, but no space", "DDS!"_s, "44445321"},
{"TIFF, but too short", "II\x2a"_s, "49492a"}, {"TIFF, but too short", "II\x2a"_s, "49492a"},
{"TIFF, but no zero byte", "MM\xff\x2a"_s, "4d4dff2a"} {"TIFF, but no zero byte", "MM\xff\x2a"_s, "4d4dff2a"},
{"KTX, but wrong version", "\xabKTX 30\xbb\r\n\x1a\n"_s, "ab4b5458"}
}; };
constexpr struct { constexpr struct {

Loading…
Cancel
Save