bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#69992: Minor improvement to image map transformation logic


From: David Ponce
Subject: bug#69992: Minor improvement to image map transformation logic
Date: Sat, 30 Mar 2024 13:59:41 +0100
User-agent: Mozilla Thunderbird

On 30/03/2024 09:55, David Ponce wrote:
On 30/03/2024 09:10, Eli Zaretskii wrote:
Date: Fri, 29 Mar 2024 11:19:11 +0100
From: David Ponce <da_vid@orange.fr>
Cc: Eli Zaretskii <eliz@gnu.org>, Joseph Turner <joseph@breatheoutbreathe.in>

The attached new patch fixes the logic to be consistent with Emacs
internal implementation, plus some other tweaks to check if a
transformation apply before to call the transformation function.
I also updated some tests according to functions changes.
Here is a possible change log:

2024-03-28  David Ponce  <da_vid@orange.fr>

      * lisp/image.el (image--compute-scaling)
      (image--compute-rotation): New functions.
      (image--compute-map, image--compute-original-map): Use them.
      Ensure all transformations are applied or undone according to what
      Emacs does internally.  Call a transformation function only when
      needed.  Fix doc string.
      (image--scale-map): Assume effective scale argument.
      (image--rotate-map): Assume effective rotation argument.
      (image--rotate-coord): Improve doc string.
      (image--flip-map): Remove no more used flip argument.

      * test/lisp/image-tests.el (image-create-image-with-map): Use a
      valid SVG image otherwise `image-size' will not return a valid
      value and calculation of scale could fail.
      (image-transform-map): Update according to changed signature of
      image--flip-map.
[...]

Hello,

Please find attached a new patch with an additional small fix I forgot to
include.  Sorry.

Thanks.  Please resend with the updated commit log message, and I will
install it.

Hello Eli,

The change log is the same.  The last patch include a slightly modified
version of the new function `image--compute-rotation' to return 0 by default
when no rotation is specified, instead of nil.

Please let me know if you need anything else.
Thanks!

Hello,

Here is my last patch. The only change compared to the previous patch is that
now the scale factor is correctly calculated based on the size of the image and
the displayed size. To minimize the performance impact, I saved a call to
`image-size' by doing the calculation directly in the `image--compute-map' and
`image--compute-original-map' functions. I did some benchmarks and the
difference is not significant. The tests still give the same results :-)

Here is the new change log:

2024-03-30  David Ponce  <da_vid@orange.fr>

        * lisp/image.el (image--compute-rotation): New function.
        (image--compute-map, image--compute-original-map): Use it.
        Ensure all transformations are applied or undone according to what
        Emacs does internally.  Call a transformation function only when
        needed.  Fix doc string.
        (image--scale-map): Assume effective scale argument.
        (image--rotate-map): Assume effective rotation argument.
        (image--rotate-coord): Improve doc string.
        (image--flip-map): Remove no more used flip argument.

        * test/lisp/image-tests.el (image-create-image-with-map): Use a
        valid SVG image otherwise `image-size' will not return a valid
        value and calculation of scale could fail.
        (image-transform-map): Update according to changed signature of
        image--flip-map.

Thanks!

Attachment: image-compute-map-V2.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]