diff options
Diffstat (limited to 'include/cru/ui/document/TextDocumentElement.h')
-rw-r--r-- | include/cru/ui/document/TextDocumentElement.h | 45 |
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 |