diff options
author | Andreas Kling <awesomekling@gmail.com> | 2019-07-04 16:16:50 +0200 |
---|---|---|
committer | Andreas Kling <awesomekling@gmail.com> | 2019-07-04 16:16:50 +0200 |
commit | 04b9dc2d30cfc9b383029f6a4b02e2725108b0ae (patch) | |
tree | e117a998173b767f9fd009d49c4f8573d8b85432 /Libraries/LibHTML/CSS/StyleValue.h | |
parent | 63814ffebf16291419745cd8ba29a4d2fd888563 (diff) | |
download | serenity-04b9dc2d30cfc9b383029f6a4b02e2725108b0ae.zip |
Libraries: Create top level directory for libraries.
Things were getting a little crowded in the project root, so this patch
moves the Lib*/ directories into Libraries/.
Diffstat (limited to 'Libraries/LibHTML/CSS/StyleValue.h')
-rw-r--r-- | Libraries/LibHTML/CSS/StyleValue.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/Libraries/LibHTML/CSS/StyleValue.h b/Libraries/LibHTML/CSS/StyleValue.h new file mode 100644 index 0000000000..574fd8215d --- /dev/null +++ b/Libraries/LibHTML/CSS/StyleValue.h @@ -0,0 +1,70 @@ +#pragma once + +#include <AK/AKString.h> +#include <AK/RefCounted.h> +#include <AK/RefPtr.h> +#include <AK/StringView.h> +#include <LibHTML/CSS/Length.h> + +class StyleValue : public RefCounted<StyleValue> { +public: + virtual ~StyleValue(); + + enum class Type { + Invalid, + Inherit, + Initial, + String, + Length, + }; + + Type type() const { return m_type; } + + virtual String to_string() const = 0; + +protected: + explicit StyleValue(Type); + +private: + Type m_type { Type::Invalid }; +}; + +class StringStyleValue : public StyleValue { +public: + static NonnullRefPtr<StringStyleValue> create(const String& string) + { + return adopt(*new StringStyleValue(string)); + } + virtual ~StringStyleValue() override {} + + String to_string() const override { return m_string; } + +private: + explicit StringStyleValue(const String& string) + : StyleValue(Type::String) + , m_string(string) + { + } + + String m_string; +}; + +class LengthStyleValue : public StyleValue { +public: + static NonnullRefPtr<LengthStyleValue> create(const Length& length) + { + return adopt(*new LengthStyleValue(length)); + } + virtual ~LengthStyleValue() override {} + + String to_string() const override { return m_length.to_string(); } + +private: + explicit LengthStyleValue(const Length& length) + : StyleValue(Type::Length) + , m_length(length) + { + } + + Length m_length; +}; |