diff options
author | crupest <crupest@outlook.com> | 2020-03-03 23:36:45 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-03-03 23:36:45 +0800 |
commit | 0dcf8e686b93cca54a424affe0455d0a97d6c2ef (patch) | |
tree | 744897a3b6a29f6142f1943dab5d9957e670919b /src/ui/controls/text_block.cpp | |
parent | 47053829c322c43032244937cb63f9da178b852d (diff) | |
download | cru-0dcf8e686b93cca54a424affe0455d0a97d6c2ef.tar.gz cru-0dcf8e686b93cca54a424affe0455d0a97d6c2ef.tar.bz2 cru-0dcf8e686b93cca54a424affe0455d0a97d6c2ef.zip |
...
Diffstat (limited to 'src/ui/controls/text_block.cpp')
-rw-r--r-- | src/ui/controls/text_block.cpp | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/src/ui/controls/text_block.cpp b/src/ui/controls/text_block.cpp index 9d01dee9..be064ea0 100644 --- a/src/ui/controls/text_block.cpp +++ b/src/ui/controls/text_block.cpp @@ -1,28 +1,60 @@ #include "cru/ui/controls/text_block.hpp" +#include "cru/ui/render/canvas_render_object.hpp" +#include "cru/ui/render/stack_layout_render_object.hpp" #include "cru/ui/render/text_render_object.hpp" #include "cru/ui/ui_manager.hpp" namespace cru::ui::controls { +using render::CanvasRenderObject; +using render::StackLayoutRenderObject; using render::TextRenderObject; -TextBlock::TextBlock() { +TextBlock::TextBlock() + : root_render_object_(new StackLayoutRenderObject()), + text_render_object_(), + caret_render_object_(new CanvasRenderObject()) { const auto theme_resources = UiManager::GetInstance()->GetThemeResources(); - render_object_ = std::make_unique<TextRenderObject>( + + text_render_object_ = std::make_unique<TextRenderObject>( theme_resources->text_brush, theme_resources->default_font, theme_resources->text_selection_brush); - render_object_->SetAttachedControl(this); + + root_render_object_->AddChild(text_render_object_.get(), 0); + root_render_object_->AddChild(caret_render_object_.get(), 1); + + root_render_object_->SetAttachedControl(this); + text_render_object_->SetAttachedControl(this); + caret_render_object_->SetAttachedControl(this); + + caret_brush_ = theme_resources->caret_brush; + + service_ = std::make_unique<TextControlService>(this, this); } TextBlock::~TextBlock() = default; render::RenderObject* TextBlock::GetRenderObject() const { - return render_object_.get(); + return root_render_object_.get(); } -std::string TextBlock::GetText() const { return render_object_->GetText(); } +std::string TextBlock::GetText() const { + return text_render_object_->GetText(); +} void TextBlock::SetText(std::string text) { - render_object_->SetText(std::move(text)); + text_render_object_->SetText(std::move(text)); +} + +render::TextRenderObject* TextBlock::GetTextRenderObject() { + return text_render_object_.get(); +} + +render::CanvasRenderObject* TextBlock::GetCaretRenderObject() { + return caret_render_object_.get(); +} + +platform::graph::IBrush* TextBlock::GetCaretBrush() { + return caret_brush_.get(); } } // namespace cru::ui::controls |