annotate SDL3/SDL_haptic.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 * # CategoryHaptic
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 * The SDL haptic subsystem manages haptic (force feedback) devices.
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 * The basic usage is as follows:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 * - Initialize the subsystem (SDL_INIT_HAPTIC).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 * - Open a haptic device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 * - SDL_OpenHaptic() to open from index.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 * - SDL_OpenHapticFromJoystick() to open from an existing joystick.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 * - Create an effect (SDL_HapticEffect).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 * - Upload the effect with SDL_CreateHapticEffect().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 * - Run the effect with SDL_RunHapticEffect().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 * - (optional) Free the effect with SDL_DestroyHapticEffect().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 * - Close the haptic device with SDL_CloseHaptic().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 * Simple rumble example:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 * ```c
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 * SDL_Haptic *haptic = NULL;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 * // Open the device
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 * SDL_HapticID *haptics = SDL_GetHaptics(NULL);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 * if (haptics) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 * haptic = SDL_OpenHaptic(haptics[0]);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 * SDL_free(haptics);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 * }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 * if (haptic == NULL)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 * return;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 * // Initialize simple rumble
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 * if (!SDL_InitHapticRumble(haptic))
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 * return;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 * // Play effect at 50% strength for 2 seconds
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 * if (!SDL_PlayHapticRumble(haptic, 0.5, 2000))
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 * return;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 * SDL_Delay(2000);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 * // Clean up
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 * SDL_CloseHaptic(haptic);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 * ```
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 * Complete example:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 * ```c
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 * bool test_haptic(SDL_Joystick *joystick)
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 * SDL_Haptic *haptic;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 * SDL_HapticEffect effect;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 * SDL_HapticEffectID effect_id;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 * // Open the device
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 * haptic = SDL_OpenHapticFromJoystick(joystick);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 * if (haptic == NULL) return false; // Most likely joystick isn't haptic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 * // See if it can do sine waves
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 * if ((SDL_GetHapticFeatures(haptic) & SDL_HAPTIC_SINE)==0) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 * SDL_CloseHaptic(haptic); // No sine effect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 * return false;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 * }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 * // Create the effect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 * SDL_memset(&effect, 0, sizeof(SDL_HapticEffect)); // 0 is safe default
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 * effect.type = SDL_HAPTIC_SINE;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 * effect.periodic.direction.type = SDL_HAPTIC_POLAR; // Polar coordinates
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 * effect.periodic.direction.dir[0] = 18000; // Force comes from south
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 * effect.periodic.period = 1000; // 1000 ms
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 * effect.periodic.magnitude = 20000; // 20000/32767 strength
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 * effect.periodic.length = 5000; // 5 seconds long
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 * effect.periodic.attack_length = 1000; // Takes 1 second to get max strength
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 * effect.periodic.fade_length = 1000; // Takes 1 second to fade away
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 * // Upload the effect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 * effect_id = SDL_CreateHapticEffect(haptic, &effect);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 * // Test the effect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 * SDL_RunHapticEffect(haptic, effect_id, 1);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 * SDL_Delay(5000); // Wait for the effect to finish
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 * // We destroy the effect, although closing the device also does this
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 * SDL_DestroyHapticEffect(haptic, effect_id);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 * // Close the device
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 * SDL_CloseHaptic(haptic);
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 * return true; // Success
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 * }
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 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 * Note that the SDL haptic subsystem is not thread-safe.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 */
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
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 #ifndef SDL_haptic_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 #define SDL_haptic_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 #include <SDL3/SDL_stdinc.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 #include <SDL3/SDL_error.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 #include <SDL3/SDL_joystick.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 #include <SDL3/SDL_begin_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 /* Set up for C function definitions, even when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127 extern "C" {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 #endif /* __cplusplus */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 /* FIXME:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 * At the moment the magnitude variables are mixed between signed/unsigned, and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 * it is also not made clear that ALL of those variables expect a max of 0x7FFF.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 * Some platforms may have higher precision than that (Linux FF, Windows XInput)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 * so we should fix the inconsistency in favor of higher possible precision,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 * adjusting for platforms that use different scales.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 * -flibit
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
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 * The haptic structure used to identify an SDL haptic.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144 * \since This struct is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146 * \sa SDL_OpenHaptic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147 * \sa SDL_OpenHapticFromJoystick
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 * \sa SDL_CloseHaptic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 typedef struct SDL_Haptic SDL_Haptic;
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 * Misc defines.
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
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 * Used to play a device an infinite number of times.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161 * \sa SDL_RunHapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 #define SDL_HAPTIC_INFINITY 4294967295U
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
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 * \name Haptic features
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 * Different haptic features a device can have.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171 /* @{ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174 * \name Haptic effects
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 /* @{ */
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 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 * Type of haptic effect.
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 typedef Uint16 SDL_HapticEffectType;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184 * Constant effect supported.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186 * Constant haptic effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190 * \sa SDL_HapticCondition
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 #define SDL_HAPTIC_CONSTANT (1u<<0)
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 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195 * Sine wave effect supported.
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 * Periodic haptic effect that simulates sine waves.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
199 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
200 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
201 * \sa SDL_HapticPeriodic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
202 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
203 #define SDL_HAPTIC_SINE (1u<<1)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
204
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
205 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
206 * Square wave effect supported.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
207 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
208 * Periodic haptic effect that simulates square waves.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
209 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
210 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
211 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
212 * \sa SDL_HapticPeriodic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
213 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
214 #define SDL_HAPTIC_SQUARE (1u<<2)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
215
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
216 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
217 * Triangle wave effect supported.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
218 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
219 * Periodic haptic effect that simulates triangular waves.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
220 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
221 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
222 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
223 * \sa SDL_HapticPeriodic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
224 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
225 #define SDL_HAPTIC_TRIANGLE (1u<<3)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
226
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
227 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
228 * Sawtoothup wave effect supported.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
229 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
230 * Periodic haptic effect that simulates saw tooth up waves.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
231 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
232 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
233 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
234 * \sa SDL_HapticPeriodic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
235 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
236 #define SDL_HAPTIC_SAWTOOTHUP (1u<<4)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
237
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
238 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
239 * Sawtoothdown wave effect supported.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
240 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
241 * Periodic haptic effect that simulates saw tooth down waves.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
242 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
243 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
244 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
245 * \sa SDL_HapticPeriodic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
246 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
247 #define SDL_HAPTIC_SAWTOOTHDOWN (1u<<5)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
248
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
249 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
250 * Ramp effect supported.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
251 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
252 * Ramp haptic effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
253 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
254 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
255 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
256 * \sa SDL_HapticRamp
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
257 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
258 #define SDL_HAPTIC_RAMP (1u<<6)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
259
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
260 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
261 * Spring effect supported - uses axes position.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
262 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
263 * Condition haptic effect that simulates a spring. Effect is based on the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
264 * axes position.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
265 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
266 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
267 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
268 * \sa SDL_HapticCondition
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
269 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
270 #define SDL_HAPTIC_SPRING (1u<<7)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
271
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
272 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
273 * Damper effect supported - uses axes velocity.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
274 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
275 * Condition haptic effect that simulates dampening. Effect is based on the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
276 * axes velocity.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
277 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
278 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
279 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
280 * \sa SDL_HapticCondition
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
281 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
282 #define SDL_HAPTIC_DAMPER (1u<<8)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
283
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
284 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
285 * Inertia effect supported - uses axes acceleration.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
286 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
287 * Condition haptic effect that simulates inertia. Effect is based on the axes
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
288 * acceleration.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
289 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
290 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
291 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
292 * \sa SDL_HapticCondition
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
293 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
294 #define SDL_HAPTIC_INERTIA (1u<<9)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
295
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
296 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
297 * Friction effect supported - uses axes movement.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
298 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
299 * Condition haptic effect that simulates friction. Effect is based on the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
300 * axes movement.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
301 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
302 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
303 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
304 * \sa SDL_HapticCondition
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
305 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
306 #define SDL_HAPTIC_FRICTION (1u<<10)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
307
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
308 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
309 * Left/Right effect supported.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
310 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
311 * Haptic effect for direct control over high/low frequency motors.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
312 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
313 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
314 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
315 * \sa SDL_HapticLeftRight
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
316 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
317 #define SDL_HAPTIC_LEFTRIGHT (1u<<11)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
318
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
319 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
320 * Reserved for future use.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
321 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
322 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
323 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
324 #define SDL_HAPTIC_RESERVED1 (1u<<12)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
325
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
326 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
327 * Reserved for future use.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
328 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
329 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
330 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
331 #define SDL_HAPTIC_RESERVED2 (1u<<13)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
332
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
333 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
334 * Reserved for future use.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
335 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
336 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
337 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
338 #define SDL_HAPTIC_RESERVED3 (1u<<14)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
339
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
340 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
341 * Custom effect is supported.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
342 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
343 * User defined custom haptic effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
344 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
345 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
346 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
347 #define SDL_HAPTIC_CUSTOM (1u<<15)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
348
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
349 /* @} *//* Haptic effects */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
350
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
351 /* These last few are features the device has, not effects */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
352
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
353 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
354 * Device can set global gain.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
355 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
356 * Device supports setting the global gain.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
357 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
358 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
359 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
360 * \sa SDL_SetHapticGain
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
361 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
362 #define SDL_HAPTIC_GAIN (1u<<16)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
363
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
364 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
365 * Device can set autocenter.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
366 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
367 * Device supports setting autocenter.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
368 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
369 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
370 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
371 * \sa SDL_SetHapticAutocenter
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
372 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
373 #define SDL_HAPTIC_AUTOCENTER (1u<<17)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
374
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
375 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
376 * Device can be queried for effect status.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
377 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
378 * Device supports querying effect status.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
379 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
380 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
381 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
382 * \sa SDL_GetHapticEffectStatus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
383 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
384 #define SDL_HAPTIC_STATUS (1u<<18)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
385
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
386 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
387 * Device can be paused.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
388 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
389 * Devices supports being paused.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
390 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
391 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
392 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
393 * \sa SDL_PauseHaptic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
394 * \sa SDL_ResumeHaptic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
395 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
396 #define SDL_HAPTIC_PAUSE (1u<<19)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
397
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
398
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
399 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
400 * \name Direction encodings
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
401 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
402 /* @{ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
403
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
404 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
405 * Type of coordinates used for haptic direction.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
406 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
407 typedef Uint8 SDL_HapticDirectionType;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
408
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
409 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
410 * Uses polar coordinates for the direction.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
411 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
412 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
413 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
414 * \sa SDL_HapticDirection
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
415 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
416 #define SDL_HAPTIC_POLAR 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
417
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
418 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
419 * Uses cartesian coordinates for the direction.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
420 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
421 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
422 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
423 * \sa SDL_HapticDirection
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
424 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
425 #define SDL_HAPTIC_CARTESIAN 1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
426
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
427 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
428 * Uses spherical coordinates for the direction.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
429 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
430 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
431 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
432 * \sa SDL_HapticDirection
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
433 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
434 #define SDL_HAPTIC_SPHERICAL 2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
435
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
436 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
437 * Use this value to play an effect on the steering wheel axis.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
438 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
439 * This provides better compatibility across platforms and devices as SDL will
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
440 * guess the correct axis.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
441 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
442 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
443 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
444 * \sa SDL_HapticDirection
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
445 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
446 #define SDL_HAPTIC_STEERING_AXIS 3
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
447
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
448 /* @} *//* Direction encodings */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
449
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
450 /* @} *//* Haptic features */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
451
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
452
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
453 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
454 * ID for haptic effects.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
455 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
456 * This is -1 if the ID is invalid.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
457 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
458 * \sa SDL_CreateHapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
459 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
460 typedef int SDL_HapticEffectID;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
461
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
462
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
463 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
464 * Structure that represents a haptic direction.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
465 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
466 * This is the direction where the force comes from, instead of the direction
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
467 * in which the force is exerted.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
468 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
469 * Directions can be specified by:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
470 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
471 * - SDL_HAPTIC_POLAR : Specified by polar coordinates.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
472 * - SDL_HAPTIC_CARTESIAN : Specified by cartesian coordinates.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
473 * - SDL_HAPTIC_SPHERICAL : Specified by spherical coordinates.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
474 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
475 * Cardinal directions of the haptic device are relative to the positioning of
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
476 * the device. North is considered to be away from the user.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
477 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
478 * The following diagram represents the cardinal directions:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
479 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
480 * ```
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
481 * .--.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
482 * |__| .-------.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
483 * |=.| |.-----.|
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
484 * |--| || ||
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
485 * | | |'-----'|
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
486 * |__|~')_____('
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
487 * [ COMPUTER ]
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
488 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
489 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
490 * North (0,-1)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
491 * ^
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
492 * |
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
493 * |
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
494 * (-1,0) West <----[ HAPTIC ]----> East (1,0)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
495 * |
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
496 * |
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
497 * v
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
498 * South (0,1)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
499 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
500 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
501 * [ USER ]
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
502 * \|||/
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
503 * (o o)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
504 * ---ooO-(_)-Ooo---
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
505 * ```
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
506 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
507 * If type is SDL_HAPTIC_POLAR, direction is encoded by hundredths of a degree
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
508 * starting north and turning clockwise. SDL_HAPTIC_POLAR only uses the first
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
509 * `dir` parameter. The cardinal directions would be:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
510 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
511 * - North: 0 (0 degrees)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
512 * - East: 9000 (90 degrees)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
513 * - South: 18000 (180 degrees)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
514 * - West: 27000 (270 degrees)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
515 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
516 * If type is SDL_HAPTIC_CARTESIAN, direction is encoded by three positions (X
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
517 * axis, Y axis and Z axis (with 3 axes)). SDL_HAPTIC_CARTESIAN uses the first
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
518 * three `dir` parameters. The cardinal directions would be:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
519 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
520 * - North: 0,-1, 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
521 * - East: 1, 0, 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
522 * - South: 0, 1, 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
523 * - West: -1, 0, 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
524 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
525 * The Z axis represents the height of the effect if supported, otherwise it's
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
526 * unused. In cartesian encoding (1, 2) would be the same as (2, 4), you can
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
527 * use any multiple you want, only the direction matters.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
528 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
529 * If type is SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations. The
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
530 * first two `dir` parameters are used. The `dir` parameters are as follows
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
531 * (all values are in hundredths of degrees):
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
532 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
533 * - Degrees from (1, 0) rotated towards (0, 1).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
534 * - Degrees towards (0, 0, 1) (device needs at least 3 axes).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
535 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
536 * Example of force coming from the south with all encodings (force coming
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
537 * from the south means the user will have to pull the stick to counteract):
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
538 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
539 * ```c
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
540 * SDL_HapticDirection direction;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
541 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
542 * // Cartesian directions
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
543 * direction.type = SDL_HAPTIC_CARTESIAN; // Using cartesian direction encoding.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
544 * direction.dir[0] = 0; // X position
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
545 * direction.dir[1] = 1; // Y position
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
546 * // Assuming the device has 2 axes, we don't need to specify third parameter.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
547 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
548 * // Polar directions
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
549 * direction.type = SDL_HAPTIC_POLAR; // We'll be using polar direction encoding.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
550 * direction.dir[0] = 18000; // Polar only uses first parameter
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
551 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
552 * // Spherical coordinates
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
553 * direction.type = SDL_HAPTIC_SPHERICAL; // Spherical encoding
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
554 * direction.dir[0] = 9000; // Since we only have two axes we don't need more parameters.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
555 * ```
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
556 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
557 * \since This struct is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
558 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
559 * \sa SDL_HAPTIC_POLAR
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
560 * \sa SDL_HAPTIC_CARTESIAN
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
561 * \sa SDL_HAPTIC_SPHERICAL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
562 * \sa SDL_HAPTIC_STEERING_AXIS
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
563 * \sa SDL_HapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
564 * \sa SDL_GetNumHapticAxes
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
565 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
566 typedef struct SDL_HapticDirection
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
567 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
568 SDL_HapticDirectionType type; /**< The type of encoding. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
569 Sint32 dir[3]; /**< The encoded direction. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
570 } SDL_HapticDirection;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
571
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
572
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
573 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
574 * A structure containing a template for a Constant effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
575 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
576 * This struct is exclusively for the SDL_HAPTIC_CONSTANT effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
577 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
578 * A constant effect applies a constant force in the specified direction to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
579 * the joystick.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
580 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
581 * \since This struct is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
582 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
583 * \sa SDL_HAPTIC_CONSTANT
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
584 * \sa SDL_HapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
585 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
586 typedef struct SDL_HapticConstant
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
587 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
588 /* Header */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
589 SDL_HapticEffectType type; /**< SDL_HAPTIC_CONSTANT */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
590 SDL_HapticDirection direction; /**< Direction of the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
591
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
592 /* Replay */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
593 Uint32 length; /**< Duration of the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
594 Uint16 delay; /**< Delay before starting the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
595
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
596 /* Trigger */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
597 Uint16 button; /**< Button that triggers the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
598 Uint16 interval; /**< How soon it can be triggered again after button. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
599
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
600 /* Constant */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
601 Sint16 level; /**< Strength of the constant effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
602
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
603 /* Envelope */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
604 Uint16 attack_length; /**< Duration of the attack. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
605 Uint16 attack_level; /**< Level at the start of the attack. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
606 Uint16 fade_length; /**< Duration of the fade. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
607 Uint16 fade_level; /**< Level at the end of the fade. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
608 } SDL_HapticConstant;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
609
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
610 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
611 * A structure containing a template for a Periodic effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
612 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
613 * The struct handles the following effects:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
614 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
615 * - SDL_HAPTIC_SINE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
616 * - SDL_HAPTIC_SQUARE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
617 * - SDL_HAPTIC_TRIANGLE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
618 * - SDL_HAPTIC_SAWTOOTHUP
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
619 * - SDL_HAPTIC_SAWTOOTHDOWN
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
620 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
621 * A periodic effect consists in a wave-shaped effect that repeats itself over
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
622 * time. The type determines the shape of the wave and the parameters
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
623 * determine the dimensions of the wave.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
624 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
625 * Phase is given by hundredth of a degree meaning that giving the phase a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
626 * value of 9000 will displace it 25% of its period. Here are sample values:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
627 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
628 * - 0: No phase displacement.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
629 * - 9000: Displaced 25% of its period.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
630 * - 18000: Displaced 50% of its period.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
631 * - 27000: Displaced 75% of its period.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
632 * - 36000: Displaced 100% of its period, same as 0, but 0 is preferred.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
633 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
634 * Examples:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
635 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
636 * ```
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
637 * SDL_HAPTIC_SINE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
638 * __ __ __ __
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
639 * / \ / \ / \ /
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
640 * / \__/ \__/ \__/
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
641 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
642 * SDL_HAPTIC_SQUARE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
643 * __ __ __ __ __
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
644 * | | | | | | | | | |
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
645 * | |__| |__| |__| |__| |
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
646 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
647 * SDL_HAPTIC_TRIANGLE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
648 * /\ /\ /\ /\ /\
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
649 * / \ / \ / \ / \ /
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
650 * / \/ \/ \/ \/
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
651 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
652 * SDL_HAPTIC_SAWTOOTHUP
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
653 * /| /| /| /| /| /| /|
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
654 * / | / | / | / | / | / | / |
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
655 * / |/ |/ |/ |/ |/ |/ |
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
656 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
657 * SDL_HAPTIC_SAWTOOTHDOWN
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
658 * \ |\ |\ |\ |\ |\ |\ |
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
659 * \ | \ | \ | \ | \ | \ | \ |
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
660 * \| \| \| \| \| \| \|
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
661 * ```
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
662 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
663 * \since This struct is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
664 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
665 * \sa SDL_HAPTIC_SINE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
666 * \sa SDL_HAPTIC_SQUARE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
667 * \sa SDL_HAPTIC_TRIANGLE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
668 * \sa SDL_HAPTIC_SAWTOOTHUP
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
669 * \sa SDL_HAPTIC_SAWTOOTHDOWN
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
670 * \sa SDL_HapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
671 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
672 typedef struct SDL_HapticPeriodic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
673 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
674 /* Header */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
675 SDL_HapticEffectType type; /**< SDL_HAPTIC_SINE, SDL_HAPTIC_SQUARE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
676 SDL_HAPTIC_TRIANGLE, SDL_HAPTIC_SAWTOOTHUP or
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
677 SDL_HAPTIC_SAWTOOTHDOWN */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
678 SDL_HapticDirection direction; /**< Direction of the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
679
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
680 /* Replay */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
681 Uint32 length; /**< Duration of the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
682 Uint16 delay; /**< Delay before starting the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
683
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
684 /* Trigger */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
685 Uint16 button; /**< Button that triggers the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
686 Uint16 interval; /**< How soon it can be triggered again after button. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
687
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
688 /* Periodic */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
689 Uint16 period; /**< Period of the wave. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
690 Sint16 magnitude; /**< Peak value; if negative, equivalent to 180 degrees extra phase shift. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
691 Sint16 offset; /**< Mean value of the wave. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
692 Uint16 phase; /**< Positive phase shift given by hundredth of a degree. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
693
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
694 /* Envelope */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
695 Uint16 attack_length; /**< Duration of the attack. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
696 Uint16 attack_level; /**< Level at the start of the attack. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
697 Uint16 fade_length; /**< Duration of the fade. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
698 Uint16 fade_level; /**< Level at the end of the fade. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
699 } SDL_HapticPeriodic;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
700
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
701 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
702 * A structure containing a template for a Condition effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
703 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
704 * The struct handles the following effects:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
705 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
706 * - SDL_HAPTIC_SPRING: Effect based on axes position.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
707 * - SDL_HAPTIC_DAMPER: Effect based on axes velocity.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
708 * - SDL_HAPTIC_INERTIA: Effect based on axes acceleration.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
709 * - SDL_HAPTIC_FRICTION: Effect based on axes movement.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
710 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
711 * Direction is handled by condition internals instead of a direction member.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
712 * The condition effect specific members have three parameters. The first
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
713 * refers to the X axis, the second refers to the Y axis and the third refers
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
714 * to the Z axis. The right terms refer to the positive side of the axis and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
715 * the left terms refer to the negative side of the axis. Please refer to the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
716 * SDL_HapticDirection diagram for which side is positive and which is
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
717 * negative.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
718 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
719 * \since This struct is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
720 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
721 * \sa SDL_HapticDirection
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
722 * \sa SDL_HAPTIC_SPRING
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
723 * \sa SDL_HAPTIC_DAMPER
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
724 * \sa SDL_HAPTIC_INERTIA
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
725 * \sa SDL_HAPTIC_FRICTION
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
726 * \sa SDL_HapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
727 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
728 typedef struct SDL_HapticCondition
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
729 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
730 /* Header */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
731 SDL_HapticEffectType type; /**< SDL_HAPTIC_SPRING, SDL_HAPTIC_DAMPER,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
732 SDL_HAPTIC_INERTIA or SDL_HAPTIC_FRICTION */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
733 SDL_HapticDirection direction; /**< Direction of the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
734
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
735 /* Replay */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
736 Uint32 length; /**< Duration of the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
737 Uint16 delay; /**< Delay before starting the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
738
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
739 /* Trigger */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
740 Uint16 button; /**< Button that triggers the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
741 Uint16 interval; /**< How soon it can be triggered again after button. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
742
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
743 /* Condition */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
744 Uint16 right_sat[3]; /**< Level when joystick is to the positive side; max 0xFFFF. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
745 Uint16 left_sat[3]; /**< Level when joystick is to the negative side; max 0xFFFF. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
746 Sint16 right_coeff[3]; /**< How fast to increase the force towards the positive side. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
747 Sint16 left_coeff[3]; /**< How fast to increase the force towards the negative side. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
748 Uint16 deadband[3]; /**< Size of the dead zone; max 0xFFFF: whole axis-range when 0-centered. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
749 Sint16 center[3]; /**< Position of the dead zone. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
750 } SDL_HapticCondition;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
751
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
752 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
753 * A structure containing a template for a Ramp effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
754 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
755 * This struct is exclusively for the SDL_HAPTIC_RAMP effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
756 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
757 * The ramp effect starts at start strength and ends at end strength. It
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
758 * augments in linear fashion. If you use attack and fade with a ramp the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
759 * effects get added to the ramp effect making the effect become quadratic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
760 * instead of linear.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
761 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
762 * \since This struct is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
763 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
764 * \sa SDL_HAPTIC_RAMP
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
765 * \sa SDL_HapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
766 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
767 typedef struct SDL_HapticRamp
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
768 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
769 /* Header */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
770 SDL_HapticEffectType type; /**< SDL_HAPTIC_RAMP */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
771 SDL_HapticDirection direction; /**< Direction of the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
772
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
773 /* Replay */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
774 Uint32 length; /**< Duration of the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
775 Uint16 delay; /**< Delay before starting the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
776
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
777 /* Trigger */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
778 Uint16 button; /**< Button that triggers the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
779 Uint16 interval; /**< How soon it can be triggered again after button. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
780
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
781 /* Ramp */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
782 Sint16 start; /**< Beginning strength level. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
783 Sint16 end; /**< Ending strength level. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
784
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
785 /* Envelope */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
786 Uint16 attack_length; /**< Duration of the attack. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
787 Uint16 attack_level; /**< Level at the start of the attack. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
788 Uint16 fade_length; /**< Duration of the fade. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
789 Uint16 fade_level; /**< Level at the end of the fade. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
790 } SDL_HapticRamp;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
791
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
792 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
793 * A structure containing a template for a Left/Right effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
794 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
795 * This struct is exclusively for the SDL_HAPTIC_LEFTRIGHT effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
796 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
797 * The Left/Right effect is used to explicitly control the large and small
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
798 * motors, commonly found in modern game controllers. The small (right) motor
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
799 * is high frequency, and the large (left) motor is low frequency.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
800 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
801 * \since This struct is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
802 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
803 * \sa SDL_HAPTIC_LEFTRIGHT
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
804 * \sa SDL_HapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
805 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
806 typedef struct SDL_HapticLeftRight
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
807 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
808 /* Header */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
809 SDL_HapticEffectType type; /**< SDL_HAPTIC_LEFTRIGHT */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
810
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
811 /* Replay */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
812 Uint32 length; /**< Duration of the effect in milliseconds. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
813
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
814 /* Rumble */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
815 Uint16 large_magnitude; /**< Control of the large controller motor. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
816 Uint16 small_magnitude; /**< Control of the small controller motor. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
817 } SDL_HapticLeftRight;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
818
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
819 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
820 * A structure containing a template for the SDL_HAPTIC_CUSTOM effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
821 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
822 * This struct is exclusively for the SDL_HAPTIC_CUSTOM effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
823 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
824 * A custom force feedback effect is much like a periodic effect, where the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
825 * application can define its exact shape. You will have to allocate the data
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
826 * yourself. Data should consist of channels * samples Uint16 samples.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
827 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
828 * If channels is one, the effect is rotated using the defined direction.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
829 * Otherwise it uses the samples in data for the different axes.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
830 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
831 * \since This struct is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
832 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
833 * \sa SDL_HAPTIC_CUSTOM
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
834 * \sa SDL_HapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
835 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
836 typedef struct SDL_HapticCustom
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
837 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
838 /* Header */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
839 SDL_HapticEffectType type; /**< SDL_HAPTIC_CUSTOM */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
840 SDL_HapticDirection direction; /**< Direction of the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
841
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
842 /* Replay */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
843 Uint32 length; /**< Duration of the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
844 Uint16 delay; /**< Delay before starting the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
845
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
846 /* Trigger */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
847 Uint16 button; /**< Button that triggers the effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
848 Uint16 interval; /**< How soon it can be triggered again after button. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
849
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
850 /* Custom */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
851 Uint8 channels; /**< Axes to use, minimum of one. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
852 Uint16 period; /**< Sample periods. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
853 Uint16 samples; /**< Amount of samples. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
854 Uint16 *data; /**< Should contain channels*samples items. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
855
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
856 /* Envelope */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
857 Uint16 attack_length; /**< Duration of the attack. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
858 Uint16 attack_level; /**< Level at the start of the attack. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
859 Uint16 fade_length; /**< Duration of the fade. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
860 Uint16 fade_level; /**< Level at the end of the fade. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
861 } SDL_HapticCustom;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
862
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
863 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
864 * The generic template for any haptic effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
865 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
866 * All values max at 32767 (0x7FFF). Signed values also can be negative. Time
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
867 * values unless specified otherwise are in milliseconds.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
868 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
869 * You can also pass SDL_HAPTIC_INFINITY to length instead of a 0-32767 value.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
870 * Neither delay, interval, attack_length nor fade_length support
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
871 * SDL_HAPTIC_INFINITY. Fade will also not be used since effect never ends.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
872 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
873 * Additionally, the SDL_HAPTIC_RAMP effect does not support a duration of
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
874 * SDL_HAPTIC_INFINITY.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
875 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
876 * Button triggers may not be supported on all devices, it is advised to not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
877 * use them if possible. Buttons start at index 1 instead of index 0 like the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
878 * joystick.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
879 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
880 * If both attack_length and fade_level are 0, the envelope is not used,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
881 * otherwise both values are used.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
882 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
883 * Common parts:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
884 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
885 * ```c
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
886 * // Replay - All effects have this
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
887 * Uint32 length; // Duration of effect (ms).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
888 * Uint16 delay; // Delay before starting effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
889 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
890 * // Trigger - All effects have this
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
891 * Uint16 button; // Button that triggers effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
892 * Uint16 interval; // How soon before effect can be triggered again.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
893 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
894 * // Envelope - All effects except condition effects have this
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
895 * Uint16 attack_length; // Duration of the attack (ms).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
896 * Uint16 attack_level; // Level at the start of the attack.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
897 * Uint16 fade_length; // Duration of the fade out (ms).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
898 * Uint16 fade_level; // Level at the end of the fade.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
899 * ```
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
900 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
901 * Here we have an example of a constant effect evolution in time:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
902 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
903 * ```
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
904 * Strength
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
905 * ^
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
906 * |
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
907 * | effect level --> _________________
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
908 * | / \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
909 * | / \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
910 * | / \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
911 * | / \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
912 * | attack_level --> | \
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
913 * | | | <--- fade_level
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
914 * |
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
915 * +--------------------------------------------------> Time
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
916 * [--] [---]
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
917 * attack_length fade_length
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
918 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
919 * [------------------][-----------------------]
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
920 * delay length
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
921 * ```
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
922 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
923 * Note either the attack_level or the fade_level may be above the actual
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
924 * effect level.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
925 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
926 * \since This struct is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
927 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
928 * \sa SDL_HapticConstant
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
929 * \sa SDL_HapticPeriodic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
930 * \sa SDL_HapticCondition
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
931 * \sa SDL_HapticRamp
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
932 * \sa SDL_HapticLeftRight
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
933 * \sa SDL_HapticCustom
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
934 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
935 typedef union SDL_HapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
936 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
937 /* Common for all force feedback effects */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
938 SDL_HapticEffectType type; /**< Effect type. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
939 SDL_HapticConstant constant; /**< Constant effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
940 SDL_HapticPeriodic periodic; /**< Periodic effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
941 SDL_HapticCondition condition; /**< Condition effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
942 SDL_HapticRamp ramp; /**< Ramp effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
943 SDL_HapticLeftRight leftright; /**< Left/Right effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
944 SDL_HapticCustom custom; /**< Custom effect. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
945 } SDL_HapticEffect;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
946
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
947 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
948 * This is a unique ID for a haptic device for the time it is connected to the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
949 * system, and is never reused for the lifetime of the application.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
950 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
951 * If the haptic device is disconnected and reconnected, it will get a new ID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
952 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
953 * The value 0 is an invalid ID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
954 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
955 * \since This datatype is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
956 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
957 typedef Uint32 SDL_HapticID;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
958
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
959
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
960 /* Function prototypes */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
961
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
962 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
963 * Get a list of currently connected haptic devices.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
964 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
965 * \param count a pointer filled in with the number of haptic devices
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
966 * returned, may be NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
967 * \returns a 0 terminated array of haptic device instance IDs or NULL on
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
968 * failure; call SDL_GetError() for more information. This should be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
969 * freed with SDL_free() when it is no longer needed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
970 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
971 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
972 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
973 * \sa SDL_OpenHaptic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
974 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
975 extern SDL_DECLSPEC SDL_HapticID * SDLCALL SDL_GetHaptics(int *count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
976
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
977 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
978 * Get the implementation dependent name of a haptic device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
979 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
980 * This can be called before any haptic devices are opened.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
981 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
982 * \param instance_id the haptic device instance ID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
983 * \returns the name of the selected haptic device. If no name can be found,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
984 * this function returns NULL; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
985 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
986 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
987 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
988 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
989 * \sa SDL_GetHapticName
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
990 * \sa SDL_OpenHaptic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
991 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
992 extern SDL_DECLSPEC const char * SDLCALL SDL_GetHapticNameForID(SDL_HapticID instance_id);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
993
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
994 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
995 * Open a haptic device for use.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
996 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
997 * The index passed as an argument refers to the N'th haptic device on this
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
998 * system.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
999 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1000 * When opening a haptic device, its gain will be set to maximum and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1001 * autocenter will be disabled. To modify these values use SDL_SetHapticGain()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1002 * and SDL_SetHapticAutocenter().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1003 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1004 * \param instance_id the haptic device instance ID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1005 * \returns the device identifier or NULL on failure; call SDL_GetError() for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1006 * more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1007 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1008 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1009 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1010 * \sa SDL_CloseHaptic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1011 * \sa SDL_GetHaptics
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1012 * \sa SDL_OpenHapticFromJoystick
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1013 * \sa SDL_OpenHapticFromMouse
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1014 * \sa SDL_SetHapticAutocenter
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1015 * \sa SDL_SetHapticGain
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1016 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1017 extern SDL_DECLSPEC SDL_Haptic * SDLCALL SDL_OpenHaptic(SDL_HapticID instance_id);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1018
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1019
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1020 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1021 * Get the SDL_Haptic associated with an instance ID, if it has been opened.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1022 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1023 * \param instance_id the instance ID to get the SDL_Haptic for.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1024 * \returns an SDL_Haptic on success or NULL on failure or if it hasn't been
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1025 * opened yet; call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1026 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1027 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1028 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1029 extern SDL_DECLSPEC SDL_Haptic * SDLCALL SDL_GetHapticFromID(SDL_HapticID instance_id);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1030
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1031 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1032 * Get the instance ID of an opened haptic device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1033 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1034 * \param haptic the SDL_Haptic device to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1035 * \returns the instance ID of the specified haptic device on success or 0 on
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1036 * failure; call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1037 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1038 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1039 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1040 extern SDL_DECLSPEC SDL_HapticID SDLCALL SDL_GetHapticID(SDL_Haptic *haptic);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1041
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1042 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1043 * Get the implementation dependent name of a haptic device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1044 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1045 * \param haptic the SDL_Haptic obtained from SDL_OpenJoystick().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1046 * \returns the name of the selected haptic device. If no name can be found,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1047 * this function returns NULL; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1048 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1049 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1050 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1051 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1052 * \sa SDL_GetHapticNameForID
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1053 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1054 extern SDL_DECLSPEC const char * SDLCALL SDL_GetHapticName(SDL_Haptic *haptic);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1055
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1056 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1057 * Query whether or not the current mouse has haptic capabilities.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1058 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1059 * \returns true if the mouse is haptic or false if it isn't.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1060 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1061 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1062 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1063 * \sa SDL_OpenHapticFromMouse
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1064 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1065 extern SDL_DECLSPEC bool SDLCALL SDL_IsMouseHaptic(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1066
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1067 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1068 * Try to open a haptic device from the current mouse.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1069 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1070 * \returns the haptic device identifier or NULL on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1071 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1072 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1073 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1074 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1075 * \sa SDL_CloseHaptic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1076 * \sa SDL_IsMouseHaptic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1077 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1078 extern SDL_DECLSPEC SDL_Haptic * SDLCALL SDL_OpenHapticFromMouse(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1079
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1080 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1081 * Query if a joystick has haptic features.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1082 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1083 * \param joystick the SDL_Joystick to test for haptic capabilities.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1084 * \returns true if the joystick is haptic or false if it isn't.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1085 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1086 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1087 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1088 * \sa SDL_OpenHapticFromJoystick
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1089 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1090 extern SDL_DECLSPEC bool SDLCALL SDL_IsJoystickHaptic(SDL_Joystick *joystick);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1091
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1092 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1093 * Open a haptic device for use from a joystick device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1094 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1095 * You must still close the haptic device separately. It will not be closed
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1096 * with the joystick.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1097 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1098 * When opened from a joystick you should first close the haptic device before
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1099 * closing the joystick device. If not, on some implementations the haptic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1100 * device will also get unallocated and you'll be unable to use force feedback
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1101 * on that device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1102 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1103 * \param joystick the SDL_Joystick to create a haptic device from.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1104 * \returns a valid haptic device identifier on success or NULL on failure;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1105 * call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1106 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1107 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1108 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1109 * \sa SDL_CloseHaptic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1110 * \sa SDL_IsJoystickHaptic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1111 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1112 extern SDL_DECLSPEC SDL_Haptic * SDLCALL SDL_OpenHapticFromJoystick(SDL_Joystick *joystick);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1113
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1114 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1115 * Close a haptic device previously opened with SDL_OpenHaptic().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1116 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1117 * \param haptic the SDL_Haptic device to close.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1118 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1119 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1120 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1121 * \sa SDL_OpenHaptic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1122 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1123 extern SDL_DECLSPEC void SDLCALL SDL_CloseHaptic(SDL_Haptic *haptic);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1124
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1125 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1126 * Get the number of effects a haptic device can store.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1127 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1128 * On some platforms this isn't fully supported, and therefore is an
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1129 * approximation. Always check to see if your created effect was actually
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1130 * created and do not rely solely on SDL_GetMaxHapticEffects().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1131 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1132 * \param haptic the SDL_Haptic device to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1133 * \returns the number of effects the haptic device can store or a negative
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1134 * error code on failure; call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1135 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1136 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1137 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1138 * \sa SDL_GetMaxHapticEffectsPlaying
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1139 * \sa SDL_GetHapticFeatures
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1140 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1141 extern SDL_DECLSPEC int SDLCALL SDL_GetMaxHapticEffects(SDL_Haptic *haptic);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1142
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1143 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1144 * Get the number of effects a haptic device can play at the same time.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1145 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1146 * This is not supported on all platforms, but will always return a value.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1147 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1148 * \param haptic the SDL_Haptic device to query maximum playing effects.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1149 * \returns the number of effects the haptic device can play at the same time
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1150 * or -1 on failure; call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1151 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1152 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1153 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1154 * \sa SDL_GetMaxHapticEffects
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1155 * \sa SDL_GetHapticFeatures
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1156 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1157 extern SDL_DECLSPEC int SDLCALL SDL_GetMaxHapticEffectsPlaying(SDL_Haptic *haptic);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1158
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1159 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1160 * Get the haptic device's supported features in bitwise manner.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1161 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1162 * \param haptic the SDL_Haptic device to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1163 * \returns a list of supported haptic features in bitwise manner (OR'd), or 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1164 * on failure; call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1165 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1166 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1167 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1168 * \sa SDL_HapticEffectSupported
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1169 * \sa SDL_GetMaxHapticEffects
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1170 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1171 extern SDL_DECLSPEC Uint32 SDLCALL SDL_GetHapticFeatures(SDL_Haptic *haptic);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1172
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1173 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1174 * Get the number of haptic axes the device has.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1175 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1176 * The number of haptic axes might be useful if working with the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1177 * SDL_HapticDirection effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1178 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1179 * \param haptic the SDL_Haptic device to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1180 * \returns the number of axes on success or -1 on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1181 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1182 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1183 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1184 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1185 extern SDL_DECLSPEC int SDLCALL SDL_GetNumHapticAxes(SDL_Haptic *haptic);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1186
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1187 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1188 * Check to see if an effect is supported by a haptic device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1189 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1190 * \param haptic the SDL_Haptic device to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1191 * \param effect the desired effect to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1192 * \returns true if the effect is supported or false if it isn't.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1193 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1194 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1195 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1196 * \sa SDL_CreateHapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1197 * \sa SDL_GetHapticFeatures
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1198 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1199 extern SDL_DECLSPEC bool SDLCALL SDL_HapticEffectSupported(SDL_Haptic *haptic, const SDL_HapticEffect *effect);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1200
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1201 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1202 * Create a new haptic effect on a specified device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1203 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1204 * \param haptic an SDL_Haptic device to create the effect on.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1205 * \param effect an SDL_HapticEffect structure containing the properties of
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1206 * the effect to create.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1207 * \returns the ID of the effect on success or -1 on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1208 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1209 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1210 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1211 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1212 * \sa SDL_DestroyHapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1213 * \sa SDL_RunHapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1214 * \sa SDL_UpdateHapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1215 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1216 extern SDL_DECLSPEC SDL_HapticEffectID SDLCALL SDL_CreateHapticEffect(SDL_Haptic *haptic, const SDL_HapticEffect *effect);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1217
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1218 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1219 * Update the properties of an effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1220 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1221 * Can be used dynamically, although behavior when dynamically changing
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1222 * direction may be strange. Specifically the effect may re-upload itself and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1223 * start playing from the start. You also cannot change the type either when
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1224 * running SDL_UpdateHapticEffect().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1225 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1226 * \param haptic the SDL_Haptic device that has the effect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1227 * \param effect the identifier of the effect to update.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1228 * \param data an SDL_HapticEffect structure containing the new effect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1229 * properties to use.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1230 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1231 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1232 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1233 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1234 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1235 * \sa SDL_CreateHapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1236 * \sa SDL_RunHapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1237 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1238 extern SDL_DECLSPEC bool SDLCALL SDL_UpdateHapticEffect(SDL_Haptic *haptic, SDL_HapticEffectID effect, const SDL_HapticEffect *data);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1239
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1240 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1241 * Run the haptic effect on its associated haptic device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1242 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1243 * To repeat the effect over and over indefinitely, set `iterations` to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1244 * `SDL_HAPTIC_INFINITY`. (Repeats the envelope - attack and fade.) To make
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1245 * one instance of the effect last indefinitely (so the effect does not fade),
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1246 * set the effect's `length` in its structure/union to `SDL_HAPTIC_INFINITY`
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1247 * instead.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1248 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1249 * \param haptic the SDL_Haptic device to run the effect on.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1250 * \param effect the ID of the haptic effect to run.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1251 * \param iterations the number of iterations to run the effect; use
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1252 * `SDL_HAPTIC_INFINITY` to repeat forever.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1253 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1254 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1255 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1256 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1257 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1258 * \sa SDL_GetHapticEffectStatus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1259 * \sa SDL_StopHapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1260 * \sa SDL_StopHapticEffects
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1261 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1262 extern SDL_DECLSPEC bool SDLCALL SDL_RunHapticEffect(SDL_Haptic *haptic, SDL_HapticEffectID effect, Uint32 iterations);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1263
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1264 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1265 * Stop the haptic effect on its associated haptic device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1266 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1267 * \param haptic the SDL_Haptic device to stop the effect on.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1268 * \param effect the ID of the haptic effect to stop.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1269 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1270 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1271 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1272 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1273 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1274 * \sa SDL_RunHapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1275 * \sa SDL_StopHapticEffects
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1276 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1277 extern SDL_DECLSPEC bool SDLCALL SDL_StopHapticEffect(SDL_Haptic *haptic, SDL_HapticEffectID effect);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1278
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1279 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1280 * Destroy a haptic effect on the device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1281 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1282 * This will stop the effect if it's running. Effects are automatically
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1283 * destroyed when the device is closed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1284 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1285 * \param haptic the SDL_Haptic device to destroy the effect on.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1286 * \param effect the ID of the haptic effect to destroy.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1287 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1288 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1289 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1290 * \sa SDL_CreateHapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1291 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1292 extern SDL_DECLSPEC void SDLCALL SDL_DestroyHapticEffect(SDL_Haptic *haptic, SDL_HapticEffectID effect);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1293
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1294 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1295 * Get the status of the current effect on the specified haptic device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1296 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1297 * Device must support the SDL_HAPTIC_STATUS feature.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1298 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1299 * \param haptic the SDL_Haptic device to query for the effect status on.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1300 * \param effect the ID of the haptic effect to query its status.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1301 * \returns true if it is playing, false if it isn't playing or haptic status
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1302 * isn't supported.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1303 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1304 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1305 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1306 * \sa SDL_GetHapticFeatures
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1307 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1308 extern SDL_DECLSPEC bool SDLCALL SDL_GetHapticEffectStatus(SDL_Haptic *haptic, SDL_HapticEffectID effect);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1309
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1310 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1311 * Set the global gain of the specified haptic device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1312 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1313 * Device must support the SDL_HAPTIC_GAIN feature.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1314 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1315 * The user may specify the maximum gain by setting the environment variable
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1316 * `SDL_HAPTIC_GAIN_MAX` which should be between 0 and 100. All calls to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1317 * SDL_SetHapticGain() will scale linearly using `SDL_HAPTIC_GAIN_MAX` as the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1318 * maximum.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1319 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1320 * \param haptic the SDL_Haptic device to set the gain on.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1321 * \param gain value to set the gain to, should be between 0 and 100 (0 -
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1322 * 100).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1323 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1324 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1325 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1326 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1327 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1328 * \sa SDL_GetHapticFeatures
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1329 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1330 extern SDL_DECLSPEC bool SDLCALL SDL_SetHapticGain(SDL_Haptic *haptic, int gain);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1331
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1332 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1333 * Set the global autocenter of the device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1334 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1335 * Autocenter should be between 0 and 100. Setting it to 0 will disable
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1336 * autocentering.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1337 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1338 * Device must support the SDL_HAPTIC_AUTOCENTER feature.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1339 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1340 * \param haptic the SDL_Haptic device to set autocentering on.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1341 * \param autocenter value to set autocenter to (0-100).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1342 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1343 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1344 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1345 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1346 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1347 * \sa SDL_GetHapticFeatures
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1348 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1349 extern SDL_DECLSPEC bool SDLCALL SDL_SetHapticAutocenter(SDL_Haptic *haptic, int autocenter);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1350
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1351 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1352 * Pause a haptic device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1353 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1354 * Device must support the `SDL_HAPTIC_PAUSE` feature. Call SDL_ResumeHaptic()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1355 * to resume playback.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1356 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1357 * Do not modify the effects nor add new ones while the device is paused. That
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1358 * can cause all sorts of weird errors.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1359 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1360 * \param haptic the SDL_Haptic device to pause.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1361 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1362 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1363 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1364 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1365 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1366 * \sa SDL_ResumeHaptic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1367 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1368 extern SDL_DECLSPEC bool SDLCALL SDL_PauseHaptic(SDL_Haptic *haptic);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1369
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1370 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1371 * Resume a haptic device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1372 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1373 * Call to unpause after SDL_PauseHaptic().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1374 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1375 * \param haptic the SDL_Haptic device to unpause.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1376 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1377 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1378 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1379 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1380 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1381 * \sa SDL_PauseHaptic
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1382 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1383 extern SDL_DECLSPEC bool SDLCALL SDL_ResumeHaptic(SDL_Haptic *haptic);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1384
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1385 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1386 * Stop all the currently playing effects on a haptic device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1387 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1388 * \param haptic the SDL_Haptic device to stop.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1389 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1390 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1391 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1392 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1393 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1394 * \sa SDL_RunHapticEffect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1395 * \sa SDL_StopHapticEffects
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1396 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1397 extern SDL_DECLSPEC bool SDLCALL SDL_StopHapticEffects(SDL_Haptic *haptic);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1398
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1399 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1400 * Check whether rumble is supported on a haptic device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1401 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1402 * \param haptic haptic device to check for rumble support.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1403 * \returns true if the effect is supported or false if it isn't.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1404 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1405 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1406 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1407 * \sa SDL_InitHapticRumble
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1408 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1409 extern SDL_DECLSPEC bool SDLCALL SDL_HapticRumbleSupported(SDL_Haptic *haptic);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1410
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1411 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1412 * Initialize a haptic device for simple rumble playback.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1413 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1414 * \param haptic the haptic device to initialize for simple rumble playback.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1415 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1416 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1417 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1418 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1419 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1420 * \sa SDL_PlayHapticRumble
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1421 * \sa SDL_StopHapticRumble
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1422 * \sa SDL_HapticRumbleSupported
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1423 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1424 extern SDL_DECLSPEC bool SDLCALL SDL_InitHapticRumble(SDL_Haptic *haptic);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1425
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1426 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1427 * Run a simple rumble effect on a haptic device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1428 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1429 * \param haptic the haptic device to play the rumble effect on.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1430 * \param strength strength of the rumble to play as a 0-1 float value.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1431 * \param length length of the rumble to play in milliseconds.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1432 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1433 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1434 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1435 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1436 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1437 * \sa SDL_InitHapticRumble
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1438 * \sa SDL_StopHapticRumble
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1439 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1440 extern SDL_DECLSPEC bool SDLCALL SDL_PlayHapticRumble(SDL_Haptic *haptic, float strength, Uint32 length);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1441
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1442 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1443 * Stop the simple rumble on a haptic device.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1444 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1445 * \param haptic the haptic device to stop the rumble effect on.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1446 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1447 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1448 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1449 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1450 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1451 * \sa SDL_PlayHapticRumble
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1452 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1453 extern SDL_DECLSPEC bool SDLCALL SDL_StopHapticRumble(SDL_Haptic *haptic);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1454
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1455 /* Ends C function definitions when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1456 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1457 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1458 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1459 #include <SDL3/SDL_close_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1460
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1461 #endif /* SDL_haptic_h_ */