style/values/computed/
border.rs1use crate::values::computed::length::{NonNegativeLength, NonNegativeLengthPercentage};
8use crate::values::computed::{NonNegativeNumber, NonNegativeNumberOrPercentage};
9use crate::values::generics::border::{
10 GenericBorderCornerRadius, GenericBorderImageSideWidth, GenericBorderImageSlice,
11 GenericBorderRadius, GenericBorderSpacing,
12};
13use crate::values::generics::rect::Rect;
14use crate::values::generics::size::Size2D;
15use crate::values::generics::NonNegative;
16use crate::Zero;
17use app_units::Au;
18
19pub use crate::values::specified::border::BorderImageRepeat;
20
21pub type LineWidth = Au;
23
24pub type BorderSideWidth = Au;
26
27pub type BorderImageWidth = Rect<BorderImageSideWidth>;
29
30pub type BorderImageSideWidth =
32 GenericBorderImageSideWidth<NonNegativeLengthPercentage, NonNegativeNumber>;
33
34pub type BorderImageSlice = GenericBorderImageSlice<NonNegativeNumberOrPercentage>;
36
37pub type BorderRadius = GenericBorderRadius<NonNegativeLengthPercentage>;
39
40pub type BorderCornerRadius = GenericBorderCornerRadius<NonNegativeLengthPercentage>;
42
43pub type BorderSpacing = GenericBorderSpacing<NonNegativeLength>;
45
46impl BorderImageSideWidth {
47 #[inline]
49 pub fn one() -> Self {
50 GenericBorderImageSideWidth::Number(NonNegative(1.))
51 }
52}
53
54impl BorderImageSlice {
55 #[inline]
57 pub fn hundred_percent() -> Self {
58 GenericBorderImageSlice {
59 offsets: Rect::all(NonNegativeNumberOrPercentage::hundred_percent()),
60 fill: false,
61 }
62 }
63}
64
65impl BorderSpacing {
66 pub fn zero() -> Self {
68 GenericBorderSpacing(Size2D::new(
69 NonNegativeLength::zero(),
70 NonNegativeLength::zero(),
71 ))
72 }
73
74 pub fn horizontal(&self) -> Au {
76 Au::from(*self.0.width())
77 }
78
79 pub fn vertical(&self) -> Au {
81 Au::from(*self.0.height())
82 }
83}