gnus-util: rewrite gnus-rescale-image
authorJulien Danjou <julien@danjou.info>
Fri, 17 Dec 2010 16:08:53 +0000 (17:08 +0100)
committerJulien Danjou <julien@danjou.info>
Fri, 17 Dec 2010 16:09:02 +0000 (17:09 +0100)
Signed-off-by: Julien Danjou <julien@danjou.info>
lisp/ChangeLog
lisp/gnus-util.el

index fcf97ee..f2a7ddc 100644 (file)
@@ -1,3 +1,8 @@
+2010-12-17  Julien Danjou  <julien@danjou.info>
+
+       * gnus-util.el (gnus-rescale-image): Allow to resize images even if
+       they are from file. Can also scale up.
+
 2010-12-17  Andrew Cohen  <cohen@andy.bu.edu>
 
        * gnus-sum.el (gnus-summary-refer-thread): Simplify code. Restore
index fa4bf07..50292f4 100644 (file)
@@ -1983,21 +1983,16 @@ empty directories from OLD-PATH."
   "Rescale IMAGE to SIZE if possible.
 SIZE is in format (WIDTH . HEIGHT). Return a new image.
 Sizes are in pixels."
-  (if (or (not (fboundp 'imagemagick-types))
-         (not (get-buffer-window (current-buffer))))
-      image
+  (when (fboundp 'imagemagick-types)
     (let ((new-width (car size))
           (new-height (cdr size)))
-      (when (> (cdr (image-size image t)) new-height)
-        (setq image (or (create-image (plist-get (cdr image) :data) 'imagemagick t
-                                      :height new-height)
-                        image)))
-      (when (> (car (image-size image t)) new-width)
-        (setq image (or
-                   (create-image (plist-get (cdr image) :data) 'imagemagick t
-                                 :width new-width)
-                   image)))
-      image)))
+      (unless (= (cdr (image-size image t)) new-height)
+        (setcdr image (plist-put (cdr image) :type 'imagemagick))
+        (setcdr image (plist-put (cdr image) :height new-height)))
+      (unless (= (car (image-size image t)) new-width)
+        (setcdr image (plist-put (cdr image) :type 'imagemagick))
+        (setcdr image (plist-put (cdr image) :width new-width)))))
+  image)
 
 (defun gnus-list-memq-of-list (elements list)
   "Return non-nil if any of the members of ELEMENTS are in LIST."