mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Change LengthOrPercentageOrAuto to make use of NoCalcLength
This commit is contained in:
parent
590c9579f0
commit
bdb08b9a82
5 changed files with 35 additions and 42 deletions
|
@ -989,7 +989,7 @@ impl Parse for LengthOrPercentage {
|
|||
#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
|
||||
#[allow(missing_docs)]
|
||||
pub enum LengthOrPercentageOrAuto {
|
||||
Length(Length),
|
||||
Length(NoCalcLength),
|
||||
Percentage(Percentage),
|
||||
Auto,
|
||||
Calc(Box<CalcLengthOrPercentage>),
|
||||
|
@ -1022,11 +1022,11 @@ impl LengthOrPercentageOrAuto {
|
|||
{
|
||||
match try!(input.next()) {
|
||||
Token::Dimension(ref value, ref unit) if context.is_ok(value.value) =>
|
||||
Length::parse_dimension(value.value, unit).map(LengthOrPercentageOrAuto::Length),
|
||||
NoCalcLength::parse_dimension(value.value, unit).map(LengthOrPercentageOrAuto::Length),
|
||||
Token::Percentage(ref value) if context.is_ok(value.unit_value) =>
|
||||
Ok(LengthOrPercentageOrAuto::Percentage(Percentage(value.unit_value))),
|
||||
Token::Number(ref value) if value.value == 0. =>
|
||||
Ok(LengthOrPercentageOrAuto::Length(Length::zero())),
|
||||
Ok(LengthOrPercentageOrAuto::Length(NoCalcLength::zero())),
|
||||
Token::Ident(ref value) if value.eq_ignore_ascii_case("auto") =>
|
||||
Ok(LengthOrPercentageOrAuto::Auto),
|
||||
Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => {
|
||||
|
|
|
@ -25,7 +25,7 @@ use style_traits::ToCss;
|
|||
use style_traits::viewport::{Orientation, UserZoom, ViewportConstraints, Zoom};
|
||||
use stylesheets::{Stylesheet, Origin};
|
||||
use values::computed::{Context, ToComputedValue};
|
||||
use values::specified::{Length, NoCalcLength, LengthOrPercentageOrAuto, ViewportPercentageLength};
|
||||
use values::specified::{NoCalcLength, LengthOrPercentageOrAuto, ViewportPercentageLength};
|
||||
|
||||
macro_rules! declare_viewport_descriptor {
|
||||
( $( $variant_name: expr => $variant: ident($data: ident), )+ ) => {
|
||||
|
@ -150,16 +150,14 @@ impl FromMeta for ViewportLength {
|
|||
|
||||
Some(match value {
|
||||
v if v.eq_ignore_ascii_case("device-width") =>
|
||||
specified!(Length::NoCalc(
|
||||
NoCalcLength::ViewportPercentage(ViewportPercentageLength::Vw(100.)))),
|
||||
specified!(NoCalcLength::ViewportPercentage(ViewportPercentageLength::Vw(100.))),
|
||||
v if v.eq_ignore_ascii_case("device-height") =>
|
||||
specified!(Length::NoCalc(
|
||||
NoCalcLength::ViewportPercentage(ViewportPercentageLength::Vh(100.)))),
|
||||
specified!(NoCalcLength::ViewportPercentage(ViewportPercentageLength::Vh(100.))),
|
||||
_ => {
|
||||
match value.parse::<f32>() {
|
||||
Ok(n) if n >= 0. => specified!(Length::from_px(n.max(1.).min(10000.))),
|
||||
Ok(n) if n >= 0. => specified!(NoCalcLength::from_px(n.max(1.).min(10000.))),
|
||||
Ok(_) => return None,
|
||||
Err(_) => specified!(Length::from_px(1.))
|
||||
Err(_) => specified!(NoCalcLength::from_px(1.))
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue