🐛 Fix svg attrs
Some checks failed
Commit Message Check / Check Commit Message (push) Has been cancelled
CI / Code Linter (push) Has been cancelled
CI / Common Tests (push) Has been cancelled
CI / Frontend Tests (push) Has been cancelled
CI / Render WASM Tests (push) Has been cancelled
CI / Backend Tests (push) Has been cancelled
CI / Library Tests (push) Has been cancelled
CI / Build Integration Bundle (push) Has been cancelled
CI / Integration Tests 1/4 (push) Has been cancelled
CI / Integration Tests 2/4 (push) Has been cancelled
CI / Integration Tests 3/4 (push) Has been cancelled

This commit is contained in:
Alejandro Alonso
2025-11-26 12:51:37 +01:00
committed by Belén Albeza
parent 8840246425
commit 63959a22cc
3 changed files with 27 additions and 22 deletions

View File

@@ -475,9 +475,9 @@
(dissoc :style) (dissoc :style)
(merge style) (merge style)
(select-keys allowed-keys)) (select-keys allowed-keys))
fill-rule (or (-> attrs :fill-rule sr/translate-fill-rule) (-> attrs :fillRule sr/translate-fill-rule)) fill-rule (-> (or (:fill-rule attrs) (:fillRule attrs)) sr/translate-fill-rule)
stroke-linecap (or (-> attrs :stroke-linecap sr/translate-stroke-linecap) (-> attrs :strokeLinecap sr/translate-stroke-linecap)) stroke-linecap (-> (or (:stroke-linecap attrs) (:strokeLinecap attrs)) sr/translate-stroke-linecap)
stroke-linejoin (or (-> attrs :stroke-linejoin sr/translate-stroke-linejoin) (-> attrs :strokeLinejoin sr/translate-stroke-linejoin)) stroke-linejoin (-> (or (:stroke-linejoin attrs) (:strokeLinejoin attrs)) sr/translate-stroke-linejoin)
fill-none (= "none" (-> attrs :fill))] fill-none (= "none" (-> attrs :fill))]
(h/call wasm/internal-module "_set_shape_svg_attrs" fill-rule stroke-linecap stroke-linejoin fill-none))) (h/call wasm/internal-module "_set_shape_svg_attrs" fill-rule stroke-linecap stroke-linejoin fill-none)))

View File

@@ -645,14 +645,12 @@ impl RenderState {
if frame_has_blur && shape_has_blur { if frame_has_blur && shape_has_blur {
shape.to_mut().set_blur(None); shape.to_mut().set_blur(None);
} }
} else { } else if !frame_has_blur {
if !frame_has_blur { if let Some(blur) = self.combined_layer_blur(shape.blur) {
if let Some(blur) = self.combined_layer_blur(shape.blur) { shape.to_mut().set_blur(Some(blur));
shape.to_mut().set_blur(Some(blur));
}
} else if shape_has_blur {
shape.to_mut().set_blur(None);
} }
} else if shape_has_blur {
shape.to_mut().set_blur(None);
} }
let center = shape.center(); let center = shape.center();

View File

@@ -908,7 +908,7 @@ impl Shape {
match (mask_rect, content_rect) { match (mask_rect, content_rect) {
(Some(mut mask), Some(content)) => { (Some(mut mask), Some(content)) => {
if mask.intersect(&content) { if mask.intersect(content) {
rect.join(mask); rect.join(mask);
} }
} }
@@ -1527,20 +1527,27 @@ mod tests {
let mask_id = Uuid::new_v4(); let mask_id = Uuid::new_v4();
let content_id = Uuid::new_v4(); let content_id = Uuid::new_v4();
let group = pool.add_shape(group_id); {
group.set_shape_type(Type::Group(Group { masked: true })); let group = pool.add_shape(group_id);
group.children = vec![mask_id, content_id]; group.set_shape_type(Type::Group(Group { masked: true }));
group.children = vec![mask_id, content_id];
}
let mask = pool.add_shape(mask_id); {
mask.set_shape_type(Type::Rect(Rect::default())); let mask = pool.add_shape(mask_id);
mask.set_selrect(0.0, 0.0, 50.0, 50.0); mask.set_shape_type(Type::Rect(Rect::default()));
mask.set_parent(group_id); mask.set_selrect(0.0, 0.0, 50.0, 50.0);
mask.set_parent(group_id);
}
let content = pool.add_shape(content_id); {
content.set_shape_type(Type::Rect(Rect::default())); let content = pool.add_shape(content_id);
content.set_selrect(-10.0, -10.0, 110.0, 110.0); content.set_shape_type(Type::Rect(Rect::default()));
content.set_parent(group_id); content.set_selrect(-10.0, -10.0, 110.0, 110.0);
content.set_parent(group_id);
}
let group = pool.get(&group_id).expect("group should exist");
let extrect = group.calculate_extrect(&pool, 1.0); let extrect = group.calculate_extrect(&pool, 1.0);
assert_eq!(extrect.left, 0.0); assert_eq!(extrect.left, 0.0);