|
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!
image-compute-map-V2.patch
Description: Text Data
[Prev in Thread] | Current Thread | [Next in Thread] |