osb/source/windowing/StarLabelWidget.hpp
2023-06-20 14:33:09 +10:00

53 lines
1.3 KiB
C++

#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<unsigned> wrapWidth = {},
Maybe<float> lineSpacing = {});
String const& text() const;
Maybe<unsigned> getTextCharLimit() const;
void setText(String newText);
void setFontSize(int fontSize);
void setColor(Color newColor);
void setAnchor(HorizontalAnchor hAnchor, VerticalAnchor vAnchor);
void setWrapWidth(Maybe<unsigned> wrapWidth);
void setLineSpacing(Maybe<float> lineSpacing);
void setDirectives(String const& directives);
void setTextCharLimit(Maybe<unsigned> 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;
Maybe<unsigned> m_wrapWidth;
Maybe<float> m_lineSpacing;
Maybe<unsigned> m_textCharLimit;
RectI m_textRegion;
};
}
#endif