summaryrefslogtreecommitdiffstats
path: root/tiny_skia
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-01-20 12:11:18 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-01-20 12:11:18 +0100
commitb7b457a575cdd103915994f640c50262ce30a7c5 (patch)
treec8b910de89e2e723051dc8058f796ec022026a49 /tiny_skia
parent83902921a3065e8dadfaca23c2e03dd770d93780 (diff)
downloadiced-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.rs24
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()