aboutsummaryrefslogtreecommitdiff
path: root/include/cru/win
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-04-05 23:35:15 +0800
committercrupest <crupest@outlook.com>2020-04-05 23:35:15 +0800
commit41e17e281ba31e9eff612017f5a2dafd847278b0 (patch)
treef0736679652abbfa1beeef3aa3d7dabfae8da0b9 /include/cru/win
parente9590859b1aaa1c2bf4714893daf34fbfd4166fd (diff)
downloadcru-41e17e281ba31e9eff612017f5a2dafd847278b0.tar.gz
cru-41e17e281ba31e9eff612017f5a2dafd847278b0.tar.bz2
cru-41e17e281ba31e9eff612017f5a2dafd847278b0.zip
...
Diffstat (limited to 'include/cru/win')
-rw-r--r--include/cru/win/native/base.hpp19
-rw-r--r--include/cru/win/native/god_window.hpp7
-rw-r--r--include/cru/win/native/input_method.hpp19
-rw-r--r--include/cru/win/native/keyboard.hpp2
-rw-r--r--include/cru/win/native/resource.hpp2
-rw-r--r--include/cru/win/native/ui_application.hpp7
-rw-r--r--include/cru/win/native/window.hpp7
-rw-r--r--include/cru/win/native/window_class.hpp4
-rw-r--r--include/cru/win/native/window_render_target.hpp8
9 files changed, 45 insertions, 30 deletions
diff --git a/include/cru/win/native/base.hpp b/include/cru/win/native/base.hpp
new file mode 100644
index 00000000..61c9f4da
--- /dev/null
+++ b/include/cru/win/native/base.hpp
@@ -0,0 +1,19 @@
+#pragma once
+#include "../win_pre_config.hpp"
+
+#include "cru/common/base.hpp"
+
+namespace cru::platform::native::win {
+class GodWindow;
+class TimerManager;
+class WinCursor;
+class WinCursorManager;
+class WindowClass;
+class WindowManager;
+class WindowRenderTarget;
+class WinNativeWindow;
+class WinNativeWindowResolver;
+class WinUiApplication;
+class WinInputMethodManager;
+class WinInputMethodContextRef;
+} // namespace cru::platform::native::win
diff --git a/include/cru/win/native/god_window.hpp b/include/cru/win/native/god_window.hpp
index 3cf97e0b..33218a55 100644
--- a/include/cru/win/native/god_window.hpp
+++ b/include/cru/win/native/god_window.hpp
@@ -1,14 +1,9 @@
#pragma once
-#include "../win_pre_config.hpp"
-
-#include "cru/common/base.hpp"
+#include "base.hpp"
#include <memory>
namespace cru::platform::native::win {
-class WinUiApplication;
-class WindowClass;
-
class GodWindow : public Object {
public:
explicit GodWindow(WinUiApplication* application);
diff --git a/include/cru/win/native/input_method.hpp b/include/cru/win/native/input_method.hpp
index a0b18d63..7dc9526a 100644
--- a/include/cru/win/native/input_method.hpp
+++ b/include/cru/win/native/input_method.hpp
@@ -10,10 +10,8 @@
#include <imm.h>
namespace cru::platform::native::win {
-class WinNativeWindow;
-
class WinInputMethodContextRef : public WinNativeResource,
- public IInputMethodContextRef {
+ public virtual IInputMethodContextRef {
public:
WinInputMethodContextRef(WinNativeWindow* window);
@@ -53,4 +51,19 @@ class WinInputMethodContextRef : public WinNativeResource,
Event<std::nullptr_t> composition_end_event_;
Event<std::string> composition_text_change_event_;
};
+
+class WinInputMethodManager : public WinNativeResource,
+ public virtual IInputMethodManager {
+ public:
+ WinInputMethodManager(WinUiApplication* application);
+
+ CRU_DELETE_COPY(WinInputMethodManager)
+ CRU_DELETE_MOVE(WinInputMethodManager)
+
+ ~WinInputMethodManager() override;
+
+ public:
+ std::unique_ptr<IInputMethodContextRef> GetContext(
+ INativeWindow* window) override;
+};
} // namespace cru::platform::native::win
diff --git a/include/cru/win/native/keyboard.hpp b/include/cru/win/native/keyboard.hpp
index 2d5cc151..afa51c92 100644
--- a/include/cru/win/native/keyboard.hpp
+++ b/include/cru/win/native/keyboard.hpp
@@ -1,5 +1,5 @@
#pragma once
-#include "../win_pre_config.hpp"
+#include "base.hpp"
#include "cru/platform/native/keyboard.hpp"
diff --git a/include/cru/win/native/resource.hpp b/include/cru/win/native/resource.hpp
index 2c76fe6b..5601e40e 100644
--- a/include/cru/win/native/resource.hpp
+++ b/include/cru/win/native/resource.hpp
@@ -1,5 +1,5 @@
#pragma once
-#include "../win_pre_config.hpp"
+#include "base.hpp"
#include "cru/platform/resource.hpp"
diff --git a/include/cru/win/native/ui_application.hpp b/include/cru/win/native/ui_application.hpp
index 8de9d1b5..1c54cc05 100644
--- a/include/cru/win/native/ui_application.hpp
+++ b/include/cru/win/native/ui_application.hpp
@@ -10,11 +10,6 @@ class DirectGraphFactory;
}
namespace cru::platform::native::win {
-class GodWindow;
-class TimerManager;
-class WindowManager;
-class WinCursorManager;
-
class WinUiApplication : public WinNativeResource,
public virtual IUiApplication {
public:
@@ -55,6 +50,7 @@ class WinUiApplication : public WinNativeResource,
}
ICursorManager* GetCursorManager() override;
+ IInputMethodManager* GetInputMethodManager() override;
HINSTANCE GetInstanceHandle() const { return instance_handle_; }
@@ -73,6 +69,7 @@ class WinUiApplication : public WinNativeResource,
std::unique_ptr<WindowManager> window_manager_;
std::unique_ptr<WinCursorManager> cursor_manager_;
+ std::unique_ptr<WinInputMethodManager> input_method_manager_;
std::vector<std::function<void()>> quit_handlers_;
};
diff --git a/include/cru/win/native/window.hpp b/include/cru/win/native/window.hpp
index a27a3384..2129895c 100644
--- a/include/cru/win/native/window.hpp
+++ b/include/cru/win/native/window.hpp
@@ -7,13 +7,6 @@
#include <memory>
namespace cru::platform::native::win {
-class WinUiApplication;
-class WinCursor;
-class WindowClass;
-class WindowManager;
-class WindowRenderTarget;
-class WinNativeWindowResolver;
-
class WinNativeWindow : public WinNativeResource, public virtual INativeWindow {
public:
WinNativeWindow(WinUiApplication* application, WindowClass* window_class,
diff --git a/include/cru/win/native/window_class.hpp b/include/cru/win/native/window_class.hpp
index fd5102a5..2140c304 100644
--- a/include/cru/win/native/window_class.hpp
+++ b/include/cru/win/native/window_class.hpp
@@ -1,7 +1,5 @@
#pragma once
-#include "../win_pre_config.hpp"
-
-#include "cru/common/base.hpp"
+#include "base.hpp"
#include <string>
diff --git a/include/cru/win/native/window_render_target.hpp b/include/cru/win/native/window_render_target.hpp
index ab1d68ef..552e87bc 100644
--- a/include/cru/win/native/window_render_target.hpp
+++ b/include/cru/win/native/window_render_target.hpp
@@ -1,7 +1,5 @@
#pragma once
-#include "../win_pre_config.hpp"
-
-#include "cru/common/base.hpp"
+#include "base.hpp"
namespace cru::platform::graph::win::direct {
class DirectGraphFactory;
@@ -24,7 +22,9 @@ class WindowRenderTarget : public Object {
return factory_;
}
- ID2D1DeviceContext* GetD2D1DeviceContext() { return d2d1_device_context_.Get(); }
+ ID2D1DeviceContext* GetD2D1DeviceContext() {
+ return d2d1_device_context_.Get();
+ }
// Resize the underlying buffer.
void ResizeBuffer(int width, int height);