Use Radians as a number directly in gradient example

This commit is contained in:
Héctor Ramón Jiménez 2023-09-08 01:58:52 +02:00
parent c1139898c5
commit d2294737c2
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
4 changed files with 55 additions and 19 deletions

View file

@ -12,14 +12,14 @@ pub fn main() -> iced::Result {
struct Gradient {
start: Color,
end: Color,
angle: f32,
angle: Radians,
}
#[derive(Debug, Clone, Copy)]
enum Message {
StartChanged(Color),
EndChanged(Color),
AngleChanged(f32),
AngleChanged(Radians),
}
impl Sandbox for Gradient {
@ -29,7 +29,7 @@ impl Sandbox for Gradient {
Self {
start: Color::WHITE,
end: Color::new(0.0, 0.0, 1.0, 1.0),
angle: 0.0,
angle: Radians(0.0),
}
}
@ -52,12 +52,10 @@ impl Sandbox for Gradient {
.width(Length::Fill)
.height(Length::Fill)
.style(move |_: &_| {
let gradient = gradient::Linear::new(Radians(
angle + std::f32::consts::PI,
))
.add_stop(0.0, start)
.add_stop(1.0, end)
.into();
let gradient = gradient::Linear::new(angle)
.add_stop(0.0, start)
.add_stop(1.0, end)
.into();
container::Appearance {
background: Some(Background::Gradient(gradient)),
@ -67,10 +65,8 @@ impl Sandbox for Gradient {
let angle_picker = row![
text("Angle").width(64),
slider(0.0..=std::f32::consts::PI * 2.0, self.angle, move |v| {
Message::AngleChanged(v)
})
.step(0.01)
slider(Radians::RANGE, self.angle, Message::AngleChanged)
.step(0.01)
]
.spacing(8)
.padding(8)