From e37bdf6bd2c5aa7037a453a31363e4208499698f Mon Sep 17 00:00:00 2001 From: lisyarus Date: Tue, 18 Jul 2023 15:24:20 +0300 Subject: [PATCH] Add touch events --- libs/app/include/psemek/app/application_base.hpp | 1 + libs/app/include/psemek/app/event_handler.hpp | 1 + libs/app/include/psemek/app/event_state.hpp | 3 +++ libs/app/include/psemek/app/events.hpp | 5 +++++ libs/app/include/psemek/app/scene_application.hpp | 1 + libs/app/source/application_base.cpp | 5 +++++ libs/app/source/scene_application.cpp | 5 +++++ 7 files changed, 21 insertions(+) diff --git a/libs/app/include/psemek/app/application_base.hpp b/libs/app/include/psemek/app/application_base.hpp index 2ca21143..077922c2 100644 --- a/libs/app/include/psemek/app/application_base.hpp +++ b/libs/app/include/psemek/app/application_base.hpp @@ -16,6 +16,7 @@ namespace psemek::app void on_event(mouse_move_event const &) override; void on_event(mouse_wheel_event const &) override; void on_event(mouse_button_event const &) override; + void on_event(touch_event const &) override; void on_event(key_event const &) override; void stop() override; diff --git a/libs/app/include/psemek/app/event_handler.hpp b/libs/app/include/psemek/app/event_handler.hpp index 33137872..8a6e4775 100644 --- a/libs/app/include/psemek/app/event_handler.hpp +++ b/libs/app/include/psemek/app/event_handler.hpp @@ -12,6 +12,7 @@ namespace psemek::app virtual void on_event(mouse_move_event const &) {} virtual void on_event(mouse_wheel_event const &) {} virtual void on_event(mouse_button_event const &) {} + virtual void on_event(touch_event const &) {} virtual void on_event(key_event const &) {} virtual ~event_handler() {} diff --git a/libs/app/include/psemek/app/event_state.hpp b/libs/app/include/psemek/app/event_state.hpp index aa0277ac..d8738497 100644 --- a/libs/app/include/psemek/app/event_state.hpp +++ b/libs/app/include/psemek/app/event_state.hpp @@ -45,6 +45,9 @@ namespace psemek::app state.mouse_button_down.erase(event.button); } + inline void apply(event_state &, touch_event const &) + {} + inline void apply(event_state & state, key_event const & event) { if (event.down) diff --git a/libs/app/include/psemek/app/events.hpp b/libs/app/include/psemek/app/events.hpp index 4c94d514..7d5df1bc 100644 --- a/libs/app/include/psemek/app/events.hpp +++ b/libs/app/include/psemek/app/events.hpp @@ -38,6 +38,11 @@ namespace psemek::app bool down; }; + struct touch_event + { + geom::point position; + }; + enum class keycode { // TODO diff --git a/libs/app/include/psemek/app/scene_application.hpp b/libs/app/include/psemek/app/scene_application.hpp index b8c6a8ae..992da93a 100644 --- a/libs/app/include/psemek/app/scene_application.hpp +++ b/libs/app/include/psemek/app/scene_application.hpp @@ -14,6 +14,7 @@ namespace psemek::app void on_event(mouse_move_event const &) override; void on_event(mouse_wheel_event const &) override; void on_event(mouse_button_event const &) override; + void on_event(touch_event const &) override; void on_event(key_event const &) override; void update() override; diff --git a/libs/app/source/application_base.cpp b/libs/app/source/application_base.cpp index eacd4a08..512cdf2d 100644 --- a/libs/app/source/application_base.cpp +++ b/libs/app/source/application_base.cpp @@ -28,6 +28,11 @@ namespace psemek::app apply(state_, event); } + void application_base::on_event(touch_event const & event) + { + apply(state_, event); + } + void application_base::on_event(key_event const & event) { apply(state_, event); diff --git a/libs/app/source/scene_application.cpp b/libs/app/source/scene_application.cpp index 70ff4990..a6024df8 100644 --- a/libs/app/source/scene_application.cpp +++ b/libs/app/source/scene_application.cpp @@ -28,6 +28,11 @@ namespace psemek::app on_event_impl(event); } + void scene_application::on_event(touch_event const & event) + { + on_event_impl(event); + } + void scene_application::on_event(key_event const & event) { on_event_impl(event);