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.