Fmt formatter for basic Math stuff
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
#error "Failed to find fmt include"
|
||||
#endif
|
||||
#include "Math/ByteSize.hpp"
|
||||
#include "Math/Math.hpp"
|
||||
#include <filesystem>
|
||||
|
||||
template<> struct fmt::formatter<OpenVulkano::ByteSize>
|
||||
@@ -42,4 +43,118 @@ template<> struct fmt::formatter<std::filesystem::path> : fmt::formatter<std::st
|
||||
{
|
||||
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);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user