From f3eae5b2f0dc0c242f961bfe1753e1e9099a8138 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Tue, 28 May 2024 19:51:21 +0300 Subject: [PATCH] * lisp/image-mode.el (image-transform-fill-window): New command (bug#69565). (image-mode-menu): Add image-transform-fill-window to the menu. (cherry picked from commit 730b61c64b5d86cc3b38ee15d4530fdd2194619b) --- lisp/image-mode.el | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lisp/image-mode.el b/lisp/image-mode.el index fa64f1ac03e..7cf7845e935 100644 --- a/lisp/image-mode.el +++ b/lisp/image-mode.el @@ -559,6 +559,8 @@ image as text, when opening such images in `image-mode'." :help "Resize image to match the window height and width"] ["Fit Image to Window (Scale down only)" image-transform-fit-both :help "Scale image down to match the window height and width"] + ["Fill Window with Image" image-transform-fill-window + :help "Resize image to fill either width or height of the window"] ["Zoom In" image-increase-size :help "Enlarge the image"] ["Zoom Out" image-decrease-size @@ -1592,6 +1594,18 @@ The percentage is in relation to the original size of the image." (setq image-transform-resize 'fit-window) (image-toggle-display-image)) +(defun image-transform-fill-window () + "Fill the window with the image while keeping image proportions. +This means filling the window with the image as much as possible +without leaving empty space around image edges. Then you can use +either horizontal or vertical scrolling to see the remaining parts +of the image." + (interactive nil image-mode) + (let ((size (image-display-size (image-get-display-property) t))) + (setq image-transform-resize + (if (> (car size) (cdr size)) 'fit-height 'fit-width))) + (image-toggle-display-image)) + (defun image-transform-set-rotation (rotation) "Prompt for an angle ROTATION, and rotate the image by that amount. ROTATION should be in degrees." -- 2.39.2