Kodi Documentation 22.0
Kodi is an open source media player and entertainment hub.
|
Generic implementation of ITouchInputHandler to handle low level (raw) touch events and translate them into touch actions which are passed on to the registered ITouchActionHandler implementation. More...
#include <GenericTouchInputHandler.h>
Public Member Functions | |
bool | HandleTouchInput (TouchInput event, float x, float y, int64_t time, int32_t pointer=0, float size=0.0f) override |
Handle a touch event. | |
bool | UpdateTouchPointer (int32_t pointer, float x, float y, int64_t time, float size=0.0f) override |
Update the coordinates of a pointer. | |
Public Member Functions inherited from ITouchInputHandler | |
ITouchInputHandler () | |
~ITouchInputHandler () override=default | |
void | SetScreenDPI (float dpi) |
float | GetScreenDPI () |
Public Member Functions inherited from ITouchInputHandling | |
ITouchInputHandling () | |
~ITouchInputHandling () override=default | |
void | RegisterHandler (ITouchActionHandler *touchHandler) |
Register a touch input handler. | |
void | UnregisterHandler () |
Unregister the previously registered touch handler. | |
Static Public Member Functions | |
static CGenericTouchInputHandler & | GetInstance () |
Get an instance of the touch input manager. | |
Static Public Attributes | |
static constexpr int | MAX_POINTERS = 2 |
Additional Inherited Members | |
Protected Member Functions inherited from ITouchInputHandling | |
void | OnTouchAbort () override |
A touch action has been aborted. | |
bool | OnSingleTouchStart (float x, float y) override |
A single touch has started. | |
bool | OnSingleTouchHold (float x, float y) override |
A single touch has been held down for a certain amount of time. | |
bool | OnSingleTouchMove (float x, float y, float offsetX, float offsetY, float velocityX, float velocityY) override |
A single touch has moved. | |
bool | OnSingleTouchEnd (float x, float y) override |
A single touch has been lifted. | |
bool | OnMultiTouchDown (float x, float y, int32_t pointer) override |
An additional touch has been performed. | |
bool | OnMultiTouchHold (float x, float y, int32_t pointers=2) override |
Multiple simultaneous touches have been held down for a certain amount of time. | |
bool | OnMultiTouchMove (float x, float y, float offsetX, float offsetY, float velocityX, float velocityY, int32_t pointer) override |
A touch has moved. | |
bool | OnMultiTouchUp (float x, float y, int32_t pointer) override |
A touch has been lifted (but there are still active touches) | |
bool | OnTouchGestureStart (float x, float y) override |
A pan gesture with a single touch has been started. | |
bool | OnTouchGesturePan (float x, float y, float offsetX, float offsetY, float velocityX, float velocityY) override |
A pan gesture with a single touch is in progress. | |
bool | OnTouchGestureEnd (float x, float y, float offsetX, float offsetY, float velocityX, float velocityY) override |
A pan gesture with a single touch has ended. | |
void | OnTap (float x, float y, int32_t pointers=1) override |
A tap with a one or more touches has been performed. | |
void | OnLongPress (float x, float y, int32_t pointers=1) override |
One or more touches have been held down for a certain amount of time. | |
void | OnSwipe (TouchMoveDirection direction, float xDown, float yDown, float xUp, float yUp, float velocityX, float velocityY, int32_t pointers=1) override |
One or more touches has been moved quickly in a single direction in a short time. | |
void | OnZoomPinch (float centerX, float centerY, float zoomFactor) override |
Two simultaneous touches have been held down and moved to perform a zooming/pinching gesture. | |
void | OnRotate (float centerX, float centerY, float angle) override |
Two simultaneous touches have been held down and moved to perform a rotating gesture. | |
Protected Member Functions inherited from ITouchActionHandler | |
virtual | ~ITouchActionHandler ()=default |
Protected Attributes inherited from ITouchInputHandler | |
std::atomic< float > | m_dpi |
DPI value of the touch screen. | |
Generic implementation of ITouchInputHandler to handle low level (raw) touch events and translate them into touch actions which are passed on to the registered ITouchActionHandler implementation.
The generic implementation supports single a double touch and hold actions and basic gesture recognition for panning, swiping, pinching/zooming and rotating.
|
static |
Get an instance of the touch input manager.
|
overridevirtual |
Handle a touch event.
Handles the given touch event at the given location. This takes into account all the currently active pointers which need to be updated before calling this method to actually interpret and handle the changes in touch.
event | The actual touch event (abort, down, up, move) |
x | The x coordinate (with sub-pixel) of the touch |
y | The y coordinate (with sub-pixel) of the touch |
time | The time (in nanoseconds) when this touch occurred |
pointer | The number of the touch pointer which caused this event (default 0) |
size | The size of the touch pointer (with sub-pixel) (default 0.0) |
Implements ITouchInputHandler.
|
overridevirtual |
Update the coordinates of a pointer.
Depending on how a platform handles touch input and provides the necessary events this method needs to be called at different times. If there's an event for every touch action this method does not need to be called at all. If there's only a touch event for the primary pointer (and no special events for any secondary pointers in a multi touch gesture) this method should be called for every active secondary pointer before calling Handle.
pointer | The number of the touch pointer which caused this event (default 0) |
x | The x coordinate (with sub-pixel) of the touch |
y | The y coordinate (with sub-pixel) of the touch |
time | The time (in nanoseconds) when this touch occurred |
size | The size of the touch pointer (with sub-pixel) (default 0.0) |
Reimplemented from ITouchInputHandler.
|
staticconstexpr |