summaryrefslogtreecommitdiff
path: root/src/loader/loader.c
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-07-13 21:13:35 +0300
committerPaul Buetow <paul@buetow.org>2026-07-13 21:13:35 +0300
commit484fbca06312dbe0f381109763f701671f22e602 (patch)
treeee8bc47f32a2a767831e05a5b949c5a05aeec4f5 /src/loader/loader.c
parent25ee19ce91dcb204d93e6d8cceb7cd64d5f057f9 (diff)
modernfmt: JXL/HEIF/AVIF loader backends, conditional (qt0)
M5 (task qt0): modern format backends. - src/loader/backends/jxl.c: libjxl decoder → RGBA → GdkMemoryTexture. - src/loader/backends/heif.c: libheif decoder → interleaved RGBA → GdkMemoryTexture (also handles AVIF when libavif is absent). - src/loader/backends/avif.c: libavif decoder (written; auto-disabled when libavif is not installed). - src/loader/loader.c: BACKENDS array conditionally includes the backends via -DHAVE_JXL/HAVE_AVIF/HAVE_HEIF; pixbuf remains last (fallback). - meson.build: conditional backend sources + c_args + extra deps. - tests: assert_unsupports updated to assert NULL only (any error, works with or without the specific backend compiled in). - Minimal build (all disabled) + full build (jxl+heif) both 14/14 green, ASan clean.
Diffstat (limited to 'src/loader/loader.c')
-rw-r--r--src/loader/loader.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/loader/loader.c b/src/loader/loader.c
index 2121534..9721c2a 100644
--- a/src/loader/loader.c
+++ b/src/loader/loader.c
@@ -19,8 +19,27 @@
/* Registered backends, priority order (specific first, fallback LAST).
* pixbuf_backend must remain last: it accepts GGAZE_FMT_UNKNOWN. */
+#ifdef HAVE_JXL
+extern const GgazeLoaderBackend jxl_backend;
+#endif
+#ifdef HAVE_AVIF
+extern const GgazeLoaderBackend avif_backend;
+#endif
+#ifdef HAVE_HEIF
+extern const GgazeLoaderBackend heif_backend;
+#endif
+
static const GgazeLoaderBackend *BACKENDS[] = {
- /* jxl_backend, avif_backend, heif_backend land here in M5. */
+#ifdef HAVE_JXL
+ &jxl_backend,
+#endif
+#ifdef HAVE_AVIF
+ &avif_backend,
+#endif
+#ifdef HAVE_HEIF
+ &heif_backend,
+#endif
+ /* pixbuf fallback (PNG/JPEG/GIF/WebP/TIFF/ICO) — must be last. */
&pixbuf_backend,
};