{ "module": "imageformats", "depends": [ "gui" ], "condition": "module.gui", "commandline": { "options": { "jasper": { "type": "boolean" }, "mng": { "type": "boolean" }, "tiff": { "type": "enum", "values": [ "no", "qt", "system" ] }, "webp": { "type": "enum", "values": [ "no", "qt", "system" ] } } }, "libraries": { "jasper": { "headers": "jasper/jasper.h", "test": { "include": [ "string.h", "jasper/jasper.h" ], "head": [ "constexpr bool streq(const char *a, const char *b)", "{", " return a[0] == b[0] && (!a[0] || streq(a + 1, b + 1));", "}" ], "main": [ "static_assert(!streq(JAS_VERSION, \"1.900.0\"),", " \"JasPer version 1.900.0 is considered broken.\");" ] }, "sources": [ { "type": "pkgConfig", "args": "jasper" }, { "libs": "-ljasper" } ] }, "mng": { "headers": "libmng.h", "test": { "include": [ "stdio.h", "libmng.h" ], "main": [ "mng_handle hMNG;", "mng_cleanup(&hMNG);", "#if defined(MNG_VERSION_MAJOR)", "#if MNG_VERSION_MAJOR < 1 || (MNG_VERSION_MAJOR == 1 && MNG_VERSION_MINOR == 0 && MNG_VERSION_RELEASE < 9)", "#error System libmng version is less than 1.0.9", "#endif", "#endif" ] }, "sources": [ { "type": "pkgConfig", "args": "libmng" }, { "libs": "-lmng" } ] }, "tiff": { "headers": "tiffio.h", "test": { "main": [ "#if !defined(TIFF_VERSION) && defined(TIFF_VERSION_CLASSIC)", "// libtiff 4.0 splits it into TIFF_VERSION_CLASSIC and TIFF_VERSION_BIG", "# define TIFF_VERSION TIFF_VERSION_CLASSIC", "#endif", "#if !defined(TIFF_VERSION)", "# error \"Required libtiff not found\"", "#elif TIFF_VERSION < 42", "# error \"unsupported tiff version\"", "#endif", "tdata_t buffer = _TIFFmalloc(128);", "_TIFFfree(buffer);", "// some libtiff implementations where TIFF_VERSION >= 42 do not", "// have TIFFReadRGBAImageOriented(), so let's check for it", "TIFFReadRGBAImageOriented(0, 0, 0, 0, 0, 0);" ] }, "sources": [ { "type": "pkgConfig", "args": "libtiff-4" }, { "libs": "-ltiff" } ] }, "webp": { "headers": [ "webp/decode.h", "webp/encode.h", "webp/demux.h", "webp/mux.h" ], "test": { "main": [ "#if WEBP_ABI_IS_INCOMPATIBLE(WEBP_DECODER_ABI_VERSION, 0x0203) || WEBP_ABI_IS_INCOMPATIBLE(WEBP_ENCODER_ABI_VERSION, 0x0202)", "#error \"Incompatible libwebp version\"", "#endif", "WebPDecoderConfig config;", "WebPDecBuffer *output_buffer = &config.output;", "WebPBitstreamFeatures *bitstream = &config.input;", "WebPPicture picture;", "picture.use_argb = 0;", "WebPConfig config2;", "config2.lossless = 0;", "WebPData data = {};", "WebPDemuxer *demuxer = WebPDemux(&data);", "WebPIterator iter;", "iter.frame_num = 0;" ] }, "sources": [ { "type": "pkgConfig", "args": "libwebp libwebpmux libwebpdemux" }, { "libs": "-lwebp -lwebpdemux -lwebpmux" } ] } }, "features": { "jasper": { "label": "JasPer", "disable": "input.jasper == 'no'", "condition": "features.imageformatplugin && libs.jasper", "output": [ "privateFeature", { "type": "define", "negative": true, "name": "QT_NO_IMAGEFORMAT_JASPER" } ] }, "mng": { "label": "MNG", "disable": "input.mng == 'no'", "condition": "libs.mng", "output": [ "privateFeature" ] }, "tiff": { "label": "TIFF", "disable": "input.tiff == 'no'", "condition": "features.imageformatplugin && !(config.winrt && arch.i386)", "output": [ "privateFeature" ] }, "system-tiff": { "label": " Using system libtiff", "disable": "input.tiff == 'qt'", "enable": "input.tiff == 'system'", "condition": "features.tiff && libs.tiff", "output": [ "privateFeature" ] }, "webp": { "label": "WEBP", "disable": "input.webp == 'no'", "condition": "features.imageformatplugin && !(config.winrt && arch.arm)", "output": [ "privateFeature" ] }, "system-webp": { "label": " Using system libwebp", "disable": "input.webp == 'qt'", "enable": "input.webp == 'system'", "condition": "features.webp && libs.webp", "output": [ "privateFeature" ] } }, "summary": [ { "section": "Further Image Formats", "entries": [ "jasper", "mng", "tiff", "system-tiff", "webp", "system-webp" ] } ] }