LibWeb/CSS: Add support for the lch color function

This makes us pass all `css/css-color/lch-00*.html` tests.
This commit is contained in:
Lucas CHOLLET 2024-10-27 20:19:10 -04:00 committed by Andreas Kling
commit f253246a6c
Notes: github-actions[bot] 2024-10-28 22:38:03 +00:00
5 changed files with 56 additions and 1 deletions

View file

@ -14,7 +14,7 @@ namespace Web::CSS {
class CSSLCHLike : public CSSColorValue {
public:
template<DerivedFrom<CSSLCHLike> T>
static ValueComparingNonnullRefPtr<CSSOKLCH> create(ValueComparingNonnullRefPtr<CSSStyleValue> l, ValueComparingNonnullRefPtr<CSSStyleValue> c, ValueComparingNonnullRefPtr<CSSStyleValue> h, ValueComparingRefPtr<CSSStyleValue> alpha = {})
static ValueComparingNonnullRefPtr<T> create(ValueComparingNonnullRefPtr<CSSStyleValue> l, ValueComparingNonnullRefPtr<CSSStyleValue> c, ValueComparingNonnullRefPtr<CSSStyleValue> h, ValueComparingRefPtr<CSSStyleValue> alpha = {})
{
// alpha defaults to 1
if (!alpha)
@ -47,6 +47,20 @@ protected:
} m_properties;
};
// https://drafts.css-houdini.org/css-typed-om-1/#csslch
class CSSLCH final : public CSSLCHLike {
public:
CSSLCH(Badge<CSSLCHLike>, ValueComparingNonnullRefPtr<CSSStyleValue> l, ValueComparingNonnullRefPtr<CSSStyleValue> c, ValueComparingNonnullRefPtr<CSSStyleValue> h, ValueComparingNonnullRefPtr<CSSStyleValue> alpha)
: CSSLCHLike(ColorType::LCH, move(l), move(c), move(h), move(alpha))
{
}
virtual ~CSSLCH() override = default;
virtual Color to_color(Optional<Layout::NodeWithStyle const&>) const override;
virtual String to_string() const override;
};
// https://drafts.css-houdini.org/css-typed-om-1/#cssoklch
class CSSOKLCH final : public CSSLCHLike {
public: