|
@@ -11,33 +11,29 @@
|
|
|
|
|
|
namespace Web::CSS {
|
|
namespace Web::CSS {
|
|
|
|
|
|
-// https://drafts.css-houdini.org/css-typed-om-1/#cssoklch
|
|
|
|
-class CSSOKLCH final : public CSSColorValue {
|
|
|
|
|
|
+class CSSLCHLike : public CSSColorValue {
|
|
public:
|
|
public:
|
|
|
|
+ template<DerivedFrom<CSSLCHLike> T>
|
|
static ValueComparingNonnullRefPtr<CSSOKLCH> create(ValueComparingNonnullRefPtr<CSSStyleValue> l, ValueComparingNonnullRefPtr<CSSStyleValue> c, ValueComparingNonnullRefPtr<CSSStyleValue> h, ValueComparingRefPtr<CSSStyleValue> alpha = {})
|
|
static ValueComparingNonnullRefPtr<CSSOKLCH> create(ValueComparingNonnullRefPtr<CSSStyleValue> l, ValueComparingNonnullRefPtr<CSSStyleValue> c, ValueComparingNonnullRefPtr<CSSStyleValue> h, ValueComparingRefPtr<CSSStyleValue> alpha = {})
|
|
{
|
|
{
|
|
// alpha defaults to 1
|
|
// alpha defaults to 1
|
|
if (!alpha)
|
|
if (!alpha)
|
|
- return adopt_ref(*new (nothrow) CSSOKLCH(move(l), move(c), move(h), NumberStyleValue::create(1)));
|
|
|
|
|
|
+ alpha = NumberStyleValue::create(1);
|
|
|
|
|
|
- return adopt_ref(*new (nothrow) CSSOKLCH(move(l), move(c), move(h), alpha.release_nonnull()));
|
|
|
|
|
|
+ return adopt_ref(*new (nothrow) T({}, move(l), move(c), move(h), alpha.release_nonnull()));
|
|
}
|
|
}
|
|
- virtual ~CSSOKLCH() override = default;
|
|
|
|
|
|
+ virtual ~CSSLCHLike() override = default;
|
|
|
|
|
|
CSSStyleValue const& l() const { return *m_properties.l; }
|
|
CSSStyleValue const& l() const { return *m_properties.l; }
|
|
CSSStyleValue const& c() const { return *m_properties.c; }
|
|
CSSStyleValue const& c() const { return *m_properties.c; }
|
|
CSSStyleValue const& h() const { return *m_properties.h; }
|
|
CSSStyleValue const& h() const { return *m_properties.h; }
|
|
CSSStyleValue const& alpha() const { return *m_properties.alpha; }
|
|
CSSStyleValue const& alpha() const { return *m_properties.alpha; }
|
|
|
|
|
|
- virtual Color to_color(Optional<Layout::NodeWithStyle const&>) const override;
|
|
|
|
-
|
|
|
|
- String to_string() const override;
|
|
|
|
-
|
|
|
|
virtual bool equals(CSSStyleValue const& other) const override;
|
|
virtual bool equals(CSSStyleValue const& other) const override;
|
|
|
|
|
|
-private:
|
|
|
|
- CSSOKLCH(ValueComparingNonnullRefPtr<CSSStyleValue> l, ValueComparingNonnullRefPtr<CSSStyleValue> c, ValueComparingNonnullRefPtr<CSSStyleValue> h, ValueComparingNonnullRefPtr<CSSStyleValue> alpha)
|
|
|
|
- : CSSColorValue(ColorType::OKLCH)
|
|
|
|
|
|
+protected:
|
|
|
|
+ CSSLCHLike(ColorType color_type, ValueComparingNonnullRefPtr<CSSStyleValue> l, ValueComparingNonnullRefPtr<CSSStyleValue> c, ValueComparingNonnullRefPtr<CSSStyleValue> h, ValueComparingNonnullRefPtr<CSSStyleValue> alpha)
|
|
|
|
+ : CSSColorValue(color_type)
|
|
, m_properties { .l = move(l), .c = move(c), .h = move(h), .alpha = move(alpha) }
|
|
, m_properties { .l = move(l), .c = move(c), .h = move(h), .alpha = move(alpha) }
|
|
{
|
|
{
|
|
}
|
|
}
|
|
@@ -51,4 +47,18 @@ private:
|
|
} m_properties;
|
|
} m_properties;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+// https://drafts.css-houdini.org/css-typed-om-1/#cssoklch
|
|
|
|
+class CSSOKLCH final : public CSSLCHLike {
|
|
|
|
+public:
|
|
|
|
+ CSSOKLCH(Badge<CSSLCHLike>, ValueComparingNonnullRefPtr<CSSStyleValue> l, ValueComparingNonnullRefPtr<CSSStyleValue> c, ValueComparingNonnullRefPtr<CSSStyleValue> h, ValueComparingNonnullRefPtr<CSSStyleValue> alpha)
|
|
|
|
+ : CSSLCHLike(ColorType::OKLCH, move(l), move(c), move(h), move(alpha))
|
|
|
|
+ {
|
|
|
|
+ }
|
|
|
|
+ virtual ~CSSOKLCH() override = default;
|
|
|
|
+
|
|
|
|
+ virtual Color to_color(Optional<Layout::NodeWithStyle const&>) const override;
|
|
|
|
+
|
|
|
|
+ String to_string() const override;
|
|
|
|
+};
|
|
|
|
+
|
|
}
|
|
}
|