Mercurial > emacs
changeset 112126:afc7f5e3ff12
* doc-view.el (doc-view-image-width): New variable.
(doc-view-enlarge, doc-view-insert-image): Prefer imagemagick
backend for PNG images, and do dynamic rescaling instead of
reconverting the whole doc.
author | Tassilo Horn <tassilo@member.fsf.org> |
---|---|
date | Wed, 05 Jan 2011 22:17:51 +0100 |
parents | 4dbda0e7c8bf |
children | 25ff862568d0 |
files | lisp/ChangeLog lisp/doc-view.el |
diffstat | 2 files changed, 29 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Wed Jan 05 14:09:07 2011 +0100 +++ b/lisp/ChangeLog Wed Jan 05 22:17:51 2011 +0100 @@ -1,3 +1,10 @@ +2011-01-05 Tassilo Horn <tassilo@member.fsf.org> + + * doc-view.el (doc-view-image-width): New variable. + (doc-view-enlarge, doc-view-insert-image): Prefer imagemagick + backend for PNG images, and do dynamic rescaling instead of + reconverting the whole doc. + 2011-01-05 Glenn Morris <rgm@gnu.org> * emacs-lisp/rx.el (rx-repeat): Replace CL function.
--- a/lisp/doc-view.el Wed Jan 05 14:09:07 2011 +0100 +++ b/lisp/doc-view.el Wed Jan 05 22:17:51 2011 +0100 @@ -168,6 +168,12 @@ :type 'number :group 'doc-view) +(defcustom doc-view-image-width 850 + "Default image width. +Has only an effect if imagemagick support is compiled into emacs." + :type 'number + :group 'doc-view) + (defcustom doc-view-dvipdfm-program (executable-find "dvipdfm") "Program to convert DVI files to PDF. @@ -641,9 +647,17 @@ (defun doc-view-enlarge (factor) "Enlarge the document." (interactive (list doc-view-shrink-factor)) - (set (make-local-variable 'doc-view-resolution) - (* factor doc-view-resolution)) - (doc-view-reconvert-doc)) + (if (eq (plist-get (cdr (doc-view-current-image)) :type) + 'imagemagick) + ;; ImageMagick supports on-the-fly-rescaling + (progn + (set (make-local-variable 'doc-view-image-width) + (ceiling (* factor doc-view-image-width))) + (doc-view-insert-image (plist-get (cdr (doc-view-current-image)) :file) + :width doc-view-resolution)) + (set (make-local-variable 'doc-view-resolution) + (ceiling (* factor doc-view-resolution))) + (doc-view-reconvert-doc))) (defun doc-view-shrink (factor) "Shrink the document." @@ -949,7 +963,11 @@ (setq doc-view-pending-cache-flush nil)) (let ((ol (doc-view-current-overlay)) (image (if (and file (file-readable-p file)) - (apply 'create-image file 'png nil args))) + (if (not (fboundp 'imagemagick-types)) + (apply 'create-image file 'png nil args) + (unless (member :width args) + (setq args (append args (list :width doc-view-image-width)))) + (apply 'create-image file 'imagemagick nil args)))) (slice (doc-view-current-slice))) (setf (doc-view-current-image) image) (move-overlay ol (point-min) (point-max))