diff options
Diffstat (limited to 'src/platform_win')
-rw-r--r-- | src/platform_win/win_application.cpp | 2 | ||||
-rw-r--r-- | src/platform_win/win_native_window.cpp | 6 | ||||
-rw-r--r-- | src/platform_win/win_painter.cpp | 1 | ||||
-rw-r--r-- | src/platform_win/win_text_layout.cpp | 15 | ||||
-rw-r--r-- | src/platform_win/window_manager.cpp | 9 |
5 files changed, 21 insertions, 12 deletions
diff --git a/src/platform_win/win_application.cpp b/src/platform_win/win_application.cpp index 31d8c990..ce187136 100644 --- a/src/platform_win/win_application.cpp +++ b/src/platform_win/win_application.cpp @@ -40,7 +40,7 @@ WinApplication::WinApplication(HINSTANCE h_instance) : h_instance_(h_instance) { timer_manager_ = std::make_shared<TimerManager>(god_window_.get()); window_manager_ = std::make_shared<WindowManager>(this); graph_manager_ = std::make_shared<GraphManager>(); - graph_factory_ = std::make_shared<GraphFactory>(graph_manager_.get()); + graph_factory_ = std::make_shared<WinGraphFactory>(graph_manager_.get()); } WinApplication::~WinApplication() { instance_ = nullptr; } diff --git a/src/platform_win/win_native_window.cpp b/src/platform_win/win_native_window.cpp index 12c25674..3f34717f 100644 --- a/src/platform_win/win_native_window.cpp +++ b/src/platform_win/win_native_window.cpp @@ -34,6 +34,9 @@ WinNativeWindow::WinNativeWindow(WinApplication* application, throw Win32Error(::GetLastError(), "Failed to create window."); window_manager->RegisterWindow(hwnd_, this); + + window_render_target_.reset( + new WindowRenderTarget(application->GetGraphManager(), hwnd_)); } WinNativeWindow::~WinNativeWindow() { @@ -113,7 +116,8 @@ void WinNativeWindow::SetWindowRect(const ui::Rect& rect) { } } -Painter* WinNativeWindow::BeginPaint() { return new WinPainter(this); } +Painter* WinNativeWindow::BeginPaint() { + return new WinPainter(this); } bool WinNativeWindow::HandleNativeWindowMessage(HWND hwnd, UINT msg, WPARAM w_param, LPARAM l_param, diff --git a/src/platform_win/win_painter.cpp b/src/platform_win/win_painter.cpp index 6ce5f4de..7c99146a 100644 --- a/src/platform_win/win_painter.cpp +++ b/src/platform_win/win_painter.cpp @@ -97,6 +97,7 @@ void WinPainter::EndDraw() { if (!IsDisposed()) { ThrowIfFailed(render_target_->EndDraw()); render_target_ = nullptr; + window_->GetWindowRenderTarget()->Present(); is_disposed = true; } } diff --git a/src/platform_win/win_text_layout.cpp b/src/platform_win/win_text_layout.cpp index 7ae87a80..04b5e928 100644 --- a/src/platform_win/win_text_layout.cpp +++ b/src/platform_win/win_text_layout.cpp @@ -17,8 +17,9 @@ WinTextLayout::WinTextLayout(GraphManager* graph_manager, font_descriptor_.swap(font); ThrowIfFailed(graph_manager_->GetDWriteFactory()->CreateTextLayout( - text_.c_str(), text_.size(), font_descriptor_->GetDWriteTextFormat(), - max_width_, max_height_, &text_layout_)); + text_.c_str(), static_cast<UINT32>(text_.size()), + font_descriptor_->GetDWriteTextFormat(), max_width_, max_height_, + &text_layout_)); } std::wstring WinTextLayout::GetText() { return text_; } @@ -26,8 +27,9 @@ std::wstring WinTextLayout::GetText() { return text_; } void WinTextLayout::SetText(std::wstring new_text) { text_.swap(new_text); ThrowIfFailed(graph_manager_->GetDWriteFactory()->CreateTextLayout( - text_.c_str(), text_.size(), font_descriptor_->GetDWriteTextFormat(), - max_width_, max_height_, &text_layout_)); + text_.c_str(), static_cast<UINT32>(text_.size()), + font_descriptor_->GetDWriteTextFormat(), max_width_, max_height_, + &text_layout_)); } std::shared_ptr<FontDescriptor> WinTextLayout::GetFont() { @@ -39,8 +41,9 @@ void WinTextLayout::SetFont(std::shared_ptr<FontDescriptor> font) { assert(f); f.swap(font_descriptor_); ThrowIfFailed(graph_manager_->GetDWriteFactory()->CreateTextLayout( - text_.c_str(), text_.size(), font_descriptor_->GetDWriteTextFormat(), - max_width_, max_height_, &text_layout_)); + text_.c_str(), static_cast<UINT32>(text_.size()), + font_descriptor_->GetDWriteTextFormat(), max_width_, max_height_, + &text_layout_)); } void WinTextLayout::SetMaxWidth(float max_width) { diff --git a/src/platform_win/window_manager.cpp b/src/platform_win/window_manager.cpp index 62a73499..e6c255c3 100644 --- a/src/platform_win/window_manager.cpp +++ b/src/platform_win/window_manager.cpp @@ -2,13 +2,15 @@ #include "cru/platform/win/win_application.hpp" #include "cru/platform/win/win_native_window.hpp" +#include "cru/platform/win/window_class.hpp" #include <assert.h> namespace cru::platform::win { LRESULT __stdcall GeneralWndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) { - auto window = WinApplication::GetInstance()->GetWindowManager()->FromHandle(hWnd); + auto window = + WinApplication::GetInstance()->GetWindowManager()->FromHandle(hWnd); LRESULT result; if (window != nullptr && @@ -21,8 +23,7 @@ LRESULT __stdcall GeneralWndProc(HWND hWnd, UINT Msg, WPARAM wParam, WindowManager::WindowManager(WinApplication* application) { application_ = application; general_window_class_ = std::make_shared<WindowClass>( - L"CruUIWindowClass", GeneralWndProc, - application->GetInstanceHandle()); + L"CruUIWindowClass", GeneralWndProc, application->GetInstanceHandle()); } void WindowManager::RegisterWindow(HWND hwnd, WinNativeWindow* window) { @@ -50,4 +51,4 @@ std::vector<WinNativeWindow*> WindowManager::GetAllWindows() const { for (auto [key, value] : window_map_) windows.push_back(value); return windows; } -} +} // namespace cru::platform::win |