diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 18:07:22 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 18:07:22 +0000 |
commit | c04dcc2e7d834218ef2d4194331e383402495ae1 (patch) | |
tree | 7333e38d10d75386e60f336b80c2443c1166031d /xbmc/input/touch/ITouchActionHandler.h | |
parent | Initial commit. (diff) | |
download | kodi-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/ITouchActionHandler.h')
-rw-r--r-- | xbmc/input/touch/ITouchActionHandler.h | 261 |
1 files changed, 261 insertions, 0 deletions
diff --git a/xbmc/input/touch/ITouchActionHandler.h b/xbmc/input/touch/ITouchActionHandler.h new file mode 100644 index 0000000..28afdd7 --- /dev/null +++ b/xbmc/input/touch/ITouchActionHandler.h @@ -0,0 +1,261 @@ +/* + * Copyright (C) 2012-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 <stdint.h> + +/*! + * \ingroup touch + * \brief Directions in which a touch can moved + * + * These values can be combined (bitwise OR) to specify multiple directions. + */ +typedef enum +{ + TouchMoveDirectionNone = 0x0, + TouchMoveDirectionLeft = 0x1, + TouchMoveDirectionRight = 0x2, + TouchMoveDirectionUp = 0x4, + TouchMoveDirectionDown = 0x8 +} TouchMoveDirection; + +/*! + * \ingroup touch + * \brief Interface defining all supported touch action events + */ +class ITouchActionHandler +{ +public: + virtual ~ITouchActionHandler() = default; + + /*! + * \brief A touch action has been aborted + */ + virtual void OnTouchAbort() {} + + /*! + * \brief A single touch has started + * + * \param x The x coordinate (with sub-pixel) of the touch + * \param y The y coordinate (with sub-pixel) of the touch + * + * \return True if the event was handled otherwise false + * + * \sa OnSingleTap + */ + virtual bool OnSingleTouchStart(float x, float y) { return true; } + /*! + * \brief A single touch has been held down for a certain amount of time + * + * \param x The x coordinate (with sub-pixel) of the touch + * \param y The y coordinate (with sub-pixel) of the touch + * + * \return True if the event was handled otherwise false + * + * \sa OnSingleLongPress + */ + virtual bool OnSingleTouchHold(float x, float y) { return true; } + /*! + * \brief A single touch has moved + * + * \param x The x coordinate (with sub-pixel) of the current touch + * \param y The y coordinate (with sub-pixel) of the current touch + * \param offsetX The covered distance on the x axis (with sub-pixel) + * \param offsetX The covered distance on the y axis (with sub-pixel) + * \param velocityX The velocity of the gesture in x direction (pixels/second) + * \param velocityX The velocity of the gesture in y direction (pixels/second) + * + * \return True if the event was handled otherwise false + * + * \sa OnTouchGesturePan + */ + virtual bool OnSingleTouchMove( + float x, float y, float offsetX, float offsetY, float velocityX, float velocityY) + { + return true; + } + /*! + * \brief A single touch has been lifted + * + * \param x The x coordinate (with sub-pixel) of the touch + * \param y The y coordinate (with sub-pixel) of the touch + * + * \return True if the event was handled otherwise false + * + * \sa OnSingleTap + */ + virtual bool OnSingleTouchEnd(float x, float y) { return true; } + + /*! + * \brief An additional touch has been performed + * + * \param x The x coordinate (with sub-pixel) of the touch + * \param y The y coordinate (with sub-pixel) of the touch + * \param pointer The pointer that has performed the touch + * + * \return True if the event was handled otherwise false + */ + virtual bool OnMultiTouchDown(float x, float y, int32_t pointer) { return true; } + /*! + * \brief Multiple simultaneous touches have been held down for a certain amount of time + * + * \param x The x coordinate (with sub-pixel) of the touch + * \param y The y coordinate (with sub-pixel) of the touch + * \param pointers The number of pointers involved (default 2) + * + * \return True if the event was handled otherwise false + */ + virtual bool OnMultiTouchHold(float x, float y, int32_t pointers = 2) { return true; } + /*! + * \brief A touch has moved + * + * \param x The x coordinate (with sub-pixel) of the current touch + * \param y The y coordinate (with sub-pixel) of the current touch + * \param offsetX The covered distance on the x axis (with sub-pixel) + * \param offsetX The covered distance on the y axis (with sub-pixel) + * \param velocityX The velocity of the gesture in x direction (pixels/second) + * \param velocityX The velocity of the gesture in y direction (pixels/second) + * \param pointer The pointer that has performed the touch + * + * \return True if the event was handled otherwise false + */ + virtual bool OnMultiTouchMove(float x, + float y, + float offsetX, + float offsetY, + float velocityX, + float velocityY, + int32_t pointer) + { + return true; + } + /*! + * \brief A touch has been lifted (but there are still active touches) + * + * \param x The x coordinate (with sub-pixel) of the touch + * \param y The y coordinate (with sub-pixel) of the touch + * \param pointer The pointer that has performed the touch + * + * \return True if the event was handled otherwise false + */ + virtual bool OnMultiTouchUp(float x, float y, int32_t pointer) { return true; } + + /*! + * \brief A pan gesture with a single touch has been started + * + * \param x The x coordinate (with sub-pixel) of the initial touch + * \param y The y coordinate (with sub-pixel) of the initial touch + * + * \return True if the event was handled otherwise false + */ + virtual bool OnTouchGestureStart(float x, float y) { return true; } + /*! + * \brief A pan gesture with a single touch is in progress + * + * \param x The x coordinate (with sub-pixel) of the current touch + * \param y The y coordinate (with sub-pixel) of the current touch + * \param offsetX The covered distance on the x axis (with sub-pixel) + * \param offsetX The covered distance on the y axis (with sub-pixel) + * \param velocityX The velocity of the gesture in x direction (pixels/second) + * \param velocityX The velocity of the gesture in y direction (pixels/second) + * + * \return True if the event was handled otherwise false + */ + virtual bool OnTouchGesturePan( + float x, float y, float offsetX, float offsetY, float velocityX, float velocityY) + { + return true; + } + /*! + * \brief A pan gesture with a single touch has ended + * + * \param x The x coordinate (with sub-pixel) of the current touch + * \param y The y coordinate (with sub-pixel) of the current touch + * \param offsetX The covered distance on the x axis (with sub-pixel) + * \param offsetX The covered distance on the y axis (with sub-pixel) + * \param velocityX The velocity of the gesture in x direction (pixels/second) + * \param velocityX The velocity of the gesture in y direction (pixels/second) + * + * \return True if the event was handled otherwise false + */ + virtual bool OnTouchGestureEnd( + float x, float y, float offsetX, float offsetY, float velocityX, float velocityY) + { + return true; + } + + // convenience events + /*! + * \brief A tap with a one or more touches has been performed + * + * \param x The x coordinate (with sub-pixel) of the touch + * \param y The y coordinate (with sub-pixel) of the touch + * \param pointers The number of pointers involved (default 1) + * + * \return True if the event was handled otherwise false + */ + virtual void OnTap(float x, float y, int32_t pointers = 1) {} + /*! + * \brief One or more touches have been held down for a certain amount of time + * + * \param x The x coordinate (with sub-pixel) of the touch + * \param y The y coordinate (with sub-pixel) of the touch + * \param pointers The number of pointers involved (default 1) + * + * \return True if the event was handled otherwise false + * + * \sa OnSingleTouchHold + */ + virtual void OnLongPress(float x, float y, int32_t pointers = 1) {} + /*! + * \brief One or more touches has been moved quickly in a single direction in a short time + * + * \param direction The direction (left, right, up, down) of the swipe gesture + * \param xDown The x coordinate (with sub-pixel) of the first touch + * \param yDown The y coordinate (with sub-pixel) of the first touch + * \param xUp The x coordinate (with sub-pixel) of the last touch + * \param yUp The y coordinate (with sub-pixel) of the last touch + * \param velocityX The velocity of the gesture in x direction (pixels/second) + * \param velocityX The velocity of the gesture in y direction (pixels/second) + * \param pointers The number of pointers involved (default 1) + * + * \return True if the event was handled otherwise false + */ + virtual void OnSwipe(TouchMoveDirection direction, + float xDown, + float yDown, + float xUp, + float yUp, + float velocityX, + float velocityY, + int32_t pointers = 1) + { + } + /*! + * \brief Two simultaneous touches have been held down and moved to perform a zooming/pinching + * gesture + * + * \param centerX The x coordinate (with sub-pixel) of the center of the two touches + * \param centerY The y coordinate (with sub-pixel) of the center of the two touches + * \param zoomFactor The zoom (> 1.0) or pinch (< 1.0) factor of the two touches + * + * \return True if the event was handled otherwise false + */ + virtual void OnZoomPinch(float centerX, float centerY, float zoomFactor) {} + /*! + * \brief Two simultaneous touches have been held down and moved to perform a rotating gesture + * + * \param centerX The x coordinate (with sub-pixel) of the center of the two touches + * \param centerY The y coordinate (with sub-pixel) of the center of the two touches + * \param angle The clockwise angle in degrees of the rotation + * + * \return True if the event was handled otherwise false + */ + virtual void OnRotate(float centerX, float centerY, float angle) {} +}; |