Adds formatters for Angle and Color

Adds formatters for `omath::Angle` and `omath::Color` to allow for easy formatting using `std::format`.

This allows users to easily output Angle and Color values in a human-readable format.
This commit is contained in:
2025-08-26 12:35:40 +03:00
parent 115b5a3471
commit 20ae2b4dd1
2 changed files with 33 additions and 0 deletions

View File

@@ -6,6 +6,7 @@
#include "omath/angles.hpp"
#include <algorithm>
#include <utility>
#include <format>
namespace omath
{
@@ -149,3 +150,17 @@ namespace omath
}
};
} // namespace omath
template<class Type, Type min, Type max, omath::AngleFlags flags>
struct std::formatter<omath::Angle<Type, min, max, flags>> // NOLINT(*-dcl58-cpp)
{
[[nodiscard]]
static constexpr auto parse(std::format_parse_context& ctx)
{
return ctx.begin();
}
[[nodiscard]]
static auto format(const omath::Angle<Type, min, max, flags>& deg, std::format_context& ctx)
{
return std::format_to(ctx.out(), "{}deg", deg.as_degrees());
}
};

View File

@@ -167,3 +167,21 @@ namespace omath
#endif
};
} // namespace omath
template<>
struct std::formatter<omath::Color> // NOLINT(*-dcl58-cpp)
{
[[nodiscard]]
static constexpr auto parse(std::format_parse_context& ctx)
{
return ctx.begin();
}
[[nodiscard]]
static auto format(const omath::Color& col, std::format_context& ctx)
{
return std::format_to(ctx.out(), "[r:{}, g:{}, b:{}, a:{}]",
static_cast<int>(col.x * 255.f),
static_cast<int>(col.y * 255.f),
static_cast<int>(col.z * 255.f),
static_cast<int>(col.w * 255.f));
}
};