🐛 Fix swapped move-to/line-to type codes in PathData binary readers

The impl-walk, impl-reduce, and impl-lookup functions had the binary
type codes for move-to and line-to swapped (1 mapped to :line-to and
2 to :move-to). This is inconsistent with from-plain, read-segment,
to-string-segment*, and the Rust RawSegmentData enum which all use
1=move-to and 2=line-to. The swap caused incorrect command types to
be reported to callers like get-handlers and get-points.

Signed-off-by: Andrey Antukh <niwi@niwi.nz>
This commit is contained in:
Andrey Antukh 2026-04-08 12:06:45 +00:00
parent cb33fe417e
commit 6a0d131715

View File

@ -128,8 +128,8 @@
x (buf/read-float buffer (+ offset 20))
y (buf/read-float buffer (+ offset 24))
type (case type
1 :line-to
2 :move-to
1 :move-to
2 :line-to
3 :curve-to
4 :close-path)
res (f type c1x c1y c2x c2y x y)]
@ -153,8 +153,8 @@
x (buf/read-float buffer (+ offset 20))
y (buf/read-float buffer (+ offset 24))
type (case type
1 :line-to
2 :move-to
1 :move-to
2 :line-to
3 :curve-to
4 :close-path)
result (f result index type c1x c1y c2x c2y x y)]
@ -174,8 +174,8 @@
x (buf/read-float buffer (+ offset 20))
y (buf/read-float buffer (+ offset 24))
type (case type
1 :line-to
2 :move-to
1 :move-to
2 :line-to
3 :curve-to
4 :close-path)]
#?(:clj (f type c1x c1y c2x c2y x y)