diff options
Diffstat (limited to 'src/ui/ui_manager.cpp')
-rw-r--r-- | src/ui/ui_manager.cpp | 77 |
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 |