]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow passing in max-width/height
authorLars Ingebrigtsen <larsi@gnus.org>
Tue, 24 Jan 2017 20:17:09 +0000 (21:17 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Tue, 24 Jan 2017 20:17:45 +0000 (21:17 +0100)
* lisp/net/shr.el (shr-rescale-image): Allow passing in
max-width/height (bug#25287).

lisp/net/shr.el

index e0bb3dbb2b722595848ac13f9f76a93929cac1e4..1c2ea3c7bc508c3b1ea01a5477eb7dcac96df5ab 100644 (file)
@@ -1011,18 +1011,25 @@ element is the data blob and the second element is the content-type."
        image)
     (insert (or alt ""))))
 
-(defun shr-rescale-image (data content-type width height)
+(defun shr-rescale-image (data content-type width height
+                               &optional max-width max-height)
   "Rescale DATA, if too big, to fit the current buffer.
-WIDTH and HEIGHT are the sizes given in the HTML data, if any."
+WIDTH and HEIGHT are the sizes given in the HTML data, if any.
+
+The size of the displayed image will not exceed
+MAX-WIDTH/MAX-HEIGHT.  If not given, use the current window
+width/height instead."
   (if (or (not (fboundp 'imagemagick-types))
           (not (get-buffer-window (current-buffer))))
       (create-image data nil t :ascent 100)
     (let* ((edges (window-inside-pixel-edges
                    (get-buffer-window (current-buffer))))
            (max-width (truncate (* shr-max-image-proportion
-                                   (- (nth 2 edges) (nth 0 edges)))))
+                                   (or max-width
+                                       (- (nth 2 edges) (nth 0 edges))))))
            (max-height (truncate (* shr-max-image-proportion
-                                    (- (nth 3 edges) (nth 1 edges)))))
+                                    (or max-height
+                                        (- (nth 3 edges) (nth 1 edges))))))
            (scaling (image-compute-scaling-factor image-scaling-factor)))
       (when (or (and width
                      (> width max-width))