This repository has been archived by the owner on Feb 11, 2021. It is now read-only.
/
SDL_haptic.h
143 lines (114 loc) · 3.89 KB
/
SDL_haptic.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/*
SDL - Simple DirectMedia Layer
Copyright (C) 2008 Edgar Simo
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Sam Lantinga
slouken@libsdl.org
*/
/**
* \file SDL_haptic.h
*
* Include file for SDL haptic subsystem
*/
#ifndef _SDL_haptic_h
#define _SDL_haptic_h
#include "SDL_stdinc.h"
#include "SDL_error.h"
#include "begin_code.h"
/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
/* *INDENT-OFF* */
extern "C" {
/* *INDENT-ON* */
#endif
/* The haptic structure used to identify an SDL haptic */
struct _SDL_Haptic;
typedef struct _SDL_Haptic SDL_Haptic;
/* Different effects that can be generated */
#define SDL_HAPTIC_CONSTANT (1<<0)
#define SDL_HAPTIC_PERIODIC (1<<1)
#define SDL_HAPTIC_RAMP (1<<2)
#define SDL_HAPTIC_SPRING (1<<3)
#define SDL_HAPTIC_FRICTION (1<<4)
#define SDL_HAPTIC_DAMPER (1<<5)
#define SDL_HAPTIC_RUMBLE (1<<6)
#define SDL_HAPTIC_INERTIA (1<<7)
#define SDL_HAPTIC_GAIN (1<<8)
#define SDL_HAPTIC_AUTOCENTER (1<<9)
typedef struct SDL_HapticConstant {
/* Header */
Uint16 type;
Uint16 length;
Uint16 delay;
Uint16 direction;
} SDL_HapticConstant;
typedef union SDL_HapticEffect {
/* Common for all force feedback effects */
Uint16 type; /* Effect type */
SDL_HapticConstant constant; /* Constant effect */
} SDL_HapticEffect;
/* Function prototypes */
/*
* Count the number of joysticks attached to the system
*/
extern DECLSPEC int SDLCALL SDL_NumHaptics(void);
/*
* Get the implementation dependent name of a Haptic device.
* This can be called before any joysticks are opened.
* If no name can be found, this function returns NULL.
*/
extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index);
/*
* Opens a Haptic device for usage - the index passed as an
* argument refers to the N'th Haptic device on this system.
*
* This function returns a Haptic device identifier, or Null
* if an error occurred.
*/
extern DECLSPEC SDL_Haptic * SDL_HapticOpen(int device_index);
/*
* Closes a Haptic device previously opened with SDL_HapticOpen.
*/
extern DECLSPEC void SDL_HapticClose(SDL_Haptic * haptic);
/*
* Returns the number of effects a haptic device can store.
*/
extern DECLSPEC int SDL_HapticNumEffects(SDL_Haptic * haptic);
/*
* Returns the supported effects. Individual effects can be queried by
* bitwise operators.
*
* Example: (SDL_HapticQueryEffects(haptic) & SDL_HAPTIC_CONSTANT)
*/
extern DECLSPEC unsigned int SDL_HapticQueryEffects(SDL_Haptic * haptic);
/*
* Creates a new haptic effect on the device.
*/
extern DECLSPEC int SDL_HapticNewEffect(SDL_Haptic * haptic, SDL_HapticEffect * effect);
/*
* Runs the haptic effect on it's assosciated haptic device.
*/
extern DECLSPEC int SDL_HapticRunEffect(SDL_Haptic * haptic, int effect);
/*
* Destroys a haptic effect on the device.
*/
extern DECLSPEC void SDL_HapticDestroyEffect(SDL_Haptic * haptic, int effect);
/* Ends C function definitions when using C++ */
#ifdef __cplusplus
/* *INDENT-OFF* */
}
/* *INDENT-ON* */
#endif
#include "close_code.h"
#endif /* _SDL_haptic_h */
/* vi: set ts=4 sw=4 expandtab: */