[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#8364: 24.0.9999; PATCH: Fit to width/height/page for doc-view.el
From: |
Tassilo Horn |
Subject: |
bug#8364: 24.0.9999; PATCH: Fit to width/height/page for doc-view.el |
Date: |
Mon, 28 Mar 2011 12:08:18 +0200 |
User-agent: |
Gnus/5.110016 (No Gnus v0.16) Emacs/24.0.9999 (gnu/linux) |
This patch created by Sho Nakatani <lay.sakura@gmail.com> (in Cc) adds a
feature to fit the current doc to the window height/width. I already
tested it, and it works as expected. The emacs coding standards are
also met.
I have instructed Nakatani in doing the copyright assignment, and he is
willing to do so. When the assignment is confirmed, I'll apply and push
his changes.
Here's the patch:
--8<---------------cut here---------------start------------->8---
=== modified file 'lisp/doc-view.el'
--- old/lisp/doc-view.el 2011-01-25 04:08:28 +0000
+++ new/lisp/doc-view.el 2011-03-28 08:59:52 +0000
@@ -327,6 +327,10 @@
;; Zoom in/out.
(define-key map "+" 'doc-view-enlarge)
(define-key map "-" 'doc-view-shrink)
+ ;; Fit the image to the window
+ (define-key map "W" 'doc-view-fit-width-to-window)
+ (define-key map "H" 'doc-view-fit-height-to-window)
+ (define-key map "P" 'doc-view-fit-page-to-window)
;; Killing the buffer (and the process)
(define-key map (kbd "k") 'doc-view-kill-proc-and-buffer)
(define-key map (kbd "K") 'doc-view-kill-proc)
@@ -665,6 +669,45 @@
(interactive (list doc-view-shrink-factor))
(doc-view-enlarge (/ 1.0 factor)))
+(defun doc-view-fit-width-to-window ()
+ "Fit the image width to the window width."
+ (interactive)
+ (let ((img-width (car (image-display-size
+ (image-get-display-property))))
+ (win-width (- (nth 2 (window-inside-edges))
+ (nth 0 (window-inside-edges)))))
+ (doc-view-enlarge (/ win-width img-width))))
+
+(defun doc-view-fit-height-to-window ()
+ "Fit the image height to the window width."
+ (interactive)
+ (let ((img-height (cdr (image-display-size
+ (image-get-display-property))))
+ (win-height (- (nth 3 (window-inside-edges))
+ (nth 1 (window-inside-edges)))))
+ ;; When users call 'doc-view-fit-height-to-window',
+ ;; they might want to go to next page by typing SPC
+ ;; ONLY once. So I used '(- win-height 1)' instead of
+ ;; 'win-height'
+ (doc-view-enlarge (/ (- win-height 1) img-height))))
+
+(defun doc-view-fit-page-to-window ()
+ "Fit the image to the window.
+More specifically, this function enlarges image by:
+
+min {(window-width / image-width), (window-height / image-height)} times."
+ (interactive)
+ (let ((img-width (car (image-display-size
+ (image-get-display-property))))
+ (win-width (- (nth 2 (window-inside-edges))
+ (nth 0 (window-inside-edges))))
+ (img-height (cdr (image-display-size
+ (image-get-display-property))))
+ (win-height (- (nth 3 (window-inside-edges))
+ (nth 1 (window-inside-edges)))))
+ (doc-view-enlarge (min (/ win-width img-width)
+ (/ (- win-height 1) img-height)))))
+
(defun doc-view-reconvert-doc ()
"Reconvert the current document.
Should be invoked when the cached images aren't up-to-date."
--8<---------------cut here---------------end--------------->8---
- bug#8364: 24.0.9999; PATCH: Fit to width/height/page for doc-view.el,
Tassilo Horn <=
- bug#8364: 24.0.9999; PATCH: Fit to width/height/page for doc-view.el, Stefan Monnier, 2011/03/28
- bug#8364: 24.0.9999; PATCH: Fit to width/height/page for doc-view.el, sho nakatani, 2011/03/28
- bug#8364: 24.0.9999; PATCH: Fit to width/height/page for doc-view.el, Tassilo Horn, 2011/03/28
- bug#8364: 24.0.9999; PATCH: Fit to width/height/page for doc-view.el, sho nakatani, 2011/03/28
- bug#8364: 24.0.9999; PATCH: Fit to width/height/page for doc-view.el, Tassilo Horn, 2011/03/28
- bug#8364: 24.0.9999; PATCH: Fit to width/height/page for doc-view.el, sho nakatani, 2011/03/30
- bug#8364: 24.0.9999; PATCH: Fit to width/height/page for doc-view.el, Tassilo Horn, 2011/03/30
- Message not available
- bug#8364: 24.0.9999; PATCH: Fit to width/height/page for doc-view.el, Tassilo Horn, 2011/03/30
- bug#8364: 24.0.9999; PATCH: Fit to width/height/page for doc-view.el, sho nakatani, 2011/03/30