aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2023-10-19 16:34:34 +0800
committercrupest <crupest@outlook.com>2023-12-16 15:20:47 +0800
commit8f7505d7fd35058870a4a937ca9670e383778dca (patch)
tree3cc0eb61efa7041ba78a7d17761dcd3fbf28d26d /src
parente1061e0cf685b9d35da336259918b95c3c663560 (diff)
downloadcru-8f7505d7fd35058870a4a937ca9670e383778dca.tar.gz
cru-8f7505d7fd35058870a4a937ca9670e383778dca.tar.bz2
cru-8f7505d7fd35058870a4a937ca9670e383778dca.zip
Develop document.
Diffstat (limited to 'src')
-rw-r--r--src/ui/CMakeLists.txt1
-rw-r--r--src/ui/document/DocumentElementType.cpp14
-rw-r--r--src/ui/document/TextDocumentElement.cpp17
3 files changed, 29 insertions, 3 deletions
diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt
index 1e227fd7..93077388 100644
--- a/src/ui/CMakeLists.txt
+++ b/src/ui/CMakeLists.txt
@@ -26,6 +26,7 @@ add_library(CruUi
controls/Window.cpp
document/DocumentElement.cpp
document/DocumentElementType.cpp
+ document/TextDocumentElement.cpp
events/MouseEventArgs.cpp
helper/ClickDetector.cpp
helper/ShortcutHub.cpp
diff --git a/src/ui/document/DocumentElementType.cpp b/src/ui/document/DocumentElementType.cpp
index 8a057b69..d548b494 100644
--- a/src/ui/document/DocumentElementType.cpp
+++ b/src/ui/document/DocumentElementType.cpp
@@ -1,13 +1,21 @@
#include "cru/ui/document/DocumentElementType.h"
#include <utility>
+#include <vector>
namespace cru::ui::document {
-DocumentElementType::DocumentElementType(String name)
- : name_(std::move(name)) {}
+DocumentElementType::DocumentElementType(
+ String name, std::vector<DocumentElementType*> parents)
+ : name_(std::move(name)), parents_(std::move(parents)) {}
DocumentElementType::~DocumentElementType() {}
+DocumentElementType* const DocumentElementTypes::kBaseElementType =
+ new DocumentElementType(u"Base", {});
+
DocumentElementType* const DocumentElementTypes::kRootElementType =
- new DocumentElementType(u"Root");
+ new DocumentElementType(u"Root", {kBaseElementType});
+
+DocumentElementType* const DocumentElementTypes::kTextElementType =
+ new DocumentElementType(u"Text", {kBaseElementType});
} // namespace cru::ui::document
diff --git a/src/ui/document/TextDocumentElement.cpp b/src/ui/document/TextDocumentElement.cpp
new file mode 100644
index 00000000..ab79823d
--- /dev/null
+++ b/src/ui/document/TextDocumentElement.cpp
@@ -0,0 +1,17 @@
+#include "cru/ui/document/TextDocumentElement.h"
+#include "cru/common/String.h"
+#include "cru/ui/document/DocumentElement.h"
+#include "cru/ui/document/DocumentElementType.h"
+
+namespace cru::ui::document {
+TextDocumentElement::TextDocumentElement(String text, TextStyle style,
+ IDocumentLink* link)
+ : DocumentElement(DocumentElementTypes::kTextElementType),
+ text_(std::move(text)),
+ style_(style),
+ link_(link) {}
+
+TextDocumentElement::~TextDocumentElement() {}
+
+void TextDocumentElement::SetText(String text) { text_ = std::move(text); }
+} // namespace cru::ui::document