Mercurial > projects > ddbg_continued
comparison win32/directx/dinput8.d @ 1:4a9dcbd9e54f
-files of 0.13 beta
-fixes so that it now compiles with the current dmd version
author | marton@basel.hu |
---|---|
date | Tue, 05 Apr 2011 20:44:01 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:586e4a649642 | 1:4a9dcbd9e54f |
---|---|
1 module win32.directx.dinput8; | |
2 | |
3 //import tango.sys.win32.Types; | |
4 //alias char CHAR; | |
5 | |
6 import win32.windows; | |
7 | |
8 enum { | |
9 CLASS_E_NOAGGREGATION = cast(int) 0x80040110, | |
10 } | |
11 | |
12 interface IUnknown { | |
13 HRESULT QueryInterface(IID* riid, void** pvObject); | |
14 ULONG AddRef(); | |
15 ULONG Release(); | |
16 } | |
17 | |
18 extern(C): | |
19 | |
20 struct DIDEVICEINSTANCEA | |
21 { | |
22 DWORD dwSize; | |
23 GUID guidInstance; | |
24 GUID guidProduct; | |
25 DWORD dwDevType; | |
26 CHAR tszInstanceName[MAX_PATH]; | |
27 CHAR tszProductName[MAX_PATH]; | |
28 GUID guidFFDriver; | |
29 WORD wUsagePage; | |
30 WORD wUsage; | |
31 } | |
32 alias DIDEVICEINSTANCEA DIDEVICEINSTANCE; | |
33 | |
34 struct DIDEVICEOBJECTINSTANCEA | |
35 { | |
36 DWORD dwSize; | |
37 GUID guidType; | |
38 DWORD dwOfs; | |
39 DWORD dwType; | |
40 DWORD dwFlags; | |
41 CHAR tszName[MAX_PATH]; | |
42 DWORD dwFFMaxForce; | |
43 DWORD dwFFForceResolution; | |
44 WORD wCollectionNumber; | |
45 WORD wDesignatorIndex; | |
46 WORD wUsagePage; | |
47 WORD wUsage; | |
48 DWORD dwDimension; | |
49 WORD wExponent; | |
50 WORD wReportId; | |
51 } | |
52 | |
53 struct DIOBJECTDATAFORMAT | |
54 { | |
55 const GUID *pguid; | |
56 DWORD dwOfs; | |
57 DWORD dwType; | |
58 DWORD dwFlags; | |
59 } | |
60 | |
61 struct DIDATAFORMAT | |
62 { | |
63 DWORD dwSize; | |
64 DWORD dwObjSize; | |
65 DWORD dwFlags; | |
66 DWORD dwDataSize; | |
67 DWORD dwNumObjs; | |
68 DIOBJECTDATAFORMAT* rgodf; | |
69 } | |
70 | |
71 extern DIDATAFORMAT c_dfDIKeyboard; | |
72 extern DIDATAFORMAT c_dfDIMouse2; | |
73 extern DIDATAFORMAT c_dfDIJoystick; | |
74 | |
75 struct DIACTIONA | |
76 { | |
77 UINT* uAppData; | |
78 DWORD dwSemantic; | |
79 DWORD dwFlags; | |
80 union | |
81 { | |
82 LPCSTR lptszActionName; | |
83 UINT uResIdString; | |
84 } | |
85 GUID guidInstance; | |
86 DWORD dwObjID; | |
87 DWORD dwHow; | |
88 } | |
89 | |
90 struct DIACTIONFORMATA | |
91 { | |
92 DWORD dwSize; | |
93 DWORD dwActionSize; | |
94 DWORD dwDataSize; | |
95 DWORD dwNumActions; | |
96 DIACTIONA* rgoAction; | |
97 GUID guidActionMap; | |
98 DWORD dwGenre; | |
99 DWORD dwBufferSize; | |
100 LONG lAxisMin; | |
101 LONG lAxisMax; | |
102 HINSTANCE hInstString; | |
103 FILETIME ftTimeStamp; | |
104 DWORD dwCRC; | |
105 CHAR tszActionMap[MAX_PATH]; | |
106 } | |
107 | |
108 struct DIDEVCAPS | |
109 { | |
110 DWORD dwSize; | |
111 DWORD dwFlags; | |
112 DWORD dwDevType; | |
113 DWORD dwAxes; | |
114 DWORD dwButtons; | |
115 DWORD dwPOVs; | |
116 DWORD dwFFSamplePeriod; | |
117 DWORD dwFFMinTimeResolution; | |
118 DWORD dwFirmwareRevision; | |
119 DWORD dwHardwareRevision; | |
120 DWORD dwFFDriverVersion; | |
121 } | |
122 | |
123 struct DIPROPHEADER | |
124 { | |
125 DWORD dwSize; | |
126 DWORD dwHeaderSize; | |
127 DWORD dwObj; | |
128 DWORD dwHow; | |
129 } | |
130 | |
131 struct DIDEVICEOBJECTDATA | |
132 { | |
133 DWORD dwOfs; | |
134 DWORD dwData; | |
135 DWORD dwTimeStamp; | |
136 DWORD dwSequence; | |
137 UINT* uAppData; | |
138 } | |
139 | |
140 struct DIENVELOPE | |
141 { | |
142 DWORD dwSize = DIENVELOPE.sizeof; | |
143 DWORD dwAttackLevel; | |
144 DWORD dwAttackTime; // Microseconds | |
145 DWORD dwFadeLevel; | |
146 DWORD dwFadeTime; // Microseconds | |
147 } | |
148 | |
149 struct DIEFFECT | |
150 { | |
151 DWORD dwSize = DIEFFECT.sizeof; | |
152 DWORD dwFlags; // DIEFF_* | |
153 DWORD dwDuration; // Microseconds | |
154 DWORD dwSamplePeriod; // Microseconds | |
155 DWORD dwGain; | |
156 DWORD dwTriggerButton; // or DIEB_NOTRIGGER | |
157 DWORD dwTriggerRepeatInterval; // Microseconds | |
158 DWORD cAxes; // Number of axes | |
159 LPDWORD rgdwAxes; // Array of axes | |
160 LPLONG rglDirection; // Array of directions | |
161 DIENVELOPE* lpEnvelope; // Optional | |
162 DWORD cbTypeSpecificParams; // Size of params | |
163 LPVOID lpvTypeSpecificParams; // Pointer to params | |
164 DWORD dwStartDelay; // Microseconds | |
165 } | |
166 | |
167 struct DIEFFESCAPE | |
168 { | |
169 DWORD dwSize; | |
170 DWORD dwCommand; | |
171 LPVOID lpvInBuffer; | |
172 DWORD cbInBuffer; | |
173 LPVOID lpvOutBuffer; | |
174 DWORD cbOutBuffer; | |
175 } | |
176 | |
177 struct DIEFFECTINFOA | |
178 { | |
179 DWORD dwSize; | |
180 GUID guid; | |
181 DWORD dwEffType; | |
182 DWORD dwStaticParams; | |
183 DWORD dwDynamicParams; | |
184 CHAR tszName[MAX_PATH]; | |
185 } | |
186 | |
187 struct DIFILEEFFECT | |
188 { | |
189 DWORD dwSize; | |
190 GUID GuidEffect; | |
191 DIEFFECT* lpDiEffect; | |
192 CHAR szFriendlyName[MAX_PATH]; | |
193 } | |
194 | |
195 struct DIDEVICEIMAGEINFOA | |
196 { | |
197 CHAR tszImagePath[MAX_PATH]; | |
198 DWORD dwFlags; | |
199 // These are valid if DIDIFT_OVERLAY is present in dwFlags. | |
200 DWORD dwViewID; | |
201 RECT rcOverlay; | |
202 DWORD dwObjID; | |
203 DWORD dwcValidPts; | |
204 POINT rgptCalloutLine[5]; | |
205 RECT rcCalloutRect; | |
206 DWORD dwTextAlign; | |
207 } | |
208 | |
209 struct DIDEVICEIMAGEINFOHEADERA | |
210 { | |
211 DWORD dwSize; | |
212 DWORD dwSizeImageInfo; | |
213 DWORD dwcViews; | |
214 DWORD dwcButtons; | |
215 DWORD dwcAxes; | |
216 DWORD dwcPOVs; | |
217 DWORD dwBufferSize; | |
218 DWORD dwBufferUsed; | |
219 DIDEVICEIMAGEINFOA* lprgImageInfoArray; | |
220 } | |
221 | |
222 struct DICONFIGUREDEVICESPARAMSA | |
223 { | |
224 DWORD dwSize; | |
225 DWORD dwcUsers; | |
226 LPSTR lptszUserNames; | |
227 DWORD dwcFormats; | |
228 DIACTIONFORMATA* lprgFormats; | |
229 HWND hwnd; | |
230 DICOLORSET dics; | |
231 IUnknown lpUnkDDSTarget; | |
232 } | |
233 | |
234 struct DICOLORSET | |
235 { | |
236 DWORD dwSize; | |
237 DWORD cTextFore; | |
238 DWORD cTextHighlight; | |
239 DWORD cCalloutLine; | |
240 DWORD cCalloutHighlight; | |
241 DWORD cBorder; | |
242 DWORD cControlFill; | |
243 DWORD cHighlightFill; | |
244 DWORD cAreaFill; | |
245 } | |
246 | |
247 struct DIMOUSESTATE2 | |
248 { | |
249 LONG lX; | |
250 LONG lY; | |
251 LONG lZ; | |
252 BYTE rgbButtons[8]; | |
253 } | |
254 | |
255 struct DIJOYSTATE | |
256 { | |
257 LONG lX; /* x-axis position */ | |
258 LONG lY; /* y-axis position */ | |
259 LONG lZ; /* z-axis position */ | |
260 LONG lRx; /* x-axis rotation */ | |
261 LONG lRy; /* y-axis rotation */ | |
262 LONG lRz; /* z-axis rotation */ | |
263 LONG rglSlider[2]; /* extra axes positions */ | |
264 DWORD rgdwPOV[4]; /* POV directions */ | |
265 BYTE rgbButtons[32]; /* 32 buttons */ | |
266 } | |
267 | |
268 struct DIPROPRANGE | |
269 { | |
270 DIPROPHEADER diph; | |
271 LONG lMin; | |
272 LONG lMax; | |
273 } | |
274 | |
275 interface IDirectInputEffect : IUnknown | |
276 { | |
277 HRESULT Initialize(HINSTANCE, DWORD, GUID*); | |
278 HRESULT GetEffectGuid(GUID*); | |
279 HRESULT GetParameters(DIEFFECT*, DWORD); | |
280 HRESULT SetParameters(DIEFFECT*, DWORD); | |
281 HRESULT Start(DWORD, DWORD); | |
282 HRESULT Stop(); | |
283 HRESULT GetEffectStatus(LPDWORD); | |
284 HRESULT Download(); | |
285 HRESULT Unload(); | |
286 HRESULT Escape(DIEFFESCAPE*); | |
287 } | |
288 | |
289 extern(Windows) alias bool function(DIDEVICEINSTANCEA*, LPVOID) LPDIENUMDEVICESCALLBACKA; | |
290 extern(Windows) alias bool function(DIDEVICEINSTANCEA*, IDirectInputDevice8A*, DWORD, DWORD, LPVOID) LPDIENUMDEVICESBYSEMANTICSCBA; | |
291 | |
292 extern(Windows) alias bool function(DIDEVICEOBJECTINSTANCEA *didoi, void* pContext) LPDIENUMDEVICEOBJECTSCALLBACKA; | |
293 | |
294 extern(Windows) alias bool function(DIEFFECTINFOA*, LPVOID) LPDIENUMEFFECTSCALLBACKA; | |
295 extern(Windows) alias bool function(IDirectInputEffect, LPVOID) LPDIENUMCREATEDEFFECTOBJECTSCALLBACK; | |
296 extern(Windows) alias bool function(DIFILEEFFECT* , LPVOID) LPDIENUMEFFECTSINFILECALLBACK; | |
297 extern(Windows) alias bool function(IUnknown, LPVOID) LPDICONFIGUREDEVICESCALLBACK; | |
298 | |
299 interface IDirectInputDevice8A : IUnknown | |
300 { | |
301 HRESULT GetCapabilities(DIDEVCAPS*); | |
302 HRESULT EnumObjects(LPDIENUMDEVICEOBJECTSCALLBACKA, VOID*, DWORD); | |
303 HRESULT GetProperty(GUID*, DIPROPHEADER*); | |
304 HRESULT SetProperty(GUID*, DIPROPHEADER*); | |
305 HRESULT Acquire(); | |
306 HRESULT Unacquire(); | |
307 HRESULT GetDeviceState(DWORD, LPVOID); | |
308 HRESULT GetDeviceData(DWORD, DIDEVICEOBJECTDATA*, LPDWORD, DWORD); | |
309 HRESULT SetDataFormat(DIDATAFORMAT*); | |
310 HRESULT SetEventNotification(HANDLE); | |
311 HRESULT SetCooperativeLevel(HWND, DWORD); | |
312 HRESULT GetObjectInfo(DIDEVICEOBJECTINSTANCEA*, DWORD, DWORD); | |
313 HRESULT GetDeviceInfo(DIDEVICEINSTANCEA*); | |
314 HRESULT RunControlPanel(HWND, DWORD); | |
315 HRESULT Initialize(HINSTANCE, DWORD, GUID*); | |
316 HRESULT CreateEffect(GUID*, DIEFFECT*, IDirectInputEffect*, IUnknown); | |
317 HRESULT EnumEffects(LPDIENUMEFFECTSCALLBACKA, LPVOID, DWORD); | |
318 HRESULT GetEffectInfo(DIEFFECTINFOA*, GUID*); | |
319 HRESULT GetForceFeedbackState(LPDWORD); | |
320 HRESULT SendForceFeedbackCommand(DWORD); | |
321 HRESULT EnumCreatedEffectObjects(LPDIENUMCREATEDEFFECTOBJECTSCALLBACK, LPVOID, DWORD); | |
322 HRESULT Escape(DIEFFESCAPE*); | |
323 HRESULT Poll(); | |
324 HRESULT SendDeviceData(DWORD, DIDEVICEOBJECTDATA*, LPDWORD, DWORD); | |
325 HRESULT EnumEffectsInFile(LPCSTR, LPDIENUMEFFECTSINFILECALLBACK, LPVOID, DWORD); | |
326 HRESULT WriteEffectToFile(LPCSTR, DWORD, DIFILEEFFECT*, DWORD); | |
327 HRESULT BuildActionMap(DIACTIONFORMATA*, LPCSTR, DWORD); | |
328 HRESULT SetActionMap(DIACTIONFORMATA*, LPCSTR, DWORD); | |
329 HRESULT GetImageInfo(DIDEVICEIMAGEINFOHEADERA*); | |
330 } | |
331 alias IDirectInputDevice8A IDirectInputDevice8; | |
332 | |
333 interface IDirectInput8A : IUnknown | |
334 { | |
335 extern(Windows): | |
336 HRESULT CreateDevice(GUID*, IDirectInputDevice8A*, IUnknown); | |
337 HRESULT EnumDevices(DWORD, LPDIENUMDEVICESCALLBACKA, LPVOID, DWORD); | |
338 HRESULT GetDeviceStatus(GUID*); | |
339 HRESULT RunControlPanel(HWND, DWORD); | |
340 HRESULT Initialize(HINSTANCE, DWORD); | |
341 HRESULT FindDevice(GUID*, LPCSTR, GUID*); | |
342 HRESULT EnumDevicesBySemantics(LPCSTR, DIACTIONFORMATA*, LPDIENUMDEVICESBYSEMANTICSCBA, LPVOID, DWORD); | |
343 HRESULT ConfigureDevices(LPDICONFIGUREDEVICESCALLBACK, DICONFIGUREDEVICESPARAMSA*, DWORD, LPVOID); | |
344 } | |
345 alias IDirectInput8A IDirectInput8; | |
346 | |
347 extern(Windows) HRESULT DirectInput8Create(HINSTANCE hinst, DWORD dwVersion, GUID* riidltf, void** ppvOut, IUnknown punkOuter); | |
348 | |
349 const GUID IID_IDirectInput8A={0xBF798030, 0x483A, 0x4DA2, [0xAA, 0x99, 0x5D, 0x64, 0xED, 0x36, 0x97, 0x00]}; | |
350 alias IID_IDirectInput8A IID_IDirectInput8; | |
351 const GUID GUID_SysKeyboard = {0x6F1D2B61, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; | |
352 const GUID GUID_SysMouse = {0x6F1D2B60, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; | |
353 const GUID GUID_XAxis = {0xA36D02E0, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; | |
354 const GUID GUID_YAxis = {0xA36D02E1, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; | |
355 const GUID GUID_ZAxis = {0xA36D02E2, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; | |
356 const GUID GUID_RxAxis = {0xA36D02F4, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; | |
357 const GUID GUID_RyAxis = {0xA36D02F5, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; | |
358 const GUID GUID_RzAxis = {0xA36D02E3, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; | |
359 const GUID GUID_Slider = {0xA36D02E4, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; | |
360 const GUID GUID_Key = {0x55728220, 0xD33C, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; | |
361 const GUID GUID_POV = {0xA36D02F2, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; | |
362 | |
363 enum : uint | |
364 { | |
365 DISCL_EXCLUSIVE= 0x00000001, | |
366 DISCL_NONEXCLUSIVE= 0x00000002, | |
367 DISCL_FOREGROUND= 0x00000004, | |
368 DISCL_BACKGROUND= 0x00000008, | |
369 DISCL_NOWINKEY= 0x00000010, | |
370 | |
371 DIPH_DEVICE=0, | |
372 DIPH_BYOFFSET=1, | |
373 | |
374 DI8DEVCLASS_GAMECTRL=4, | |
375 DIEDFL_ATTACHEDONLY= 0x00000001, | |
376 DIDFT_AXIS= 0x00000003 | |
377 } | |
378 | |
379 enum | |
380 { | |
381 SEVERITY_SUCCESS= 0, | |
382 SEVERITY_ERROR= 1, | |
383 FACILITY_WIN32= 7, | |
384 ERROR_READ_FAULT= 30L, | |
385 DIENUM_CONTINUE= 1, | |
386 DIPH_BYID= 2 | |
387 } | |
388 | |
389 struct DIPROPDWORD | |
390 { | |
391 DIPROPHEADER diph; | |
392 DWORD dwData; | |
393 } | |
394 | |
395 template MAKE_HRESULT(uint sev, uint fac, uint code) | |
396 { | |
397 const HRESULT MAKE_HRESULT = cast(HRESULT)((sev << 31) | (fac << 16) | code); | |
398 } | |
399 | |
400 const HRESULT DIERR_OLDDIRECTINPUTVERSION = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 1150); | |
401 const HRESULT DIERR_BETADIRECTINPUTVERSION = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 1153); | |
402 const HRESULT DIERR_BADDRIVERVER = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 119); | |
403 const HRESULT DIERR_DEVICENOTREG = 0x80040154; | |
404 const HRESULT DIERR_NOTFOUND = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND); | |
405 const HRESULT DIERR_OBJECTNOTFOUND = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND); | |
406 const HRESULT DIERR_INVALIDPARAM = E_INVALIDARG; | |
407 const HRESULT DIERR_NOINTERFACE = E_NOINTERFACE; | |
408 const HRESULT DIERR_GENERIC = E_FAIL; | |
409 const HRESULT DIERR_OUTOFMEMORY = E_OUTOFMEMORY; | |
410 const HRESULT DIERR_UNSUPPORTED = E_NOTIMPL; | |
411 const HRESULT DIERR_NOTINITIALIZED = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 21); | |
412 const HRESULT DIERR_ALREADYINITIALIZED = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 1247); | |
413 const HRESULT DIERR_NOAGGREGATION = CLASS_E_NOAGGREGATION; | |
414 const HRESULT DIERR_OTHERAPPHASPRIO = 0x80070005; | |
415 const HRESULT DIERR_INPUTLOST = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT); | |
416 const HRESULT DIERR_ACQUIRED = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 170); | |
417 const HRESULT DIERR_NOTACQUIRED = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 12); | |
418 const HRESULT DIERR_READONLY = 0x80070005; | |
419 const HRESULT DIERR_HANDLEEXISTS = 0x80070005; | |
420 const HRESULT DIERR_INSUFFICIENTPRIVS = 0x80040200; | |
421 const HRESULT DIERR_DEVICEFULL = 0x80040201; | |
422 const HRESULT DIERR_MOREDATA = 0x80040202; | |
423 const HRESULT DIERR_NOTDOWNLOADED = 0x80040203; | |
424 const HRESULT DIERR_HASEFFECTS = 0x80040204; | |
425 const HRESULT DIERR_NOTEXCLUSIVEACQUIRED = 0x80040205; | |
426 const HRESULT DIERR_INCOMPLETEEFFECT = 0x80040206; | |
427 const HRESULT DIERR_NOTBUFFERED = 0x80040207; | |
428 const HRESULT DIERR_EFFECTPLAYING = 0x80040208; | |
429 const HRESULT DIERR_UNPLUGGED = 0x80040209; | |
430 const HRESULT DIERR_REPORTFULL = 0x8004020A; | |
431 const HRESULT DIERR_MAPFILEFAIL = 0x8004020B; |