diff options
author | crupest <crupest@outlook.com> | 2023-10-19 16:34:34 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2023-12-16 15:20:47 +0800 |
commit | 8f7505d7fd35058870a4a937ca9670e383778dca (patch) | |
tree | 3cc0eb61efa7041ba78a7d17761dcd3fbf28d26d /include/cru | |
parent | e1061e0cf685b9d35da336259918b95c3c663560 (diff) | |
download | cru-8f7505d7fd35058870a4a937ca9670e383778dca.tar.gz cru-8f7505d7fd35058870a4a937ca9670e383778dca.tar.bz2 cru-8f7505d7fd35058870a4a937ca9670e383778dca.zip |
Develop document.
Diffstat (limited to 'include/cru')
-rw-r--r-- | include/cru/ui/document/DocumentElementType.h | 12 | ||||
-rw-r--r-- | include/cru/ui/document/TextDocumentElement.h | 45 |
2 files changed, 55 insertions, 2 deletions
diff --git a/include/cru/ui/document/DocumentElementType.h b/include/cru/ui/document/DocumentElementType.h index a94bf029..d16836c1 100644 --- a/include/cru/ui/document/DocumentElementType.h +++ b/include/cru/ui/document/DocumentElementType.h @@ -1,25 +1,33 @@ #pragma once +#include "../Base.h" #include "cru/common/String.h" -#include "../Base.h" +#include <vector> namespace cru::ui::document { class CRU_UI_API DocumentElementType : public Object { public: - explicit DocumentElementType(String name); + explicit DocumentElementType(String name, + std::vector<DocumentElementType*> parents); ~DocumentElementType() override; public: String GetName() const { return name_; } + const std::vector<DocumentElementType*>& GetParents() const { + return parents_; + } private: String name_; + std::vector<DocumentElementType*> parents_; }; struct CRU_UI_API DocumentElementTypes { + static DocumentElementType* const kBaseElementType; static DocumentElementType* const kRootElementType; + static DocumentElementType* const kTextElementType; }; } // namespace cru::ui::document 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 |