LibWeb: Add CustomStyleValue

This extends StyleValue and can hold the identifier of the custom
property.
This commit is contained in:
Tobias Christiansen 2021-05-24 22:46:19 +02:00 committed by Linus Groh
parent 8396099e0e
commit f0c6160362
Notes: sideshowbarker 2024-07-18 17:16:37 +09:00

View file

@ -195,6 +195,7 @@ public:
Identifier,
Image,
Position,
CustomProperty,
};
Type type() const { return m_type; }
@ -207,6 +208,7 @@ public:
bool is_string() const { return type() == Type::String; }
bool is_length() const { return type() == Type::Length; }
bool is_position() const { return type() == Type::Position; }
bool is_custom_property() const { return type() == Type::CustomProperty; }
virtual String to_string() const = 0;
virtual Length to_length() const { return Length::make_auto(); }
@ -233,6 +235,26 @@ private:
Type m_type { Type::Invalid };
};
// FIXME: Allow for fallback
class CustomStyleValue : public StyleValue {
public:
static NonnullRefPtr<CustomStyleValue> create(const String& custom_property_name)
{
return adopt_ref(*new CustomStyleValue(custom_property_name));
}
String custom_property_name() const { return m_custom_property_name; }
String to_string() const override { return m_custom_property_name; }
private:
explicit CustomStyleValue(const String& custom_property_name)
: StyleValue(Type::CustomProperty)
, m_custom_property_name(custom_property_name)
{
}
String m_custom_property_name {};
};
class StringStyleValue : public StyleValue {
public:
static NonnullRefPtr<StringStyleValue> create(const String& string)