mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
style: Add a Zero trait that doesn't require Add, and use it in place of num_traits and IsZeroLength.
Use it to be consistent in InsetRect serialization and storage between Servo and Gecko. Differential Revision: https://phabricator.services.mozilla.com/D21493
This commit is contained in:
parent
4496411edc
commit
7d01114cbf
29 changed files with 179 additions and 186 deletions
|
@ -14,11 +14,11 @@ use crate::values::generics::length as generics;
|
|||
use crate::values::generics::length::{
|
||||
GenericLengthOrNumber, MaxSize as GenericMaxSize, Size as GenericSize,
|
||||
};
|
||||
use crate::values::generics::transform::IsZeroLength;
|
||||
use crate::values::generics::NonNegative;
|
||||
use crate::values::specified::calc::CalcNode;
|
||||
use crate::values::specified::NonNegativeNumber;
|
||||
use crate::values::{Auto, CSSFloat, Either, Normal};
|
||||
use crate::Zero;
|
||||
use app_units::Au;
|
||||
use cssparser::{Parser, Token};
|
||||
use euclid::Size2D;
|
||||
|
@ -477,21 +477,6 @@ impl NoCalcLength {
|
|||
})
|
||||
}
|
||||
|
||||
#[inline]
|
||||
/// Returns a `zero` length.
|
||||
pub fn zero() -> NoCalcLength {
|
||||
NoCalcLength::Absolute(AbsoluteLength::Px(0.))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
/// Checks whether the length value is zero.
|
||||
pub fn is_zero(&self) -> bool {
|
||||
match *self {
|
||||
NoCalcLength::Absolute(length) => length.is_zero(),
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
/// Get a px value without context.
|
||||
#[inline]
|
||||
pub fn to_computed_pixel_length_without_context(&self) -> Result<CSSFloat, ()> {
|
||||
|
@ -510,9 +495,12 @@ impl NoCalcLength {
|
|||
|
||||
impl SpecifiedValueInfo for NoCalcLength {}
|
||||
|
||||
impl IsZeroLength for NoCalcLength {
|
||||
#[inline]
|
||||
fn is_zero_length(&self) -> bool {
|
||||
impl Zero for NoCalcLength {
|
||||
fn zero() -> Self {
|
||||
NoCalcLength::Absolute(AbsoluteLength::Px(0.))
|
||||
}
|
||||
|
||||
fn is_zero(&self) -> bool {
|
||||
match *self {
|
||||
NoCalcLength::Absolute(v) => v.is_zero(),
|
||||
NoCalcLength::FontRelative(v) => v.is_zero(),
|
||||
|
@ -584,12 +572,6 @@ impl Mul<CSSFloat> for ViewportPercentageLength {
|
|||
}
|
||||
|
||||
impl Length {
|
||||
#[inline]
|
||||
/// Returns a `zero` length.
|
||||
pub fn zero() -> Length {
|
||||
Length::NoCalc(NoCalcLength::zero())
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn parse_internal<'i, 't>(
|
||||
context: &ParserContext,
|
||||
|
@ -672,6 +654,21 @@ impl Parse for Length {
|
|||
}
|
||||
}
|
||||
|
||||
impl Zero for Length {
|
||||
fn zero() -> Self {
|
||||
Length::NoCalc(NoCalcLength::zero())
|
||||
}
|
||||
|
||||
fn is_zero(&self) -> bool {
|
||||
// FIXME(emilio): Seems a bit weird to treat calc() unconditionally as
|
||||
// non-zero here?
|
||||
match *self {
|
||||
Length::NoCalc(ref l) => l.is_zero(),
|
||||
Length::Calc(..) => false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Length {
|
||||
/// Parses a length, with quirks.
|
||||
pub fn parse_quirky<'i, 't>(
|
||||
|
@ -711,12 +708,6 @@ impl From<Length> for NonNegativeLength {
|
|||
}
|
||||
|
||||
impl NonNegativeLength {
|
||||
/// Returns a `zero` length.
|
||||
#[inline]
|
||||
pub fn zero() -> Self {
|
||||
Length::zero().into()
|
||||
}
|
||||
|
||||
/// Get an absolute length from a px value.
|
||||
#[inline]
|
||||
pub fn from_px(px_value: CSSFloat) -> Self {
|
||||
|
@ -801,12 +792,6 @@ impl Parse for LengthPercentage {
|
|||
}
|
||||
|
||||
impl LengthPercentage {
|
||||
#[inline]
|
||||
/// Returns a `zero` length.
|
||||
pub fn zero() -> LengthPercentage {
|
||||
LengthPercentage::Length(NoCalcLength::zero())
|
||||
}
|
||||
|
||||
#[inline]
|
||||
/// Returns a `0%` value.
|
||||
pub fn zero_percent() -> LengthPercentage {
|
||||
|
@ -898,11 +883,14 @@ impl LengthPercentage {
|
|||
}
|
||||
}
|
||||
|
||||
impl IsZeroLength for LengthPercentage {
|
||||
#[inline]
|
||||
fn is_zero_length(&self) -> bool {
|
||||
impl Zero for LengthPercentage {
|
||||
fn zero() -> Self {
|
||||
LengthPercentage::Length(NoCalcLength::zero())
|
||||
}
|
||||
|
||||
fn is_zero(&self) -> bool {
|
||||
match *self {
|
||||
LengthPercentage::Length(l) => l.is_zero_length(),
|
||||
LengthPercentage::Length(l) => l.is_zero(),
|
||||
LengthPercentage::Percentage(p) => p.0 == 0.0,
|
||||
LengthPercentage::Calc(_) => false,
|
||||
}
|
||||
|
@ -913,11 +901,6 @@ impl IsZeroLength for LengthPercentage {
|
|||
pub type LengthPercentageOrAuto = generics::LengthPercentageOrAuto<LengthPercentage>;
|
||||
|
||||
impl LengthPercentageOrAuto {
|
||||
/// Returns a value representing a `0` length.
|
||||
pub fn zero() -> Self {
|
||||
generics::LengthPercentageOrAuto::LengthPercentage(LengthPercentage::zero())
|
||||
}
|
||||
|
||||
/// Returns a value representing `0%`.
|
||||
#[inline]
|
||||
pub fn zero_percent() -> Self {
|
||||
|
@ -943,11 +926,6 @@ pub type NonNegativeLengthPercentageOrAuto =
|
|||
generics::LengthPercentageOrAuto<NonNegativeLengthPercentage>;
|
||||
|
||||
impl NonNegativeLengthPercentageOrAuto {
|
||||
/// Returns a value representing a `0` length.
|
||||
pub fn zero() -> Self {
|
||||
generics::LengthPercentageOrAuto::LengthPercentage(NonNegativeLengthPercentage::zero())
|
||||
}
|
||||
|
||||
/// Returns a value representing `0%`.
|
||||
#[inline]
|
||||
pub fn zero_percent() -> Self {
|
||||
|
@ -997,12 +975,6 @@ impl Parse for NonNegativeLengthPercentage {
|
|||
}
|
||||
|
||||
impl NonNegativeLengthPercentage {
|
||||
#[inline]
|
||||
/// Returns a `zero` length.
|
||||
pub fn zero() -> Self {
|
||||
NonNegative(LengthPercentage::zero())
|
||||
}
|
||||
|
||||
#[inline]
|
||||
/// Returns a `0%` value.
|
||||
pub fn zero_percent() -> Self {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue