Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/windowing/StarLabelWidget.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/windowing/StarLabelWidget.hpp')
-rw-r--r--source/windowing/StarLabelWidget.hpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/source/windowing/StarLabelWidget.hpp b/source/windowing/StarLabelWidget.hpp
new file mode 100644
index 0000000..614119f
--- /dev/null
+++ b/source/windowing/StarLabelWidget.hpp
@@ -0,0 +1,52 @@
+#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