aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorAlan Third2019-06-05 21:51:33 +0100
committerAlan Third2019-06-05 22:28:46 +0100
commit610fb73ab6d7a22b722f523d6ebc4aa8fa1db7c9 (patch)
tree8a3ee992ccc310071ac5a97ced8907652974c88e /lisp
parent9201cf62ce9f17793bb6103050c9ba27eb942e57 (diff)
downloademacs-610fb73ab6d7a22b722f523d6ebc4aa8fa1db7c9.tar.gz
emacs-610fb73ab6d7a22b722f523d6ebc4aa8fa1db7c9.zip
Add native image rotation and cropping
* lisp/image.el (image--get-imagemagick-and-warn): Only fallback to ImageMagick if native transforms aren't available. * src/dispextern.h (INIT_MATRIX, COPY_MATRIX, MULT_MATRICES): New macros for matrix manipulation. (HAVE_NATIVE_SCALING, HAVE_NATIVE_TRANSFORMS): Rename and change all relevant locations. * src/image.c (x_set_image_rotation): (x_set_transform): New functions. (x_set_image_size): Use transform matrix for resizing under X and NS. (x_set_image_crop): New function. (lookup_image): Use the new transform functions. (Fimage_scaling_p, Fimage_transforms_p): Rename and update all callers. * src/nsimage.m (ns_load_image): Remove rotation code. (ns_image_set_transform): New function. ([EmacsImage dealloc]): Release the saved transform. ([EmacsImage rotate:]): Remove unneeded method. ([EmacsImage setTransform:]): New method. * src/nsterm.h (EmacsImage): Add transform property and update method definitions. * src/nsterm.m (ns_dumpglyphs_image): Use the transform to draw the image correctly. * src/xterm.c (x_composite_image): Use PictOpSrc as we don't care about alpha values here. * doc/lispref/display.texi (Image Descriptors): Add :rotation. (ImageMagick Images): Remove :rotation.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/image.el5
1 files changed, 3 insertions, 2 deletions
diff --git a/lisp/image.el b/lisp/image.el
index db113020866..b58b1dc9542 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -992,11 +992,12 @@ default is 20%."
992 image)) 992 image))
993 993
994(defun image--get-imagemagick-and-warn () 994(defun image--get-imagemagick-and-warn ()
995 (unless (or (fboundp 'imagemagick-types) (image-scaling-p)) 995 (unless (or (fboundp 'imagemagick-types) (image-transforms-p))
996 (error "Cannot rescale images on this terminal")) 996 (error "Cannot rescale images on this terminal"))
997 (let ((image (image--get-image))) 997 (let ((image (image--get-image)))
998 (image-flush image) 998 (image-flush image)
999 (when (fboundp 'imagemagick-types) 999 (when (and (fboundp 'imagemagick-types)
1000 (not (image-transforms-p)))
1000 (plist-put (cdr image) :type 'imagemagick)) 1001 (plist-put (cdr image) :type 'imagemagick))
1001 image)) 1002 image))
1002 1003