53 lines
1.7 KiB
C++
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
|