diff options
author | 2024-01-20 12:11:18 +0100 | |
---|---|---|
committer | 2024-01-20 12:11:18 +0100 | |
commit | b7b457a575cdd103915994f640c50262ce30a7c5 (patch) | |
tree | c8b910de89e2e723051dc8058f796ec022026a49 /tiny_skia | |
parent | 83902921a3065e8dadfaca23c2e03dd770d93780 (diff) | |
download | iced-b7b457a575cdd103915994f640c50262ce30a7c5.tar.gz iced-b7b457a575cdd103915994f640c50262ce30a7c5.tar.bz2 iced-b7b457a575cdd103915994f640c50262ce30a7c5.zip |
Make `shadow` optional in `renderer::Quad`
Diffstat (limited to 'tiny_skia')
-rw-r--r-- | tiny_skia/src/backend.rs | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/tiny_skia/src/backend.rs b/tiny_skia/src/backend.rs index b62f20d5..ae1abc84 100644 --- a/tiny_skia/src/backend.rs +++ b/tiny_skia/src/backend.rs @@ -155,9 +155,7 @@ impl Backend { border_radius, border_width, border_color, - shadow_color, - shadow_offset, - shadow_blur_radius, + shadow, } => { let physical_bounds = (*bounds + translation) * scale_factor; @@ -187,7 +185,7 @@ impl Backend { } let path = rounded_rectangle(*bounds, fill_border_radius); - if shadow_color.a > 0.0 { + if let Some(shadow) = shadow { fn smoothstep(a: f32, b: f32, x: f32) -> f32 { let x = ((x - a) / (b - a)).clamp(0.0, 1.0); @@ -216,10 +214,10 @@ impl Backend { } let shadow_bounds = (Rectangle { - x: bounds.x + shadow_offset.x - shadow_blur_radius, - y: bounds.y + shadow_offset.y - shadow_blur_radius, - width: bounds.width + shadow_blur_radius * 2.0, - height: bounds.height + shadow_blur_radius * 2.0, + x: bounds.x + shadow.offset.x - shadow.blur_radius, + y: bounds.y + shadow.offset.y - shadow.blur_radius, + width: bounds.width + shadow.blur_radius * 2.0, + height: bounds.height + shadow.blur_radius * 2.0, } + translation) * scale_factor; @@ -245,10 +243,10 @@ impl Backend { let shadow_distance = rounded_box_sdf( Vector::new( x - physical_bounds.position().x - - (shadow_offset.x * scale_factor) + - (shadow.offset.x * scale_factor) - half_width, y - physical_bounds.position().y - - (shadow_offset.y * scale_factor) + - (shadow.offset.y * scale_factor) - half_height, ), size, @@ -256,12 +254,12 @@ impl Backend { ); let shadow_alpha = 1.0 - smoothstep( - -shadow_blur_radius * scale_factor, - *shadow_blur_radius * scale_factor, + -shadow.blur_radius * scale_factor, + shadow.blur_radius * scale_factor, shadow_distance, ); - let mut color = into_color(*shadow_color); + let mut color = into_color(shadow.color); color.apply_opacity(shadow_alpha); color.to_color_u8().premultiply() |