diff options
Diffstat (limited to 'src/platform/gui')
-rw-r--r-- | src/platform/gui/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/platform/gui/Input.cpp | 140 | ||||
-rw-r--r-- | src/platform/gui/Keyboard.cpp | 140 | ||||
-rw-r--r-- | src/platform/gui/UiApplication.cpp | 9 | ||||
-rw-r--r-- | src/platform/gui/osx/Window.mm | 8 | ||||
-rw-r--r-- | src/platform/gui/sdl/Window.cpp | 6 | ||||
-rw-r--r-- | src/platform/gui/win/Window.cpp | 4 | ||||
-rw-r--r-- | src/platform/gui/xcb/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/platform/gui/xcb/Clipboard.cpp | 4 | ||||
-rw-r--r-- | src/platform/gui/xcb/Cursor.cpp | 1 | ||||
-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.cpp | 11 | ||||
-rw-r--r-- | src/platform/gui/xcb/UiApplication.cpp | 3 | ||||
-rw-r--r-- | src/platform/gui/xcb/Window.cpp | 15 |
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()); } |