From 7a3bb999a94a34c8e869ecc5c6b68b5e7c8b2ab7 Mon Sep 17 00:00:00 2001 From: Ellen Gu Date: Mon, 10 Mar 2025 06:29:53 -0400 Subject: [PATCH] Fix inconsistent stroke width in 'Outline' view mode (#2417) * fix noise pattern parameter issue * removed the commented out line * Fix outline mode stroke width not consistent --- node-graph/gcore/src/graphic_element/renderer.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/node-graph/gcore/src/graphic_element/renderer.rs b/node-graph/gcore/src/graphic_element/renderer.rs index a0f087b3..5ec80a3d 100644 --- a/node-graph/gcore/src/graphic_element/renderer.rs +++ b/node-graph/gcore/src/graphic_element/renderer.rs @@ -445,12 +445,9 @@ impl GraphicElementRendered for VectorDataTable { fn render_svg(&self, render: &mut SvgRender, render_params: &RenderParams) { for instance in self.instances() { let multiplied_transform = render.transform * instance.transform(); - let set_stroke_transform = instance - .instance - .style - .stroke() - .map(|stroke| stroke.transform) - .filter(|transform| transform.matrix2.determinant() != 0.); + // Only consider strokes with non-zero weight, since default strokes with zero weight would prevent assigning the correct stroke transform + let has_real_stroke = instance.instance.style.stroke().filter(|stroke| stroke.weight() > 0.); + let set_stroke_transform = has_real_stroke.map(|stroke| stroke.transform).filter(|transform| transform.matrix2.determinant() != 0.); let applied_stroke_transform = set_stroke_transform.unwrap_or(instance.transform()); let element_transform = set_stroke_transform.map(|stroke_transform| multiplied_transform * stroke_transform.inverse()); let element_transform = element_transform.unwrap_or(DAffine2::IDENTITY); @@ -468,6 +465,7 @@ impl GraphicElementRendered for VectorDataTable { attributes.push("transform", matrix); let defs = &mut attributes.0.svg_defs; + let fill_and_stroke = instance .instance .style