diff options
| author | Paul Buetow <paul@buetow.org> | 2026-07-13 21:13:35 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-07-13 21:13:35 +0300 |
| commit | 484fbca06312dbe0f381109763f701671f22e602 (patch) | |
| tree | ee8bc47f32a2a767831e05a5b949c5a05aeec4f5 /src/loader/loader.c | |
| parent | 25ee19ce91dcb204d93e6d8cceb7cd64d5f057f9 (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.c | 21 |
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, }; |
