Skip to main content

rustmotion_core/traits/
rounded.rs

1/// Trait for components that support rounded corners.
2pub trait Rounded {
3    fn corner_radius(&self) -> f32;
4}
5
6/// Mutable access to corner radius — needed by builder traits.
7pub trait RoundedMut: Rounded {
8    fn set_corner_radius(&mut self, radius: f32);
9}
10
11/// Builder API for corner radius.
12pub trait RoundedExt: RoundedMut + Sized {
13    fn rounded(mut self, radius: f32) -> Self {
14        self.set_corner_radius(radius);
15        self
16    }
17
18    fn rounded_none(self) -> Self {
19        self.rounded(0.0)
20    }
21    fn rounded_sm(self) -> Self {
22        self.rounded(4.0)
23    }
24    fn rounded_md(self) -> Self {
25        self.rounded(8.0)
26    }
27    fn rounded_lg(self) -> Self {
28        self.rounded(12.0)
29    }
30    fn rounded_xl(self) -> Self {
31        self.rounded(16.0)
32    }
33    fn rounded_2xl(self) -> Self {
34        self.rounded(24.0)
35    }
36    fn rounded_full(self) -> Self {
37        self.rounded(9999.0)
38    }
39}
40
41impl<T: RoundedMut + Sized> RoundedExt for T {}