[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)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r111811: Generalize "animated" images to "multi-frame" images,
Glenn Morris <=