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 >>> Cc: Eli Zaretskii , Joseph Turner >>> >>>> 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  >>>> >>>>       * 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 * 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!