raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=01fb3233eb0ebd0a8e28cad5ee1026c84f5605f7

commit 01fb3233eb0ebd0a8e28cad5ee1026c84f5605f7
Author: Vincent Torri <[email protected]>
Date:   Thu Apr 28 16:58:46 2022 +0100

    Evas: add jxl loader and saver
    
    add jxl loader and saver to Evas.
    
    Entice for loading, animated jxl files or not some conformances files :
    https://github.com/libjxl/conformance/tree/master/testcases
---
 meson_options.txt                     | 4 ++--
 po/POTFILES.in                        | 1 +
 src/lib/evas/common/evas_image_load.c | 4 +++-
 src/lib/evas/common/evas_image_save.c | 2 ++
 src/lib/evas/file/evas_module.c       | 8 ++++++++
 src/lib/evas/meson.build              | 4 ++++
 6 files changed, 20 insertions(+), 3 deletions(-)

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]],

-- 


Reply via email to