From 8f7505d7fd35058870a4a937ca9670e383778dca Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 19 Oct 2023 16:34:34 +0800 Subject: Develop document. --- include/cru/ui/document/TextDocumentElement.h | 45 +++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 include/cru/ui/document/TextDocumentElement.h (limited to 'include/cru/ui/document/TextDocumentElement.h') 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; + +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 -- cgit v1.2.3