emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r111811: Generalize "animated" images


From: Glenn Morris
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r111811: Generalize "animated" images to "multi-frame" images
Date: Sat, 16 Feb 2013 11:56:50 -0800
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 111811
fixes bug: http://debbugs.gnu.org/10739
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Sat 2013-02-16 11:56:50 -0800
message:
  Generalize "animated" images to "multi-frame" images
  
  * lisp/image.el (image-animated-types): Remove.
  (image-multi-frame-p): Rename from image-animated-p, and generalize.
  (image-animated-p): Make obsolete alias.
  (image-animate, image-nth-frame, image-animate-timeout):
  Use image-multi-frame-p.
  (image-animate-timeout): If no delay, use image-default-frame-delay.
  
  * lisp/image-mode.el (image-mode, image-toggle-animation):
  Use image-multi-frame-p.
  (image-mode): Adjust startup message for a multi-frame image.
  
  * lisp/gnus/shr.el (shr-put-image): Only animate images that specify a delay.
  This is consistent with the old image-animated-p behavior.
  
  * etc/NEWS: Add placeholder for this.
modified:
  etc/NEWS
  lisp/ChangeLog
  lisp/gnus/ChangeLog
  lisp/gnus/shr.el
  lisp/image-mode.el
  lisp/image.el
=== modified file 'etc/NEWS'
--- a/etc/NEWS  2013-02-16 03:29:39 +0000
+++ b/etc/NEWS  2013-02-16 19:56:50 +0000
@@ -145,6 +145,8 @@
 `f' (`image-next-frame') and `b' (`image-previous-frame') visit the
 next or previous frame.  `F' (`image-goto-frame') shows a specific frame.
 
+*** `image-animated-p' is now `image-multi-frame-p'.
+
 ---
 *** The command `image-mode-fit-frame' deletes other windows.
 When toggling, it restores the frame's previous window configuration.

=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2013-02-16 19:20:21 +0000
+++ b/lisp/ChangeLog    2013-02-16 19:56:50 +0000
@@ -1,5 +1,15 @@
 2013-02-16  Glenn Morris  <address@hidden>
 
+       * image.el (image-animated-types): Remove.
+       (image-multi-frame-p): Rename from image-animated-p, and generalize.
+       (image-animated-p): Make obsolete alias.
+       (image-animate, image-nth-frame, image-animate-timeout):
+       Use image-multi-frame-p.
+       (image-animate-timeout): If no delay, use image-default-frame-delay.
+       * image-mode.el (image-mode, image-toggle-animation):
+       Use image-multi-frame-p.  (Bug#763, bug#10739)
+       (image-mode): Adjust startup message for a multi-frame image.
+
        * image-mode.el (image-mode-map): Give it a menu.
 
 2013-02-16  Michael Albinus  <address@hidden>

=== modified file 'lisp/gnus/ChangeLog'
--- a/lisp/gnus/ChangeLog       2013-02-14 00:44:38 +0000
+++ b/lisp/gnus/ChangeLog       2013-02-16 19:56:50 +0000
@@ -1,3 +1,8 @@
+2013-02-16  Glenn Morris  <address@hidden>
+
+       * shr.el (shr-put-image): Only animate images that specify a delay.
+       This is consistent with the old image-animated-p behavior.
+
 2013-02-14  Katsumi Yamaoka  <address@hidden>
 
        * gnus-util.el (gnus-define-keys): Convert [?\S-\ ] to [(shift space)]

=== modified file 'lisp/gnus/shr.el'
--- a/lisp/gnus/shr.el  2013-01-02 16:13:04 +0000
+++ b/lisp/gnus/shr.el  2013-02-16 19:56:50 +0000
@@ -615,7 +615,8 @@
                  (overlay-put overlay 'face 'default)))
            (insert-image image (or alt "*")))
          (put-text-property start (point) 'image-size size)
-         (when (image-animated-p image)
+         ;; Only animate multi-frame things that specify a delay.  FIXME?
+         (when (cdr (image-animated-p image))
            (image-animate image nil 60)))
        image)
     (insert alt)))

=== modified file 'lisp/image-mode.el'
--- a/lisp/image-mode.el        2013-02-16 19:20:21 +0000
+++ b/lisp/image-mode.el        2013-02-16 19:56:50 +0000
@@ -464,7 +464,7 @@
          (cond
           ((null image)
            (message "%s" (concat msg1 "an image.")))
-          ((setq animated (image-animated-p image))
+          ((setq animated (image-multi-frame-p image))
            (setq image-current-frame (or (plist-get (cdr image) :index) 0)
                  mode-line-process
                  `(:eval (propertize (format " [%s/%s]"
@@ -472,9 +472,9 @@
                                              ,(car animated))
                                      'help-echo "Frame number")))
            (message "%s"
-                    (concat msg1 "text, or "
-                            (substitute-command-keys
-                             "\\[image-toggle-animation] to animate."))))
+                    (concat msg1 "text.  This image has multiple frames.")))
+;;;                         (substitute-command-keys
+;;;                          "\\[image-toggle-animation] to animate."))))
           (t
            (message "%s" (concat msg1 "text."))))))
 
