diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/win32/directx/dinput8.d	Tue Apr 05 20:44:01 2011 +0200
@@ -0,0 +1,431 @@
+module win32.directx.dinput8;
+
+//import tango.sys.win32.Types;
+//alias char CHAR;
+
+import win32.windows;
+
+enum {
+	CLASS_E_NOAGGREGATION = cast(int) 0x80040110,
+}
+
+interface IUnknown {
+    HRESULT QueryInterface(IID* riid, void** pvObject);
+    ULONG AddRef();
+    ULONG Release();
+}
+
+extern(C):
+
+struct DIDEVICEINSTANCEA
+{
+    DWORD   dwSize;
+    GUID    guidInstance;
+    GUID    guidProduct;
+    DWORD   dwDevType;
+    CHAR    tszInstanceName[MAX_PATH];
+    CHAR    tszProductName[MAX_PATH];
+    GUID    guidFFDriver;
+    WORD    wUsagePage;
+    WORD    wUsage;
+}
+alias DIDEVICEINSTANCEA DIDEVICEINSTANCE;
+
+struct DIDEVICEOBJECTINSTANCEA
+{
+    DWORD   dwSize;
+    GUID    guidType;
+    DWORD   dwOfs;
+    DWORD   dwType;
+    DWORD   dwFlags;
+    CHAR    tszName[MAX_PATH];
+    DWORD   dwFFMaxForce;
+    DWORD   dwFFForceResolution;
+    WORD    wCollectionNumber;
+    WORD    wDesignatorIndex;
+    WORD    wUsagePage;
+    WORD    wUsage;
+    DWORD   dwDimension;
+    WORD    wExponent;
+    WORD    wReportId;
+}
+
+struct DIOBJECTDATAFORMAT
+{
+	const   GUID *pguid;
+	DWORD   dwOfs;
+	DWORD   dwType;
+	DWORD   dwFlags;
+}
+
+struct DIDATAFORMAT
+{
+	DWORD   dwSize;
+	DWORD   dwObjSize;
+	DWORD   dwFlags;
+	DWORD   dwDataSize;
+	DWORD   dwNumObjs;
+	DIOBJECTDATAFORMAT* rgodf;
+}
+
+extern DIDATAFORMAT c_dfDIKeyboard;
+extern DIDATAFORMAT c_dfDIMouse2;
+extern DIDATAFORMAT c_dfDIJoystick;
+
+struct DIACTIONA
+{
+	UINT*    uAppData;
+	DWORD       dwSemantic;
+	DWORD       dwFlags;
+	union
+	{
+		LPCSTR      lptszActionName;
+		UINT        uResIdString;
+	}
+	GUID        guidInstance;
+	DWORD       dwObjID;
+	DWORD       dwHow;
+}
+
+struct DIACTIONFORMATA
+{
+	DWORD       dwSize;
+	DWORD       dwActionSize;
+	DWORD       dwDataSize;
+	DWORD       dwNumActions;
+	DIACTIONA*  rgoAction;
+	GUID        guidActionMap;
+	DWORD       dwGenre;
+	DWORD       dwBufferSize;
+	LONG        lAxisMin;
+	LONG        lAxisMax;
+	HINSTANCE   hInstString;
+	FILETIME    ftTimeStamp;
+	DWORD       dwCRC;
+	CHAR        tszActionMap[MAX_PATH];
+}
+
+struct DIDEVCAPS
+{
+    DWORD   dwSize;
+    DWORD   dwFlags;
+    DWORD   dwDevType;
+    DWORD   dwAxes;
+    DWORD   dwButtons;
+    DWORD   dwPOVs;
+    DWORD   dwFFSamplePeriod;
+    DWORD   dwFFMinTimeResolution;
+    DWORD   dwFirmwareRevision;
+    DWORD   dwHardwareRevision;
+    DWORD   dwFFDriverVersion;
+}
+
+struct DIPROPHEADER
+{
+    DWORD   dwSize;
+    DWORD   dwHeaderSize;
+    DWORD   dwObj;
+    DWORD   dwHow;
+}
+
+struct DIDEVICEOBJECTDATA
+{
+    DWORD       dwOfs;
+    DWORD       dwData;
+    DWORD       dwTimeStamp;
+    DWORD       dwSequence;
+    UINT*    uAppData;
+}
+
+struct DIENVELOPE
+{
+    DWORD dwSize = DIENVELOPE.sizeof;
+    DWORD dwAttackLevel;
+    DWORD dwAttackTime;             // Microseconds
+    DWORD dwFadeLevel;
+    DWORD dwFadeTime;               // Microseconds
+}
+
+struct DIEFFECT
+{
+    DWORD dwSize = DIEFFECT.sizeof;
+    DWORD dwFlags;                  // DIEFF_*
+    DWORD dwDuration;               // Microseconds
+    DWORD dwSamplePeriod;           // Microseconds
+    DWORD dwGain;
+    DWORD dwTriggerButton;          // or DIEB_NOTRIGGER
+    DWORD dwTriggerRepeatInterval;  // Microseconds
+    DWORD cAxes;                    // Number of axes
+    LPDWORD rgdwAxes;               // Array of axes
+    LPLONG rglDirection;            // Array of directions
+    DIENVELOPE* lpEnvelope;         // Optional
+    DWORD cbTypeSpecificParams;     // Size of params
+    LPVOID lpvTypeSpecificParams;   // Pointer to params
+    DWORD  dwStartDelay;            // Microseconds
+}
+
+struct DIEFFESCAPE
+{
+    DWORD   dwSize;
+    DWORD   dwCommand;
+    LPVOID  lpvInBuffer;
+    DWORD   cbInBuffer;
+    LPVOID  lpvOutBuffer;
+    DWORD   cbOutBuffer;
+}
+
+struct DIEFFECTINFOA
+{
+    DWORD   dwSize;
+    GUID    guid;
+    DWORD   dwEffType;
+    DWORD   dwStaticParams;
+    DWORD   dwDynamicParams;
+    CHAR    tszName[MAX_PATH];
+}
+
+struct DIFILEEFFECT
+{
+    DWORD       dwSize;
+    GUID        GuidEffect;
+    DIEFFECT* lpDiEffect;
+    CHAR        szFriendlyName[MAX_PATH];
+}
+
+struct DIDEVICEIMAGEINFOA
+{
+    CHAR        tszImagePath[MAX_PATH];
+    DWORD       dwFlags;
+    // These are valid if DIDIFT_OVERLAY is present in dwFlags.
+    DWORD       dwViewID;
+    RECT        rcOverlay;
+    DWORD       dwObjID;
+    DWORD       dwcValidPts;
+    POINT       rgptCalloutLine[5];
+    RECT        rcCalloutRect;
+    DWORD       dwTextAlign;
+}
+
+struct DIDEVICEIMAGEINFOHEADERA
+{
+    DWORD       dwSize;
+    DWORD       dwSizeImageInfo;
+    DWORD       dwcViews;
+    DWORD       dwcButtons;
+    DWORD       dwcAxes;
+    DWORD       dwcPOVs;
+    DWORD       dwBufferSize;
+    DWORD       dwBufferUsed;
+    DIDEVICEIMAGEINFOA* lprgImageInfoArray;
+}
+
+struct DICONFIGUREDEVICESPARAMSA
+{
+	 DWORD            dwSize;
+	 DWORD            dwcUsers;
+	 LPSTR            lptszUserNames;
+	 DWORD            dwcFormats;
+	 DIACTIONFORMATA* lprgFormats;
+	 HWND             hwnd;
+	 DICOLORSET       dics;
+	 IUnknown         lpUnkDDSTarget;
+}
+
+struct DICOLORSET
+{
+    DWORD dwSize;
+    DWORD cTextFore;
+    DWORD cTextHighlight;
+    DWORD cCalloutLine;
+    DWORD cCalloutHighlight;
+    DWORD cBorder;
+    DWORD cControlFill;
+    DWORD cHighlightFill;
+    DWORD cAreaFill;
+}
+
+struct DIMOUSESTATE2
+{
+    LONG    lX;
+    LONG    lY;
+    LONG    lZ;
+    BYTE    rgbButtons[8];
+}
+
+struct DIJOYSTATE
+{
+    LONG    lX;                     /* x-axis position              */
+    LONG    lY;                     /* y-axis position              */
+    LONG    lZ;                     /* z-axis position              */
+    LONG    lRx;                    /* x-axis rotation              */
+    LONG    lRy;                    /* y-axis rotation              */
+    LONG    lRz;                    /* z-axis rotation              */
+    LONG    rglSlider[2];           /* extra axes positions         */
+    DWORD   rgdwPOV[4];             /* POV directions               */
+    BYTE    rgbButtons[32];         /* 32 buttons                   */
+}
+
+struct DIPROPRANGE
+{
+    DIPROPHEADER diph;
+    LONG    lMin;
+    LONG    lMax;
+}
+
+interface IDirectInputEffect : IUnknown
+{
+    HRESULT Initialize(HINSTANCE, DWORD, GUID*);
+    HRESULT GetEffectGuid(GUID*);
+    HRESULT GetParameters(DIEFFECT*, DWORD);
+    HRESULT SetParameters(DIEFFECT*, DWORD);
+    HRESULT Start(DWORD, DWORD);
+    HRESULT Stop();
+    HRESULT GetEffectStatus(LPDWORD);
+    HRESULT Download();
+    HRESULT Unload();
+    HRESULT Escape(DIEFFESCAPE*);
+}
+
+extern(Windows) alias bool function(DIDEVICEINSTANCEA*, LPVOID) LPDIENUMDEVICESCALLBACKA;
+extern(Windows) alias bool function(DIDEVICEINSTANCEA*, IDirectInputDevice8A*, DWORD, DWORD, LPVOID) LPDIENUMDEVICESBYSEMANTICSCBA;
+
+extern(Windows) alias bool function(DIDEVICEOBJECTINSTANCEA *didoi, void* pContext) LPDIENUMDEVICEOBJECTSCALLBACKA;
+
+extern(Windows) alias bool function(DIEFFECTINFOA*, LPVOID) LPDIENUMEFFECTSCALLBACKA;
+extern(Windows) alias bool function(IDirectInputEffect, LPVOID) LPDIENUMCREATEDEFFECTOBJECTSCALLBACK;
+extern(Windows) alias bool function(DIFILEEFFECT* , LPVOID) LPDIENUMEFFECTSINFILECALLBACK;
+extern(Windows) alias bool function(IUnknown, LPVOID) LPDICONFIGUREDEVICESCALLBACK;
+
+interface IDirectInputDevice8A : IUnknown
+{
+    HRESULT GetCapabilities(DIDEVCAPS*);
+    HRESULT EnumObjects(LPDIENUMDEVICEOBJECTSCALLBACKA, VOID*, DWORD);
+    HRESULT GetProperty(GUID*, DIPROPHEADER*);
+    HRESULT SetProperty(GUID*, DIPROPHEADER*);
+    HRESULT Acquire();
+    HRESULT Unacquire();
+    HRESULT GetDeviceState(DWORD, LPVOID);
+    HRESULT GetDeviceData(DWORD, DIDEVICEOBJECTDATA*, LPDWORD, DWORD);
+    HRESULT SetDataFormat(DIDATAFORMAT*);
+    HRESULT SetEventNotification(HANDLE);
+    HRESULT SetCooperativeLevel(HWND, DWORD);
+    HRESULT GetObjectInfo(DIDEVICEOBJECTINSTANCEA*, DWORD, DWORD);
+    HRESULT GetDeviceInfo(DIDEVICEINSTANCEA*);
+    HRESULT RunControlPanel(HWND, DWORD);
+    HRESULT Initialize(HINSTANCE, DWORD, GUID*);
+    HRESULT CreateEffect(GUID*, DIEFFECT*, IDirectInputEffect*, IUnknown);
+    HRESULT EnumEffects(LPDIENUMEFFECTSCALLBACKA, LPVOID, DWORD);
+    HRESULT GetEffectInfo(DIEFFECTINFOA*, GUID*);
+    HRESULT GetForceFeedbackState(LPDWORD);
+    HRESULT SendForceFeedbackCommand(DWORD);
+    HRESULT EnumCreatedEffectObjects(LPDIENUMCREATEDEFFECTOBJECTSCALLBACK, LPVOID, DWORD);
+    HRESULT Escape(DIEFFESCAPE*);
+    HRESULT Poll();
+    HRESULT SendDeviceData(DWORD, DIDEVICEOBJECTDATA*, LPDWORD, DWORD);
+    HRESULT EnumEffectsInFile(LPCSTR, LPDIENUMEFFECTSINFILECALLBACK, LPVOID, DWORD);
+    HRESULT WriteEffectToFile(LPCSTR, DWORD, DIFILEEFFECT*, DWORD);
+    HRESULT BuildActionMap(DIACTIONFORMATA*, LPCSTR, DWORD);
+    HRESULT SetActionMap(DIACTIONFORMATA*, LPCSTR, DWORD);
+    HRESULT GetImageInfo(DIDEVICEIMAGEINFOHEADERA*);
+}
+alias IDirectInputDevice8A IDirectInputDevice8;
+
+interface IDirectInput8A : IUnknown
+{
+extern(Windows):
+    HRESULT CreateDevice(GUID*, IDirectInputDevice8A*, IUnknown);
+    HRESULT EnumDevices(DWORD, LPDIENUMDEVICESCALLBACKA, LPVOID, DWORD);
+    HRESULT GetDeviceStatus(GUID*);
+    HRESULT RunControlPanel(HWND, DWORD);
+    HRESULT Initialize(HINSTANCE, DWORD);
+    HRESULT FindDevice(GUID*, LPCSTR, GUID*);
+    HRESULT EnumDevicesBySemantics(LPCSTR, DIACTIONFORMATA*, LPDIENUMDEVICESBYSEMANTICSCBA, LPVOID, DWORD);
+    HRESULT ConfigureDevices(LPDICONFIGUREDEVICESCALLBACK, DICONFIGUREDEVICESPARAMSA*, DWORD, LPVOID);
+}
+alias IDirectInput8A IDirectInput8;
+
+extern(Windows) HRESULT DirectInput8Create(HINSTANCE hinst, DWORD dwVersion, GUID* riidltf, void** ppvOut, IUnknown punkOuter);
+
+const GUID IID_IDirectInput8A={0xBF798030, 0x483A, 0x4DA2, [0xAA, 0x99, 0x5D, 0x64, 0xED, 0x36, 0x97, 0x00]};
+alias IID_IDirectInput8A IID_IDirectInput8;
+const GUID GUID_SysKeyboard = {0x6F1D2B61, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]};
+const GUID GUID_SysMouse =    {0x6F1D2B60, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]};
+const GUID GUID_XAxis =       {0xA36D02E0, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]};
+const GUID GUID_YAxis =       {0xA36D02E1, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]};
+const GUID GUID_ZAxis =       {0xA36D02E2, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]};
+const GUID GUID_RxAxis =      {0xA36D02F4, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]};
+const GUID GUID_RyAxis =      {0xA36D02F5, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]};
+const GUID GUID_RzAxis =      {0xA36D02E3, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]};
+const GUID GUID_Slider =      {0xA36D02E4, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]};
+const GUID GUID_Key =         {0x55728220, 0xD33C, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]};
+const GUID GUID_POV =         {0xA36D02F2, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]};
+
+enum : uint
+{
+	DISCL_EXCLUSIVE=     0x00000001,
+	DISCL_NONEXCLUSIVE=  0x00000002,
+	DISCL_FOREGROUND=    0x00000004,
+	DISCL_BACKGROUND=	 0x00000008,
+	DISCL_NOWINKEY=      0x00000010,
+
+	DIPH_DEVICE=0,
+	DIPH_BYOFFSET=1,
+
+	DI8DEVCLASS_GAMECTRL=4,
+	DIEDFL_ATTACHEDONLY=     0x00000001,
+	DIDFT_AXIS=          0x00000003
+}
+
+enum
+{
+	SEVERITY_SUCCESS=    0,
+	SEVERITY_ERROR=      1,
+	FACILITY_WIN32=                   7,
+	ERROR_READ_FAULT=                 30L,
+	DIENUM_CONTINUE=         1,
+	DIPH_BYID=               2
+}
+
+struct DIPROPDWORD
+{
+    DIPROPHEADER diph;
+    DWORD   dwData;
+}
+
+template MAKE_HRESULT(uint sev, uint fac, uint code)
+{
+	const HRESULT MAKE_HRESULT = cast(HRESULT)((sev << 31) | (fac << 16) | code);
+}
+
+const HRESULT DIERR_OLDDIRECTINPUTVERSION             = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 1150);
+const HRESULT DIERR_BETADIRECTINPUTVERSION            = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 1153);
+const HRESULT DIERR_BADDRIVERVER                      = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 119);
+const HRESULT DIERR_DEVICENOTREG                      = 0x80040154;
+const HRESULT DIERR_NOTFOUND                          = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND);
+const HRESULT DIERR_OBJECTNOTFOUND                    = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND);
+const HRESULT DIERR_INVALIDPARAM                      = E_INVALIDARG;
+const HRESULT DIERR_NOINTERFACE                       = E_NOINTERFACE;
+const HRESULT DIERR_GENERIC                           = E_FAIL;
+const HRESULT DIERR_OUTOFMEMORY                       = E_OUTOFMEMORY;
+const HRESULT DIERR_UNSUPPORTED                       = E_NOTIMPL;
+const HRESULT DIERR_NOTINITIALIZED                    = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 21);
+const HRESULT DIERR_ALREADYINITIALIZED                = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 1247);
+const HRESULT DIERR_NOAGGREGATION                     = CLASS_E_NOAGGREGATION;
+const HRESULT DIERR_OTHERAPPHASPRIO                   = 0x80070005;
+const HRESULT DIERR_INPUTLOST                         = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT);
+const HRESULT DIERR_ACQUIRED                          = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 170);
+const HRESULT DIERR_NOTACQUIRED                       = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 12);
+const HRESULT DIERR_READONLY                          = 0x80070005;
+const HRESULT DIERR_HANDLEEXISTS                      = 0x80070005;
+const HRESULT DIERR_INSUFFICIENTPRIVS                 = 0x80040200;
+const HRESULT DIERR_DEVICEFULL                        = 0x80040201;
+const HRESULT DIERR_MOREDATA                          = 0x80040202;
+const HRESULT DIERR_NOTDOWNLOADED                     = 0x80040203;
+const HRESULT DIERR_HASEFFECTS                        = 0x80040204;
+const HRESULT DIERR_NOTEXCLUSIVEACQUIRED              = 0x80040205;
+const HRESULT DIERR_INCOMPLETEEFFECT                  = 0x80040206;
+const HRESULT DIERR_NOTBUFFERED                       = 0x80040207;
+const HRESULT DIERR_EFFECTPLAYING                     = 0x80040208;
+const HRESULT DIERR_UNPLUGGED                         = 0x80040209;
+const HRESULT DIERR_REPORTFULL                        = 0x8004020A;
+const HRESULT DIERR_MAPFILEFAIL                       = 0x8004020B;