diff options
author | Karol Kosek <krkk@krkk.ct8.pl> | 2021-09-05 21:38:36 +0200 |
---|---|---|
committer | Ali Mohammad Pur <Ali.mpfard@gmail.com> | 2021-09-06 14:05:10 +0430 |
commit | 759d6df87dbae623ef246383ec1d14def5c13f97 (patch) | |
tree | 35078a76c06886756f35b489aca49c912d982ce2 /Userland/Libraries | |
parent | c1ede97543a6374c07af8dbafb3191b9457ef3b1 (diff) | |
download | serenity-759d6df87dbae623ef246383ec1d14def5c13f97.zip |
LibGUI: Add Gfx::ColorRole to Variant
For Theme Editor. :^)
Diffstat (limited to 'Userland/Libraries')
-rw-r--r-- | Userland/Libraries/LibGUI/Variant.cpp | 17 | ||||
-rw-r--r-- | Userland/Libraries/LibGUI/Variant.h | 12 |
2 files changed, 29 insertions, 0 deletions
diff --git a/Userland/Libraries/LibGUI/Variant.cpp b/Userland/Libraries/LibGUI/Variant.cpp index d70e8bf114..e648339668 100644 --- a/Userland/Libraries/LibGUI/Variant.cpp +++ b/Userland/Libraries/LibGUI/Variant.cpp @@ -46,6 +46,8 @@ const char* to_string(Variant::Type type) return "Font"; case Variant::Type::TextAlignment: return "TextAlignment"; + case Variant::Type::ColorRole: + return "ColorRole"; } VERIFY_NOT_REACHED(); } @@ -85,6 +87,12 @@ Variant::Variant(Gfx::TextAlignment value) m_value.as_text_alignment = value; } +Variant::Variant(Gfx::ColorRole value) + : m_type(Type::ColorRole) +{ + m_value.as_color_role = value; +} + Variant::Variant(i32 value) : m_type(Type::Int32) { @@ -320,6 +328,9 @@ void Variant::copy_from(const Variant& other) case Type::TextAlignment: m_value.as_text_alignment = other.m_value.as_text_alignment; break; + case Type::ColorRole: + m_value.as_color_role = other.m_value.as_color_role; + break; case Type::Invalid: break; } @@ -360,6 +371,8 @@ bool Variant::operator==(const Variant& other) const return &as_font() == &other.as_font(); case Type::TextAlignment: return m_value.as_text_alignment == other.m_value.as_text_alignment; + case Type::ColorRole: + return m_value.as_color_role == other.m_value.as_color_role; case Type::Invalid: return true; } @@ -398,6 +411,7 @@ bool Variant::operator<(const Variant& other) const case Type::Rect: case Type::Font: case Type::TextAlignment: + case Type::ColorRole: // FIXME: Figure out how to compare these. VERIFY_NOT_REACHED(); case Type::Invalid: @@ -454,6 +468,9 @@ String Variant::to_string() const } return ""; } + case Type::ColorRole: { + return String::formatted("Gfx::ColorRole::{}", Gfx::to_string(m_value.as_color_role)); + } case Type::Invalid: return "[null]"; } diff --git a/Userland/Libraries/LibGUI/Variant.h b/Userland/Libraries/LibGUI/Variant.h index 9bb2a6eb31..48fe882682 100644 --- a/Userland/Libraries/LibGUI/Variant.h +++ b/Userland/Libraries/LibGUI/Variant.h @@ -10,6 +10,7 @@ #include <LibGUI/Icon.h> #include <LibGfx/Bitmap.h> #include <LibGfx/Font.h> +#include <LibGfx/SystemTheme.h> namespace GUI { @@ -33,6 +34,7 @@ public: Variant(const Gfx::IntRect&); Variant(const Gfx::Font&); Variant(const Gfx::TextAlignment); + Variant(const Gfx::ColorRole); Variant(const JsonValue&); Variant(Color); @@ -62,6 +64,7 @@ public: Rect, Font, TextAlignment, + ColorRole, }; bool is_valid() const { return m_type != Type::Invalid; } @@ -80,6 +83,7 @@ public: bool is_rect() const { return m_type == Type::Rect; } bool is_font() const { return m_type == Type::Font; } bool is_text_alignment() const { return m_type == Type::TextAlignment; } + bool is_color_role() const { return m_type == Type::ColorRole; } Type type() const { return m_type; } bool as_bool() const @@ -234,6 +238,13 @@ public: return m_value.as_text_alignment; } + Gfx::ColorRole to_color_role() const + { + if (type() != Type::ColorRole) + return Gfx::ColorRole::NoRole; + return m_value.as_color_role; + } + Color to_color(Color default_value = {}) const { if (type() == Type::Color) @@ -283,6 +294,7 @@ private: float as_float; Gfx::RGBA32 as_color; Gfx::TextAlignment as_text_alignment; + Gfx::ColorRole as_color_role; RawPoint as_point; RawSize as_size; RawRect as_rect; |