drawing_api/common/display_list/
rounding_radii.rs1use 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}