diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ui/controls/text_block.cpp | 8 | ||||
-rw-r--r-- | src/ui/controls/text_box.cpp | 28 | ||||
-rw-r--r-- | src/ui/render/canvas_render_object.cpp | 6 | ||||
-rw-r--r-- | src/ui/ui_manager.cpp | 18 |
4 files changed, 45 insertions, 15 deletions
diff --git a/src/ui/controls/text_block.cpp b/src/ui/controls/text_block.cpp index 333b44c8..9d01dee9 100644 --- a/src/ui/controls/text_block.cpp +++ b/src/ui/controls/text_block.cpp @@ -7,12 +7,10 @@ namespace cru::ui::controls { using render::TextRenderObject; TextBlock::TextBlock() { - const auto predefined_resources = - UiManager::GetInstance()->GetPredefineResources(); + const auto theme_resources = UiManager::GetInstance()->GetThemeResources(); render_object_ = std::make_unique<TextRenderObject>( - predefined_resources->text_block_text_brush, - predefined_resources->text_block_font, - predefined_resources->text_block_selection_brush); + theme_resources->text_brush, theme_resources->default_font, + theme_resources->text_selection_brush); render_object_->SetAttachedControl(this); } diff --git a/src/ui/controls/text_box.cpp b/src/ui/controls/text_box.cpp index 7fde06d9..07b70b94 100644 --- a/src/ui/controls/text_box.cpp +++ b/src/ui/controls/text_box.cpp @@ -1 +1,29 @@ #include "cru/ui/controls/text_box.hpp" + +#include "cru/ui/render/border_render_object.hpp" +#include "cru/ui/render/canvas_render_object.hpp" +#include "cru/ui/render/text_render_object.hpp" +#include "cru/ui/ui_manager.hpp" + +namespace cru::ui::controls { +using render::BorderRenderObject; +using render::CanvasRenderObject; +using render::TextRenderObject; + +TextBox::TextBox() + : border_render_object_(new BorderRenderObject()), + text_render_object_(), + caret_render_object_(new CanvasRenderObject()) { + const auto theme_resources = UiManager::GetInstance()->GetThemeResources(); + + text_render_object_ = std::make_unique<TextRenderObject>( + theme_resources->text_brush, theme_resources->default_font, + theme_resources->text_selection_brush); + + border_render_object_->SetAttachedControl(this); + text_render_object_->SetAttachedControl(this); + caret_render_object_->SetAttachedControl(this); +} + +TextBox::~TextBox() {} +} // namespace cru::ui::controls diff --git a/src/ui/render/canvas_render_object.cpp b/src/ui/render/canvas_render_object.cpp index 7a2a1af0..0a442317 100644 --- a/src/ui/render/canvas_render_object.cpp +++ b/src/ui/render/canvas_render_object.cpp @@ -15,4 +15,10 @@ RenderObject* CanvasRenderObject::HitTest(const Point& point) { const auto padding_rect = GetPaddingRect(); return padding_rect.IsPointInside(point) ? this : nullptr; } + +Size CanvasRenderObject::OnMeasureContent(const Size& available_size) { + return Size{}; +} + +void CanvasRenderObject::OnLayoutContent(const Rect& content_rect) {} } // namespace cru::ui::render diff --git a/src/ui/ui_manager.cpp b/src/ui/ui_manager.cpp index 6c61083b..f71f900f 100644 --- a/src/ui/ui_manager.cpp +++ b/src/ui/ui_manager.cpp @@ -18,15 +18,6 @@ std::unique_ptr<ISolidColorBrush> CreateSolidColorBrush(IGraphFactory* factory, } } // namespace -PredefineResources::PredefineResources() { - const auto factory = GetGraphFactory(); - - button_normal_border_brush = CreateSolidColorBrush(factory, colors::black); - text_block_selection_brush = CreateSolidColorBrush(factory, colors::skyblue); - text_block_text_brush = CreateSolidColorBrush(factory, colors::black); - text_block_font = factory->CreateFont("等线", 24.0f); -} - UiManager* UiManager::GetInstance() { static UiManager* instance = new UiManager(); GetUiApplication()->AddOnQuitHandler([] { @@ -36,8 +27,15 @@ UiManager* UiManager::GetInstance() { return instance; } -UiManager::UiManager() : predefine_resources_(new PredefineResources()) { +UiManager::UiManager() { const auto factory = GetGraphFactory(); + + theme_resource_.default_font = factory->CreateFont("等线", 24.0f); + + theme_resource_.text_brush = CreateSolidColorBrush(factory, colors::black); + theme_resource_.text_selection_brush = + CreateSolidColorBrush(factory, colors::skyblue); + theme_resource_.button_style.normal.border_brush = CreateSolidColorBrush(factory, Color::FromHex(0x00bfff)); theme_resource_.button_style.hover.border_brush = |