@@ -663,7 +663,7 @@
     (cond
      ((null image)
       (error "No image is present"))
-     ((null (setq animation (image-animated-p image)))
+     ((null (setq animation (image-multi-frame-p image)))
       (message "No image animation."))
      (t
       (let ((timer (image-animate-timer image)))

=== modified file 'lisp/image.el'
--- a/lisp/image.el     2013-02-16 03:39:12 +0000
+++ b/lisp/image.el     2013-02-16 19:56:50 +0000
@@ -606,29 +606,25 @@
 
 ;;; Animated image API
 
-(defconst image-animated-types '(gif)
-  "List of supported animated image types.")
-
 (defvar image-default-frame-delay 0.1
   "Default interval in seconds between frames of a multi-frame image.
 Only used if the image does not specify a value.")
 
-(defun image-animated-p (image)
-  "Return non-nil if IMAGE can be animated.
-To be capable of being animated, an image must be of a type
-listed in `image-animated-types', and contain more than one
-sub-image, with a specified animation delay.  The actual return
-value is a cons (NIMAGES . DELAY), where NIMAGES is the number
-of sub-images in the animated image and DELAY is the delay in
-seconds until the next sub-image should be displayed."
-  (cond
-   ((memq (plist-get (cdr image) :type) image-animated-types)
-    (let* ((metadata (image-metadata image))
-          (images (plist-get metadata 'count))
-          (delay (plist-get metadata 'delay)))
-      (when (and images (> images 1) (numberp delay))
-       (if (< delay 0) (setq delay image-default-frame-delay))
-       (cons images delay))))))
+(defun image-multi-frame-p (image)
+  "Return non-nil if IMAGE contains more than one frame.
+The actual return value is a cons (NIMAGES . DELAY), where NIMAGES is
+the number of frames (or sub-images) in the image and DELAY is the delay
+in seconds that the image specifies between each frame.  DELAY may be nil,
+in which case you might want to use `image-default-frame-delay'."
+  (let* ((metadata (image-metadata image))
+        (images (plist-get metadata 'count))
+        (delay (plist-get metadata 'delay)))
+    (when (and images (> images 1))
+      (if (or (not (numberp delay)) (< delay 0))
+         (setq delay image-default-frame-delay))
+      (cons images delay))))
+
+(define-obsolete-function-alias 'image-animated-p 'image-multi-frame-p "24.4")
 
 ;; "Destructively"?
 (defun image-animate (image &optional index limit)
@@ -639,7 +635,7 @@
 LIMIT specifies how long to animate the image.  If omitted or
 nil, play the animation until the end.  If t, loop forever.  If a
 number, play until that number of seconds has elapsed."
-  (let ((animation (image-animated-p image))
+  (let ((animation (image-multi-frame-p image))
        timer)
     (when animation
       (if (setq timer (image-animate-timer image))
@@ -673,13 +669,13 @@
 do not check N is within the range of frames present in the image."
   (unless nocheck
     (if (< n 0) (setq n 0)
-      (setq n (min n (1- (car (image-animated-p image)))))))
+      (setq n (min n (1- (car (image-multi-frame-p image)))))))
   (plist-put (cdr image) :index n)
   (setq image-current-frame n)
   (force-window-update))
 
 ;; FIXME? The delay may not be the same for different sub-images,
-;; hence we need to call image-animated-p to return it.
+;; hence we need to call image-multi-frame-p to return it.
 ;; But it also returns count, so why do we bother passing that as an
 ;; argument?
 (defun image-animate-timeout (image n count time-elapsed limit)
@@ -695,10 +691,11 @@
   (image-nth-frame image n t)
   (setq n (1+ n))
   (let* ((time (float-time))
-        (animation (image-animated-p image))
+        (animation (image-multi-frame-p image))
         ;; Subtract off the time we took to load the image from the
         ;; stated delay time.
-        (delay (max (+ (cdr animation) time (- (float-time)))
+        (delay (max (+ (or (cdr animation) image-default-frame-delay)
+                       time (- (float-time)))
                     image-minimum-frame-delay))
         done)
     (if (>= n count)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]