reman3/Rayman_X/cpa/public/INO/InoMain.h

180 lines
6.2 KiB
C

/******************************************************************************
Joystick.h : Definition of structures and Macros
Author : JENTEY F.
Last update : 06/03/97
20/11/97 DInput 5
******************************************************************************/
#ifndef _INO_MAIN_H
#define _INO_MAIN_H
#include "cpa_std.h"
#include "DInput.h"
/**************************************/
#ifndef CPA_EXPORT
#if defined(CPA_WANTS_IMPORT)
#define CPA_EXPORT __declspec(dllimport)
#elif defined(CPA_WANTS_EXPORT)
#define CPA_EXPORT __declspec(dllexport)
#else
#define CPA_EXPORT
#endif
#endif
/**************************************/
#if !defined(U64)
#define INO_C_wNbMaxDevice 20
#define INO_C_wNbMaxAxis 6
#else /* U64, 4 joystick with only 2 axes */
#define INO_C_wNbMaxDevice 4
#define INO_C_wNbMaxAxis 2
#endif
/**************************************************************************
Device type.
***************************************************************************/
#define INO_C_uwUnknown 0
#define INO_C_uwMouse (1 << 2)
#define INO_C_uwKeyboard (1 << 3)
#define INO_C_uwJoystick (1 << 4)
#define INO_C_uwAnyType 0xFF
/**************************************************************************
Device status.
***************************************************************************/
#define INO_C_ucConnected 1
#define INO_C_ucAcquired (1 << 1)
#define INO_C_ucAccessError (1 << 2)
#define INO_C_ucGLDLink (1 << 3)
#define INO_C_ucActivated (1 << 4)
/**************************************************************************
Read mode for INO_fn_wReadAllDevices (short wMode).
***************************************************************************/
#define INO_C_wAllDevices 1
#define INO_C_wConnectedDevices 2
/**************************************************************************
Key or button state.
***************************************************************************/
#define INO_C_ucButtonDown 0x80
#define INO_C_ucKeyDown INO_C_ucButtonDown
#define INO_C_ucKeyToggled 0x01
/**************************************************************************
INO device common capabilities
***************************************************************************/
typedef struct stDevCaps
{
unsigned char m_ucNbButtons;
unsigned long m_ulCapsFlags;
} INO_tdstDevCaps;
/**************************************************************************
INO device state
***************************************************************************/
typedef struct stDevState
{
unsigned char m_ucStatus; /* Connected, acquired, link with GLD */
} INO_tdstDevState;
/**************************************************************************
INO axis capabilities
***************************************************************************/
typedef struct stAxisCaps
{
long m_lCenter;
long m_lRange;
long m_lThreshold;
} INO_tdstAxisCaps;
/**************************************************************************
INO device structure
***************************************************************************/
#ifdef __cplusplus
struct stDevice;
typedef struct stDevice INO_tdstDevice, *INO_tdhDevice;
#endif /* __cplusplus*/
typedef short (*INO_fn_wMethod)(INO_tdstDevice);
#ifndef __cplusplus
typedef
#endif
struct stDevice
{
unsigned short m_uwType;
INO_tdstDevCaps *m_p_stCaps; /* Device type specific caps */
INO_tdstDevState *m_p_stState; /* Device state, to cast acording to the device type */
unsigned long m_ulLastTimeCount;
/* Historic */
short m_wHistoricSize;
short m_wHistoricHead;
short m_wRecordNumber;
void *m_pvHistoric;
/* Device access methods */
INO_fn_wMethod m_pfnRead;
}
#ifdef __cplusplus
;
#else
INO_tdstDevice, *INO_tdhDevice;
#endif /* __cplusplus*/
/* Device capabilities */
#define INO_M_uwType(hDev) ((hDev)->m_uwType & 0xFF)
#define INO_M_uwSubType(hDev) ((hDev)->m_uwType)
#define INO_M_ucNbButtons(hDev) ((hDev)->m_p_stCaps->m_ucNbButtons)
#define INO_M_lNbKeys(hDev) INO_M_lNbButtons(hDev)
#define INO_M_ulAxes(hDev) ((hDev)->m_p_stCaps->m_ulCapsFlags & C_ulAxesMask)
/* Device state */
#define INO_M_wReadDevice(hDev) ((hDev)->m_pfnRead(hDev))
#define INO_M_bIsConnected(hDev) (((hDev)->m_p_stState->m_ucStatus & INO_C_ucConnected) != 0)
#define INO_M_bIsFocused(hDev) (((hDev)->m_p_stState->m_ucStatus & INO_C_ucAcquired) != 0)
#define INO_M_bDeviceReady(hDev) (((hDev)->m_p_stState->m_ucStatus & (INO_C_ucConnected | INO_C_ucAcquired)) \
== (INO_C_ucConnected | INO_C_ucAcquired) )
/******************************************************************************
All functions return 1 if Ok else 0
******************************************************************************/
#if defined(__cplusplus)
#define INO_EXTERN
extern "C"
{
#else
#define INO_EXTERN extern
#endif
INO_EXTERN CPA_EXPORT short INO_fn_wInit(HINSTANCE hInstance, HWND hWindow);
INO_EXTERN CPA_EXPORT void INO_fn_vRelease();
INO_EXTERN CPA_EXPORT INO_tdhDevice INO_fn_hCreateDevice(unsigned short uwType, short wHistoricSize);
INO_EXTERN CPA_EXPORT short INO_fn_wReleaseDevice(INO_tdhDevice hDevice);
INO_EXTERN CPA_EXPORT void INO_fn_vResetDevice(INO_tdhDevice hDevice);
INO_EXTERN CPA_EXPORT short INO_fn_wGetNbDevices(unsigned short uwType);
INO_EXTERN CPA_EXPORT short INO_fn_wIsHandleValid(INO_tdhDevice hDev);
INO_EXTERN CPA_EXPORT short INO_fn_wInvalidateHandle(INO_tdhDevice *hDev);
INO_EXTERN CPA_EXPORT short INO_fn_wIsConnected(INO_tdhDevice hDev);
INO_EXTERN CPA_EXPORT short INO_fn_wReadAllDevices(unsigned short uwType, short wMode);
INO_EXTERN CPA_EXPORT short INO_fn_wActivateDevice(INO_tdhDevice hDev);
INO_EXTERN CPA_EXPORT short INO_fn_wDeactivateDevice(INO_tdhDevice hDev);
INO_EXTERN CPA_EXPORT void INO_fn_vUpdateLastError(unsigned short uwErrorCode);
#if defined(__cplusplus)
#undef INO_EXTERN
}
#endif
#endif /* _INO_MAIN_H */