From 0f4050903d48da88127157366eef9c50a941ffa2 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 13 Apr 2019 12:35:19 +0200 Subject: [PATCH] GVariant: Add to_bool(), to_int() and to_color(). --- LibGUI/GVariant.h | 35 +++++++++++++++++++++++++++++++++++ SharedGraphics/Point.h | 2 ++ 2 files changed, 37 insertions(+) diff --git a/LibGUI/GVariant.h b/LibGUI/GVariant.h index 08c9301021e..b4855de43a2 100644 --- a/LibGUI/GVariant.h +++ b/LibGUI/GVariant.h @@ -60,12 +60,40 @@ public: return m_value.as_bool; } + bool to_bool() const + { + if (type() == Type::Bool) + return as_bool(); + if (type() == Type::String) + return !!m_value.as_string; + if (type() == Type::Int) + return m_value.as_int != 0; + if (type() == Type::Rect) + return !as_rect().is_null(); + if (type() == Type::Size) + return !as_size().is_null(); + if (type() == Type::Point) + return !as_point().is_null(); + return is_valid(); + } + int as_int() const { ASSERT(type() == Type::Int); return m_value.as_int; } + int to_int() const + { + if (is_int()) + return as_int(); + if (is_bool()) + return as_bool() ? 1 : 0; + if (is_float()) + return (int)as_float(); + return 0; + } + float as_float() const { ASSERT(type() == Type::Float); @@ -111,6 +139,13 @@ public: return Color::from_rgba(m_value.as_color); } + Color to_color() const + { + if (is_color()) + return as_color(); + return Color(); + } + Color to_color(Color default_value) const { if (type() == Type::Color) diff --git a/SharedGraphics/Point.h b/SharedGraphics/Point.h index 87680ce22f1..b9fa85d994c 100644 --- a/SharedGraphics/Point.h +++ b/SharedGraphics/Point.h @@ -61,6 +61,8 @@ public: operator WSAPI_Point() const; String to_string() const { return String::format("[%d,%d]", x(), y()); } + bool is_null() const { return !m_x && !m_y; } + private: int m_x { 0 }; int m_y { 0 };