mirror of
https://github.com/servo/servo.git
synced 2025-10-16 16:29:18 +01:00
style: Use abstract color parser
In stead of having the css parser construct a color in it's own format and then converting it to what Gecko needs to perform operations, we now construct a Gecko friendly color type directly. Differential Revision: https://phabricator.services.mozilla.com/D170187
This commit is contained in:
parent
6e128b6512
commit
1c3aafd9d2
2 changed files with 81 additions and 63 deletions
|
@ -274,52 +274,6 @@ impl From<cssparser::PredefinedColorSpace> for ColorSpace {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<cssparser::AbsoluteColor> for AbsoluteColor {
|
||||
fn from(f: cssparser::AbsoluteColor) -> Self {
|
||||
match f {
|
||||
cssparser::AbsoluteColor::Rgba(rgba) => Self::from_rgba(rgba),
|
||||
|
||||
cssparser::AbsoluteColor::Lab(lab) => Self::new(
|
||||
ColorSpace::Lab,
|
||||
ColorComponents(lab.lightness, lab.a, lab.b),
|
||||
lab.alpha,
|
||||
),
|
||||
|
||||
cssparser::AbsoluteColor::Lch(lch) => Self::new(
|
||||
ColorSpace::Lch,
|
||||
ColorComponents(lch.lightness, lch.chroma, lch.hue),
|
||||
lch.alpha,
|
||||
),
|
||||
|
||||
cssparser::AbsoluteColor::Oklab(oklab) => Self::new(
|
||||
ColorSpace::Oklab,
|
||||
ColorComponents(oklab.lightness, oklab.a, oklab.b),
|
||||
oklab.alpha,
|
||||
),
|
||||
|
||||
cssparser::AbsoluteColor::Oklch(oklch) => Self::new(
|
||||
ColorSpace::Oklch,
|
||||
ColorComponents(oklch.lightness, oklch.chroma, oklch.hue),
|
||||
oklch.alpha,
|
||||
),
|
||||
|
||||
cssparser::AbsoluteColor::ColorFunction(c) => {
|
||||
let mut result = AbsoluteColor::new(
|
||||
c.color_space.into(),
|
||||
ColorComponents(c.c1, c.c2, c.c3),
|
||||
c.alpha,
|
||||
);
|
||||
|
||||
if matches!(c.color_space, cssparser::PredefinedColorSpace::Srgb) {
|
||||
result.flags |= SerializationFlags::AS_COLOR_FUNCTION;
|
||||
}
|
||||
|
||||
result
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl ToCss for AbsoluteColor {
|
||||
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
|
||||
where
|
||||
|
@ -394,7 +348,7 @@ impl ToCss for AbsoluteColor {
|
|||
c3: self.components.2,
|
||||
alpha: self.alpha,
|
||||
};
|
||||
let color = cssparser::AbsoluteColor::ColorFunction(color_function);
|
||||
let color = cssparser::Color::ColorFunction(color_function);
|
||||
cssparser::ToCss::to_css(&color, dest)
|
||||
},
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue