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;