aboutsummaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-03-03 00:39:10 +0800
committercrupest <crupest@outlook.com>2020-03-03 00:39:10 +0800
commitb0946c0e6dc163fe981f230302a1976449150907 (patch)
tree3786417609ec00e42c0e9a102c39238135dfc9b5 /src/ui
parentebb8f7beba71fc0d3cd81f60559e4005e05e48d5 (diff)
downloadcru-b0946c0e6dc163fe981f230302a1976449150907.tar.gz
cru-b0946c0e6dc163fe981f230302a1976449150907.tar.bz2
cru-b0946c0e6dc163fe981f230302a1976449150907.zip
...
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/controls/text_block.cpp8
-rw-r--r--src/ui/controls/text_box.cpp28
-rw-r--r--src/ui/render/canvas_render_object.cpp6
-rw-r--r--src/ui/ui_manager.cpp18
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 =