Skip to main content

drawing_api/common/display_list/
rounding_radii.rs

1use crate::{smart_pointers::OptRef, PixelSize};
2
3#[derive(Debug, Clone, PartialEq)]
4pub struct RoundingRadii {
5    pub top_left: PixelSize,
6    pub bottom_left: PixelSize,
7    pub top_right: PixelSize,
8    pub bottom_right: PixelSize,
9}
10
11impl RoundingRadii {
12    pub fn single_radii(radius: f32) -> Self {
13        RoundingRadii {
14            top_left: PixelSize::new(radius, radius),
15            bottom_left: PixelSize::new(radius, radius),
16            top_right: PixelSize::new(radius, radius),
17            bottom_right: PixelSize::new(radius, radius),
18        }
19    }
20
21    pub fn axis_radii(x_radius: f32, y_radius: f32) -> Self {
22        RoundingRadii {
23            top_left: PixelSize::new(x_radius, y_radius),
24            bottom_left: PixelSize::new(x_radius, y_radius),
25            top_right: PixelSize::new(x_radius, y_radius),
26            bottom_right: PixelSize::new(x_radius, y_radius),
27        }
28    }
29}
30
31impl<'a> From<&'a RoundingRadii> for OptRef<'a, RoundingRadii> {
32    fn from(value: &'a RoundingRadii) -> Self {
33        OptRef::Borrowed(value)
34    }
35}
36
37impl<'a> From<RoundingRadii> for OptRef<'a, RoundingRadii> {
38    fn from(value: RoundingRadii) -> Self {
39        OptRef::Owned(value)
40    }
41}
42
43impl<'a> From<f32> for OptRef<'a, RoundingRadii> {
44    fn from(value: f32) -> Self {
45        OptRef::Owned(RoundingRadii::single_radii(value))
46    }
47}
48
49impl<'a> From<(f32, f32)> for OptRef<'a, RoundingRadii> {
50    fn from(value: (f32, f32)) -> Self {
51        OptRef::Owned(RoundingRadii::axis_radii(value.0, value.1))
52    }
53}