#pragma once #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 setFontMode(FontMode fontMode); 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); void setTextStyle(TextStyle const& style); RectI relativeBoundRect() const override; protected: virtual RectI getScissorRect() const override; virtual void renderImpl() override; private: void updateTextRegion(); String m_text; TextStyle m_style; HorizontalAnchor m_hAnchor; VerticalAnchor m_vAnchor; Maybe m_wrapWidth; Maybe m_lineSpacing; Maybe m_textCharLimit; RectI m_textRegion; }; }