Fix tiny skia primitive rendering

This commit is contained in:
DKolter 2025-06-03 11:25:50 +02:00
parent 7afbb89ebf
commit 85d8dbde90
3 changed files with 29 additions and 41 deletions

View file

@ -36,15 +36,6 @@ impl Engine {
clip_mask: &mut tiny_skia::Mask,
clip_bounds: Rectangle,
) {
debug_assert!(
quad.bounds.width.is_normal(),
"Quad with non-normal width!"
);
debug_assert!(
quad.bounds.height.is_normal(),
"Quad with non-normal height!"
);
let physical_bounds = quad.bounds * transformation;
if !clip_bounds.intersects(&physical_bounds) {
@ -472,7 +463,7 @@ impl Engine {
transformation: Transformation,
pixels: &mut tiny_skia::PixmapMut<'_>,
clip_mask: &mut tiny_skia::Mask,
layer_bounds: Rectangle,
clip_bounds: Rectangle,
) {
match primitive {
Primitive::Fill { path, paint, rule } => {
@ -487,14 +478,12 @@ impl Engine {
} * transformation
};
let Some(clip_bounds) =
layer_bounds.intersection(&physical_bounds)
else {
if !clip_bounds.intersects(&physical_bounds) {
return;
};
}
let clip_mask =
(physical_bounds != clip_bounds).then_some(clip_mask as &_);
let clip_mask = (!physical_bounds.is_within(&clip_bounds))
.then_some(clip_mask as &_);
pixels.fill_path(
path,
@ -520,14 +509,12 @@ impl Engine {
} * transformation
};
let Some(clip_bounds) =
layer_bounds.intersection(&physical_bounds)
else {
if !clip_bounds.intersects(&physical_bounds) {
return;
};
}
let clip_mask =
(physical_bounds != clip_bounds).then_some(clip_mask as &_);
let clip_mask = (!physical_bounds.is_within(&clip_bounds))
.then_some(clip_mask as &_);
pixels.stroke_path(
path,