unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Tassilo Horn <tsdh@gnu.org>
To: E Sabof <esabof@gmail.com>
Cc: 13887@debbugs.gnu.org
Subject: bug#13887: 24.3; doc-view will render blurry images when image-magick is available
Date: Wed, 06 Mar 2013 20:43:16 +0100	[thread overview]
Message-ID: <877glkgvqj.fsf@thinkpad.tsdh.de> (raw)
In-Reply-To: <CAEp6DybMoaMxWWAjzBvLbAar-sJfEOJKZ6hxtxZFiihrR_GoiA@mail.gmail.com> (E. Sabof's message of "Wed, 6 Mar 2013 14:19:19 +0000")

E Sabof <esabof@gmail.com> writes:

> This function gives the native pixel dimensions of an image:
>
> (defun es-image-file-pixel-dimensions (file)
>   (let* ((type (image-type file nil nil))
>          (spec (list 'image :type type :file file)))
>     (image-size spec t)))
>
> When
>
> (> (getf (cdr (doc-view-current-image)) :width)
>    (car (es-image-file-pixel-dimensions
>          (getf (cdr (doc-view-current-image)) :file))))
>
> there is quality loss.

Hm, ok.  Maybe I'll give it a whirl.

> What I don't want to see is margins having a different width - for the
> same reasons you wouldn't put a photograph in a frame in the top left
> corner.

Could you test-drive this patch.  It implements horizontal centering of
the image.

--8<---------------cut here---------------start------------->8---
=== modified file 'lisp/doc-view.el'
--- lisp/doc-view.el	2013-02-28 04:02:36 +0000
+++ lisp/doc-view.el	2013-03-06 19:35:43 +0000
@@ -1250,23 +1250,34 @@
   (when doc-view-pending-cache-flush
     (clear-image-cache)
     (setq doc-view-pending-cache-flush nil))
-  (let ((ol (doc-view-current-overlay))
-        (image (if (and file (file-readable-p file))
-		   (if (not (and doc-view-scale-internally
-                                 (fboundp 'imagemagick-types)))
-		       (apply 'create-image file doc-view--image-type nil args)
-		     (unless (member :width args)
-		       (setq args `(,@args :width ,doc-view-image-width)))
-		     (apply 'create-image file 'imagemagick nil args))))
-        (slice (doc-view-current-slice)))
+  (let* ((ol (doc-view-current-overlay))
+	 (image (if (and file (file-readable-p file))
+		    (if (not (and doc-view-scale-internally
+				  (fboundp 'imagemagick-types)))
+			(apply 'create-image file doc-view--image-type nil args)
+		      (unless (member :width args)
+			(setq args `(,@args :width ,doc-view-image-width)))
+		      (apply 'create-image file 'imagemagick nil args))))
+	 (slice (doc-view-current-slice))
+	 (img-width (car (image-size image)))
+	 (displayed-img-width (if slice
+				  (* (/ (float (nth 2 slice))
+					(car (image-size image 'pixels)))
+				     img-width)
+				img-width))
+	 (window-width (window-width (selected-window))))
     (setf (doc-view-current-image) image)
     (move-overlay ol (point-min) (point-max))
+    (when (> window-width displayed-img-width)
+      (overlay-put ol 'before-string
+    		   (propertize " " 'display
+    			       `(space :align-to (+ center (-0.5 . ,displayed-img-width))))))
     (overlay-put ol 'display
                  (cond
                   (image
                    (if slice
                        (list (cons 'slice slice) image)
-                     image))
+		     image))
                   ;; We're trying to display a page that doesn't exist.
                   (doc-view-current-converter-processes
                    ;; Maybe the page doesn't exist *yet*.
--8<---------------cut here---------------end--------------->8---

>  Ideally I'd also center vertically (should the image be shorter than
> the window)

I think vertical centering is a bit more tricky since there's nothing
like :align-to or vertically stretchable spaces...

Bye,
Tassilo





  reply	other threads:[~2013-03-06 19:43 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-06  3:40 bug#13887: 24.3; doc-view will render blurry images when image-magick is available E Sabof
2013-03-06  8:05 ` Tassilo Horn
2013-03-06 12:13   ` E Sabof
2013-03-06 13:01     ` Tassilo Horn
2013-03-06 14:19       ` E Sabof
2013-03-06 19:43         ` Tassilo Horn [this message]
2013-03-07 15:17           ` E Sabof
2013-03-07 15:55             ` Tassilo Horn
2013-03-07 16:15               ` E Sabof
2013-03-07 22:57                 ` E Sabof
2013-03-08  7:57                   ` Tassilo Horn
     [not found]                     ` <CAEp6DybMJkagHjRaXPiA_ED_dntOk=5USr+P9DfqRPZ_JrrKww@mail.gmail.com>
2013-03-09  7:25                       ` bug#13887: Fwd: " E Sabof
2013-03-09  7:26                         ` E Sabof
2013-03-11  9:11                           ` Tassilo Horn
2013-03-11 16:57                             ` Eli Zaretskii
2013-03-11 18:20                               ` Tassilo Horn
2013-03-11 18:45                                 ` Eli Zaretskii
2013-03-11 20:27                                   ` Tassilo Horn
2013-03-11 20:59                                     ` Eli Zaretskii
2013-03-11 22:08                                       ` E Sabof
2013-03-11 23:41                                         ` E Sabof
2013-03-12  1:00                                           ` E Sabof
2013-03-12  8:09                                             ` Tassilo Horn
2013-03-12 16:50                                               ` Eli Zaretskii
2013-03-12 18:00                                                 ` Tassilo Horn
2013-03-12 16:52                                             ` Eli Zaretskii
2013-03-12 17:46                                               ` E Sabof
2013-03-12 21:11                                                 ` Eli Zaretskii
2013-03-14  3:28                                                   ` E Sabof
2013-03-14  3:56                                                     ` E Sabof
2013-03-14  7:24                                                     ` Tassilo Horn
2013-03-14 15:23                                                       ` E Sabof
2013-03-14 16:48                                                         ` Tassilo Horn
2013-03-14 21:42                                                           ` Tassilo Horn
2013-03-15  1:11                                                             ` E Sabof
2013-03-15 12:52                                                               ` Stefan Monnier
2013-03-15 13:34                                                                 ` E Sabof
2013-03-15 17:51                                                                   ` Stefan Monnier
2013-03-15 23:26                                                                     ` E Sabof
2013-03-16 13:41                                                                       ` Stefan Monnier
2013-03-16 23:30                                                                         ` E Sabof
2013-03-15 13:55                                                               ` Tassilo Horn
2013-03-15 14:08                                                                 ` E Sabof
2013-03-20 15:58                                                                 ` E Sabof
2019-09-26 17:16                                                                   ` Lars Ingebrigtsen
2019-10-14  6:04                                                                     ` Lars Ingebrigtsen
2013-03-14 13:26                                                     ` Stefan Monnier
2013-03-14 15:30                                                       ` Tassilo Horn
2013-03-14 15:53                                                         ` E Sabof
2013-03-14 16:19                                                         ` Stefan Monnier
2013-03-06 18:16 ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877glkgvqj.fsf@thinkpad.tsdh.de \
    --to=tsdh@gnu.org \
    --cc=13887@debbugs.gnu.org \
    --cc=esabof@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).