diff options
Diffstat (limited to 'graphics/src/damage.rs')
-rw-r--r-- | graphics/src/damage.rs | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/graphics/src/damage.rs b/graphics/src/damage.rs index 59e9f5b4..2aec9b25 100644 --- a/graphics/src/damage.rs +++ b/graphics/src/damage.rs @@ -78,9 +78,28 @@ impl<T: Damage> Damage for Primitive<T> { // damage bounds (?) raw.clip_bounds.expand(1.5) } - Self::Quad { bounds, .. } - | Self::Image { bounds, .. } - | Self::Svg { bounds, .. } => bounds.expand(1.0), + Self::Quad { + bounds, + shadow_offset, + shadow_blur_radius, + .. + } => { + let bounds_with_shadow = Rectangle { + x: bounds.x + shadow_offset.x.min(0.0) - shadow_blur_radius, + y: bounds.y + shadow_offset.y.min(0.0) - shadow_blur_radius, + width: bounds.width + + shadow_offset.x.abs() + + shadow_blur_radius * 2.0, + height: bounds.height + + shadow_offset.y.abs() + + shadow_blur_radius * 2.0, + }; + + bounds_with_shadow.expand(1.0) + } + Self::Image { bounds, .. } | Self::Svg { bounds, .. } => { + bounds.expand(1.0) + } Self::Clip { bounds, .. } => bounds.expand(1.0), Self::Group { primitives } => primitives .iter() |