SynGame/allegro/include/allegro5/internal/aintern_joystick.h

91 lines
2.2 KiB
C

#ifndef __al_included_allegro5_aintern_joystick_h
#define __al_included_allegro5_aintern_joystick_h
#include "allegro5/internal/aintern_driver.h"
#include "allegro5/internal/aintern_events.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct ALLEGRO_JOYSTICK_DRIVER
{
int joydrv_id;
const char *joydrv_name;
const char *joydrv_desc;
const char *joydrv_ascii_name;
AL_METHOD(bool, init_joystick, (void));
AL_METHOD(void, exit_joystick, (void));
AL_METHOD(bool, reconfigure_joysticks, (void));
AL_METHOD(int, num_joysticks, (void));
AL_METHOD(ALLEGRO_JOYSTICK *, get_joystick, (int joyn));
AL_METHOD(void, release_joystick, (ALLEGRO_JOYSTICK *joy));
AL_METHOD(void, get_joystick_state, (ALLEGRO_JOYSTICK *joy, ALLEGRO_JOYSTICK_STATE *ret_state));
AL_METHOD(const char *, get_name, (ALLEGRO_JOYSTICK *joy));
AL_METHOD(bool, get_active, (ALLEGRO_JOYSTICK *joy));
} ALLEGRO_JOYSTICK_DRIVER;
AL_ARRAY(_AL_DRIVER_INFO, _al_joystick_driver_list);
/* macros for constructing the driver list */
#define _AL_BEGIN_JOYSTICK_DRIVER_LIST \
_AL_DRIVER_INFO _al_joystick_driver_list[] = \
{
#define _AL_END_JOYSTICK_DRIVER_LIST \
{ 0, NULL, false } \
};
/* information about a single joystick axis */
typedef struct _AL_JOYSTICK_AXIS_INFO
{
char *name;
} _AL_JOYSTICK_AXIS_INFO;
/* information about one or more axis (a slider or directional control) */
typedef struct _AL_JOYSTICK_STICK_INFO
{
int flags; /* bit-field */
int num_axes;
_AL_JOYSTICK_AXIS_INFO axis[_AL_MAX_JOYSTICK_AXES];
char *name;
} _AL_JOYSTICK_STICK_INFO;
/* information about a joystick button */
typedef struct _AL_JOYSTICK_BUTTON_INFO
{
const char *name;
} _AL_JOYSTICK_BUTTON_INFO;
/* information about an entire joystick */
typedef struct _AL_JOYSTICK_INFO
{
int num_sticks;
int num_buttons;
_AL_JOYSTICK_STICK_INFO stick[_AL_MAX_JOYSTICK_STICKS];
_AL_JOYSTICK_BUTTON_INFO button[_AL_MAX_JOYSTICK_BUTTONS];
} _AL_JOYSTICK_INFO;
struct ALLEGRO_JOYSTICK
{
_AL_JOYSTICK_INFO info;
};
void _al_generate_joystick_event(ALLEGRO_EVENT *event);
#ifdef __cplusplus
}
#endif
#endif
/* vi ts=8 sts=3 sw=3 et */