diff --git a/components/style/values/computed/basic_shape.rs b/components/style/values/computed/basic_shape.rs index 9a245aa77f1d..27a091a11156 100644 --- a/components/style/values/computed/basic_shape.rs +++ b/components/style/values/computed/basic_shape.rs @@ -10,8 +10,6 @@ use crate::values::computed::url::ComputedUrl; use crate::values::computed::{Image, LengthPercentage, NonNegativeLengthPercentage}; use crate::values::generics::basic_shape as generic; -use std::fmt::{self, Write}; -use style_traits::{CssWriter, ToCss}; /// A computed alias for FillRule. pub use crate::values::generics::basic_shape::FillRule; @@ -42,34 +40,3 @@ pub type Ellipse = /// The computed value of `ShapeRadius` pub type ShapeRadius = generic::GenericShapeRadius; - -impl ToCss for Circle { - fn to_css(&self, dest: &mut CssWriter) -> fmt::Result - where - W: Write, - { - dest.write_str("circle(")?; - self.radius.to_css(dest)?; - dest.write_str(" at ")?; - self.position.to_css(dest)?; - dest.write_str(")") - } -} - -impl ToCss for Ellipse { - fn to_css(&self, dest: &mut CssWriter) -> fmt::Result - where - W: Write, - { - dest.write_str("ellipse(")?; - if (self.semiaxis_x, self.semiaxis_y) != Default::default() { - self.semiaxis_x.to_css(dest)?; - dest.write_str(" ")?; - self.semiaxis_y.to_css(dest)?; - dest.write_str(" ")?; - } - dest.write_str("at ")?; - self.position.to_css(dest)?; - dest.write_str(")") - } -} diff --git a/components/style/values/generics/basic_shape.rs b/components/style/values/generics/basic_shape.rs index 8c63d0648173..d91fa58eb0de 100644 --- a/components/style/values/generics/basic_shape.rs +++ b/components/style/values/generics/basic_shape.rs @@ -378,6 +378,48 @@ where } } +impl ToCss for Circle +where + GenericPosition: ToCss, + NonNegativeLengthPercentage: ToCss + PartialEq, +{ + fn to_css(&self, dest: &mut CssWriter) -> fmt::Result + where + W: Write, + { + dest.write_str("circle(")?; + if self.radius != Default::default() { + self.radius.to_css(dest)?; + dest.write_str(" ")?; + } + dest.write_str("at ")?; + self.position.to_css(dest)?; + dest.write_str(")") + } +} + +impl ToCss for Ellipse +where + GenericPosition: ToCss, + NonNegativeLengthPercentage: ToCss + PartialEq, +{ + fn to_css(&self, dest: &mut CssWriter) -> fmt::Result + where + W: Write, + { + dest.write_str("ellipse(")?; + if self.semiaxis_x != Default::default() || self.semiaxis_y != Default::default() { + self.semiaxis_x.to_css(dest)?; + dest.write_str(" ")?; + self.semiaxis_y.to_css(dest)?; + dest.write_str(" ")?; + } + dest.write_str("at ")?; + self.position.to_css(dest)?; + dest.write_str(")") + } +} + impl Default for ShapeRadius { #[inline] fn default() -> Self { diff --git a/components/style/values/specified/basic_shape.rs b/components/style/values/specified/basic_shape.rs index 4f627ceb07f4..7ee33d0580ef 100644 --- a/components/style/values/specified/basic_shape.rs +++ b/components/style/values/specified/basic_shape.rs @@ -20,8 +20,7 @@ use crate::values::specified::SVGPathData; use crate::values::specified::{LengthPercentage, NonNegativeLengthPercentage}; use crate::Zero; use cssparser::Parser; -use std::fmt::{self, Write}; -use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss}; +use style_traits::{ParseError, StyleParseErrorKind}; /// A specified alias for FillRule. pub use crate::values::generics::basic_shape::FillRule; @@ -239,23 +238,6 @@ impl Circle { } } -impl ToCss for Circle { - fn to_css(&self, dest: &mut CssWriter) -> fmt::Result - where - W: Write, - { - dest.write_str("circle(")?; - if generic::ShapeRadius::ClosestSide != self.radius { - self.radius.to_css(dest)?; - dest.write_str(" ")?; - } - - dest.write_str("at ")?; - self.position.to_css(dest)?; - dest.write_str(")") - } -} - impl Parse for Ellipse { fn parse<'i, 't>( context: &ParserContext, @@ -293,25 +275,6 @@ impl Ellipse { } } -impl ToCss for Ellipse { - fn to_css(&self, dest: &mut CssWriter) -> fmt::Result - where - W: Write, - { - dest.write_str("ellipse(")?; - if self.semiaxis_x != ShapeRadius::default() || self.semiaxis_y != ShapeRadius::default() { - self.semiaxis_x.to_css(dest)?; - dest.write_str(" ")?; - self.semiaxis_y.to_css(dest)?; - dest.write_str(" ")?; - } - - dest.write_str("at ")?; - self.position.to_css(dest)?; - dest.write_str(")") - } -} - impl Parse for ShapeRadius { fn parse<'i, 't>( context: &ParserContext,