atl: Moved atlwin.h to public includes.
[wine] / include / dinputd.h
1 /*
2  * Copyright (C) the Wine project
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 #ifndef __DINPUTD_INCLUDED__
20 #define __DINPUTD_INCLUDED__
21
22 #define COM_NO_WINDOWS_H
23 #include <objbase.h>
24
25 #ifndef DIRECTINPUT_VERSION
26 #define DIRECTINPUT_VERSION 0x0800
27 #endif
28
29 DEFINE_GUID(IID_IDirectInputJoyConfig8, 0xEB0D7DFA,0x1990,0x4F27,0xB4,0xD6,0xED,0xF2,0xEE,0xC4,0xA4,0x4C);
30
31 typedef struct IDirectInputJoyConfig8 *LPDIRECTINPUTJOYCONFIG8;
32
33
34 typedef BOOL (CALLBACK *LPDIJOYTYPECALLBACK)(LPCWSTR, LPVOID);
35
36 #define MAX_JOYSTRING 256
37 #ifndef MAX_JOYSTICKOEMVXDNAME
38 #define MAX_JOYSTICKOEMVXDNAME 260
39 #endif
40
41 #define JOY_POV_NUMDIRS         4
42 #define JOY_POVVAL_FORWARD      0
43 #define JOY_POVVAL_BACKWARD     1
44 #define JOY_POVVAL_LEFT         2
45 #define JOY_POVVAL_RIGHT        3
46
47 #define DIERR_NOMOREITEMS       MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NO_MORE_ITEMS)
48
49 typedef struct joypos_tag
50 {
51     DWORD dwX;
52     DWORD dwY;
53     DWORD dwZ;
54     DWORD dwR;
55     DWORD dwU;
56     DWORD dwV;
57 } JOYPOS, *LPJOYPOS;
58
59 typedef struct joyrange_tag
60 {
61     JOYPOS jpMin;
62     JOYPOS jpMax;
63     JOYPOS jpCenter;
64 } JOYRANGE, *LPJOYRANGE;
65
66 typedef struct joyreguservalues_tag
67 {
68     DWORD dwTimeOut;
69     JOYRANGE jrvRanges;
70     JOYPOS jpDeadZone;
71 } JOYREGUSERVALUES, *LPJOYREGUSERVALUES;
72
73 typedef struct joyreghwsettings_tag
74 {
75     DWORD dwFlags;
76     DWORD dwNumButtons;
77 } JOYREGHWSETTINGS, *LPJOYHWSETTINGS;
78
79 typedef struct joyreghwvalues_tag
80 {
81     JOYRANGE jrvHardware;
82     DWORD dwPOVValues[JOY_POV_NUMDIRS];
83     DWORD dwCalFlags;
84 } JOYREGHWVALUES, *LPJOYREGHWVALUES;
85
86 typedef struct joyreghwconfig_tag
87 {
88     JOYREGHWSETTINGS hws;
89     DWORD dwUsageSettings;
90     JOYREGHWVALUES hwv;
91     DWORD dwType;
92     DWORD dwReserved;
93 } JOYREGHWCONFIG, *LPJOYREGHWCONFIG;
94
95 typedef struct DIJOYTYPEINFO_DX5
96 {
97     DWORD dwSize;
98     JOYREGHWSETTINGS hws;
99     CLSID clsidConfig;
100     WCHAR wszDisplayName[MAX_JOYSTRING];
101     WCHAR wszCallout[MAX_JOYSTICKOEMVXDNAME];
102 } DIJOYTYPEINFO_DX5, *LPDIJOYTYPEINFO_DX5;
103 typedef const DIJOYTYPEINFO_DX5 *LPCDIJOYTYPEINFO_DX5;
104
105 typedef struct DIJOYTYPEINFO_DX6
106 {
107     DWORD dwSize;
108     JOYREGHWSETTINGS hws;
109     CLSID clsidConfig;
110     WCHAR wszDisplayName[MAX_JOYSTRING];
111     WCHAR wszCallout[MAX_JOYSTICKOEMVXDNAME];
112     WCHAR wszHardwareId[MAX_JOYSTRING];
113     DWORD dwFlags1;
114 } DIJOYTYPEINFO_DX6, *LPDIJOYTYPEINFO_DX6;
115 typedef const DIJOYTYPEINFO_DX6 *LPCDIJOYTYPEINFO_DX6;
116
117 typedef struct DIJOYTYPEINFO
118 {
119     DWORD dwSize;
120     JOYREGHWSETTINGS hws;
121     CLSID clsidConfig;
122     WCHAR wszDisplayName[MAX_JOYSTRING];
123     WCHAR wszCallout[MAX_JOYSTICKOEMVXDNAME];
124     WCHAR wszHardwareId[MAX_JOYSTRING];
125     DWORD dwFlags1;
126     DWORD dwFlags2;
127     WCHAR wszMapFile[MAX_JOYSTRING];
128 } DIJOYTYPEINFO, *LPDIJOYTYPEINFO;
129 typedef const DIJOYTYPEINFO *LPCDIJOYTYPEINFO;
130 #define DIJC_GUIDINSTANCE       0x00000001
131 #define DIJC_REGHWCONFIGTYPE    0x00000002
132 #define DIJC_GAIN               0x00000004
133 #define DIJC_CALLOUT            0x00000008
134 #define DIJC_WDMGAMEPORT        0x00000010
135
136 typedef struct DIJOYCONFIG_DX5
137 {
138     DWORD dwSize;
139     GUID guidInstance;
140     JOYREGHWCONFIG hwc;
141     DWORD dwGain;
142     WCHAR wszType[MAX_JOYSTRING];
143     WCHAR wszCallout[MAX_JOYSTRING];
144 } DIJOYCONFIG_DX5, *LPDIJOYCONFIG_DX5;
145 typedef const DIJOYCONFIG_DX5 *LPCDIJOYCONFIG_DX5;
146
147 typedef struct DIJOYCONFIG
148 {
149     DWORD dwSize;
150     GUID guidInstance;
151     JOYREGHWCONFIG hwc;
152     DWORD dwGain;
153     WCHAR wszType[MAX_JOYSTRING];
154     WCHAR wszCallout[MAX_JOYSTRING];
155     GUID guidGameport;
156 } DIJOYCONFIG, *LPDIJOYCONFIG;
157 typedef const DIJOYCONFIG *LPCDIJOYCONFIG;
158
159 typedef struct DIJOYUSERVALUES
160 {
161     DWORD dwSize;
162     JOYREGUSERVALUES ruv;
163     WCHAR wszGlobalDriver[MAX_JOYSTRING];
164     WCHAR wszGameportEmulator[MAX_JOYSTRING];
165 } DIJOYUSERVALUES, *LPDIJOYUSERVALUES;
166 typedef const DIJOYUSERVALUES *LPCDIJOYUSERVALUES;
167
168
169 /*****************************************************************************
170  * IDirectInputJoyConfig8 interface
171  */
172 #define INTERFACE IDirectInputJoyConfig8
173 DECLARE_INTERFACE_(IDirectInputJoyConfig8, IUnknown)
174 {
175     /*** IUnknown methods ***/
176     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
177     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
178     STDMETHOD_(ULONG,Release)(THIS) PURE;
179     /*** IDirectInputJoyConfig8 methods ***/
180     STDMETHOD(Acquire)(THIS) PURE;
181     STDMETHOD(Unacquire)(THIS) PURE;
182     STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
183     STDMETHOD(SendNotify)(THIS) PURE;
184     STDMETHOD(EnumTypes)(THIS_ LPDIJOYTYPECALLBACK, LPVOID) PURE;
185     STDMETHOD(GetTypeInfo)(THIS_ LPCWSTR, LPDIJOYTYPEINFO, DWORD) PURE;
186     STDMETHOD(SetTypeInfo)(THIS_ LPCWSTR, LPCDIJOYTYPEINFO, DWORD, LPWSTR) PURE;
187     STDMETHOD(DeleteType)(THIS_ LPCWSTR) PURE;
188     STDMETHOD(GetConfig)(THIS_ UINT, LPDIJOYCONFIG, DWORD) PURE;
189     STDMETHOD(SetConfig)(THIS_ UINT, LPCDIJOYCONFIG, DWORD) PURE;
190     STDMETHOD(DeleteConfig)(THIS_ UINT) PURE;
191     STDMETHOD(GetUserValues)(THIS_ LPDIJOYUSERVALUES, DWORD) PURE;
192     STDMETHOD(SetUserValues)(THIS_ LPCDIJOYUSERVALUES, DWORD) PURE;
193     STDMETHOD(AddNewHardware)(THIS_ HWND, REFGUID) PURE;
194     STDMETHOD(OpenTypeKey)(THIS_ LPCWSTR, DWORD, PHKEY) PURE;
195     STDMETHOD(OpenAppStatusKey)(THIS_ PHKEY) PURE;
196 };
197 #undef INTERFACE
198
199 #if !defined(__cplusplus) || defined(CINTERFACE)
200 /*** IUnknown methods ***/
201 #define IDirectInputJoyConfig8_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
202 #define IDirectInputJoyConfig8_AddRef(p)                  (p)->lpVtbl->AddRef(p)
203 #define IDirectInputJoyConfig8_Release(p)                 (p)->lpVtbl->Release(p)
204 /*** IDirectInputJoyConfig8 methods ***/
205 #define IDirectInputJoyConfig8_Acquire(p)                 (p)->lpVtbl->Acquire(p)
206 #define IDirectInputJoyConfig8_Unacquire(p)               (p)->lpVtbl->Unacquire(p)
207 #define IDirectInputJoyConfig8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
208 #define IDirectInputJoyConfig8_SendNotify(p)              (p)->lpVtbl->SendNotify(p)
209 #define IDirectInputJoyConfig8_EnumTypes(p,a,b)           (p)->lpVtbl->EnumTypes(p,a,b)
210 #define IDirectInputJoyConfig8_GetTypeInfo(p,a,b,c)       (p)->lpVtbl->GetTypeInfo(p,a,b,c)
211 #define IDirectInputJoyConfig8_SetTypeInfo(p,a,b,c,d)     (p)->lpVtbl->SetTypeInfo(p,a,b,c,d)
212 #define IDirectInputJoyConfig8_DeleteType(p,a)            (p)->lpVtbl->DeleteType(p,a)
213 #define IDirectInputJoyConfig8_GetConfig(p,a,b,c)         (p)->lpVtbl->GetConfig(p,a,b,c)
214 #define IDirectInputJoyConfig8_SetConfig(p,a,b,c)         (p)->lpVtbl->SetConfig(p,a,b,c)
215 #define IDirectInputJoyConfig8_DeleteConfig(p,a)          (p)->lpVtbl->DeleteConfig(p,a)
216 #define IDirectInputJoyConfig8_GetUserValues(p,a,b)       (p)->lpVtbl->GetUserValues(p,a,b)
217 #define IDirectInputJoyConfig8_SetUserValues(p,a,b)       (p)->lpVtbl->SetUserValues(p,a,b)
218 #define IDirectInputJoyConfig8_AddNewHardware(p,a,b)      (p)->lpVtbl->AddNewHardware(p,a,b)
219 #define IDirectInputJoyConfig8_OpenTypeKey(p,a,b,c)       (p)->lpVtbl->OpenTypeKey(p,a,b,c)
220 #define IDirectInputJoyConfig8_OpenAppStatusKey(p,a)      (p)->lpVtbl->OpenAppStatusKey(p,a)
221 #else
222 /*** IUnknown methods ***/
223 #define IDirectInputJoyConfig8_QueryInterface(p,a,b)      (p)->QueryInterface(a,b)
224 #define IDirectInputJoyConfig8_AddRef(p)                  (p)->AddRef()
225 #define IDirectInputJoyConfig8_Release(p)                 (p)->Release()
226 /*** IDirectInputJoyConfig8 methods ***/
227 #define IDirectInputJoyConfig8_Acquire(p)                 (p)->Acquire()
228 #define IDirectInputJoyConfig8_Unacquire(p)               (p)->Unacquire()
229 #define IDirectInputJoyConfig8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
230 #define IDirectInputJoyConfig8_SendNotify(p)              (p)->SendNotify()
231 #define IDirectInputJoyConfig8_EnumTypes(p,a,b)           (p)->EnumTypes(a,b)
232 #define IDirectInputJoyConfig8_GetTypeInfo(p,a,b,c)       (p)->GetTypeInfo(a,b,c)
233 #define IDirectInputJoyConfig8_SetTypeInfo(p,a,b,c,d)     (p)->SetTypeInfo(a,b,c,d)
234 #define IDirectInputJoyConfig8_DeleteType(p,a)            (p)->DeleteType(a)
235 #define IDirectInputJoyConfig8_GetConfig(p,a,b,c)         (p)->GetConfig(a,b,c)
236 #define IDirectInputJoyConfig8_SetConfig(p,a,b,c)         (p)->SetConfig(a,b,c)
237 #define IDirectInputJoyConfig8_DeleteConfig(p,a)          (p)->DeleteConfig(a)
238 #define IDirectInputJoyConfig8_GetUserValues(p,a,b)       (p)->GetUserValues(a,b)
239 #define IDirectInputJoyConfig8_SetUserValues(p,a,b)       (p)->SetUserValues(a,b)
240 #define IDirectInputJoyConfig8_AddNewHardware(p,a,b)      (p)->AddNewHardware(a,b)
241 #define IDirectInputJoyConfig8_OpenTypeKey(p,a,b,c)       (p)->OpenTypeKey(a,b,c)
242 #define IDirectInputJoyConfig8_OpenAppStatusKey(p,a)      (p)->OpenAppStatusKey(a)
243 #endif
244
245 #endif /* __DINPUTD_INCLUDED__ */