diff options
| author | Alan Third | 2019-06-05 21:51:33 +0100 |
|---|---|---|
| committer | Alan Third | 2019-06-05 22:28:46 +0100 |
| commit | 610fb73ab6d7a22b722f523d6ebc4aa8fa1db7c9 (patch) | |
| tree | 8a3ee992ccc310071ac5a97ced8907652974c88e /lisp | |
| parent | 9201cf62ce9f17793bb6103050c9ba27eb942e57 (diff) | |
| download | emacs-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.el | 5 |
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 | ||