From b12846cadfa052e222a7b026868e66a5a897a65a Mon Sep 17 00:00:00 2001 From: Alan Third Date: Fri, 26 Nov 2021 12:54:07 +0000 Subject: [PATCH] Add native HEIC support on macOS (bug#51381) * lisp/image.el (image-type-header-regexps): (image-type-file-name-regexps): (image-type-auto-detectable): Add auto-detect code for heic. * src/image.c (syms_of_image): Add heic as an image type under NS. * src/nsimage.m (ns_can_use_native_image_api): Add heic to list of possible image types in the native image support lookup. --- lisp/image.el | 7 ++++--- src/image.c | 5 +++++ src/nsimage.m | 2 ++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lisp/image.el b/lisp/image.el index edbf6c54df..1321560575 100644 --- a/lisp/image.el +++ b/lisp/image.el @@ -56,7 +56,7 @@ image-type-header-regexps "\\(?:!DOCTYPE[ \t\r\n]+[^>]*>[ \t\r\n]*<[ \t\r\n]*" comment-re "*\\)?" "[Ss][Vv][Gg]")) . svg) - ) + ("\\`....ftyp\\(heic\\|heix\\|hevc\\|heim\\|heis\\|hevm\\|hevs\\|mif1\\|msf1\\)" . heic)) "Alist of (REGEXP . IMAGE-TYPE) pairs used to auto-detect image types. When the first bytes of an image file match REGEXP, it is assumed to be of image type IMAGE-TYPE if IMAGE-TYPE is a symbol. If not a symbol, @@ -76,7 +76,7 @@ image-type-file-name-regexps ("\\.ps\\'" . postscript) ("\\.tiff?\\'" . tiff) ("\\.svgz?\\'" . svg) - ) + ("\\.hei[cf]s?\\'" . heic)) "Alist of (REGEXP . IMAGE-TYPE) pairs used to identify image files. When the name of an image file match REGEXP, it is assumed to be of image type IMAGE-TYPE.") @@ -95,7 +95,8 @@ image-type-auto-detectable (tiff . maybe) (svg . maybe) (webp . maybe) - (postscript . nil)) + (postscript . nil) + (heic . maybe)) "Alist of (IMAGE-TYPE . AUTODETECT) pairs used to auto-detect image files. \(See `image-type-auto-detected-p'). diff --git a/src/image.c b/src/image.c index f2597f529d..e94a22caf7 100644 --- a/src/image.c +++ b/src/image.c @@ -11320,6 +11320,11 @@ syms_of_image (void) #endif /* HAVE_NTGUI */ #endif /* HAVE_RSVG */ +#ifdef HAVE_NS + DEFSYM (Qheic, "heic"); + add_image_type (Qheic); +#endif + #if HAVE_NATIVE_IMAGE_API DEFSYM (Qnative_image, "native-image"); # ifdef HAVE_NTGUI diff --git a/src/nsimage.m b/src/nsimage.m index dd2bb3b0d7..98efc9c6c0 100644 --- a/src/nsimage.m +++ b/src/nsimage.m @@ -76,6 +76,8 @@ Updated by Christian Limpach (chris@nice.ch) imageType = @"public.tiff"; else if (EQ (type, Qsvg)) imageType = @"public.svg-image"; + else if (EQ (type, Qheic)) + imageType = @"public.heic"; /* NSImage also supports a host of other types such as PDF and BMP, but we don't yet support these in image.c. */ -- 2.32.0