mirror of
https://github.com/servo/servo.git
synced 2025-10-14 15:30:27 +01:00
Import victor's layout system 🍷
This commit is contained in:
parent
86904757e6
commit
4444c5a2ad
25 changed files with 1270 additions and 712 deletions
|
@ -69,6 +69,39 @@ impl<LengthPercentage> LengthPercentageOrAuto<LengthPercentage> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<LengthPercentage> LengthPercentageOrAuto<LengthPercentage>
|
||||
where
|
||||
LengthPercentage: Clone,
|
||||
{
|
||||
/// Resolves `auto` values by calling `f`.
|
||||
#[inline]
|
||||
pub fn auto_is(&self, f: impl Fn() -> LengthPercentage) -> LengthPercentage {
|
||||
match self {
|
||||
LengthPercentageOrAuto::LengthPercentage(length) => length.clone(),
|
||||
LengthPercentageOrAuto::Auto => f(),
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns the non-`auto` value, if any.
|
||||
#[inline]
|
||||
pub fn non_auto(&self) -> Option<LengthPercentage> {
|
||||
match self {
|
||||
LengthPercentageOrAuto::LengthPercentage(length) => Some(length.clone()),
|
||||
LengthPercentageOrAuto::Auto => None,
|
||||
}
|
||||
}
|
||||
|
||||
/// Maps the length of this value.
|
||||
pub fn map(&self, f: impl FnOnce(LengthPercentage) -> LengthPercentage) -> Self {
|
||||
match self {
|
||||
LengthPercentageOrAuto::LengthPercentage(l) => {
|
||||
LengthPercentageOrAuto::LengthPercentage(f(l.clone()))
|
||||
},
|
||||
LengthPercentageOrAuto::Auto => LengthPercentageOrAuto::Auto,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<LengthPercentage: Zero> Zero for LengthPercentageOrAuto<LengthPercentage> {
|
||||
fn zero() -> Self {
|
||||
LengthPercentageOrAuto::LengthPercentage(Zero::zero())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue