diff options
author | Jelle Raaijmakers <jelle@gmta.nl> | 2021-05-15 01:31:28 +0200 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2021-05-15 00:41:30 +0100 |
commit | 5864aab87a1bd609cf5ebc492e37abd48ae8b88e (patch) | |
tree | e0384e6f2bbf6f9bb70d14cd23b3d20f19f9452f /Userland | |
parent | 9459f3728ce6cff9d371a637618efcd5ed591e66 (diff) | |
download | serenity-5864aab87a1bd609cf5ebc492e37abd48ae8b88e.zip |
LibGfx/Vector*: Implement Formatters
Diffstat (limited to 'Userland')
-rw-r--r-- | Userland/Libraries/LibGfx/Vector2.h | 18 | ||||
-rw-r--r-- | Userland/Libraries/LibGfx/Vector3.h | 18 | ||||
-rw-r--r-- | Userland/Libraries/LibGfx/Vector4.h | 18 |
3 files changed, 54 insertions, 0 deletions
diff --git a/Userland/Libraries/LibGfx/Vector2.h b/Userland/Libraries/LibGfx/Vector2.h index 2994bf1b42..a796f3c750 100644 --- a/Userland/Libraries/LibGfx/Vector2.h +++ b/Userland/Libraries/LibGfx/Vector2.h @@ -6,6 +6,7 @@ #pragma once +#include <AK/String.h> #include <math.h> namespace Gfx { @@ -107,6 +108,11 @@ public: return sqrt(m_x * m_x + m_y * m_y); } + constexpr String to_string() const + { + return String::formatted("[{},{}]", x(), y()); + } + private: T m_x; T m_y; @@ -117,6 +123,18 @@ typedef Vector2<double> DoubleVector2; } +namespace AK { + +template<typename T> +struct Formatter<Gfx::Vector2<T>> : Formatter<StringView> { + void format(FormatBuilder& builder, const Gfx::Vector2<T>& value) + { + Formatter<StringView>::format(builder, value.to_string()); + } +}; + +} + using Gfx::DoubleVector2; using Gfx::FloatVector2; using Gfx::Vector2; diff --git a/Userland/Libraries/LibGfx/Vector3.h b/Userland/Libraries/LibGfx/Vector3.h index 8e2d928acf..22c0eb425c 100644 --- a/Userland/Libraries/LibGfx/Vector3.h +++ b/Userland/Libraries/LibGfx/Vector3.h @@ -6,6 +6,7 @@ #pragma once +#include <AK/String.h> #include <math.h> namespace Gfx { @@ -123,6 +124,11 @@ public: return sqrt(m_x * m_x + m_y * m_y + m_z * m_z); } + constexpr String to_string() const + { + return String::formatted("[{},{},{}]", x(), y(), z()); + } + private: T m_x; T m_y; @@ -134,6 +140,18 @@ typedef Vector3<double> DoubleVector3; } +namespace AK { + +template<typename T> +struct Formatter<Gfx::Vector3<T>> : Formatter<StringView> { + void format(FormatBuilder& builder, const Gfx::Vector3<T>& value) + { + Formatter<StringView>::format(builder, value.to_string()); + } +}; + +} + using Gfx::DoubleVector3; using Gfx::FloatVector3; using Gfx::Vector3; diff --git a/Userland/Libraries/LibGfx/Vector4.h b/Userland/Libraries/LibGfx/Vector4.h index aacd0bf16c..ff9cdfb12a 100644 --- a/Userland/Libraries/LibGfx/Vector4.h +++ b/Userland/Libraries/LibGfx/Vector4.h @@ -6,6 +6,7 @@ #pragma once +#include <AK/String.h> #include <math.h> namespace Gfx { @@ -123,6 +124,11 @@ public: return sqrt(m_x * m_x + m_y * m_y + m_z * m_z + m_w * m_w); } + constexpr String to_string() const + { + return String::formatted("[{},{},{},{}]", x(), y(), z(), w()); + } + private: T m_x; T m_y; @@ -135,6 +141,18 @@ typedef Vector4<double> DoubleVector4; } +namespace AK { + +template<typename T> +struct Formatter<Gfx::Vector4<T>> : Formatter<StringView> { + void format(FormatBuilder& builder, const Gfx::Vector4<T>& value) + { + Formatter<StringView>::format(builder, value.to_string()); + } +}; + +} + using Gfx::DoubleVector4; using Gfx::FloatVector4; using Gfx::Vector4; |