]> git.eshelyaron.com Git - emacs.git/commitdiff
Display a mode-line frame counter for animated images
authorGlenn Morris <rgm@gnu.org>
Sat, 16 Feb 2013 01:58:20 +0000 (20:58 -0500)
committerGlenn Morris <rgm@gnu.org>
Sat, 16 Feb 2013 01:58:20 +0000 (20:58 -0500)
* lisp/image.el (image-current-frame): New variable.
(image-animate-timeout): Set image-current-frame.

* lisp/image-mode.el (image-mode): For animated images,
display a frame counter via mode-line-process.

lisp/ChangeLog
lisp/image-mode.el
lisp/image.el

index 09645ec474165858116769ab0aa619296157b29b..b932054261d728353edb51ef2bc322155559bfea 100644 (file)
@@ -1,5 +1,10 @@
 2013-02-16  Glenn Morris  <rgm@gnu.org>
 
+       * image.el (image-current-frame): New variable.
+       (image-animate-timeout): Set image-current-frame.
+       * image-mode.el (image-mode): For animated images,
+       display a frame counter via mode-line-process.
+
        * font-lock.el (lisp-font-lock-keywords-1): Add defvar-local.
 
 2013-02-15  Stefan Monnier  <monnier@iro.umontreal.ca>
index 196336717db5d04889a3e51317407d5621782384..fcbea9457147c377428e5957a3374e480dec03e7 100644 (file)
@@ -409,11 +409,18 @@ to toggle between display as an image and display as text."
        (run-mode-hooks 'image-mode-hook)
        (let ((image (image-get-display-property))
              (msg1 (substitute-command-keys
-                    "Type \\[image-toggle-display] to view the image as ")))
+                    "Type \\[image-toggle-display] to view the image as "))
+             animated)
          (cond
           ((null image)
            (message "%s" (concat msg1 "an image.")))
-          ((image-animated-p image)
+          ((setq animated (image-animated-p image))
+           (setq image-current-frame (or (plist-get (cdr image) :index) 0)
+                 mode-line-process
+                 `(:eval (propertize (format " [%s/%s]"
+                                             (1+ image-current-frame)
+                                             ,(car animated))
+                                     'help-echo "Frame number")))
            (message "%s"
                     (concat msg1 "text, or "
                             (substitute-command-keys
index 73b25f6da67564413b20a9e1b8dd275b6682aeaa..e0521ad065a44d3c66ae537d53edb5a9a9b8a068 100644 (file)
@@ -657,6 +657,9 @@ number, play until that number of seconds has elapsed."
        (setq timer nil)))
     timer))
 
+(defvar-local image-current-frame nil
+  "The frame index of the current animated image.")
+
 ;; FIXME? The delay may not be the same for different sub-images,
 ;; hence we need to call image-animated-p to return it.
 ;; But it also returns count, so why do we bother passing that as an
@@ -672,6 +675,7 @@ LIMIT determines when to stop.  If t, loop forever.  If nil, stop
  after LIMIT seconds have elapsed.
 The minimum delay between successive frames is 0.01s."
   (plist-put (cdr image) :index n)
+  (setq image-current-frame n)
   (force-window-update)
   (setq n (1+ n))
   (let* ((time (float-time))