mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +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
|
@ -6,7 +6,7 @@
|
|||
|
||||
use crate::values::distance::{ComputeSquaredDistance, SquaredDistance};
|
||||
use crate::values::CSSFloat;
|
||||
use num_traits::Zero;
|
||||
use crate::Zero;
|
||||
use std::f64::consts::PI;
|
||||
use std::fmt::{self, Write};
|
||||
use std::{f32, f64};
|
||||
|
|
|
@ -14,6 +14,7 @@ use crate::values::generics::border::BorderSpacing as GenericBorderSpacing;
|
|||
use crate::values::generics::rect::Rect;
|
||||
use crate::values::generics::size::Size2D;
|
||||
use crate::values::generics::NonNegative;
|
||||
use crate::Zero;
|
||||
use app_units::Au;
|
||||
|
||||
pub use crate::values::specified::border::BorderImageRepeat;
|
||||
|
@ -75,39 +76,3 @@ impl BorderSpacing {
|
|||
Au::from(*self.0.height())
|
||||
}
|
||||
}
|
||||
|
||||
impl BorderCornerRadius {
|
||||
/// Returns `0 0`.
|
||||
pub fn zero() -> Self {
|
||||
GenericBorderCornerRadius(Size2D::new(
|
||||
NonNegativeLengthPercentage::zero(),
|
||||
NonNegativeLengthPercentage::zero(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
impl BorderRadius {
|
||||
/// Returns a `0` border radius.
|
||||
pub fn zero() -> Self {
|
||||
Self {
|
||||
top_left: BorderCornerRadius::zero(),
|
||||
top_right: BorderCornerRadius::zero(),
|
||||
bottom_right: BorderCornerRadius::zero(),
|
||||
bottom_left: BorderCornerRadius::zero(),
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns whether all the values are `0px`.
|
||||
pub fn all_zero(&self) -> bool {
|
||||
fn all(corner: &BorderCornerRadius) -> bool {
|
||||
fn is_zero(l: &NonNegativeLengthPercentage) -> bool {
|
||||
*l == NonNegativeLengthPercentage::zero()
|
||||
}
|
||||
is_zero(corner.0.width()) && is_zero(corner.0.height())
|
||||
}
|
||||
all(&self.top_left) &&
|
||||
all(&self.top_right) &&
|
||||
all(&self.bottom_left) &&
|
||||
all(&self.bottom_right)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,11 +12,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::length::ViewportPercentageLength;
|
||||
use crate::values::specified::length::{AbsoluteLength, FontBaseSize, FontRelativeLength};
|
||||
use crate::values::{specified, Auto, CSSFloat, Either, Normal};
|
||||
use crate::Zero;
|
||||
use app_units::Au;
|
||||
use ordered_float::NotNan;
|
||||
use std::fmt::{self, Write};
|
||||
|
@ -342,12 +342,6 @@ impl ToComputedValue for specified::CalcLengthPercentage {
|
|||
}
|
||||
|
||||
impl LengthPercentage {
|
||||
#[inline]
|
||||
#[allow(missing_docs)]
|
||||
pub fn zero() -> LengthPercentage {
|
||||
LengthPercentage::new(Length::new(0.), None)
|
||||
}
|
||||
|
||||
/// 1px length value for SVG defaults
|
||||
#[inline]
|
||||
pub fn one() -> LengthPercentage {
|
||||
|
@ -442,9 +436,13 @@ impl ToComputedValue for specified::LengthPercentage {
|
|||
}
|
||||
}
|
||||
|
||||
impl IsZeroLength for LengthPercentage {
|
||||
impl Zero for LengthPercentage {
|
||||
fn zero() -> Self {
|
||||
LengthPercentage::new(Length::zero(), None)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn is_zero_length(&self) -> bool {
|
||||
fn is_zero(&self) -> bool {
|
||||
self.is_definitely_zero()
|
||||
}
|
||||
}
|
||||
|
@ -453,12 +451,6 @@ impl IsZeroLength for LengthPercentage {
|
|||
/// length-percentage or auto.
|
||||
macro_rules! computed_length_percentage_or_auto {
|
||||
($inner:ty) => {
|
||||
/// Returns the `0` value.
|
||||
#[inline]
|
||||
pub fn zero() -> Self {
|
||||
generics::LengthPercentageOrAuto::LengthPercentage(<$inner>::zero())
|
||||
}
|
||||
|
||||
/// Returns the used value.
|
||||
#[inline]
|
||||
pub fn to_used_value(&self, percentage_basis: Au) -> Option<Au> {
|
||||
|
@ -547,12 +539,6 @@ impl From<Au> for LengthPercentage {
|
|||
}
|
||||
|
||||
impl NonNegativeLengthPercentage {
|
||||
/// Get zero value.
|
||||
#[inline]
|
||||
pub fn zero() -> Self {
|
||||
NonNegative(LengthPercentage::zero())
|
||||
}
|
||||
|
||||
/// Returns true if the computed value is absolute 0 or 0%.
|
||||
#[inline]
|
||||
pub fn is_definitely_zero(&self) -> bool {
|
||||
|
@ -656,12 +642,16 @@ impl CSSPixelLength {
|
|||
pub fn clamp_to_non_negative(self) -> Self {
|
||||
CSSPixelLength::new(self.0.max(0.))
|
||||
}
|
||||
}
|
||||
|
||||
/// Zero value
|
||||
#[inline]
|
||||
pub fn zero() -> Self {
|
||||
impl Zero for CSSPixelLength {
|
||||
fn zero() -> Self {
|
||||
CSSPixelLength::new(0.)
|
||||
}
|
||||
|
||||
fn is_zero(&self) -> bool {
|
||||
self.px() == 0.
|
||||
}
|
||||
}
|
||||
|
||||
impl ToCss for CSSPixelLength {
|
||||
|
@ -743,12 +733,6 @@ impl NonNegativeLength {
|
|||
NonNegative(Length::new(px.max(0.)))
|
||||
}
|
||||
|
||||
/// Return a zero value.
|
||||
#[inline]
|
||||
pub fn zero() -> Self {
|
||||
Self::new(0.)
|
||||
}
|
||||
|
||||
/// Return the pixel value of |NonNegativeLength|.
|
||||
#[inline]
|
||||
pub fn px(&self) -> CSSFloat {
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
use crate::values::animated::ToAnimatedValue;
|
||||
use crate::values::generics::NonNegative;
|
||||
use crate::values::{serialize_percentage, CSSFloat};
|
||||
use crate::Zero;
|
||||
use std::fmt;
|
||||
use style_traits::{CssWriter, ToCss};
|
||||
|
||||
|
@ -31,12 +32,6 @@ use style_traits::{CssWriter, ToCss};
|
|||
pub struct Percentage(pub CSSFloat);
|
||||
|
||||
impl Percentage {
|
||||
/// 0%
|
||||
#[inline]
|
||||
pub fn zero() -> Self {
|
||||
Percentage(0.)
|
||||
}
|
||||
|
||||
/// 100%
|
||||
#[inline]
|
||||
pub fn hundred() -> Self {
|
||||
|
@ -56,6 +51,16 @@ impl Percentage {
|
|||
}
|
||||
}
|
||||
|
||||
impl Zero for Percentage {
|
||||
fn zero() -> Self {
|
||||
Percentage(0.)
|
||||
}
|
||||
|
||||
fn is_zero(&self) -> bool {
|
||||
self.0 == 0.
|
||||
}
|
||||
}
|
||||
|
||||
impl ToCss for Percentage {
|
||||
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
|
||||
where
|
||||
|
@ -69,12 +74,6 @@ impl ToCss for Percentage {
|
|||
pub type NonNegativePercentage = NonNegative<Percentage>;
|
||||
|
||||
impl NonNegativePercentage {
|
||||
/// 0%
|
||||
#[inline]
|
||||
pub fn zero() -> Self {
|
||||
NonNegative(Percentage::zero())
|
||||
}
|
||||
|
||||
/// 100%
|
||||
#[inline]
|
||||
pub fn hundred() -> Self {
|
||||
|
|
|
@ -11,6 +11,7 @@ use crate::values::computed::{Integer, LengthPercentage, Percentage};
|
|||
use crate::values::generics::position::Position as GenericPosition;
|
||||
use crate::values::generics::position::ZIndex as GenericZIndex;
|
||||
pub use crate::values::specified::position::{GridAutoFlow, GridTemplateAreas};
|
||||
use crate::Zero;
|
||||
use std::fmt::{self, Write};
|
||||
use style_traits::{CssWriter, ToCss};
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ use crate::values::computed::{LengthPercentage, NonNegativeLengthPercentage};
|
|||
use crate::values::computed::{NonNegativeNumber, Number, Opacity};
|
||||
use crate::values::generics::svg as generic;
|
||||
use crate::values::RGBA;
|
||||
use crate::Zero;
|
||||
|
||||
pub use crate::values::specified::SVGPaintOrder;
|
||||
|
||||
|
|
|
@ -9,8 +9,8 @@ use crate::values::animated::transform::{Perspective, Scale3D, Translate3D};
|
|||
use crate::values::animated::ToAnimatedZero;
|
||||
use crate::values::computed::{Angle, Integer, Length, LengthPercentage, Number, Percentage};
|
||||
use crate::values::generics::transform as generic;
|
||||
use crate::Zero;
|
||||
use euclid::{Transform3D, Vector3D};
|
||||
use num_traits::Zero;
|
||||
|
||||
pub use crate::values::generics::transform::TransformStyle;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue