unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#24393: 25.1.50; image-mode ignore the image :scale
@ 2016-09-08 12:14 Tino Calancha
  2016-09-08 17:15 ` Eli Zaretskii
  2019-09-26 15:59 ` Lars Ingebrigtsen
  0 siblings, 2 replies; 10+ messages in thread
From: Tino Calancha @ 2016-09-08 12:14 UTC (permalink / raw)
  To: 24393


emacs -Q IMAGE ; IMAGE is the file name of an image file
M-x: image-transform-fit-to-width
;; assertion fails.  The image width is bigger than the window width.

This happens after commit: ad1951db

In GNU Emacs 25.1.50.1 (x86_64-pc-linux-gnu, GTK+ Version 3.21.5)
  of 2016-09-07
Repository revision: ba5d32398ba42fcf14ad5242d95c68133981744f






^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#24393: 25.1.50; image-mode ignore the image :scale
  2016-09-08 12:14 bug#24393: 25.1.50; image-mode ignore the image :scale Tino Calancha
@ 2016-09-08 17:15 ` Eli Zaretskii
  2016-09-08 18:13   ` Tino Calancha
  2019-09-26 15:59 ` Lars Ingebrigtsen
  1 sibling, 1 reply; 10+ messages in thread
From: Eli Zaretskii @ 2016-09-08 17:15 UTC (permalink / raw)
  To: Tino Calancha; +Cc: 24393

> From: Tino Calancha <tino.calancha@gmail.com>
> Date: Thu, 8 Sep 2016 21:14:26 +0900 (JST)
> 
> 
> emacs -Q IMAGE ; IMAGE is the file name of an image file
> M-x: image-transform-fit-to-width
> ;; assertion fails.  The image width is bigger than the window width.
> 
> This happens after commit: ad1951db

Please show a backtrace from the assertion violation.

Thanks.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#24393: 25.1.50; image-mode ignore the image :scale
  2016-09-08 17:15 ` Eli Zaretskii
@ 2016-09-08 18:13   ` Tino Calancha
  2016-09-09  8:06     ` Eli Zaretskii
  0 siblings, 1 reply; 10+ messages in thread
From: Tino Calancha @ 2016-09-08 18:13 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 24393, Tino Calancha



On Thu, 8 Sep 2016, Eli Zaretskii wrote:

>> From: Tino Calancha <tino.calancha@gmail.com>
>> Date: Thu, 8 Sep 2016 21:14:26 +0900 (JST)
>>
>>
>> emacs -Q IMAGE ; IMAGE is the file name of an image file
>> M-x: image-transform-fit-to-width
>> ;; assertion fails.  The image width is bigger than the window width.
>>
>> This happens after commit: ad1951db
>
> Please show a backtrace from the assertion violation.
Debugger entered: ((cl-assertion-failed (= (car size) (- (nth 2 (window-inside-pixel-edges)) (nth 0 (window-inside-pixel-edges)))) nil 4299 2514))
   cl--assertion-failed((= (car size) (- (nth 2 (window-inside-pixel-edges)) (nth 0 (window-inside-pixel-edges)))) nil (4299 2514) nil)
   image-transform-check-size()
   image-toggle-display-image()
   image-transform-fit-to-width()
   eval((image-transform-fit-to-width) nil)
   eval-expression((image-transform-fit-to-width) nil)
   funcall-interactively(eval-expression (image-transform-fit-to-width) 
nil)
   call-interactively(eval-expression nil nil)
   command-execute(eval-expression)






^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#24393: 25.1.50; image-mode ignore the image :scale
  2016-09-08 18:13   ` Tino Calancha
@ 2016-09-09  8:06     ` Eli Zaretskii
  2016-09-09 10:23       ` Tino Calancha
  0 siblings, 1 reply; 10+ messages in thread
From: Eli Zaretskii @ 2016-09-09  8:06 UTC (permalink / raw)
  To: Tino Calancha; +Cc: 24393

> From: Tino Calancha <tino.calancha@gmail.com>
> Date: Fri, 9 Sep 2016 03:13:36 +0900 (JST)
> cc: Tino Calancha <tino.calancha@gmail.com>, 24393@debbugs.gnu.org
> 
> >> emacs -Q IMAGE ; IMAGE is the file name of an image file
> >> M-x: image-transform-fit-to-width
> >> ;; assertion fails.  The image width is bigger than the window width.
> >>
> >> This happens after commit: ad1951db
> >
> > Please show a backtrace from the assertion violation.
> Debugger entered: ((cl-assertion-failed (= (car size) (- (nth 2 (window-inside-pixel-edges)) (nth 0 (window-inside-pixel-edges)))) nil 4299 2514))
>    cl--assertion-failed((= (car size) (- (nth 2 (window-inside-pixel-edges)) (nth 0 (window-inside-pixel-edges)))) nil (4299 2514) nil)
>    image-transform-check-size()
>    image-toggle-display-image()
>    image-transform-fit-to-width()
>    eval((image-transform-fit-to-width) nil)
>    eval-expression((image-transform-fit-to-width) nil)
>    funcall-interactively(eval-expression (image-transform-fit-to-width) 
> nil)
>    call-interactively(eval-expression nil nil)
>    command-execute(eval-expression)

Isn't there something wrong with the logic from the following fragment
of image-toggle-display-image?  The comment certainly seems to have it
backwards, or at least in contradiction to what
image-transform-fit-to-width expects.

	 ;; If we have a `fit-width' or a `fit-height', don't limit
	 ;; the size of the image to the window size.
	 (edges (and (null image-transform-resize)
		     (window-inside-pixel-edges
		      (get-buffer-window (current-buffer)))))

I think 'edges' should be non-nil if image-transform-resize is
non-nil, no?





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#24393: 25.1.50; image-mode ignore the image :scale
  2016-09-09  8:06     ` Eli Zaretskii
@ 2016-09-09 10:23       ` Tino Calancha
  2016-09-09 13:15         ` Eli Zaretskii
  0 siblings, 1 reply; 10+ messages in thread
From: Tino Calancha @ 2016-09-09 10:23 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 24393, Tino Calancha



On Fri, 9 Sep 2016, Eli Zaretskii wrote:

> Isn't there something wrong with the logic from the following fragment
> of image-toggle-display-image?  The comment certainly seems to have it
> backwards, or at least in contradiction to what
> image-transform-fit-to-width expects.
>
> 	 ;; If we have a `fit-width' or a `fit-height', don't limit
> 	 ;; the size of the image to the window size.
> 	 (edges (and (null image-transform-resize)
> 		     (window-inside-pixel-edges
> 		      (get-buffer-window (current-buffer)))))
>
> I think 'edges' should be non-nil if image-transform-resize is
> non-nil, no?
I think is OK.  Maybe i would adjust the comment a bit, because 
`image-transform-resize' can also be a number (set by 
`image-transform-set-scale'): i would say:
;; If `image-transform-resize' is non-nil, don't limit
;; the size of the image to the window size.

I think the logic is as follows:
The proportion width/height is an invariant of this transformation.
If you call `image-transform-fit-to-width', your image width will occupy 
all the window width.  Then, the height is increased in the same 
proportion as the width, so the final image height may be longer than
the window height.  That's OK.






^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#24393: 25.1.50; image-mode ignore the image :scale
  2016-09-09 10:23       ` Tino Calancha
@ 2016-09-09 13:15         ` Eli Zaretskii
  2016-09-09 13:51           ` Tino Calancha
  0 siblings, 1 reply; 10+ messages in thread
From: Eli Zaretskii @ 2016-09-09 13:15 UTC (permalink / raw)
  To: Tino Calancha; +Cc: 24393

> From: Tino Calancha <tino.calancha@gmail.com>
> Date: Fri, 9 Sep 2016 19:23:02 +0900 (JST)
> cc: Tino Calancha <tino.calancha@gmail.com>, 24393@debbugs.gnu.org
> 
> > 	 ;; If we have a `fit-width' or a `fit-height', don't limit
> > 	 ;; the size of the image to the window size.
> > 	 (edges (and (null image-transform-resize)
> > 		     (window-inside-pixel-edges
> > 		      (get-buffer-window (current-buffer)))))
> >
> > I think 'edges' should be non-nil if image-transform-resize is
> > non-nil, no?
> I think is OK.  Maybe i would adjust the comment a bit, because 
> `image-transform-resize' can also be a number (set by 
> `image-transform-set-scale'): i would say:
> ;; If `image-transform-resize' is non-nil, don't limit
> ;; the size of the image to the window size.
> 
> I think the logic is as follows:
> The proportion width/height is an invariant of this transformation.
> If you call `image-transform-fit-to-width', your image width will occupy 
> all the window width.  Then, the height is increased in the same 
> proportion as the width, so the final image height may be longer than
> the window height.  That's OK.

When image-transform-fit-to-width sets image-transform-resize to the
symbol 'fit-width', image-toggle-display-image will not pass any
dimensions to create-image.  So how will the image be resized at all
in this case?  What am I missing?

And how do you explain the assertion violation in this case, anyway?
What are the window dimensions in pixels?





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#24393: 25.1.50; image-mode ignore the image :scale
  2016-09-09 13:15         ` Eli Zaretskii
@ 2016-09-09 13:51           ` Tino Calancha
  0 siblings, 0 replies; 10+ messages in thread
From: Tino Calancha @ 2016-09-09 13:51 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 24393, Tino Calancha



On Fri, 9 Sep 2016, Eli Zaretskii wrote:

>> From: Tino Calancha <tino.calancha@gmail.com>
>> Date: Fri, 9 Sep 2016 19:23:02 +0900 (JST)
>> cc: Tino Calancha <tino.calancha@gmail.com>, 24393@debbugs.gnu.org
>>
>>> 	 ;; If we have a `fit-width' or a `fit-height', don't limit
>>> 	 ;; the size of the image to the window size.
>>> 	 (edges (and (null image-transform-resize)
>>> 		     (window-inside-pixel-edges
>>> 		      (get-buffer-window (current-buffer)))))
>>>
>>> I think 'edges' should be non-nil if image-transform-resize is
>>> non-nil, no?
>> I think is OK.  Maybe i would adjust the comment a bit, because
>> `image-transform-resize' can also be a number (set by
>> `image-transform-set-scale'): i would say:
>> ;; If `image-transform-resize' is non-nil, don't limit
>> ;; the size of the image to the window size.
>>
>> I think the logic is as follows:
>> The proportion width/height is an invariant of this transformation.
>> If you call `image-transform-fit-to-width', your image width will occupy
>> all the window width.  Then, the height is increased in the same
>> proportion as the width, so the final image height may be longer than
>> the window height.  That's OK.
>
> When image-transform-fit-to-width sets image-transform-resize to the
> symbol 'fit-width', image-toggle-display-image will not pass any
> dimensions to create-image.  So how will the image be resized at all
> in this case?  What am I missing?
It is done inside `image-toggle-display-image'.  Maybe the word 'toggle'
inside this function is misleading: indeed it looks more than a toggle.
This 'toggle' calls `image-transform-properties' which calculate the
resize for 'fit-width/'fit-height cases.
> And how do you explain the assertion violation in this case, anyway?
> What are the window dimensions in pixels?
The same 'toggle' calls `image-transform-check-size' to check 
the sizes (do the cl-asserts).

I guess, the origin of the problem is that these functions,
`image-transform-properties' and `image-transform-check-size',
don't use the image scale. After the commit mentioned in my original 
report, the scale of an image matters.  We need somehow to teach 
`image-mode' to use :scale to fix this bug.
We could fix this file amending those functions.  I tried before and
i didn't like this approach.

I also suggested in
https://lists.gnu.org/archive/html/emacs-devel/2016-09/msg00159.html
that if image-mode.el uses more the API in image.el (maybe extending 
the API a bit ), then this bug could get fix easily; currently both
files define resizes and rotations; for me it has much sense that,
if the API already provide those functionalities, then image-mode.el
just use them: one source of truth, easier to maintain.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#24393: 25.1.50; image-mode ignore the image :scale
  2016-09-08 12:14 bug#24393: 25.1.50; image-mode ignore the image :scale Tino Calancha
  2016-09-08 17:15 ` Eli Zaretskii
@ 2019-09-26 15:59 ` Lars Ingebrigtsen
  2019-09-26 17:42   ` Tino Calancha
  1 sibling, 1 reply; 10+ messages in thread
From: Lars Ingebrigtsen @ 2019-09-26 15:59 UTC (permalink / raw)
  To: Tino Calancha; +Cc: 24393

Tino Calancha <tino.calancha@gmail.com> writes:

> emacs -Q IMAGE ; IMAGE is the file name of an image file
> M-x: image-transform-fit-to-width
> ;; assertion fails.  The image width is bigger than the window width.

I'm unable to reproduce this bug in Emacs 27.  Are you still seeing
this?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#24393: 25.1.50; image-mode ignore the image :scale
  2019-09-26 15:59 ` Lars Ingebrigtsen
@ 2019-09-26 17:42   ` Tino Calancha
  2019-09-26 17:49     ` Lars Ingebrigtsen
  0 siblings, 1 reply; 10+ messages in thread
From: Tino Calancha @ 2019-09-26 17:42 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 24393



On Thu, 26 Sep 2019, Lars Ingebrigtsen wrote:

> Tino Calancha <tino.calancha@gmail.com> writes:
>
>> emacs -Q IMAGE ; IMAGE is the file name of an image file
>> M-x: image-transform-fit-to-width
>> ;; assertion fails.  The image width is bigger than the window width.
>
> I'm unable to reproduce this bug in Emacs 27.  Are you still seeing
> this?

No, I don't see this anymore; and I am using 
`image-transform-fit-to-width' `image-transform-fit-to-height' quite 
often.  It seems fixed.






^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#24393: 25.1.50; image-mode ignore the image :scale
  2019-09-26 17:42   ` Tino Calancha
@ 2019-09-26 17:49     ` Lars Ingebrigtsen
  0 siblings, 0 replies; 10+ messages in thread
From: Lars Ingebrigtsen @ 2019-09-26 17:49 UTC (permalink / raw)
  To: Tino Calancha; +Cc: 24393

Tino Calancha <tino.calancha@gmail.com> writes:

> No, I don't see this anymore; and I am using
> `image-transform-fit-to-width' `image-transform-fit-to-height' quite 
> often.  It seems fixed.

Thanks; closing.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2019-09-26 17:49 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-09-08 12:14 bug#24393: 25.1.50; image-mode ignore the image :scale Tino Calancha
2016-09-08 17:15 ` Eli Zaretskii
2016-09-08 18:13   ` Tino Calancha
2016-09-09  8:06     ` Eli Zaretskii
2016-09-09 10:23       ` Tino Calancha
2016-09-09 13:15         ` Eli Zaretskii
2016-09-09 13:51           ` Tino Calancha
2019-09-26 15:59 ` Lars Ingebrigtsen
2019-09-26 17:42   ` Tino Calancha
2019-09-26 17:49     ` Lars Ingebrigtsen

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).