aboutsummaryrefslogtreecommitdiff
path: root/src/ui/ui_manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/ui_manager.cpp')
-rw-r--r--src/ui/ui_manager.cpp77
1 files changed, 15 insertions, 62 deletions
diff --git a/src/ui/ui_manager.cpp b/src/ui/ui_manager.cpp
index 4d14575b..9c3c00d2 100644
--- a/src/ui/ui_manager.cpp
+++ b/src/ui/ui_manager.cpp
@@ -1,74 +1,27 @@
-#include "ui_manager.hpp"
+#include "cru/ui/ui_manager.hpp"
-#include <Windows.h>
-#include <d2d1.h>
-#include <dwrite.h>
-
-#include "application.hpp"
-#include "exception.hpp"
-#include "graph/graph_manager.hpp"
-#include "graph/graph_util.hpp"
-#include "util/com_util.hpp"
+#include "cru/platform/graph_factory.hpp"
+#include "cru/platform/ui_applicaition.hpp"
namespace cru::ui {
-namespace {
-void GetSystemCaretInfo(CaretInfo* caret_info) {
- caret_info->caret_blink_duration =
- std::chrono::milliseconds(::GetCaretBlinkTime());
- DWORD caret_width;
- if (!::SystemParametersInfoW(SPI_GETCARETWIDTH, 0, &caret_width, 0))
- throw Win32Error(::GetLastError(), "Failed to get system caret width.");
- caret_info->half_caret_width = caret_width / 2.0f;
-}
-
-IDWriteTextFormat* CreateDefaultTextFormat() {
- const auto dwrite_factory =
- graph::GraphManager::GetInstance()->GetDWriteFactory();
- IDWriteTextFormat* text_format;
-
- ThrowIfFailed(dwrite_factory->CreateTextFormat(
- L"等线", nullptr, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL,
- DWRITE_FONT_STRETCH_NORMAL, 24.0, L"zh-cn", &text_format));
-
- ThrowIfFailed(text_format->SetTextAlignment(DWRITE_TEXT_ALIGNMENT_CENTER));
- ThrowIfFailed(
- text_format->SetParagraphAlignment(DWRITE_PARAGRAPH_ALIGNMENT_CENTER));
-
- return text_format;
-}
-} // namespace
-
PredefineResources::PredefineResources() {
- try {
- button_normal_border_brush =
- graph::CreateSolidColorBrush(D2D1::ColorF(D2D1::ColorF::Black));
+ const auto graph_factory =
+ platform::UiApplication::GetInstance()->GetGraphFactory();
- text_block_selection_brush =
- graph::CreateSolidColorBrush(D2D1::ColorF(D2D1::ColorF::LightSkyBlue));
- text_block_text_brush =
- graph::CreateSolidColorBrush(D2D1::ColorF(D2D1::ColorF::Black));
- text_block_text_format = CreateDefaultTextFormat();
- } catch (...) {
- util::SafeRelease(button_normal_border_brush);
- util::SafeRelease(text_block_selection_brush);
- util::SafeRelease(text_block_text_brush);
- util::SafeRelease(text_block_text_format);
- }
-}
+ button_normal_border_brush.reset(
+ graph_factory->CreateSolidColorBrush(colors::black));
-PredefineResources::~PredefineResources() {
- util::SafeRelease(button_normal_border_brush);
- util::SafeRelease(text_block_selection_brush);
- util::SafeRelease(text_block_text_brush);
- util::SafeRelease(text_block_text_format);
+ text_block_selection_brush.reset(
+ graph_factory->CreateSolidColorBrush(colors::skyblue));
+ text_block_text_brush.reset(
+ graph_factory->CreateSolidColorBrush(colors::black));
+ text_block_font.reset(graph_factory->CreateFontDescriptor(L"等线", 24.0f));
}
UiManager* UiManager::GetInstance() {
- return Application::GetInstance()->ResolveSingleton<UiManager>(
- [](auto) { return new UiManager{}; });
+ static UiManager instance;
+ return &instance;
}
-UiManager::UiManager() : predefine_resources_() {
- GetSystemCaretInfo(&caret_info_);
-}
+UiManager::UiManager() : predefine_resources_(new PredefineResources()) {}
} // namespace cru::ui