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 BorderSideOffset = Au;
29
30pub type BorderImageWidth = Rect<BorderImageSideWidth>;
32
33pub type BorderImageSideWidth =
35 GenericBorderImageSideWidth<NonNegativeLengthPercentage, NonNegativeNumber>;
36
37pub type BorderImageSlice = GenericBorderImageSlice<NonNegativeNumberOrPercentage>;
39
40pub type BorderRadius = GenericBorderRadius<NonNegativeLengthPercentage>;
42
43pub type BorderCornerRadius = GenericBorderCornerRadius<NonNegativeLengthPercentage>;
45
46pub type BorderSpacing = GenericBorderSpacing<NonNegativeLength>;
48
49impl BorderImageSideWidth {
50 #[inline]
52 pub fn one() -> Self {
53 GenericBorderImageSideWidth::Number(NonNegative(1.))
54 }
55}
56
57impl BorderImageSlice {
58 #[inline]
60 pub fn hundred_percent() -> Self {
61 GenericBorderImageSlice {
62 offsets: Rect::all(NonNegativeNumberOrPercentage::hundred_percent()),
63 fill: false,
64 }
65 }
66}
67
68impl BorderSpacing {
69 pub fn zero() -> Self {
71 GenericBorderSpacing(Size2D::new(
72 NonNegativeLength::zero(),
73 NonNegativeLength::zero(),
74 ))
75 }
76
77 pub fn horizontal(&self) -> Au {
79 Au::from(*self.0.width())
80 }
81
82 pub fn vertical(&self) -> Au {
84 Au::from(*self.0.height())
85 }
86}