From 39c4644fa01f6b9f002119e4109e252bc665b8f1 Mon Sep 17 00:00:00 2001 From: Martin Reboredo <39890836+YakoYakoYokuYoku@users.noreply.github.com> Date: Tue, 2 Mar 2021 14:32:03 -0300 Subject: HEIF support through libheif (#670) With the adoption of AVIF by Firefox and Chromium based browsers (still in experimental phase), the newer incorporation of HEIF by Canon and Sony in their cameras and the newer support of both of them in modern software like ImageMagick, GIMP and Krita, `gd` haven't seen any endorsement for the formats up until this PR. Reading and writing is done by `libheif`, with functionality for chroma subsampling (for now `4:2:0`, `4:2:2` and `4:4:4`), quality (with new `200` for lossless) and compression (whether `HEVC` or `AV1`) selection. This was tested with `libheif` version `1.11.0` in my Solus machine. Also, fixes both #395 and #557. --- windows/Makefile.vc | 7 ++++++- windows/msys/Makefile | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'windows') diff --git a/windows/Makefile.vc b/windows/Makefile.vc index 67a8014..d97b22f 100644 --- a/windows/Makefile.vc +++ b/windows/Makefile.vc @@ -94,10 +94,11 @@ LIB_OBJS= \ $(LIBGD_OBJ_DIR)\gd_version.obj \ $(LIBGD_OBJ_DIR)\gd_crop.obj \ $(LIBGD_OBJ_DIR)\gd_color_map.obj \ + $(LIBGD_OBJ_DIR)\gd_heif.obj \ $(LIBGD_OBJ_DIR)\gd_webp.obj LIBS=kernel32.lib ole32.lib user32.lib advapi32.lib shell32.lib ws2_32.lib Dnsapi.lib Gdi32.Lib -LIBS_GD=libjpeg_a.lib freetype_a.lib libpng_a.lib libiconv_a.lib zlib_a.lib libwebp_a.lib libxpm_a.lib libtiff.lib +LIBS_GD=libjpeg_a.lib freetype_a.lib libpng_a.lib libiconv_a.lib zlib_a.lib libheif_a.lib libwebp_a.lib libxpm_a.lib libtiff.lib PROG_EXES= \ $(LIBGD_OBJ_DIR)\gdcmpgif.exe \ @@ -138,6 +139,7 @@ CFLAGS= $(CFLAGS) \ /DHAVE_LIBJPEG=1\ /DHAVE_LIBPNG=1\ /DHAVE_LIBWEBP=1\ + /DHAVE_LIBHEIF=1\ /DHAVE_LIBZ=1\ /DHAVE_LIBXPM=1\ /DHAVE_LIBTIFF=1\ @@ -196,6 +198,9 @@ make_dirs: @echo #ifndef HAVE_LIBWEBP>> $(GD_CONFIG_H) @echo #define HAVE_LIBWEBP>> $(GD_CONFIG_H) @echo #endif>> $(GD_CONFIG_H) + @echo #ifndef HAVE_LIBHEIF>> $(GD_CONFIG_H) + @echo #define HAVE_LIBHEIF>> $(GD_CONFIG_H) + @echo #endif>> $(GD_CONFIG_H) @echo #ifndef HAVE_LIBZ>> $(GD_CONFIG_H) @echo #define HAVE_LIBZ>> $(GD_CONFIG_H) @echo #endif>> $(GD_CONFIG_H) diff --git a/windows/msys/Makefile b/windows/msys/Makefile index d4acaaf..8c5d380 100644 --- a/windows/msys/Makefile +++ b/windows/msys/Makefile @@ -97,7 +97,7 @@ gd_gif_out.c gd_io_file.c gd_io_ss.c gd_jpeg.c gd_png.c gd_ss.c \ gd_topal.c gd_wbmp.c gdcache.c gdfontg.c gdfontl.c gdfontmb.c \ gdfonts.c gdfontt.c gdft.c gdhelpers.c gdkanji.c gdtables.c gdxpm.c \ wbmp.c gd_filter.c gd_nnquant.c gd_rotate.c gd_matrix.c \ -gd_interpolation.c gd_crop.c gd_webp.c gd_tiff.c gd_tga.c \ +gd_interpolation.c gd_crop.c gd_webp.c gd_heif.c gd_tiff.c gd_tga.c \ gd_bmp.c gd_xbm.c gd_color_match.c gd_version.c gd_filename.c OBJ=$(SRC:.c=.o) -- cgit v1.2.1