summaryrefslogtreecommitdiffstats
path: root/tiny_skia
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-05-19 03:53:23 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-05-19 03:53:23 +0200
commit49353bc4ea2e93e5d70f026e7eda169987b7c1c7 (patch)
tree5ae1f91086556a5b7d13074d8b9545359c6771eb /tiny_skia
parent3d44de9547c770787edf6de3b683fe2b7e92ee09 (diff)
downloadiced-49353bc4ea2e93e5d70f026e7eda169987b7c1c7.tar.gz
iced-49353bc4ea2e93e5d70f026e7eda169987b7c1c7.tar.bz2
iced-49353bc4ea2e93e5d70f026e7eda169987b7c1c7.zip
Inline `into_gradient` in `tiny_skia::backend`
... since it's not really reused anywhere else.
Diffstat (limited to 'tiny_skia')
-rw-r--r--tiny_skia/src/backend.rs84
1 files changed, 41 insertions, 43 deletions
diff --git a/tiny_skia/src/backend.rs b/tiny_skia/src/backend.rs
index 9495d2fc..d55b9dab 100644
--- a/tiny_skia/src/backend.rs
+++ b/tiny_skia/src/backend.rs
@@ -184,8 +184,47 @@ impl Backend {
*color,
))
}
- Background::Gradient(gradient) => {
- into_gradient(*gradient, *bounds)
+ Background::Gradient(Gradient::Linear(linear)) => {
+ let (start, end) =
+ linear.angle.to_distance(&bounds);
+
+ let stops: Vec<tiny_skia::GradientStop> =
+ linear
+ .stops
+ .into_iter()
+ .flatten()
+ .map(|stop| {
+ tiny_skia::GradientStop::new(
+ stop.offset,
+ tiny_skia::Color::from_rgba(
+ stop.color.b,
+ stop.color.g,
+ stop.color.r,
+ stop.color.a,
+ )
+ .expect("Create color"),
+ )
+ })
+ .collect();
+
+ tiny_skia::LinearGradient::new(
+ tiny_skia::Point {
+ x: start.x,
+ y: start.y,
+ },
+ tiny_skia::Point { x: end.x, y: end.y },
+ if stops.is_empty() {
+ vec![tiny_skia::GradientStop::new(
+ 0.0,
+ tiny_skia::Color::BLACK,
+ )]
+ } else {
+ stops
+ },
+ tiny_skia::SpreadMode::Pad,
+ tiny_skia::Transform::identity(),
+ )
+ .expect("Create linear gradient")
}
},
anti_alias: true,
@@ -456,47 +495,6 @@ fn into_color(color: Color) -> tiny_skia::Color {
.expect("Convert color from iced to tiny_skia")
}
-fn into_gradient<'a>(
- gradient: Gradient,
- bounds: Rectangle,
-) -> tiny_skia::Shader<'a> {
- let Gradient::Linear(linear) = gradient;
- let (start, end) = linear.angle.to_distance(&bounds);
- let stops: Vec<tiny_skia::GradientStop> = linear
- .stops
- .into_iter()
- .flatten()
- .map(|stop| {
- tiny_skia::GradientStop::new(
- stop.offset,
- tiny_skia::Color::from_rgba(
- stop.color.b,
- stop.color.g,
- stop.color.r,
- stop.color.a,
- )
- .expect("Create color"),
- )
- })
- .collect();
-
- tiny_skia::LinearGradient::new(
- tiny_skia::Point {
- x: start.x,
- y: start.y,
- },
- tiny_skia::Point { x: end.x, y: end.y },
- if stops.is_empty() {
- vec![tiny_skia::GradientStop::new(0.0, tiny_skia::Color::BLACK)]
- } else {
- stops
- },
- tiny_skia::SpreadMode::Pad,
- tiny_skia::Transform::identity(),
- )
- .expect("Create linear gradient")
-}
-
fn rounded_rectangle(
bounds: Rectangle,
border_radius: [f32; 4],