From 036056d2a9478b46737792c0997b6fdcdf102c40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Tue, 23 May 2023 20:51:22 +0200 Subject: [PATCH] style: Move image-rendering out of mako It's easier to touch in the future that way, even though the derive list is massive. Differential Revision: https://phabricator.services.mozilla.com/D124377 --- components/style/properties/data.py | 1 + .../longhands/inherited_box.mako.rs | 12 +++---- components/style/values/computed/image.rs | 2 ++ components/style/values/computed/mod.rs | 2 +- components/style/values/specified/image.rs | 35 +++++++++++++++++++ components/style/values/specified/mod.rs | 2 +- 6 files changed, 44 insertions(+), 10 deletions(-) diff --git a/components/style/properties/data.py b/components/style/properties/data.py index b2ab520ad3d..49157860fbb 100644 --- a/components/style/properties/data.py +++ b/components/style/properties/data.py @@ -476,6 +476,7 @@ class Longhand(Property): "FontWeight", "GreaterThanOrEqualToOneNumber", "GridAutoFlow", + "ImageRendering", "InitialLetter", "Integer", "JustifyContent", diff --git a/components/style/properties/longhands/inherited_box.mako.rs b/components/style/properties/longhands/inherited_box.mako.rs index cea3fde021a..294f36bd96f 100644 --- a/components/style/properties/longhands/inherited_box.mako.rs +++ b/components/style/properties/longhands/inherited_box.mako.rs @@ -69,17 +69,13 @@ ${helpers.single_keyword( // According to to CSS-IMAGES-3, `optimizespeed` and `optimizequality` are synonyms for `auto` // And, firefox doesn't support `pixelated` yet (https://bugzilla.mozilla.org/show_bug.cgi?id=856337) -${helpers.single_keyword( +${helpers.predefined_type( "image-rendering", - "auto crisp-edges", + "ImageRendering", + "computed::ImageRendering::Auto", engines="gecko servo-2013 servo-2020", - extra_gecko_values="optimizespeed optimizequality", - extra_servo_2013_values="pixelated", - extra_servo_2020_values="pixelated", - gecko_aliases="-moz-crisp-edges=crisp-edges", - gecko_enum_prefix="StyleImageRendering", - animation_value_type="discrete", spec="https://drafts.csswg.org/css-images/#propdef-image-rendering", + animation_value_type="discrete", )} ${helpers.single_keyword( diff --git a/components/style/values/computed/image.rs b/components/style/values/computed/image.rs index 6290ac68a5d..a0cb8f3fe45 100644 --- a/components/style/values/computed/image.rs +++ b/components/style/values/computed/image.rs @@ -24,6 +24,8 @@ use std::f32::consts::PI; use std::fmt::{self, Write}; use style_traits::{CssWriter, ToCss}; +pub use specified::ImageRendering; + /// Computed values for an image according to CSS-IMAGES. /// pub type Image = diff --git a/components/style/values/computed/mod.rs b/components/style/values/computed/mod.rs index c87142ac1b5..49fc7b8bd33 100644 --- a/components/style/values/computed/mod.rs +++ b/components/style/values/computed/mod.rs @@ -62,7 +62,7 @@ pub use self::font::{FontSize, FontSizeAdjust, FontStretch, FontSynthesis}; pub use self::font::{FontVariantAlternates, FontWeight}; pub use self::font::{FontVariantEastAsian, FontVariationSettings}; pub use self::font::{MathDepth, MozScriptMinSize, MozScriptSizeMultiplier, XLang, XTextZoom}; -pub use self::image::{Gradient, Image, LineDirection, MozImageRect}; +pub use self::image::{Gradient, Image, LineDirection, MozImageRect, ImageRendering}; pub use self::length::{CSSPixelLength, NonNegativeLength}; pub use self::length::{Length, LengthOrNumber, LengthPercentage, NonNegativeLengthOrNumber}; pub use self::length::{LengthOrAuto, LengthPercentageOrAuto, MaxSize, Size}; diff --git a/components/style/values/specified/image.rs b/components/style/values/specified/image.rs index f2167e52800..db30fc460f7 100644 --- a/components/style/values/specified/image.rs +++ b/components/style/values/specified/image.rs @@ -1226,3 +1226,38 @@ impl MozImageRect { }) } } + +/// https://drafts.csswg.org/css-images/#propdef-image-rendering +#[allow(missing_docs)] +#[derive( + Clone, + Copy, + Debug, + Eq, + Hash, + MallocSizeOf, + Parse, + PartialEq, + SpecifiedValueInfo, + ToCss, + ToComputedValue, + ToResolvedValue, + ToShmem, +)] +#[repr(u8)] +pub enum ImageRendering { + Auto, + #[parse(aliases = "-moz-crisp-edges")] + CrispEdges, + // From the spec: + // + // This property previously accepted the values optimizeSpeed and + // optimizeQuality. These are now deprecated; a user agent must accept + // them as valid values but must treat them as having the same behavior + // as crisp-edges and smooth respectively, and authors must not use + // them. + Optimizespeed, + Optimizequality, + #[cfg(feature = "servo")] + Pixelated, +} diff --git a/components/style/values/specified/mod.rs b/components/style/values/specified/mod.rs index 6cd952cd82f..d5ea7f8d9cc 100644 --- a/components/style/values/specified/mod.rs +++ b/components/style/values/specified/mod.rs @@ -55,7 +55,7 @@ pub use self::font::{FontVariantAlternates, FontWeight}; pub use self::font::{FontVariantEastAsian, FontVariationSettings}; pub use self::font::{MathDepth, MozScriptMinSize, MozScriptSizeMultiplier, XLang, XTextZoom}; pub use self::image::{EndingShape as GradientEndingShape, Gradient}; -pub use self::image::{Image, MozImageRect}; +pub use self::image::{Image, MozImageRect, ImageRendering}; pub use self::length::{AbsoluteLength, CalcLengthPercentage, CharacterWidth}; pub use self::length::{FontRelativeLength, Length, LengthOrNumber, NonNegativeLengthOrNumber}; pub use self::length::{LengthOrAuto, LengthPercentage, LengthPercentageOrAuto};