dinput header fixes

Robert Reif reif at earthlink.net
Thu Sep 16 20:42:44 CDT 2004


Add some more version checks.
Add some missing structures.
-------------- next part --------------
Index: include/dinput.h
===================================================================
RCS file: /home/wine/wine/include/dinput.h,v
retrieving revision 1.44
diff -u -r1.44 dinput.h
--- include/dinput.h	7 Sep 2004 19:32:56 -0000	1.44
+++ include/dinput.h	17 Sep 2004 01:31:51 -0000
@@ -314,6 +314,7 @@
 #define GET_DIDEVICE_TYPE(dwDevType)     LOBYTE(dwDevType)
 #define GET_DIDEVICE_SUBTYPE(dwDevType)  HIBYTE(dwDevType)
 
+#if(DIRECTINPUT_VERSION >= 0x0500)
 typedef struct DIDEVICEOBJECTINSTANCE_DX3A {
     DWORD   dwSize;
     GUID    guidType;
@@ -336,6 +337,7 @@
 DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE_DX3)
 DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE_DX3)
 DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE_DX3)
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
 
 typedef struct DIDEVICEOBJECTINSTANCEA {
     DWORD	dwSize;
@@ -383,6 +385,7 @@
 DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE)
 DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE)
 
+#if(DIRECTINPUT_VERSION >= 0x0500)
 typedef struct DIDEVICEINSTANCE_DX3A {
     DWORD   dwSize;
     GUID    guidInstance;
@@ -405,6 +408,7 @@
 DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE_DX3)
 DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE_DX3)
 DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE_DX3)
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
 
 typedef struct DIDEVICEINSTANCEA {
     DWORD	dwSize;
@@ -640,7 +644,9 @@
     DWORD	dwData;
     DWORD	dwTimeStamp;
     DWORD	dwSequence;
+#if(DIRECTINPUT_VERSION >= 0x0800)
     UINT_PTR	uAppData;
+#endif /* DIRECTINPUT_VERSION >= 0x0800 */
 } DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA;
 typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA;
 
@@ -693,6 +699,14 @@
 } DIPROPDWORD, *LPDIPROPDWORD;
 typedef const DIPROPDWORD *LPCDIPROPDWORD;
 
+#if(DIRECTINPUT_VERSION >= 0x0800)
+typedef struct DIPROPPOINTER {
+	DIPROPHEADER	diph;
+	UINT_PTR	uData;
+} DIPROPPOINTER, *LPDIPROPPOINTER;
+typedef const DIPROPPOINTER *LPCDIPROPPOINTER;
+#endif /* DIRECTINPUT_VERSION >= 0x0800 */
+
 typedef struct DIPROPRANGE {
 	DIPROPHEADER	diph;
 	LONG		lMin;
@@ -703,6 +717,7 @@
 #define DIPROPRANGE_NOMIN	((LONG)0x80000000)
 #define DIPROPRANGE_NOMAX	((LONG)0x7FFFFFFF)
 
+#if(DIRECTINPUT_VERSION >= 0x050a)
 typedef struct DIPROPCAL {
 	DIPROPHEADER diph;
 	LONG	lMin;
@@ -711,6 +726,13 @@
 } DIPROPCAL, *LPDIPROPCAL;
 typedef const DIPROPCAL *LPCDIPROPCAL;
 
+typedef struct DIPROPCALPOV {
+	DIPROPHEADER	diph;
+	LONG		lMin[5];
+	LONG		lMax[5];
+} DIPROPCALPOV, *LPDIPROPCALPOV;
+typedef const DIPROPCALPOV *LPCDIPROPCALPOV;
+
 typedef struct DIPROPGUIDANDPATH {
 	DIPROPHEADER diph;
 	GUID    guidClass;
@@ -718,6 +740,30 @@
 } DIPROPGUIDANDPATH, *LPDIPROPGUIDANDPATH;
 typedef const DIPROPGUIDANDPATH *LPCDIPROPGUIDANDPATH;
 
+typedef struct DIPROPSTRING {
+	DIPROPHEADER	diph;
+	WCHAR		wsz[MAX_PATH];
+} DIPROPSTRING, *LPDIPROPSTRING;
+typedef const DIPROPSTRING *LPCDIPROPSTRING;
+#endif /* DIRECTINPUT_VERSION >= 0x050a */
+
+#if(DIRECTINPUT_VERSION >= 0x0800)
+#define MAXCPOINTSNUM	8
+
+typedef struct _CPOINT
+{
+	LONG	lP;
+	DWORD	dwLog;
+} CPOINT, *PCPOINT;
+
+typedef struct DIPROPCPOINTS {
+	DIPROPHEADER	diph;
+	DWORD		dwCPointsNum;
+	CPOINT		cp[MAXCPOINTSNUM];
+} DIPROPCPOINTS, *LPDIPROPCPOINTS;
+typedef const DIPROPCPOINTS *LPCDIPROPCPOINTS;
+#endif /* DIRECTINPUT_VERSION >= 0x0800 */
+
 /* special property GUIDs */
 #ifdef __cplusplus
 #define MAKEDIPROP(prop)	(*(const GUID *)(prop))
@@ -749,6 +795,7 @@
 #define DIPROP_CALIBRATION	MAKEDIPROP(11)
 #define DIPROP_GUIDANDPATH	MAKEDIPROP(12)
 
+#if(DIRECTINPUT_VERSION >= 0x0500)
 typedef struct DIDEVCAPS_DX3 {
     DWORD	dwSize;
     DWORD	dwFlags;
@@ -757,6 +804,7 @@
     DWORD	dwButtons;
     DWORD	dwPOVs;
 } DIDEVCAPS_DX3, *LPDIDEVCAPS_DX3;
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
 
 typedef struct DIDEVCAPS {
     DWORD	dwSize;
@@ -895,7 +943,9 @@
 	LPDIENVELOPE		lpEnvelope;
 	DWORD			cbTypeSpecificParams;
 	LPVOID			lpvTypeSpecificParams;
+#if(DIRECTINPUT_VERSION >= 0x0600)
 	DWORD			dwStartDelay;
+#endif /* DIRECTINPUT_VERSION >= 0x0600 */
 } DIEFFECT, *LPDIEFFECT;
 typedef const DIEFFECT *LPCDIEFFECT;
 typedef DIEFFECT DIEFFECT_DX6;
@@ -1027,6 +1077,7 @@
 #define DIJOFS_BUTTON31		DIJOFS_BUTTON(31)
 
 /* DInput 7 structures, types */
+#if(DIRECTINPUT_VERSION >= 0x0700)
 typedef struct DIFILEEFFECT {
   DWORD       dwSize;
   GUID        GuidEffect;
@@ -1036,6 +1087,7 @@
 
 typedef const DIFILEEFFECT *LPCDIFILEEFFECT;
 typedef BOOL (CALLBACK *LPDIENUMEFFECTSINFILECALLBACK)(LPCDIFILEEFFECT , LPVOID);
+#endif
 
 /* DInput 8 structures and types */
 #if DIRECTINPUT_VERSION >= 0x0800
@@ -1569,20 +1621,22 @@
 #endif /* DI8 */
 
 /* "Standard" Mouse report... */
-typedef struct DIMOUSESTATE {
+typedef struct _DIMOUSESTATE {
   LONG lX;
   LONG lY;
   LONG lZ;
   BYTE rgbButtons[4];
-} DIMOUSESTATE;
+} DIMOUSESTATE, *LPDIMOUSESTATE;
 
 /* "Standard" Mouse report for DInput 7... */
-typedef struct DIMOUSESTATE2 {
+#if DIRECTINPUT_VERSION >= 0x0700
+typedef struct _DIMOUSESTATE2 {
   LONG lX;
   LONG lY;
   LONG lZ;
   BYTE rgbButtons[8];
-} DIMOUSESTATE2;
+} DIMOUSESTATE2, *LPDIMOUSESTATE2;
+#endif /* DIRECTINPUT_VERSION >= 0x0700 */
 
 #define DIMOFS_X        FIELD_OFFSET(DIMOUSESTATE, lX)
 #define DIMOFS_Y        FIELD_OFFSET(DIMOUSESTATE, lY)
@@ -1600,10 +1654,14 @@
 extern "C" {
 #endif
 extern const DIDATAFORMAT c_dfDIMouse;
+#if(DIRECTINPUT_VERSION >= 0x0700)
 extern const DIDATAFORMAT c_dfDIMouse2; /* DX 7 */
+#endif /* DIRECTINPUT_VERSION >= 0x0700 */
 extern const DIDATAFORMAT c_dfDIKeyboard;
+#if(DIRECTINPUT_VERSION >= 0x0500)
 extern const DIDATAFORMAT c_dfDIJoystick;
 extern const DIDATAFORMAT c_dfDIJoystick2;
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
 #ifdef __cplusplus
 };
 #endif


More information about the wine-patches mailing list