From eeb1f85e25b05334dd105cf2bdf0c2a88d3c3520 Mon Sep 17 00:00:00 2001 From: Keavon Chambers Date: Fri, 1 May 2026 19:23:44 -0700 Subject: [PATCH] Fix 'Boolean Operation' node outputs having the reversed winding direction (#4091) --- node-graph/nodes/path-bool/src/lib.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/node-graph/nodes/path-bool/src/lib.rs b/node-graph/nodes/path-bool/src/lib.rs index dadad9b8..da94d9f6 100644 --- a/node-graph/nodes/path-bool/src/lib.rs +++ b/node-graph/nodes/path-bool/src/lib.rs @@ -152,8 +152,10 @@ fn boolean_operation_on_vector_table(vector: &Table, boolean_operation: }; let contours = top.contours(|winding| winding.is_inside(boolean_operation)); + // TODO: Linesweeper emits contours in the opposite winding direction from the rest of Kurbo's and Graphite's vector graphics system (clockwise in screen coordinates). + // TODO: Report this upstream to Linesweeper and remove this `.reverse()` workaround once fixed. for subpath in from_bez_paths(contours.contours().map(|c| &c.path)) { - row.element_mut().append_subpath(subpath, false); + row.element_mut().append_subpath(subpath.reverse(), false); } table.push(row);