From: David Ponce via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: Joseph Turner <joseph@breatheoutbreathe.in>
Cc: 70093@debbugs.gnu.org, Eli Zaretskii <eliz@gnu.org>
Subject: bug#70093: *** SPAM *** bug#70093: Remove unnecessary `image-tests--map-equal'
Date: Sun, 7 Apr 2024 18:01:13 +0200 [thread overview]
Message-ID: <7d8af44b-9c3c-40d1-99c4-bda1a3ea2756@orange.fr> (raw)
In-Reply-To: <87o7ans1en.fsf@breatheoutbreathe.in>
On 06/04/2024 03:50, Joseph Turner wrote:
>
> David Ponce <da_vid@orange.fr> writes:
>
>> [...]> But these 2 tests fails:
>>> 1.
>>> (setf (image-property image :scale) 1)
>>> (setf (image-property image :rotation) 90)
>>> (should (equal (image--compute-map image)
>>> rotated-map))
>>> ;; Return
>>> ((((circle (199 . 41) . 24) "a" (help-echo "A"))
>>> ((rect (79 . 5) 127 . 77) "b" (help-echo "B"))
>>> ((poly . [199 161 206 160 213 154 218 146 221 136 223 125 221
>>> 114 218 104 213 96 206 91 199 89 191 91 185 96 179 104 176 114 175
>>> 125 176 136 179 146 185 154 191 160]) "c" (help-echo "C")))
>>> ;; Instead of
>>> (((circle (126 . 41) . 24) "a" (help-echo "A"))
>>> ((rect (6 . 5) 54 . 77) "b" (help-echo "B"))
>>> ((poly . [126 161 133 160 140 154 145 146 148 136 150 125 148
>>> 114 145 104 140 96 133 91 126 89 118 91 112 96 106 104 103 114 102
>>> 125 103 136 106 146 112 154 118 160]) "c" (help-echo "C"))))
>>> ;; All the result X coords are different, but Y coords are expected.
>>> 2.
>>> (setf (image-property image :rotation) 0)
>>> (setf (image-property image :flip) t)
>>> (should (equal (image--compute-map image)
>>> flipped-map))
>>> ;; Return
>>> ((((circle (205 . 29) . 24) "a" (help-echo "A"))
>>> ((rect (169 . 101) 241 . 149) "b" (help-echo "B"))
>>> ((poly . [85 29 86 22 92 15 100 10 110 7 121 5 132 7 142 10
>>> 150 15 155 22 157 29 155 37 150 43 142 49 132 52 121 53 110 52 100
>>> 49 92 43 86 37]) "c" (help-echo "C")))
>>> ;; Instead of
>>> (((circle (125 . 29) . 24) "a" (help-echo "A"))
>>> ((rect (89 . 101) 161 . 149) "b" (help-echo "B"))
>>> ((poly . [5 29 6 22 12 15 20 10 30 7 41 5 52 7 62 10 70 15 75
>>> 22 77 29 75 37 70 43 62 49 52 52 41 53 30 52 20 49 12 43 6 37]) "c"
>>> (help-echo "C"))))
>>> ;; All the result X coords are different, but Y coords are expected.
>>> On my laptop:
>>> (image-size (image--image-without-parameters image) t) => (228 .
>>> 246)
>>> Hope it will help to understand the reason.
>> [...]
>>
>> Hello,
>>
>> I am still trying to understand why the 2 tests above fails with my configuration.
>> From the test `image--compute-map-and-original-map' I wrote the below equivalent
>> code to be evaled in the *scratch* buffer, in order to observe and analyze the
>> results interactively. The shapes are derived from the hot spots coordinates to
>> ensure a strict visual correspondance between a shape and its hot spot.
>>
>> On my configuration, all the computed map from the different image variations are
>> correct. You can test it by hovering the different produced colored shapes with
>> the mouse, and observe the mouse pointer and help-echo changes.
>>
>> My conclusion at this point is that the values of `flipped-map' and `rotated-map'
>> are not correct for my configuration, but I don't know why.
>>
>> If you can try the below code and observe the result on your configuration, maybe
>> could we get a better understanding of what is happening for the 2 tests that fail?
>>
>> Thanks!
>>
>> ______________________________________________________________________________
>>
>> (let* ((svg (svg-create "125pt" "116pt")) ;; 246px X 228px on my conf.
>> (original-map
>> '(((circle (41 . 29) . 24) "a" (help-echo "A"))
>> ((rect (5 . 101) 77 . 149) "b" (help-echo "B"))
>> ((poly . [ 161 29 160 22 154 15 146 10 136 7 125 5 114 7
>> 104 10 96 15 91 22 89 29 91 37 96 43 104 49
>> 114 52 125 53 136 52 146 49 154 43 160 37])
>> "c" (help-echo "C"))))
>> (scaled-map
>> '(((circle (82 . 58) . 48) "a" (help-echo "A"))
>> ((rect (10 . 202) 154 . 298) "b" (help-echo "B"))
>> ((poly . [ 322 58 320 44 308 30 292 20 272 14 250 10 228 14
>> 208 20 192 30 182 44 178 58 182 74 192 86 208 98
>> 228 104 250 106 272 104 292 98 308 86 320 74])
>> "c" (help-echo "C"))))
>> (flipped-map
>> '(((circle (125 . 29) . 24) "a" (help-echo "A"))
>> ((rect (89 . 101) 161 . 149) "b" (help-echo "B"))
>> ((poly . [ 5 29 6 22 12 15 20 10 30 7 41 5 52 7 62 10 70 15
>> 75 22 77 29 75 37 70 43 62 49 52 52 41 53 30 52
>> 20 49 12 43 6 37])
>> "c" (help-echo "C"))))
>> (rotated-map
>> '(((circle (126 . 41) . 24) "a" (help-echo "A"))
>> ((rect (6 . 5) 54 . 77) "b" (help-echo "B"))
>> ((poly . [ 126 161 133 160 140 154 145 146 148 136 150 125
>> 148 114 145 104 140 96 133 91 126 89 118 91
>> 112 96 106 104 103 114 102 125 103 136 106 146
>> 112 154 118 160])
>> "c" (help-echo "C"))))
>> (scaled-rotated-flipped-map
>> '(((circle (58 . 82) . 48) "a" (help-echo "A"))
>> ((rect (202 . 10) 298 . 154) "b" (help-echo "B"))
>> ((poly . [ 58 322 44 320 30 308 20 292 14 272 10 250 14 228
>> 20 208 30 192 44 182 58 178 74 182 86 192 98 208
>> 104 228 106 250 104 272 98 292 86 308 74 320])
>> "c" (help-echo "C"))))
>> )
>> (svg-rectangle svg 5 101 (- 77 5) (- 149 101)
>> :stroke-width 0 :fill "red")
>> (svg-circle svg 41 29 24
>> :stroke-width 0 :fill "green")
>> (svg-polyline svg '((161 . 29) (160 . 22) (154 . 15) (146 . 10)
>> (136 . 7) (125 . 5) (114 . 7) (104 . 10)
>> (96 . 15) (91 . 22) (89 . 29) (91 . 37)
>> (96 . 43) (104 . 49) (114 . 52) (125 . 53)
>> (136 . 52) (146 . 49) (154 . 43) (160 . 37))
>> :stroke-width 0 :fill "blue")
>> (let ((image (svg-image svg :map scaled-rotated-flipped-map
>> :scale 2 :rotation 90 :flip t)))
>> ;; Test that `image--compute-original-map' correctly generates
>> ;; original-map when creating an already transformed image.
>> (insert
>> (format
>> "\n:flip %s :rotation %s :scale %s (equal :original-map original-map)=>%s"
>> (image-property image :flip)
>> (image-property image :rotation)
>> (image-property image :scale)
>> (equal (image-property image :original-map)
>> original-map)))
>> (print image)
>> (insert-image image)
>> (setf (image-property image :flip) nil)
>> (setf (image-property image :rotation) 0)
>> (setf (image-property image :scale) 2)
>> (let ((map (image--compute-map image)))
>> (insert
>> (format
>> "\n:flip %s :rotation %s :scale %s (equal map scaled-map)=>%s"
>> (image-property image :flip)
>> (image-property image :rotation)
>> (image-property image :scale)
>> (equal map scaled-map)))
>> (setf (image-property image :map) map)
>> (print image)
>> ;; insert a new image in current buffer.
>> (insert-image (copy-tree image t))
>> )
>>
>> (setf (image-property image :scale) 1)
>> (setf (image-property image :rotation) 90)
>> (let ((map (image--compute-map image)))
>> (insert
>> (format
>> "\n:flip %s :rotation %s :scale %s (equal map rotated-map)=>%s"
>> (image-property image :flip)
>> (image-property image :rotation)
>> (image-property image :scale)
>> (equal map rotated-map)))
>> (setf (image-property image :map) map)
>> (print image)
>> ;; insert a new image in current buffer.
>> (insert-image (copy-tree image t))
>> )
>>
>> (setf (image-property image :rotation) 0)
>> (setf (image-property image :flip) t)
>> (let ((map (image--compute-map image)))
>> (insert
>> (format
>> "\n:flip %s :rotation %s :scale %s (equal map flipped-map)=>%s"
>> (image-property image :flip)
>> (image-property image :rotation)
>> (image-property image :scale)
>> (equal map flipped-map)))
>> (setf (image-property image :map) map)
>> (print image)
>> ;; insert a new image in current buffer.
>> (insert-image (copy-tree image t))
>> )
>>
>> (setf (image-property image :scale) 2)
>> (setf (image-property image :rotation) 90)
>> (let ((map (image--compute-map image)))
>> (insert
>> (format
>> "\n:flip %s :rotation %s :scale %s (equal map scaled-rotated-flipped-map)=>%s"
>> (image-property image :flip)
>> (image-property image :rotation)
>> (image-property image :scale)
>> (equal map scaled-rotated-flipped-map)))
>> (setf (image-property image :map) map)
>> (print image)
>> ;; insert a new image in current buffer.
>> (insert-image (copy-tree image t))
>> )
>> ))
>
> When I evaluate this block and hover over the various shapes, the
> help-echo pop-ups appear at the correct boundaries.
>
> Are you able to reproduce this issue with my patch with emacs -Q?
>
> Without the patch?
>
> Thank you!
>
> Joseph
Hello,
On my laptop, running emacs -Q, the tests give the same results with
and without the patch:
Test with patch without patch
-------------------------------------------------------------
image-create-image-with-map OK OK
image-transform-map OK OK
image--compute-map-and-original-map Fail (1) Fail (2)
(1) Test ‘image--compute-map’ and ‘image--compute-original-map’.
(ert-test-failed
((should (equal (image--compute-map image) rotated-map)) :form
(equal
(((circle ... . 24) "a" (help-echo "A"))
((rect ... 127 . 77) "b" (help-echo "B"))
((poly . [199 161 206 160 213 154 218 146 221 136 ...]) "c"
(help-echo "C")))
(((circle ... . 24) "a" (help-echo "A"))
((rect ... 54 . 77) "b" (help-echo "B"))
((poly . [126 161 133 160 140 154 145 146 148 136 ...]) "c"
(help-echo "C"))))
:value nil :explanation (list-elt 0 (list-elt 0 (cdr (car ...))))))
(2) Test ‘image--compute-map’ and ‘image--compute-original-map’.
(ert-test-failed
((should
(image-tests--map-equal (image--compute-map image) rotated-map))
:form
(image-tests--map-equal
(((circle ... . 24) "a" (help-echo "A"))
((rect ... 127 . 77) "b" (help-echo "B"))
((poly . [199 161 206 160 213 154 218 146 221 136 ...]) "c"
(help-echo "C")))
(((circle ... . 24) "a" (help-echo "A"))
((rect ... 54 . 77) "b" (help-echo "B"))
((poly . [126 161 133 160 140 154 145 146 148 136 ...]) "c"
(help-echo "C"))))
:value nil))
Thanks!
next prev parent reply other threads:[~2024-04-07 16:01 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-30 19:44 bug#70093: Remove unnecessary `image-tests--map-equal' Joseph Turner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-30 22:04 ` bug#70093: *** SPAM *** " David Ponce via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-31 7:37 ` Joseph Turner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-31 10:08 ` David Ponce via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-02 10:36 ` David Ponce via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-06 1:50 ` Joseph Turner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-07 16:01 ` David Ponce via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2024-03-31 5:10 ` Eli Zaretskii
2024-03-31 5:32 ` Joseph Turner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-31 7:33 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7d8af44b-9c3c-40d1-99c4-bda1a3ea2756@orange.fr \
--to=bug-gnu-emacs@gnu.org \
--cc=70093@debbugs.gnu.org \
--cc=da_vid@orange.fr \
--cc=eliz@gnu.org \
--cc=joseph@breatheoutbreathe.in \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).