summaryrefslogtreecommitdiffstats
path: root/xbmc/input/touch/generic/GenericTouchActionHandler.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 18:07:22 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 18:07:22 +0000
commitc04dcc2e7d834218ef2d4194331e383402495ae1 (patch)
tree7333e38d10d75386e60f336b80c2443c1166031d /xbmc/input/touch/generic/GenericTouchActionHandler.h
parentInitial commit. (diff)
downloadkodi-c04dcc2e7d834218ef2d4194331e383402495ae1.tar.xz
kodi-c04dcc2e7d834218ef2d4194331e383402495ae1.zip
Adding upstream version 2:20.4+dfsg.upstream/2%20.4+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'xbmc/input/touch/generic/GenericTouchActionHandler.h')
-rw-r--r--xbmc/input/touch/generic/GenericTouchActionHandler.h94
1 files changed, 94 insertions, 0 deletions
diff --git a/xbmc/input/touch/generic/GenericTouchActionHandler.h b/xbmc/input/touch/generic/GenericTouchActionHandler.h
new file mode 100644
index 0000000..e8697ce
--- /dev/null
+++ b/xbmc/input/touch/generic/GenericTouchActionHandler.h
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2013-2018 Team Kodi
+ * This file is part of Kodi - https://kodi.tv
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ * See LICENSES/README.md for more information.
+ */
+
+#pragma once
+
+#include "input/touch/ITouchActionHandler.h"
+
+/*!
+ * \ingroup touch_generic
+ * \brief Generic implementation of ITouchActionHandler to translate
+ * touch actions into XBMC specific and mappable actions.
+ *
+ * \sa ITouchActionHandler
+ */
+class CGenericTouchActionHandler : public ITouchActionHandler
+{
+public:
+ /*!
+ \brief Get an instance of the touch input manager
+ */
+ static CGenericTouchActionHandler& GetInstance();
+
+ // implementation of ITouchActionHandler
+ void OnTouchAbort() override;
+
+ bool OnSingleTouchStart(float x, float y) override;
+ bool OnSingleTouchHold(float x, float y) override;
+ bool OnSingleTouchMove(
+ float x, float y, float offsetX, float offsetY, float velocityX, float velocityY) override;
+ bool OnSingleTouchEnd(float x, float y) override;
+
+ bool OnMultiTouchDown(float x, float y, int32_t pointer) override;
+ bool OnMultiTouchHold(float x, float y, int32_t pointers = 2) override;
+ bool OnMultiTouchMove(float x,
+ float y,
+ float offsetX,
+ float offsetY,
+ float velocityX,
+ float velocityY,
+ int32_t pointer) override;
+ bool OnMultiTouchUp(float x, float y, int32_t pointer) override;
+
+ bool OnTouchGestureStart(float x, float y) override;
+ bool OnTouchGesturePan(
+ float x, float y, float offsetX, float offsetY, float velocityX, float velocityY) override;
+ bool OnTouchGestureEnd(
+ float x, float y, float offsetX, float offsetY, float velocityX, float velocityY) override;
+
+ // convenience events
+ void OnTap(float x, float y, int32_t pointers = 1) override;
+ void OnLongPress(float x, float y, int32_t pointers = 1) override;
+ void OnSwipe(TouchMoveDirection direction,
+ float xDown,
+ float yDown,
+ float xUp,
+ float yUp,
+ float velocityX,
+ float velocityY,
+ int32_t pointers = 1) override;
+ void OnZoomPinch(float centerX, float centerY, float zoomFactor) override;
+ void OnRotate(float centerX, float centerY, float angle) override;
+
+ /*!
+ \brief Asks the control at the given coordinates for a list of the supported gestures.
+
+ \param x The x coordinate (with sub-pixel) of the touch
+ \param y The y coordinate (with sub-pixel) of the touch
+
+ \return EVENT_RESULT value of bitwise ORed gestures.
+ */
+ int QuerySupportedGestures(float x, float y);
+
+private:
+ // private construction, and no assignments; use the provided singleton methods
+ CGenericTouchActionHandler() = default;
+ CGenericTouchActionHandler(const CGenericTouchActionHandler&) = delete;
+ CGenericTouchActionHandler const& operator=(CGenericTouchActionHandler const&) = delete;
+ ~CGenericTouchActionHandler() override = default;
+
+ void sendEvent(int actionId,
+ float x,
+ float y,
+ float x2 = 0.0f,
+ float y2 = 0.0f,
+ float x3 = 0.0f,
+ float y3 = 0.0f,
+ int pointers = 1);
+ void focusControl(float x, float y);
+};