mirror of
https://github.com/orange-cpp/omath.git
synced 2026-04-18 21:23:28 +00:00
improvement
This commit is contained in:
@@ -79,14 +79,24 @@ namespace omath::hud
|
|||||||
void add_left_label(const Color& color, float offset, bool outlined, const std::string_view& text);
|
void add_left_label(const Color& color, float offset, bool outlined, const std::string_view& text);
|
||||||
|
|
||||||
template<typename... Args>
|
template<typename... Args>
|
||||||
void add_centered_label(const Color& color, const float offset, const bool outlined,
|
void add_centered_bottom_label(const Color& color, const float offset, const bool outlined,
|
||||||
std::format_string<Args...> fmt, Args&&... args)
|
std::format_string<Args...> fmt, Args&&... args)
|
||||||
{
|
{
|
||||||
const std::string label = std::vformat(fmt.get(), std::make_format_args(args...));
|
const std::string label = std::vformat(fmt.get(), std::make_format_args(args...));
|
||||||
add_centered_label(color, offset, outlined, std::string_view{label});
|
add_centered_bottom_label(color, offset, outlined, std::string_view{label});
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_centered_label(const Color& color, float offset, bool outlined, const std::string_view& text);
|
void add_centered_bottom_label(const Color& color, float offset, bool outlined, const std::string_view& text);
|
||||||
|
|
||||||
|
template<typename... Args>
|
||||||
|
void add_centered_top_label(const Color& color, const float offset, const bool outlined,
|
||||||
|
std::format_string<Args...> fmt, Args&&... args)
|
||||||
|
{
|
||||||
|
const std::string label = std::vformat(fmt.get(), std::make_format_args(args...));
|
||||||
|
add_centered_top_label(color, offset, outlined, std::string_view{label});
|
||||||
|
}
|
||||||
|
|
||||||
|
void add_centered_top_label(const Color& color, float offset, bool outlined, const std::string_view& text);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void draw_outlined_text(const Vector2<float>& position, const Color& color,
|
void draw_outlined_text(const Vector2<float>& position, const Color& color,
|
||||||
|
|||||||
@@ -172,8 +172,8 @@ namespace omath::hud
|
|||||||
m_text_cursor_left.y += text_size.y;
|
m_text_cursor_left.y += text_size.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EntityOverlay::add_centered_label(const Color& color, const float offset, const bool outlined,
|
void EntityOverlay::add_centered_bottom_label(const Color& color, const float offset, const bool outlined,
|
||||||
const std::string_view& text)
|
const std::string_view& text)
|
||||||
{
|
{
|
||||||
const auto text_size = m_renderer->calc_text_size(text);
|
const auto text_size = m_renderer->calc_text_size(text);
|
||||||
const auto box_center_x = m_canvas.bottom_left_corner.x
|
const auto box_center_x = m_canvas.bottom_left_corner.x
|
||||||
@@ -188,6 +188,22 @@ namespace omath::hud
|
|||||||
m_text_cursor_bottom.y += text_size.y;
|
m_text_cursor_bottom.y += text_size.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EntityOverlay::add_centered_top_label(const Color& color, const float offset, const bool outlined,
|
||||||
|
const std::string_view& text)
|
||||||
|
{
|
||||||
|
const auto text_size = m_renderer->calc_text_size(text);
|
||||||
|
const auto box_center_x = m_canvas.top_left_corner.x
|
||||||
|
+ (m_canvas.top_right_corner.x - m_canvas.top_left_corner.x) / 2.f;
|
||||||
|
|
||||||
|
m_text_cursor_top.y -= text_size.y;
|
||||||
|
const auto pos = Vector2<float>{box_center_x - text_size.x / 2.f, m_text_cursor_top.y - offset};
|
||||||
|
|
||||||
|
if (outlined)
|
||||||
|
draw_outlined_text(pos, color, text);
|
||||||
|
else
|
||||||
|
m_renderer->add_text(pos, color, text);
|
||||||
|
}
|
||||||
|
|
||||||
EntityOverlay::EntityOverlay(const Vector2<float>& top, const Vector2<float>& bottom,
|
EntityOverlay::EntityOverlay(const Vector2<float>& top, const Vector2<float>& bottom,
|
||||||
const std::shared_ptr<HudRendererInterface>& renderer)
|
const std::shared_ptr<HudRendererInterface>& renderer)
|
||||||
: m_canvas(top, bottom), m_text_cursor_right(m_canvas.top_right_corner),
|
: m_canvas(top, bottom), m_text_cursor_right(m_canvas.top_right_corner),
|
||||||
|
|||||||
Reference in New Issue
Block a user