Skip to content

Commit 3fa9e4c

Browse files
Fix element transform for aligned stroke masks
1 parent 1b9a492 commit 3fa9e4c

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

node-graph/gsvg-renderer/src/renderer.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -869,10 +869,18 @@ impl Render for Table<Vector> {
869869
let multiplied_transform = parent_transform * *row.transform;
870870
let has_real_stroke = row.element.style.stroke().filter(|stroke| stroke.weight() > 0.);
871871
let set_stroke_transform = has_real_stroke.map(|stroke| stroke.transform).filter(|transform| transform.matrix2.determinant() != 0.);
872-
let applied_stroke_transform = set_stroke_transform.unwrap_or(multiplied_transform);
873-
let applied_stroke_transform = render_params.alignment_parent_transform.unwrap_or(applied_stroke_transform);
874-
let element_transform = set_stroke_transform.map(|stroke_transform| multiplied_transform * stroke_transform.inverse());
875-
let element_transform = element_transform.unwrap_or(DAffine2::IDENTITY);
872+
let mut applied_stroke_transform = set_stroke_transform.unwrap_or(multiplied_transform);
873+
let mut element_transform = set_stroke_transform
874+
.map(|stroke_transform| multiplied_transform * stroke_transform.inverse())
875+
.unwrap_or(DAffine2::IDENTITY);
876+
if let Some(alignment_transform) = render_params.alignment_parent_transform {
877+
applied_stroke_transform = alignment_transform;
878+
element_transform = if alignment_transform.matrix2.determinant() != 0. {
879+
multiplied_transform * alignment_transform.inverse()
880+
} else {
881+
multiplied_transform
882+
};
883+
}
876884
let layer_bounds = row.element.bounding_box().unwrap_or_default();
877885

878886
let to_point = |p: DVec2| kurbo::Point::new(p.x, p.y);

0 commit comments

Comments
 (0)