aboutsummaryrefslogtreecommitdiff
path: root/src/platform_win
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform_win')
-rw-r--r--src/platform_win/win_application.cpp2
-rw-r--r--src/platform_win/win_native_window.cpp6
-rw-r--r--src/platform_win/win_painter.cpp1
-rw-r--r--src/platform_win/win_text_layout.cpp15
-rw-r--r--src/platform_win/window_manager.cpp9
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