aboutsummaryrefslogtreecommitdiff
path: root/include/cru/ui/document/TextDocumentElement.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/ui/document/TextDocumentElement.h')
-rw-r--r--include/cru/ui/document/TextDocumentElement.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/include/cru/ui/document/TextDocumentElement.h b/include/cru/ui/document/TextDocumentElement.h
new file mode 100644
index 00000000..f7205b59
--- /dev/null
+++ b/include/cru/ui/document/TextDocumentElement.h
@@ -0,0 +1,45 @@
+#pragma once
+
+#include "../Base.h"
+#include "DocumentElement.h"
+#include "cru/common/Base.h"
+#include "cru/common/Bitmask.h"
+
+namespace cru::ui::document {
+namespace details {
+struct TextStyleTag {};
+} // namespace details
+
+using TextStyle = Bitmask<details::TextStyleTag>;
+
+struct TextStyles {
+ static constexpr TextStyle Normal;
+ static constexpr TextStyle Bold{0x1};
+ static constexpr TextStyle Italic{0x2};
+};
+
+struct IDocumentLink : virtual Interface {
+ virtual void Open() = 0;
+};
+
+class CRU_UI_API TextDocumentElement : public DocumentElement {
+ public:
+ TextDocumentElement(String text, TextStyle style, IDocumentLink* link);
+
+ ~TextDocumentElement() override;
+
+ String GetText() const { return text_; }
+ void SetText(String text);
+
+ TextStyle GetStyle() const { return style_; }
+ void SetStyle(TextStyle style);
+
+ IDocumentLink* GetLink() const { return link_; }
+ void SetLink(IDocumentLink link);
+
+ private:
+ String text_;
+ TextStyle style_;
+ IDocumentLink* link_;
+};
+} // namespace cru::ui::document