浏览代码

LibWeb: Add CustomStyleValue

This extends StyleValue and can hold the identifier of the custom
property.
Tobias Christiansen 4 年之前
父节点
当前提交
f0c6160362
共有 1 个文件被更改,包括 22 次插入0 次删除
  1. 22 0
      Userland/Libraries/LibWeb/CSS/StyleValue.h

+ 22 - 0
Userland/Libraries/LibWeb/CSS/StyleValue.h

@@ -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)