annotate SDL3/SDL_pen.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 Simple DirectMedia Layer
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 This software is provided 'as-is', without any express or implied
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 warranty. In no event will the authors be held liable for any damages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 arising from the use of this software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 Permission is granted to anyone to use this software for any purpose,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 including commercial applications, and to alter it and redistribute it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 freely, subject to the following restrictions:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 1. The origin of this software must not be misrepresented; you must not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 claim that you wrote the original software. If you use this software
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 in a product, an acknowledgment in the product documentation would be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 appreciated but is not required.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 2. Altered source versions must be plainly marked as such, and must not be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 misrepresented as being the original software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 3. This notice may not be removed or altered from any source distribution.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 * # CategoryPen
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 * SDL pen event handling.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 * SDL provides an API for pressure-sensitive pen (stylus and/or eraser)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 * handling, e.g., for input and drawing tablets or suitably equipped mobile /
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 * tablet devices.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 * To get started with pens, simply handle pen events:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 * - SDL_EVENT_PEN_PROXIMITY_IN, SDL_EVENT_PEN_PROXIMITY_OUT
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 * (SDL_PenProximityEvent)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 * - SDL_EVENT_PEN_DOWN, SDL_EVENT_PEN_UP (SDL_PenTouchEvent)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 * - SDL_EVENT_PEN_MOTION (SDL_PenMotionEvent)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 * - SDL_EVENT_PEN_BUTTON_DOWN, SDL_EVENT_PEN_BUTTON_UP (SDL_PenButtonEvent)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 * - SDL_EVENT_PEN_AXIS (SDL_PenAxisEvent)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 * Pens may provide more than simple touch input; they might have other axes,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 * such as pressure, tilt, rotation, etc.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 * When a pen starts providing input, SDL will assign it a unique SDL_PenID,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 * which will remain for the life of the process, as long as the pen stays
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 * connected. A pen leaving proximity (being taken far enough away from the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 * digitizer tablet that it no longer reponds) and then coming back should
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 * fire proximity events, but the SDL_PenID should remain consistent.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 * Unplugging the digitizer and reconnecting may cause future input to have a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 * new SDL_PenID, as SDL may not know that this is the same hardware.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 * Please note that various platforms vary wildly in how (and how well) they
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 * support pen input. If your pen supports some piece of functionality but SDL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 * doesn't seem to, it might actually be the operating system's fault. For
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 * example, some platforms can manage multiple devices at the same time, but
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 * others will make any connected pens look like a single logical device, much
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 * how all USB mice connected to a computer will move the same system cursor.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 * cursor. Other platforms might not support pen buttons, or the distance
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 * axis, etc. Very few platforms can even report _what_ functionality the pen
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 * supports in the first place, so best practices is to either build UI to let
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 * the user configure their pens, or be prepared to handle new functionality
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 * for a pen the first time an event is reported.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 #ifndef SDL_pen_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 #define SDL_pen_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 #include <SDL3/SDL_stdinc.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 #include <SDL3/SDL_mouse.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 #include <SDL3/SDL_touch.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 #include <SDL3/SDL_begin_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 /* Set up for C function definitions, even when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 extern "C" {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 * SDL pen instance IDs.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 * Zero is used to signify an invalid/null device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 * These show up in pen events when SDL sees input from them. They remain
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 * consistent as long as SDL can recognize a tool to be the same pen; but if a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 * pen's digitizer table is physically detached from the computer, it might
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 * get a new ID when reconnected, as SDL won't know it's the same device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 * These IDs are only stable within a single run of a program; the next time a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 * program is run, the pen's ID will likely be different, even if the hardware
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 * hasn't been disconnected, etc.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 * \since This datatype is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 typedef Uint32 SDL_PenID;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 * The SDL_MouseID for mouse events simulated with pen input.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 #define SDL_PEN_MOUSEID ((SDL_MouseID)-2)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 * The SDL_TouchID for touch events simulated with pen input.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 #define SDL_PEN_TOUCHID ((SDL_TouchID)-2)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 * Pen input flags, as reported by various pen events' `pen_state` field.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 * \since This datatype is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 typedef Uint32 SDL_PenInputFlags;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 #define SDL_PEN_INPUT_DOWN (1u << 0) /**< pen is pressed down */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 #define SDL_PEN_INPUT_BUTTON_1 (1u << 1) /**< button 1 is pressed */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 #define SDL_PEN_INPUT_BUTTON_2 (1u << 2) /**< button 2 is pressed */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 #define SDL_PEN_INPUT_BUTTON_3 (1u << 3) /**< button 3 is pressed */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 #define SDL_PEN_INPUT_BUTTON_4 (1u << 4) /**< button 4 is pressed */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 #define SDL_PEN_INPUT_BUTTON_5 (1u << 5) /**< button 5 is pressed */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 #define SDL_PEN_INPUT_ERASER_TIP (1u << 30) /**< eraser tip is used */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 #define SDL_PEN_INPUT_IN_PROXIMITY (1u << 31) /**< pen is in proximity (since SDL 3.4.0) */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 * Pen axis indices.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 * These are the valid values for the `axis` field in SDL_PenAxisEvent. All
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 * axes are either normalised to 0..1 or report a (positive or negative) angle
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 * in degrees, with 0.0 representing the centre. Not all pens/backends support
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 * all axes: unsupported axes are always zero.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 * To convert angles for tilt and rotation into vector representation, use
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 * SDL_sinf on the XTILT, YTILT, or ROTATION component, for example:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 * `SDL_sinf(xtilt * SDL_PI_F / 180.0)`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 * \since This enum is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 typedef enum SDL_PenAxis
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 SDL_PEN_AXIS_PRESSURE, /**< Pen pressure. Unidirectional: 0 to 1.0 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 SDL_PEN_AXIS_XTILT, /**< Pen horizontal tilt angle. Bidirectional: -90.0 to 90.0 (left-to-right). */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144 SDL_PEN_AXIS_YTILT, /**< Pen vertical tilt angle. Bidirectional: -90.0 to 90.0 (top-to-down). */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 SDL_PEN_AXIS_DISTANCE, /**< Pen distance to drawing surface. Unidirectional: 0.0 to 1.0 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146 SDL_PEN_AXIS_ROTATION, /**< Pen barrel rotation. Bidirectional: -180 to 179.9 (clockwise, 0 is facing up, -180.0 is facing down). */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147 SDL_PEN_AXIS_SLIDER, /**< Pen finger wheel or slider (e.g., Airbrush Pen). Unidirectional: 0 to 1.0 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 SDL_PEN_AXIS_TANGENTIAL_PRESSURE, /**< Pressure from squeezing the pen ("barrel pressure"). */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149 SDL_PEN_AXIS_COUNT /**< Total known pen axis types in this version of SDL. This number may grow in future releases! */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 } SDL_PenAxis;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 * An enum that describes the type of a pen device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155 * A "direct" device is a pen that touches a graphic display (like an Apple
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 * Pencil on an iPad's screen). "Indirect" devices touch an external tablet
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 * surface that is connected to the machine but is not a display (like a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 * lower-end Wacom tablet connected over USB).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 * Apps may use this information to decide if they should draw a cursor; if
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161 * the pen is touching the screen directly, a cursor doesn't make sense and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 * can be in the way, but becomes necessary for indirect devices to know where
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 * on the display they are interacting.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165 * \since This enum is available since SDL 3.4.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 typedef enum SDL_PenDeviceType
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169 SDL_PEN_DEVICE_TYPE_INVALID = -1, /**< Not a valid pen device. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 SDL_PEN_DEVICE_TYPE_UNKNOWN, /**< Don't know specifics of this pen. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171 SDL_PEN_DEVICE_TYPE_DIRECT, /**< Pen touches display. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172 SDL_PEN_DEVICE_TYPE_INDIRECT /**< Pen touches something that isn't the display. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173 } SDL_PenDeviceType;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 * Get the device type of the given pen.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178 * Many platforms do not supply this information, so an app must always be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 * prepared to get an SDL_PEN_DEVICE_TYPE_UNKNOWN result.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 * \param instance_id the pen instance ID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182 * \returns the device type of the given pen, or SDL_PEN_DEVICE_TYPE_INVALID
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 * on failure; call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187 * \since This function is available since SDL 3.4.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189 extern SDL_DECLSPEC SDL_PenDeviceType SDLCALL SDL_GetPenDeviceType(SDL_PenID instance_id);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191 /* Ends C function definitions when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195 #include <SDL3/SDL_close_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
196
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
197 #endif /* SDL_pen_h_ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198