diff options
author | Juri Linkov <juri@linkov.net> | 2019-11-30 23:21:00 +0200 |
---|---|---|
committer | Juri Linkov <juri@linkov.net> | 2019-11-30 23:21:00 +0200 |
commit | 3c278b4999632621ef9690b319798d4ed752b163 (patch) | |
tree | f539919b4c2fbcc3712ea83719e0b71717402838 /lisp/image.el | |
parent | d64ea182fb6e2bf3af8ac8a289e8029ded36407e (diff) | |
download | emacs-3c278b4999632621ef9690b319798d4ed752b163.tar.gz |
* lisp/image.el: Support image scaling with mouse in other buffer.
* lisp/image.el (image-increase-size, image-decrease-size):
Add optional arg position.
(image-mouse-increase-size, image-mouse-decrease-size):
Use '(point-marker)' for arg position.
(image--get-image): Use get-char-property from position if non-nil,
and its buffer.
(image--get-imagemagick-and-warn, image--change-size):
Add optional arg position.
Diffstat (limited to 'lisp/image.el')
-rw-r--r-- | lisp/image.el | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/lisp/image.el b/lisp/image.el index f4ed4e79fc0..254e7e58b67 100644 --- a/lisp/image.el +++ b/lisp/image.el @@ -1012,7 +1012,7 @@ has no effect." (imagemagick-register-types) -(defun image-increase-size (&optional n) +(defun image-increase-size (&optional n position) "Increase the image size by a factor of N. If N is 3, then the image size will be increased by 30%. The default is 20%." @@ -1027,9 +1027,10 @@ default is 20%." #'image--change-size (if n (1+ (/ (prefix-numeric-value n) 10.0)) - 1.2))) + 1.2) + position)) -(defun image-decrease-size (&optional n) +(defun image-decrease-size (&optional n position) "Decrease the image size by a factor of N. If N is 3, then the image size will be decreased by 30%. The default is 20%." @@ -1044,7 +1045,8 @@ default is 20%." #'image--change-size (if n (- 1 (/ (prefix-numeric-value n) 10.0)) - 0.8))) + 0.8) + position)) (defun image-mouse-increase-size (&optional event) "Increase the image size using the mouse." @@ -1052,7 +1054,7 @@ default is 20%." (when (listp event) (save-window-excursion (posn-set-point (event-start event)) - (image-increase-size)))) + (image-increase-size nil (point-marker))))) (defun image-mouse-decrease-size (&optional event) "Decrease the image size using the mouse." @@ -1060,27 +1062,29 @@ default is 20%." (when (listp event) (save-window-excursion (posn-set-point (event-start event)) - (image-decrease-size)))) + (image-decrease-size nil (point-marker))))) -(defun image--get-image () +(defun image--get-image (&optional position) "Return the image at point." - (let ((image (get-char-property (point) 'display))) + (let ((image (get-char-property (or position (point)) 'display + (when (markerp position) + (marker-buffer position))))) (unless (eq (car-safe image) 'image) (error "No image under point")) image)) -(defun image--get-imagemagick-and-warn () +(defun image--get-imagemagick-and-warn (&optional position) (unless (or (fboundp 'imagemagick-types) (image-transforms-p)) (error "Cannot rescale images on this terminal")) - (let ((image (image--get-image))) + (let ((image (image--get-image position))) (image-flush image) (when (and (fboundp 'imagemagick-types) (not (image-transforms-p))) (plist-put (cdr image) :type 'imagemagick)) image)) -(defun image--change-size (factor) - (let* ((image (image--get-imagemagick-and-warn)) +(defun image--change-size (factor &optional position) + (let* ((image (image--get-imagemagick-and-warn position)) (new-image (image--image-without-parameters image)) (scale (image--current-scaling image new-image))) (setcdr image (cdr new-image)) |