SDL3pp
A slim C++ wrapper for SDL3
Loading...
Searching...
No Matches
Typedefs | Variables
Pen Support

SDL pen event handling. More...

Collaboration diagram for Pen Support:

Typedefs

using SDL::PenID = SDL_PenID
 SDL pen instance IDs. More...
 
using SDL::PenInputFlags = Uint32
 Pen input flags, as reported by various pen events' pen_state field. More...
 
using SDL::PenAxis = SDL_PenAxis
 Pen axis indices. More...
 

Variables

constexpr MouseID SDL::PEN_MOUSEID = SDL_PEN_MOUSEID
 The MouseID for mouse events simulated with pen input. More...
 
constexpr TouchID SDL::PEN_TOUCHID = SDL_PEN_TOUCHID
 The TouchID for touch events simulated with pen input. More...
 
constexpr PenInputFlags SDL::PEN_INPUT_DOWN
 pen is pressed down More...
 
constexpr PenInputFlags SDL::PEN_INPUT_BUTTON_1
 button 1 is pressed More...
 
constexpr PenInputFlags SDL::PEN_INPUT_BUTTON_2
 button 2 is pressed More...
 
constexpr PenInputFlags SDL::PEN_INPUT_BUTTON_3
 button 3 is pressed More...
 
constexpr PenInputFlags SDL::PEN_INPUT_BUTTON_4
 button 4 is pressed More...
 
constexpr PenInputFlags SDL::PEN_INPUT_BUTTON_5
 button 5 is pressed More...
 
constexpr PenInputFlags SDL::PEN_INPUT_ERASER_TIP
 eraser tip is used More...
 
constexpr PenAxis SDL::PEN_AXIS_PRESSURE
 Pen pressure. Unidirectional: 0 to 1.0. More...
 
constexpr PenAxis SDL::PEN_AXIS_XTILT = SDL_PEN_AXIS_XTILT
 Pen horizontal tilt angle. Bidirectional: -90.0 to 90.0 (left-to-right).
 
constexpr PenAxis SDL::PEN_AXIS_YTILT = SDL_PEN_AXIS_YTILT
 Pen vertical tilt angle. Bidirectional: -90.0 to 90.0 (top-to-down).
 
constexpr PenAxis SDL::PEN_AXIS_DISTANCE = SDL_PEN_AXIS_DISTANCE
 Pen distance to drawing surface. Unidirectional: 0.0 to 1.0.
 
constexpr PenAxis SDL::PEN_AXIS_ROTATION = SDL_PEN_AXIS_ROTATION
 Pen barrel rotation. More...
 
constexpr PenAxis SDL::PEN_AXIS_SLIDER = SDL_PEN_AXIS_SLIDER
 Pen finger wheel or slider (e.g., Airbrush Pen). Unidirectional: 0 to 1.0.
 
constexpr PenAxis SDL::PEN_AXIS_TANGENTIAL_PRESSURE
 Pressure from squeezing the pen ("barrel pressure"). More...
 
constexpr PenAxis SDL::PEN_AXIS_COUNT = SDL_PEN_AXIS_COUNT
 Total known pen axis types in this version of SDL. More...
 

Detailed Description

SDL provides an API for pressure-sensitive pen (stylus and/or eraser) handling, e.g., for input and drawing tablets or suitably equipped mobile / tablet devices.

To get started with pens, simply handle SDL_EVENT_PEN_* events. When a pen starts providing input, SDL will assign it a unique PenID, which will remain for the life of the process, as long as the pen stays connected.

Pens may provide more than simple touch input; they might have other axes, such as pressure, tilt, rotation, etc.

Typedef Documentation

◆ PenAxis

using SDL::PenAxis = typedef SDL_PenAxis

These are the valid values for the axis field in PenAxisEvent. All axes are either normalised to 0..1 or report a (positive or negative) angle in degrees, with 0.0 representing the centre. Not all pens/backends support all axes: unsupported axes are always zero.

To convert angles for tilt and rotation into vector representation, use sin on the XTILT, YTILT, or ROTATION component, for example:

sin(xtilt * PI_F / 180.0).

Since
This enum is available since SDL 3.2.0.

◆ PenID

using SDL::PenID = typedef SDL_PenID

Zero is used to signify an invalid/null device.

These show up in pen events when SDL sees input from them. They remain consistent as long as SDL can recognize a tool to be the same pen; but if a pen physically leaves the area and returns, it might get a new ID.

Since
This datatype is available since SDL 3.2.0.

◆ PenInputFlags

using SDL::PenInputFlags = typedef Uint32
Since
This datatype is available since SDL 3.2.0.

Variable Documentation

◆ PEN_AXIS_COUNT

constexpr PenAxis SDL::PEN_AXIS_COUNT = SDL_PEN_AXIS_COUNT
constexpr

This number may grow in future releases!

◆ PEN_AXIS_PRESSURE

constexpr PenAxis SDL::PEN_AXIS_PRESSURE
constexpr
Initial value:
=
SDL_PEN_AXIS_PRESSURE

◆ PEN_AXIS_ROTATION

constexpr PenAxis SDL::PEN_AXIS_ROTATION = SDL_PEN_AXIS_ROTATION
constexpr

Bidirectional: -180 to 179.9 (clockwise, 0 is facing up, -180.0 is facing down).

◆ PEN_AXIS_TANGENTIAL_PRESSURE

constexpr PenAxis SDL::PEN_AXIS_TANGENTIAL_PRESSURE
constexpr
Initial value:
=
SDL_PEN_AXIS_TANGENTIAL_PRESSURE

◆ PEN_INPUT_BUTTON_1

constexpr PenInputFlags SDL::PEN_INPUT_BUTTON_1
constexpr
Initial value:
=
SDL_PEN_INPUT_BUTTON_1

◆ PEN_INPUT_BUTTON_2

constexpr PenInputFlags SDL::PEN_INPUT_BUTTON_2
constexpr
Initial value:
=
SDL_PEN_INPUT_BUTTON_2

◆ PEN_INPUT_BUTTON_3

constexpr PenInputFlags SDL::PEN_INPUT_BUTTON_3
constexpr
Initial value:
=
SDL_PEN_INPUT_BUTTON_3

◆ PEN_INPUT_BUTTON_4

constexpr PenInputFlags SDL::PEN_INPUT_BUTTON_4
constexpr
Initial value:
=
SDL_PEN_INPUT_BUTTON_4

◆ PEN_INPUT_BUTTON_5

constexpr PenInputFlags SDL::PEN_INPUT_BUTTON_5
constexpr
Initial value:
=
SDL_PEN_INPUT_BUTTON_5

◆ PEN_INPUT_DOWN

constexpr PenInputFlags SDL::PEN_INPUT_DOWN
constexpr
Initial value:
=
SDL_PEN_INPUT_DOWN

◆ PEN_INPUT_ERASER_TIP

constexpr PenInputFlags SDL::PEN_INPUT_ERASER_TIP
constexpr
Initial value:
=
SDL_PEN_INPUT_ERASER_TIP

◆ PEN_MOUSEID

constexpr MouseID SDL::PEN_MOUSEID = SDL_PEN_MOUSEID
constexpr
Since
This macro is available since SDL 3.2.0.

◆ PEN_TOUCHID

constexpr TouchID SDL::PEN_TOUCHID = SDL_PEN_TOUCHID
constexpr
Since
This macro is available since SDL 3.2.0.