// Copyright (c) 2022 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #pragma once #include "UIComponent.hpp" #include "display/mesh/QuadMesh.hpp" #include "display/font/Font.hpp" namespace Dawn { class UILabel : public UIComponent { private: Mesh mesh; bool_t needsRebuffering = true; Font *font = nullptr; std::string text = ""; float_t fontSize = 10.0f; void updatePositions() override; public: struct FontMeasure measure; int32_t startQuad = 0; int32_t quadCount = -1; /** The colour of this label */ struct Color textColor = COLOR_MAGENTA; UILabel(UICanvas *canvas); void drawSelf(UIShader *shader, glm::mat4 selfTransform) override; void setTransform( UIComponentAlign xAlign, UIComponentAlign yAlign, glm::vec4 alignment, float_t z ) override; /** * Internal method to force the font mesh to be recreated. */ void updateMesh(); /** * Returns the current text that the label has. * * @return The current label string. */ std::string getText(); /** * Set the font to use for the label. * * @param font Font to use. */ void setFont(Font *font); /** * Sets the text for the label to use. * * @param text Text for the label to use. */ void setText(std::string text); /** * Sets / Updates the font size for the label. * * @param fontSize Font size to use. */ void setFontSize(float_t fontSize); }; }