aboutsummaryrefslogtreecommitdiff
path: root/src/platform/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform/gui')
-rw-r--r--src/platform/gui/CMakeLists.txt2
-rw-r--r--src/platform/gui/Input.cpp140
-rw-r--r--src/platform/gui/Keyboard.cpp140
-rw-r--r--src/platform/gui/UiApplication.cpp9
-rw-r--r--src/platform/gui/osx/Window.mm8
-rw-r--r--src/platform/gui/sdl/Window.cpp6
-rw-r--r--src/platform/gui/win/Window.cpp4
-rw-r--r--src/platform/gui/xcb/CMakeLists.txt2
-rw-r--r--src/platform/gui/xcb/Clipboard.cpp4
-rw-r--r--src/platform/gui/xcb/Cursor.cpp1
-rw-r--r--src/platform/gui/xcb/Input.cpp (renamed from src/platform/gui/xcb/Keyboard.cpp)13
-rw-r--r--src/platform/gui/xcb/InputMethod.cpp11
-rw-r--r--src/platform/gui/xcb/UiApplication.cpp3
-rw-r--r--src/platform/gui/xcb/Window.cpp15
14 files changed, 175 insertions, 183 deletions
diff --git a/src/platform/gui/CMakeLists.txt b/src/platform/gui/CMakeLists.txt
index b541428e..70ae62f9 100644
--- a/src/platform/gui/CMakeLists.txt
+++ b/src/platform/gui/CMakeLists.txt
@@ -1,5 +1,5 @@
add_library(CruPlatformGui
- Keyboard.cpp
+ Input.cpp
Menu.cpp
UiApplication.cpp
Window.cpp
diff --git a/src/platform/gui/Input.cpp b/src/platform/gui/Input.cpp
new file mode 100644
index 00000000..a5e25dc8
--- /dev/null
+++ b/src/platform/gui/Input.cpp
@@ -0,0 +1,140 @@
+#include "cru/platform/gui/Input.h"
+
+#include <array>
+#include <string>
+#include <string_view>
+
+namespace cru::platform::gui {
+const std::array<std::string_view, static_cast<int>(KeyCode::NumPad9) + 1>
+ key_code_string_list{"Unknown",
+ "LeftButton",
+ "MiddleButton",
+ "RightButton",
+ "Escape",
+ "F1",
+ "F2",
+ "F3",
+ "F4",
+ "F5",
+ "F6",
+ "F7",
+ "F8",
+ "F9",
+ "F10",
+ "F11",
+ "F12",
+ "N0",
+ "N1",
+ "N2",
+ "N3",
+ "N4",
+ "N5",
+ "N6",
+ "N7",
+ "N8",
+ "N9",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "G",
+ "H",
+ "I",
+ "J",
+ "K",
+ "L",
+ "M",
+ "N",
+ "O",
+ "P",
+ "Q",
+ "R",
+ "S",
+ "T",
+ "U",
+ "V",
+ "W",
+ "X",
+ "Y",
+ "Z",
+ "GraveAccent",
+ "Tab",
+ "CapsLock",
+ "LeftShift",
+ "LeftCtrl",
+ "LeftSuper",
+ "LeftAlt",
+ "Minus",
+ "Equal",
+ "Backspace",
+ "LeftSquareBracket",
+ "RightSquareBracket",
+ "BackSlash",
+ "Semicolon",
+ "Quote",
+ "Comma",
+ "Period",
+ "Slash",
+ "RightShift",
+ "RightCtrl",
+ "RightSuper",
+ "RightAlt",
+ "Insert",
+ "Delete",
+ "Home",
+ "End",
+ "PageUp",
+ "PageDown",
+ "Up",
+ "Left",
+ "Down",
+ "Right",
+ "PrintScreen",
+ "ScrollLock",
+ "Pause",
+ "NumPad0",
+ "NumPad1",
+ "NumPad2",
+ "NumPad3",
+ "NumPad4",
+ "NumPad5",
+ "NumPad6",
+ "NumPad7",
+ "NumPad8",
+ "NumPad9"};
+
+std::string ToString(KeyCode key_code) {
+ if (static_cast<int>(key_code) < 0 ||
+ static_cast<int>(key_code) >=
+ static_cast<int>(key_code_string_list.size()))
+ return "UNKNOWN_KEYCODENAME";
+
+ return std::string(key_code_string_list[static_cast<int>(key_code)]);
+}
+
+std::string ToString(KeyModifier key_modifier, std::string_view separator) {
+ std::vector<std::string> list;
+ if (key_modifier & KeyModifiers::Shift) {
+ list.push_back("Shift");
+ }
+
+ if (key_modifier & KeyModifiers::Ctrl) {
+ list.push_back("Ctrl");
+ }
+
+ if (key_modifier & KeyModifiers::Alt) {
+ list.push_back("Shift");
+ }
+
+ if (list.empty()) return "";
+ std::string result = list.front();
+ for (auto iter = list.cbegin() + 1; iter != list.cend(); ++iter) {
+ result += separator;
+ result += *iter;
+ }
+
+ return result;
+}
+} // namespace cru::platform::gui
diff --git a/src/platform/gui/Keyboard.cpp b/src/platform/gui/Keyboard.cpp
deleted file mode 100644
index 775995c2..00000000
--- a/src/platform/gui/Keyboard.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-#include "cru/platform/gui/Keyboard.h"
-
-#include <array>
-#include <string>
-#include <string_view>
-
-namespace cru::platform::gui {
-const std::array<StringView, static_cast<int>(KeyCode::NumPad9) + 1>
- key_code_string_list{u"Unknown",
- u"LeftButton",
- u"MiddleButton",
- u"RightButton",
- u"Escape",
- u"F1",
- u"F2",
- u"F3",
- u"F4",
- u"F5",
- u"F6",
- u"F7",
- u"F8",
- u"F9",
- u"F10",
- u"F11",
- u"F12",
- u"N0",
- u"N1",
- u"N2",
- u"N3",
- u"N4",
- u"N5",
- u"N6",
- u"N7",
- u"N8",
- u"N9",
- u"A",
- u"B",
- u"C",
- u"D",
- u"E",
- u"F",
- u"G",
- u"H",
- u"I",
- u"J",
- u"K",
- u"L",
- u"M",
- u"N",
- u"O",
- u"P",
- u"Q",
- u"R",
- u"S",
- u"T",
- u"U",
- u"V",
- u"W",
- u"X",
- u"Y",
- u"Z",
- u"GraveAccent",
- u"Tab",
- u"CapsLock",
- u"LeftShift",
- u"LeftCtrl",
- u"LeftSuper",
- u"LeftAlt",
- u"Minus",
- u"Equal",
- u"Backspace",
- u"LeftSquareBracket",
- u"RightSquareBracket",
- u"BackSlash",
- u"Semicolon",
- u"Quote",
- u"Comma",
- u"Period",
- u"Slash",
- u"RightShift",
- u"RightCtrl",
- u"RightSuper",
- u"RightAlt",
- u"Insert",
- u"Delete",
- u"Home",
- u"End",
- u"PageUp",
- u"PageDown",
- u"Up",
- u"Left",
- u"Down",
- u"Right",
- u"PrintScreen",
- u"ScrollLock",
- u"Pause",
- u"NumPad0",
- u"NumPad1",
- u"NumPad2",
- u"NumPad3",
- u"NumPad4",
- u"NumPad5",
- u"NumPad6",
- u"NumPad7",
- u"NumPad8",
- u"NumPad9"};
-
-String ToString(KeyCode key_code) {
- if (static_cast<int>(key_code) < 0 ||
- static_cast<int>(key_code) >=
- static_cast<int>(key_code_string_list.size()))
- return u"UNKNOWN_KEYCODENAME";
-
- return key_code_string_list[static_cast<int>(key_code)].ToString();
-}
-
-String ToString(KeyModifier key_modifier, StringView separator) {
- std::vector<String> list;
- if (key_modifier & KeyModifiers::shift) {
- list.push_back(u"Shift");
- }
-
- if (key_modifier & KeyModifiers::ctrl) {
- list.push_back(u"Ctrl");
- }
-
- if (key_modifier & KeyModifiers::alt) {
- list.push_back(u"Shift");
- }
-
- if (list.empty()) return u"";
- String result = list.front();
- for (auto iter = list.cbegin() + 1; iter != list.cend(); ++iter) {
- result += separator;
- result += *iter;
- }
-
- return result;
-}
-} // namespace cru::platform::gui
diff --git a/src/platform/gui/UiApplication.cpp b/src/platform/gui/UiApplication.cpp
index ac93a57d..086440c0 100644
--- a/src/platform/gui/UiApplication.cpp
+++ b/src/platform/gui/UiApplication.cpp
@@ -1,5 +1,6 @@
#include "cru/platform/gui/UiApplication.h"
+#include "cru/base/Base.h"
#include "cru/base/Exception.h"
namespace cru::platform::gui {
@@ -22,13 +23,13 @@ IUiApplication::~IUiApplication() { instance = nullptr; }
IMenu* IUiApplication::GetApplicationMenu() { return nullptr; }
-std::optional<String> IUiApplication::ShowSaveDialog(
+std::optional<std::string> IUiApplication::ShowSaveDialog(
SaveDialogOptions options) {
- throw Exception("Not implemented.");
+ NotImplemented();
}
-std::optional<std::vector<String>> IUiApplication::ShowOpenDialog(
+std::optional<std::vector<std::string>> IUiApplication::ShowOpenDialog(
OpenDialogOptions options) {
- throw Exception("Not implemented.");
+ NotImplemented();
}
} // namespace cru::platform::gui
diff --git a/src/platform/gui/osx/Window.mm b/src/platform/gui/osx/Window.mm
index 7381ca55..6559cf70 100644
--- a/src/platform/gui/osx/Window.mm
+++ b/src/platform/gui/osx/Window.mm
@@ -64,7 +64,7 @@ void OsxWindowPrivate::OnWindowWillClose() {
bool quit = true;
for (auto window : all_window) {
- auto w = CheckPlatform<OsxWindow>(window, osx_window_->GetPlatformIdUtf8());
+ auto w = CheckPlatform<OsxWindow>(window, osx_window_->GetPlatformId());
if (w->p_->window_) {
quit = false;
break;
@@ -179,7 +179,7 @@ void OsxWindowPrivate::CreateWindow() {
[window_ setDelegate:window_delegate_];
if (parent_) {
- auto parent = CheckPlatform<OsxWindow>(parent_, this->osx_window_->GetPlatformIdUtf8());
+ auto parent = CheckPlatform<OsxWindow>(parent_, this->osx_window_->GetPlatformId());
[window_ setParentWindow:parent->p_->window_];
}
@@ -231,7 +231,7 @@ void OsxWindow::Close() {
INativeWindow* OsxWindow::GetParent() { return p_->parent_; }
void OsxWindow::SetParent(INativeWindow* parent) {
- auto p = CheckPlatform<OsxWindow>(parent, GetPlatformIdUtf8());
+ auto p = CheckPlatform<OsxWindow>(parent, GetPlatformId());
p_->parent_ = parent;
@@ -366,7 +366,7 @@ bool OsxWindow::CaptureMouse() { return true; }
bool OsxWindow::ReleaseMouse() { return true; }
void OsxWindow::SetCursor(std::shared_ptr<ICursor> cursor) {
- p_->cursor_ = CheckPlatform<OsxCursor>(cursor, GetPlatformIdUtf8());
+ p_->cursor_ = CheckPlatform<OsxCursor>(cursor, GetPlatformId());
p_->UpdateCursor();
}
diff --git a/src/platform/gui/sdl/Window.cpp b/src/platform/gui/sdl/Window.cpp
index e802b82f..84cf0ad4 100644
--- a/src/platform/gui/sdl/Window.cpp
+++ b/src/platform/gui/sdl/Window.cpp
@@ -35,7 +35,7 @@ void SdlWindow::Close() {
INativeWindow *SdlWindow::GetParent() { return parent_; }
void SdlWindow::SetParent(INativeWindow *parent) {
- parent_ = CheckPlatform<SdlWindow>(parent, GetPlatformIdUtf8());
+ parent_ = CheckPlatform<SdlWindow>(parent, GetPlatformId());
NotImplemented();
}
@@ -46,9 +46,9 @@ void SdlWindow::SetStyleFlag(WindowStyleFlag flag) {
NotImplemented();
}
-String SdlWindow::GetTitle() { NotImplemented(); }
+std::string SdlWindow::GetTitle() { NotImplemented(); }
-void SdlWindow::SetTitle(String title) { NotImplemented(); }
+void SdlWindow::SetTitle(std::string title) { NotImplemented(); }
WindowVisibilityType SdlWindow::GetVisibility() { NotImplemented(); }
diff --git a/src/platform/gui/win/Window.cpp b/src/platform/gui/win/Window.cpp
index 5739d0f3..eeb2cde4 100644
--- a/src/platform/gui/win/Window.cpp
+++ b/src/platform/gui/win/Window.cpp
@@ -79,7 +79,7 @@ void WinNativeWindow::Close() {
}
void WinNativeWindow::SetParent(INativeWindow* parent) {
- auto p = CheckPlatform<WinNativeWindow>(parent, GetPlatformIdUtf8());
+ auto p = CheckPlatform<WinNativeWindow>(parent, GetPlatformId());
parent_window_ = p;
if (hwnd_) {
@@ -228,7 +228,7 @@ void WinNativeWindow::SetCursor(std::shared_ptr<ICursor> cursor) {
throw std::runtime_error("Can't use a nullptr as cursor.");
}
- cursor_ = CheckPlatform<WinCursor>(cursor, GetPlatformIdUtf8());
+ cursor_ = CheckPlatform<WinCursor>(cursor, GetPlatformId());
if (hwnd_) return;
diff --git a/src/platform/gui/xcb/CMakeLists.txt b/src/platform/gui/xcb/CMakeLists.txt
index cafc2e67..676fc7b1 100644
--- a/src/platform/gui/xcb/CMakeLists.txt
+++ b/src/platform/gui/xcb/CMakeLists.txt
@@ -6,8 +6,8 @@ find_library(LIBRARY_XKBCOMMON_X11 xkbcommon-x11 REQUIRED)
add_library(CruPlatformGuiXcb
Clipboard.cpp
Cursor.cpp
+ Input.cpp
InputMethod.cpp
- Keyboard.cpp
UiApplication.cpp
Window.cpp
)
diff --git a/src/platform/gui/xcb/Clipboard.cpp b/src/platform/gui/xcb/Clipboard.cpp
index d0d9d74f..a42130ab 100644
--- a/src/platform/gui/xcb/Clipboard.cpp
+++ b/src/platform/gui/xcb/Clipboard.cpp
@@ -7,7 +7,7 @@ XcbClipboard::XcbClipboard(XcbUiApplication* application)
XcbClipboard::~XcbClipboard() {}
-String XcbClipboard::GetText() { return String{}; }
+std::string XcbClipboard::GetText() { return {}; }
-void XcbClipboard::SetText(String text) {}
+void XcbClipboard::SetText(std::string text) {}
} // namespace cru::platform::gui::xcb
diff --git a/src/platform/gui/xcb/Cursor.cpp b/src/platform/gui/xcb/Cursor.cpp
index 5582c6a6..69d904df 100644
--- a/src/platform/gui/xcb/Cursor.cpp
+++ b/src/platform/gui/xcb/Cursor.cpp
@@ -1,6 +1,5 @@
#include "cru/platform/gui/xcb/Cursor.h"
#include "cru/base/Exception.h"
-#include "cru/platform/gui/Cursor.h"
#include "cru/platform/gui/xcb/UiApplication.h"
#include <xcb/xcb.h>
diff --git a/src/platform/gui/xcb/Keyboard.cpp b/src/platform/gui/xcb/Input.cpp
index 4bfc448c..9b6d76c2 100644
--- a/src/platform/gui/xcb/Keyboard.cpp
+++ b/src/platform/gui/xcb/Input.cpp
@@ -1,7 +1,6 @@
-#include "cru/platform/gui/xcb/Keyboard.h"
+#include "cru/platform/gui/xcb/Input.h"
#include "cru/base/Exception.h"
#include "cru/base/Guard.h"
-#include "cru/platform/gui/Keyboard.h"
#include "cru/platform/gui/xcb/UiApplication.h"
#include <xcb/xcb.h>
@@ -200,11 +199,11 @@ KeyModifier ConvertModifiersOfEvent(uint32_t mask) {
// "Shift", "Lock", "Ctrl", "Alt", "Mod2", "Mod3", "Mod4",
// "Mod5", "Button1", "Button2", "Button3", "Button4", "Button5"};
constexpr KeyModifier MODIFIERS[] = {
- KeyModifiers::Shift, KeyModifiers::none, KeyModifiers::Ctrl,
- KeyModifiers::Alt, KeyModifiers::none, KeyModifiers::none,
- KeyModifiers::none, KeyModifiers::none, KeyModifiers::none,
- KeyModifiers::none, KeyModifiers::none, KeyModifiers::none,
- KeyModifiers::none,
+ KeyModifiers::Shift, KeyModifiers::None, KeyModifiers::Ctrl,
+ KeyModifiers::Alt, KeyModifiers::None, KeyModifiers::None,
+ KeyModifiers::None, KeyModifiers::None, KeyModifiers::None,
+ KeyModifiers::None, KeyModifiers::None, KeyModifiers::None,
+ KeyModifiers::None,
};
KeyModifier result;
diff --git a/src/platform/gui/xcb/InputMethod.cpp b/src/platform/gui/xcb/InputMethod.cpp
index 16d6b4bd..5ee06ab4 100644
--- a/src/platform/gui/xcb/InputMethod.cpp
+++ b/src/platform/gui/xcb/InputMethod.cpp
@@ -1,10 +1,7 @@
#include "cru/platform/gui/xcb/InputMethod.h"
#include "cru/base/log/Logger.h"
#include "cru/platform/Check.h"
-#include "cru/platform/gui/InputMethod.h"
-#include "cru/platform/gui/Keyboard.h"
-#include "cru/platform/gui/Window.h"
-#include "cru/platform/gui/xcb/Keyboard.h"
+#include "cru/platform/gui/xcb/Input.h"
#include "cru/platform/gui/xcb/UiApplication.h"
#include "cru/platform/gui/xcb/Window.h"
@@ -99,7 +96,7 @@ void XcbXimInputMethodManager::DispatchCommit(xcb_xim_t *im, xcb_xic_t ic,
if (focus_context_) {
focus_context_->composition_event_.Raise(nullptr);
focus_context_->composition_end_event_.Raise(nullptr);
- focus_context_->text_event_.Raise(String::FromUtf8(text));
+ focus_context_->text_event_.Raise(std::move(text));
}
}
@@ -135,7 +132,7 @@ XcbXimInputMethodContext::XcbXimInputMethodContext(
window->FocusEvent()->AddHandler([this, window](FocusChangeType type) {
auto context = CheckPlatform<XcbXimInputMethodContext>(
- window->GetInputMethodContext(), GetPlatformIdUtf8());
+ window->GetInputMethodContext(), GetPlatformId());
if (type == FocusChangeType::Gain) {
SetFocus();
}
@@ -208,7 +205,7 @@ IEvent<std::nullptr_t> *XcbXimInputMethodContext::CompositionEvent() {
return &composition_event_;
}
-IEvent<StringView> *XcbXimInputMethodContext::TextEvent() {
+IEvent<std::string> *XcbXimInputMethodContext::TextEvent() {
return &text_event_;
}
diff --git a/src/platform/gui/xcb/UiApplication.cpp b/src/platform/gui/xcb/UiApplication.cpp
index a0a949b7..436bb335 100644
--- a/src/platform/gui/xcb/UiApplication.cpp
+++ b/src/platform/gui/xcb/UiApplication.cpp
@@ -1,13 +1,12 @@
#include "cru/platform/gui/xcb/UiApplication.h"
-#include "cru/base/Base.h"
#include "cru/base/Guard.h"
#include "cru/platform/graphics/cairo/CairoGraphicsFactory.h"
#include "cru/platform/gui/Window.h"
#include "cru/platform/gui/xcb/Clipboard.h"
#include "cru/platform/gui/xcb/Cursor.h"
+#include "cru/platform/gui/xcb/Input.h"
#include "cru/platform/gui/xcb/InputMethod.h"
-#include "cru/platform/gui/xcb/Keyboard.h"
#include "cru/platform/gui/xcb/Window.h"
#include <poll.h>
diff --git a/src/platform/gui/xcb/Window.cpp b/src/platform/gui/xcb/Window.cpp
index 6458046b..003afc40 100644
--- a/src/platform/gui/xcb/Window.cpp
+++ b/src/platform/gui/xcb/Window.cpp
@@ -7,12 +7,9 @@
#include "cru/platform/graphics/NullPainter.h"
#include "cru/platform/graphics/Painter.h"
#include "cru/platform/graphics/cairo/CairoPainter.h"
-#include "cru/platform/gui/Base.h"
-#include "cru/platform/gui/Keyboard.h"
-#include "cru/platform/gui/Window.h"
#include "cru/platform/gui/xcb/Cursor.h"
+#include "cru/platform/gui/xcb/Input.h"
#include "cru/platform/gui/xcb/InputMethod.h"
-#include "cru/platform/gui/xcb/Keyboard.h"
#include "cru/platform/gui/xcb/UiApplication.h"
#include <cairo-xcb.h>
@@ -73,7 +70,7 @@ void XcbWindow::Close() {
INativeWindow *XcbWindow::GetParent() { return parent_; }
void XcbWindow::SetParent(INativeWindow *parent) {
- parent_ = CheckPlatform<XcbWindow>(parent, GetPlatformIdUtf8());
+ parent_ = CheckPlatform<XcbWindow>(parent, GetPlatformId());
if (xcb_window_) {
DoSetParent(*xcb_window_);
}
@@ -90,10 +87,10 @@ void XcbWindow::SetStyleFlag(WindowStyleFlag flag) {
application_->XcbFlush();
}
-String XcbWindow::GetTitle() { return String::FromUtf8(title_); }
+std::string XcbWindow::GetTitle() { return title_; }
-void XcbWindow::SetTitle(String title) {
- title_ = title.ToUtf8();
+void XcbWindow::SetTitle(std::string title) {
+ title_ = std::move(title);
if (xcb_window_) {
DoSetTitle(*xcb_window_);
}
@@ -271,7 +268,7 @@ bool XcbWindow::ReleaseMouse() {
void XcbWindow::SetCursor(std::shared_ptr<ICursor> cursor) {
if (!xcb_window_) return;
- auto xcb_cursor = CheckPlatform<XcbCursor>(cursor, GetPlatformIdUtf8());
+ auto xcb_cursor = CheckPlatform<XcbCursor>(cursor, GetPlatformId());
cursor_ = xcb_cursor;
DoSetCursor(*xcb_window_, xcb_cursor.get());
}