Fmt formatter for basic Math stuff

This commit is contained in:
Vladyslav Baranovskyi
2025-02-12 20:07:05 +02:00
parent bf73c71e6b
commit aeb003fb52

View File

@@ -14,6 +14,7 @@
#error "Failed to find fmt include" #error "Failed to find fmt include"
#endif #endif
#include "Math/ByteSize.hpp" #include "Math/ByteSize.hpp"
#include "Math/Math.hpp"
#include <filesystem> #include <filesystem>
template<> struct fmt::formatter<OpenVulkano::ByteSize> template<> struct fmt::formatter<OpenVulkano::ByteSize>
@@ -43,3 +44,117 @@ template<> struct fmt::formatter<std::filesystem::path> : fmt::formatter<std::st
return formatter<std::string>::format(path.string(), ctx); return formatter<std::string>::format(path.string(), ctx);
} }
}; };
template<typename T, glm::qualifier Q>
struct fmt::formatter<glm::vec<2, T, Q>>
{
template<typename ParseContext> constexpr auto parse(ParseContext& ctx)
{
return ctx.begin();
}
template<typename FormatContext>
auto format(const glm::vec<2, T, Q>& v, FormatContext& ctx) const
{
return fmt::format_to(ctx.out(), "({}, {})", v.x, v.y);
}
};
template<typename T, glm::qualifier Q>
struct fmt::formatter<glm::vec<3, T, Q>>
{
template<typename ParseContext> constexpr auto parse(ParseContext& ctx)
{
return ctx.begin();
}
template<typename FormatContext>
auto format(const glm::vec<3, T, Q>& v, FormatContext& ctx) const
{
return fmt::format_to(ctx.out(), "({}, {}, {})", v.x, v.y, v.z);
}
};
template<typename T, glm::qualifier Q>
struct fmt::formatter<glm::vec<4, T, Q>>
{
template<typename ParseContext> constexpr auto parse(ParseContext& ctx)
{
return ctx.begin();
}
template<typename FormatContext>
auto format(const glm::vec<4, T, Q>& v, FormatContext& ctx) const
{
return fmt::format_to(ctx.out(), "({}, {}, {}, {})", v.x, v.y, v.z, v.w);
}
};
template<typename T, glm::qualifier Q>
struct fmt::formatter<glm::mat<2, 2, T, Q>>
{
template<typename ParseContext> constexpr auto parse(ParseContext& ctx)
{
return ctx.begin();
}
template<typename FormatContext>
auto format(const glm::mat<2, 2, T, Q>& m, FormatContext& ctx) const
{
return fmt::format_to(ctx.out(), "[[{}, {}], [{}, {}]]",
m[0][0], m[0][1],
m[1][0], m[1][1]);
}
};
template<typename T, glm::qualifier Q>
struct fmt::formatter<glm::mat<3, 3, T, Q>>
{
template<typename ParseContext> constexpr auto parse(ParseContext& ctx)
{
return ctx.begin();
}
template<typename FormatContext>
auto format(const glm::mat<3, 3, T, Q>& m, FormatContext& ctx) const
{
return fmt::format_to(ctx.out(), "[[{}, {}, {}], [{}, {}, {}], [{}, {}, {}]]",
m[0][0], m[0][1], m[0][2],
m[1][0], m[1][1], m[1][2],
m[2][0], m[2][1], m[2][2]);
}
};
template<typename T, glm::qualifier Q>
struct fmt::formatter<glm::mat<4, 4, T, Q>>
{
template<typename ParseContext> constexpr auto parse(ParseContext& ctx)
{
return ctx.begin();
}
template<typename FormatContext>
auto format(const glm::mat<4, 4, T, Q>& m, FormatContext& ctx) const
{
return fmt::format_to(ctx.out(), "[[{}, {}, {}, {}], [{}, {}, {}, {}], [{}, {}, {}, {}], [{}, {}, {}, {}]]",
m[0][0], m[0][1], m[0][2], m[0][3],
m[1][0], m[1][1], m[1][2], m[1][3],
m[2][0], m[2][1], m[2][2], m[2][3],
m[3][0], m[3][1], m[3][2], m[3][3]);
}
};
template<typename T, glm::qualifier Q>
struct fmt::formatter<glm::qua<T, Q>>
{
template<typename ParseContext> constexpr auto parse(ParseContext& ctx)
{
return ctx.begin();
}
template<typename FormatContext>
auto format(const glm::qua<T, Q>& q, FormatContext& ctx) const
{
return fmt::format_to(ctx.out(), "({}, {}, {}, {})", q.w, q.x, q.y, q.z);
}
};