SDL_TouchFingerEvent(3type)

πŸ’– SDL_TouchFingerEvent πŸ’–

okay bestie, gather round, because we're talking about SDL_TouchFingerEvent(3type) β€” the datatype from the SDL3 DATATYPES era of the SDL3 docs. it's giving "your finger touched a screen and SDL is being SO normal about telling you" ✨


✨ NAME ✨

SDL_TouchFingerEvent β€” the touch finger event structure, aka all the event.tfinger.* goodness 🫢


πŸŽ€ SYNOPSIS πŸŽ€

#include <SDL3/SDL_events.h>

typedef struct SDL_TouchFingerEvent
{
    SDL_EventType type; /**< SDL_EVENT_FINGER_DOWN, SDL_EVENT_FINGER_UP, SDL_EVENT_FINGER_MOTION, or SDL_EVENT_FINGER_CANCELED */
    Uint32 reserved;
    Uint64 timestamp;   /**< In nanoseconds, populated using SDL_GetTicksNS() */
    SDL_TouchID touchID; /**< The touch device id */
    SDL_FingerID fingerID;
    float x;            /**< Normalized in the range 0...1 */
    float y;            /**< Normalized in the range 0...1 */
    float dx;           /**< Normalized in the range -1...1 */
    float dy;           /**< Normalized in the range -1...1 */
    float pressure;     /**< Normalized in the range 0...1 */
    SDL_WindowID windowID; /**< The window underneath the finger, if any */
} SDL_TouchFingerEvent;

🌸 DESCRIPTION 🌸

okay so the coordinates in this event are normalized. like, glow-up'd. x and y live in a range between 0.0f and 1.0f, relative to the window. so (0,0) is the top left and (1,1) is the bottom right. periodt. πŸ’…

the delta coordinates dx and dy are normalized too, but their range is -1.0f (traversed all the way from the bottom or right to all the way up or left) up to 1.0f (traversed all the way from the top or left to all the way down or right). yes bestie, that's a whole vibe.

⚠️ not me having to warn you about this one ⚠️ β€” the coordinates are normalized, but they are not clamped. so in some circumstances you can absolutely get a value outside of this range. it's not a bug, it's just how it is 😭 for example, a renderer using logical presentation might give you a negative value when the touch is in the letterboxing. and some platforms might report a touch outside of the window, which will also be outside of the range. so like, vibe check your values, don't assume. πŸ¦‹

πŸ‘‘ AVAILABILITY πŸ‘‘

this struct is available since SDL 3.2.0. iconic. no cap. πŸ”₯


and that's the whole thing, bestie πŸ’œ this page is from Simple Directmedia Layer, version SDL 3.4.18, and it's the SDL_TouchFingerEvent(3type) manual page β€” so next time you're deep in event.tfinger.* at 2am, you'll know exactly what's up. go forth and normalize (but don't clamp) πŸŽ€βœ¨πŸ§š

πŸ“¦ where this page comes from