#ifndef STAR_LABEL_WIDGET_HPP #define STAR_LABEL_WIDGET_HPP #include "StarWidget.hpp" namespace Star { STAR_CLASS(LabelWidget); class LabelWidget : public Widget { public: LabelWidget(String text = String(), Color const& color = Color::White, HorizontalAnchor const& hAnchor = HorizontalAnchor::LeftAnchor, VerticalAnchor const& vAnchor = VerticalAnchor::BottomAnchor, Maybe wrapWidth = {}, Maybe lineSpacing = {}); String const& text() const; Maybe getTextCharLimit() const; void setText(String newText); void setFontSize(int fontSize); void setColor(Color newColor); void setAnchor(HorizontalAnchor hAnchor, VerticalAnchor vAnchor); void setWrapWidth(Maybe wrapWidth); void setLineSpacing(Maybe lineSpacing); void setDirectives(String const& directives); void setTextCharLimit(Maybe charLimit); RectI relativeBoundRect() const override; protected: virtual RectI getScissorRect() const override; virtual void renderImpl() override; private: void updateTextRegion(); String m_text; int m_fontSize; Color m_color; HorizontalAnchor m_hAnchor; VerticalAnchor m_vAnchor; String m_processingDirectives; String m_font; Maybe m_wrapWidth; Maybe m_lineSpacing; Maybe m_textCharLimit; RectI m_textRegion; }; } #endif