aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/native
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-04-20 01:17:28 +0800
committercrupest <crupest@outlook.com>2020-04-20 01:17:28 +0800
commit857adcb7ee2d45b2e29d4250fa4246bb8861a8f9 (patch)
tree2ebe62c58768ded27c5c6b15d1ab04400c9ecf9b /include/cru/platform/native
parent494d2db1c1203acc9d9f2b127b75c6df6160057a (diff)
downloadcru-857adcb7ee2d45b2e29d4250fa4246bb8861a8f9.tar.gz
cru-857adcb7ee2d45b2e29d4250fa4246bb8861a8f9.tar.bz2
cru-857adcb7ee2d45b2e29d4250fa4246bb8861a8f9.zip
...
Diffstat (limited to 'include/cru/platform/native')
-rw-r--r--include/cru/platform/native/input_method.hpp19
-rw-r--r--include/cru/platform/native/ui_application.hpp3
-rw-r--r--include/cru/platform/native/window.hpp4
3 files changed, 24 insertions, 2 deletions
diff --git a/include/cru/platform/native/input_method.hpp b/include/cru/platform/native/input_method.hpp
index 48895f84..4034be4e 100644
--- a/include/cru/platform/native/input_method.hpp
+++ b/include/cru/platform/native/input_method.hpp
@@ -1,8 +1,10 @@
#pragma once
#include "../resource.hpp"
#include "base.hpp"
+
#include "cru/common/event.hpp"
+#include <iostream>
#include <memory>
#include <vector>
@@ -21,6 +23,23 @@ struct CompositionText {
TextRange selection;
};
+inline std::ostream& operator<<(std::ostream& stream,
+ const CompositionText& composition_text) {
+ stream << "text: " << composition_text.text << "\n"
+ << "clauses:\n";
+ for (int i = 0; i < composition_text.clauses.size(); i++) {
+ const auto& clause = composition_text.clauses[i];
+ stream << "\t" << i << ". start:" << clause.start << " end:" << clause.end;
+ if (clause.target) {
+ stream << " target";
+ }
+ stream << "\n";
+ }
+ stream << "selection: position:" << composition_text.selection.position
+ << " count:" << composition_text.selection.count;
+ return stream;
+}
+
struct IInputMethodContext : virtual INativeResource {
// Return true if you should draw composition text manually. Return false if
// system will take care of that for you.
diff --git a/include/cru/platform/native/ui_application.hpp b/include/cru/platform/native/ui_application.hpp
index 92222929..006255db 100644
--- a/include/cru/platform/native/ui_application.hpp
+++ b/include/cru/platform/native/ui_application.hpp
@@ -47,4 +47,7 @@ struct IUiApplication : public virtual INativeResource {
virtual ICursorManager* GetCursorManager() = 0;
virtual IInputMethodManager* GetInputMethodManager() = 0;
};
+
+// Bootstrap from this.
+std::unique_ptr<IUiApplication> CreateUiApplication();
} // namespace cru::platform::native
diff --git a/include/cru/platform/native/window.hpp b/include/cru/platform/native/window.hpp
index dcb9effa..49b00023 100644
--- a/include/cru/platform/native/window.hpp
+++ b/include/cru/platform/native/window.hpp
@@ -3,7 +3,7 @@
#include "base.hpp"
#include "cru/common/event.hpp"
-#include <string>
+#include <string_view>
namespace cru::platform::native {
// Represents a native window, which exposes some low-level events and
@@ -57,7 +57,7 @@ struct INativeWindow : virtual INativeResource {
virtual IEvent<NativeMouseButtonEventArgs>* MouseUpEvent() = 0;
virtual IEvent<NativeKeyEventArgs>* KeyDownEvent() = 0;
virtual IEvent<NativeKeyEventArgs>* KeyUpEvent() = 0;
- virtual IEvent<std::string>* CharEvent() = 0;
+ virtual IEvent<std::string_view>* CharEvent() = 0;
};
// See INativeWindow for more info.