summaryrefslogtreecommitdiff
path: root/LibGUI
diff options
context:
space:
mode:
Diffstat (limited to 'LibGUI')
-rw-r--r--LibGUI/GVariant.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/LibGUI/GVariant.h b/LibGUI/GVariant.h
index 08c9301021..b4855de43a 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)