diff options
author | crupest <crupest@outlook.com> | 2023-10-14 22:48:16 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2023-10-14 22:48:16 +0800 |
commit | 856df14d749014f11a583ade2fee988b076754cc (patch) | |
tree | 5e0684b2a4c01f37ddc6ad869c2c86125e4bb77a /include/cru/platform/GraphicsBase.h | |
parent | 9ec7c364ce8681305910b728588913f2b11cfbe6 (diff) | |
download | cru-856df14d749014f11a583ade2fee988b076754cc.tar.gz cru-856df14d749014f11a583ade2fee988b076754cc.tar.bz2 cru-856df14d749014f11a583ade2fee988b076754cc.zip |
Re-think about ToString.
ToString for a class should lies in the same namespace of the class.
Argument-dependent name lookup will help make Format work. The problem
is it will hide ToString at parent namespace. But if you call ToString
explicitly, it's you duty to use the ToString in correct namespace.
Diffstat (limited to 'include/cru/platform/GraphicsBase.h')
-rw-r--r-- | include/cru/platform/GraphicsBase.h | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/include/cru/platform/GraphicsBase.h b/include/cru/platform/GraphicsBase.h index 88dc6ee2..f134e74d 100644 --- a/include/cru/platform/GraphicsBase.h +++ b/include/cru/platform/GraphicsBase.h @@ -5,7 +5,11 @@ #include "cru/common/Range.h" #include "cru/common/String.h" +#include <cstdint> #include <limits> +#include <optional> +#include <string> +#include <utility> namespace cru::platform { struct Size; @@ -43,6 +47,10 @@ constexpr bool operator!=(const Point& left, const Point& right) { return !(left == right); } +inline String ToString(const Point& point) { + return Format(u"(x: {}, y: {})", point.x, point.y); +} + struct CRU_PLATFORM_API Size final { static const Size kMax; static const Size kZero; @@ -80,6 +88,10 @@ constexpr bool operator!=(const Size& left, const Size& right) { return !(left == right); } +inline String ToString(const Size& size) { + return Format(u"(width: {}, height: {})", size.width, size.height); +} + struct Thickness final { constexpr Thickness() : Thickness(0) {} @@ -278,14 +290,3 @@ constexpr bool operator!=(const Ellipse& left, const Ellipse& right) { using TextRange = Range; } // namespace cru::platform - -namespace cru { - -inline String ToString(const platform::Point& point) { - return Format(u"(x: {}, y: {})", point.x, point.y); -} -inline String ToString(const platform::Size& size) { - return Format(u"(width: {}, height: {})", size.width, size.height); -} - -} // namespace cru |