LibWeb: Introduce color-function-specific style values

Instead of CSSColorValue holding a Gfx::Color, make it an abstract class
with subclasses for each different color function, to match the Typed-OM
spec. This means moving the color calculations from the parsing code to
the `to_color()` method on the style value.

This lets us have calc() inside a color function, instead of having to
fully resolve the color at parse time. The canvas fillStyle tests have
been updated to reflect this.

The other test change is Screenshot/css-color-functions.html: previously
we produced slightly different colors for an alpha of 0.5 and one of
50%, and this incorrect behavior was baked into the test. So now it's
more correct. :^)
This commit is contained in:
Sam Atkins 2024-08-16 16:42:16 +01:00 committed by Sam Atkins
commit 3af6a69f1e
Notes: github-actions[bot] 2024-08-21 09:52:45 +00:00
24 changed files with 1108 additions and 496 deletions

View file

@ -106,11 +106,16 @@ class CSSColorValue;
class CSSConditionRule;
class CSSFontFaceRule;
class CSSGroupingRule;
class CSSHSL;
class CSSHWB;
class CSSImportRule;
class CSSKeyframeRule;
class CSSKeyframesRule;
class CSSKeywordValue;
class CSSMediaRule;
class CSSOKLab;
class CSSOKLCH;
class CSSRGB;
class CSSRule;
class CSSRuleList;
class CSSStyleDeclaration;