diff --git a/meson_options.txt b/meson_options.txt index 992a7af975..b39f64970c 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -195,8 +195,8 @@ option('unmount-path', option('evas-loaders-disabler', type : 'array', description : 'List of modular image/vector loaders to disable in efl', - choices : ['', 'gst', 'pdf', 'ps', 'raw', 'svg', 'rsvg', 'xcf', 'bmp', 'dds', 'eet', 'generic', 'gif', 'ico', 'jp2k', 'jpeg', 'pmaps', 'png', 'psd', 'tga', 'tgv', 'tiff', 'wbmp', 'webp', 'xpm', 'json', 'avif', 'heif'], - value : ['json', 'avif', 'heif'] + choices : ['', 'gst', 'pdf', 'ps', 'raw', 'svg', 'rsvg', 'xcf', 'bmp', 'dds', 'eet', 'generic', 'gif', 'ico', 'jp2k', 'jpeg', 'pmaps', 'png', 'psd', 'tga', 'tgv', 'tiff', 'wbmp', 'webp', 'xpm', 'json', 'avif', 'heif', 'jxl'], + value : ['json', 'avif', 'heif', 'jxl'] ) option('ecore-imf-loaders-disabler', diff --git a/po/POTFILES.in b/po/POTFILES.in index 213d767ac3..9598abfc42 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -3164,6 +3164,7 @@ src/modules/evas/image_loaders/heif/evas_image_load_heif.c src/modules/evas/image_loaders/ico/evas_image_load_ico.c src/modules/evas/image_loaders/jp2k/evas_image_load_jp2k.c src/modules/evas/image_loaders/jpeg/evas_image_load_jpeg.c +src/modules/evas/image_loaders/jxl/evas_image_load_jxl.c src/modules/evas/image_loaders/pmaps/evas_image_load_pmaps.c src/modules/evas/image_loaders/png/evas_image_load_png.c src/modules/evas/image_loaders/psd/evas_image_load_psd.c diff --git a/src/lib/evas/common/evas_image_load.c b/src/lib/evas/common/evas_image_load.c index 5ca80b5811..3e2b567948 100644 --- a/src/lib/evas/common/evas_image_load.c +++ b/src/lib/evas/common/evas_image_load.c @@ -66,6 +66,8 @@ static const struct ext_loader_s loaders[] = MATCHING(".dds", "dds"), + MATCHING(".jxl", "jxl"), + MATCHING(".avif", "avif"), MATCHING(".avifs", "avif"), @@ -193,7 +195,7 @@ static const struct ext_loader_s loaders[] = static const char *loaders_name[] = { /* in order of most likely needed */ "png", "jpeg", "eet", "xpm", "tiff", "gif", "svg", "webp", "pmaps", - "bmp", "tga", "wbmp", "ico", "psd", "jp2k", "dds", "avif", "heif", + "bmp", "tga", "wbmp", "ico", "psd", "jp2k", "dds", "jxl", "avif", "heif", "generic" }; diff --git a/src/lib/evas/common/evas_image_save.c b/src/lib/evas/common/evas_image_save.c index 45718c5b9f..dc0843eda1 100644 --- a/src/lib/evas/common/evas_image_save.c +++ b/src/lib/evas/common/evas_image_save.c @@ -35,6 +35,8 @@ evas_common_save_image_to_file(RGBA_Image *im, const char *file, const char *key saver = "tgv"; if (!strcasecmp(p, "avif")) saver = "avif"; + if (!strcasecmp(p, "jxl")) + saver = "jxl"; } if (saver) diff --git a/src/lib/evas/file/evas_module.c b/src/lib/evas/file/evas_module.c index 1362a004d8..a3c4f87881 100644 --- a/src/lib/evas/file/evas_module.c +++ b/src/lib/evas/file/evas_module.c @@ -206,6 +206,7 @@ EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, heif); EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, ico); EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, jpeg); EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, jp2k); +EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, jxl); EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, pmaps); EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, png); EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, psd); @@ -227,6 +228,7 @@ EVAS_EINA_STATIC_MODULE_DEFINE(vg_saver, svg); EVAS_EINA_STATIC_MODULE_DEFINE(image_saver, avif); EVAS_EINA_STATIC_MODULE_DEFINE(image_saver, eet); EVAS_EINA_STATIC_MODULE_DEFINE(image_saver, jpeg); +EVAS_EINA_STATIC_MODULE_DEFINE(image_saver, jxl); EVAS_EINA_STATIC_MODULE_DEFINE(image_saver, png); EVAS_EINA_STATIC_MODULE_DEFINE(image_saver, tiff); EVAS_EINA_STATIC_MODULE_DEFINE(image_saver, webp); @@ -320,6 +322,9 @@ static const struct { #ifdef EVAS_STATIC_BUILD_JP2K EVAS_EINA_STATIC_MODULE_USE(image_loader, jp2k), #endif +#ifdef EVAS_STATIC_BUILD_JXL + EVAS_EINA_STATIC_MODULE_USE(image_loader, jxl), +#endif #ifdef EVAS_STATIC_BUILD_PMAPS EVAS_EINA_STATIC_MODULE_USE(image_loader, pmaps), #endif @@ -369,6 +374,9 @@ static const struct { #ifdef EVAS_STATIC_BUILD_JPEG EVAS_EINA_STATIC_MODULE_USE(image_saver, jpeg), #endif +#ifdef EVAS_STATIC_BUILD_JXL + EVAS_EINA_STATIC_MODULE_USE(image_saver, jxl), +#endif #ifdef EVAS_STATIC_BUILD_PNG EVAS_EINA_STATIC_MODULE_USE(image_saver, png), #endif diff --git a/src/lib/evas/meson.build b/src/lib/evas/meson.build index 1bf5fa0801..437b3c3d90 100644 --- a/src/lib/evas/meson.build +++ b/src/lib/evas/meson.build @@ -12,6 +12,8 @@ webpdemux = dependency('libwebpdemux', version: ['>=0.5.0'], required: get_optio libopenjp2 = dependency('libopenjp2', required: get_option('evas-loaders-disabler').contains('jp2k') == false) libavif = dependency('libavif', required: get_option('evas-loaders-disabler').contains('avif') == false, version: '>= 0.8.2') heif= dependency('libheif', required: get_option('evas-loaders-disabler').contains('heif') == false) +libjxl = dependency('libjxl', required: get_option('evas-loaders-disabler').contains('jxl') == false, version: '>= 0.6.1') +libjxl_threads = dependency('libjxl_threads', required: get_option('evas-loaders-disabler').contains('jxl') == false, version: '>= 0.6.1') evas_image_loaders_file = [ ['avif', 'shared', [libavif]], @@ -23,6 +25,7 @@ evas_image_loaders_file = [ ['ico', 'shared', []], ['jpeg', 'static', [jpeg]], ['jp2k', 'shared', [libopenjp2]], + ['jxl', 'shared', [libjxl, libjxl_threads]], ['pmaps', 'shared', []], ['png', 'static', [png]], ['psd', 'shared', []], @@ -38,6 +41,7 @@ evas_image_savers_file = [ ['avif', 'shared', [libavif]], ['eet', 'static', [eet]], ['jpeg', 'static', [jpeg]], + ['jxl' , 'shared', [libjxl, libjxl_threads]], ['png', 'static', [png]], ['tgv', 'shared', [rg_etc, lz4]], ['tiff', 'shared', [tiff]],