From 15121d63adebc18ba6d5432eabe04f56928d9fde Mon Sep 17 00:00:00 2001 From: Lucas CHOLLET Date: Sun, 27 Oct 2024 12:08:20 -0400 Subject: [PATCH] LibWeb/CSS: Make all children of CSSLabLike share the `create()` method Small code deduplication. NFC. --- .../Libraries/LibWeb/CSS/Parser/Parser.cpp | 4 +-- .../LibWeb/CSS/StyleValues/CSSLabLike.h | 34 +++++++------------ 2 files changed, 14 insertions(+), 24 deletions(-) diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index 0fca06f5ee9..0fbb7c3e797 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -3310,7 +3310,7 @@ RefPtr Parser::parse_lab_color_value(TokenStream& auto& color_values = *maybe_color_values; - return CSSLab::create(color_values[0].release_nonnull(), + return CSSLabLike::create(color_values[0].release_nonnull(), color_values[1].release_nonnull(), color_values[2].release_nonnull(), color_values[3].release_nonnull()); @@ -3330,7 +3330,7 @@ RefPtr Parser::parse_oklab_color_value(TokenStream(color_values[0].release_nonnull(), color_values[1].release_nonnull(), color_values[2].release_nonnull(), color_values[3].release_nonnull()); diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/CSSLabLike.h b/Userland/Libraries/LibWeb/CSS/StyleValues/CSSLabLike.h index e82070e483f..c390cf96511 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValues/CSSLabLike.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/CSSLabLike.h @@ -13,6 +13,16 @@ namespace Web::CSS { class CSSLabLike : public CSSColorValue { public: + template + static ValueComparingNonnullRefPtr create(ValueComparingNonnullRefPtr l, ValueComparingNonnullRefPtr a, ValueComparingNonnullRefPtr b, ValueComparingRefPtr alpha = {}) + { + // alpha defaults to 1 + if (!alpha) + alpha = NumberStyleValue::create(1); + + return adopt_ref(*new (nothrow) T({}, move(l), move(a), move(b), alpha.release_nonnull())); + } + virtual ~CSSLabLike() override = default; CSSStyleValue const& l() const { return *m_properties.l; } @@ -41,20 +51,10 @@ protected: // https://drafts.css-houdini.org/css-typed-om-1/#cssoklab class CSSOKLab final : public CSSLabLike { public: - static ValueComparingNonnullRefPtr create(ValueComparingNonnullRefPtr l, ValueComparingNonnullRefPtr a, ValueComparingNonnullRefPtr b, ValueComparingRefPtr alpha = {}) - { - // alpha defaults to 1 - if (!alpha) - return adopt_ref(*new (nothrow) CSSOKLab(move(l), move(a), move(b), NumberStyleValue::create(1))); - - return adopt_ref(*new (nothrow) CSSOKLab(move(l), move(a), move(b), alpha.release_nonnull())); - } - virtual Color to_color(Optional) const override; virtual String to_string() const override; -private: - CSSOKLab(ValueComparingNonnullRefPtr l, ValueComparingNonnullRefPtr a, ValueComparingNonnullRefPtr b, ValueComparingNonnullRefPtr alpha) + CSSOKLab(Badge, ValueComparingNonnullRefPtr l, ValueComparingNonnullRefPtr a, ValueComparingNonnullRefPtr b, ValueComparingNonnullRefPtr alpha) : CSSLabLike(ColorType::OKLab, move(l), move(a), move(b), move(alpha)) { } @@ -63,20 +63,10 @@ private: // https://drafts.css-houdini.org/css-typed-om-1/#csslab class CSSLab final : public CSSLabLike { public: - static ValueComparingNonnullRefPtr create(ValueComparingNonnullRefPtr l, ValueComparingNonnullRefPtr a, ValueComparingNonnullRefPtr b, ValueComparingRefPtr alpha = {}) - { - // alpha defaults to 1 - if (!alpha) - return adopt_ref(*new (nothrow) CSSLab(move(l), move(a), move(b), NumberStyleValue::create(1))); - - return adopt_ref(*new (nothrow) CSSLab(move(l), move(a), move(b), alpha.release_nonnull())); - } - virtual Color to_color(Optional) const override; virtual String to_string() const override; -private: - CSSLab(ValueComparingNonnullRefPtr l, ValueComparingNonnullRefPtr a, ValueComparingNonnullRefPtr b, ValueComparingNonnullRefPtr alpha) + CSSLab(Badge, ValueComparingNonnullRefPtr l, ValueComparingNonnullRefPtr a, ValueComparingNonnullRefPtr b, ValueComparingNonnullRefPtr alpha) : CSSLabLike(ColorType::Lab, move(l), move(a), move(b), move(alpha)) { }