Files
Destrum/destrum/include/destrum/Components/UI/UIText.h
T

53 lines
1.7 KiB
C++

#ifndef DESTRUM_UITEXT_H
#define DESTRUM_UITEXT_H
#include <string>
#include <destrum/Components/UI/UIGraphic.h>
class Font;
enum class UITextAlign {
Start,
Center,
End,
};
class UIText final : public UIGraphic {
public:
explicit UIText(GameObject& parent, std::string text = {}, float fontSize = 24.0f);
std::string GetTypeName() const override { return "UIText"; }
void DrawUI(const UIRect& rect, float scale) override;
nlohmann::json Serialize() const override;
void Deserialize(const nlohmann::json& data) override;
void ImGuiInspector() override;
void SetText(std::string text) { m_Text = std::move(text); }
void SetFont(std::string assetPath) { m_FontPath = std::move(assetPath); }
void SetFontSize(float size) { m_FontSize = size; }
void SetOutline(float thickness, const glm::vec4& color);
void SetAlignment(UITextAlign horizontal, UITextAlign vertical);
[[nodiscard]] const std::string& GetText() const { return m_Text; }
[[nodiscard]] const std::string& GetFont() const { return m_FontPath; }
[[nodiscard]] float GetFontSize() const { return m_FontSize; }
[[nodiscard]] UITextAlign GetHorizontalAlign() const { return m_HorizontalAlign; }
[[nodiscard]] UITextAlign GetVerticalAlign() const { return m_VerticalAlign; }
[[nodiscard]] glm::vec2 PlaceText(const UIRect& rect, const glm::vec2& textSize) const;
private:
std::string m_Text;
std::string m_FontPath;
float m_FontSize{24.0f};
float m_Outline{0.0f};
glm::vec4 m_OutlineColor{0.0f, 0.0f, 0.0f, 1.0f};
UITextAlign m_HorizontalAlign{UITextAlign::Center};
UITextAlign m_VerticalAlign{UITextAlign::Center};
};
#endif // DESTRUM_UITEXT_H