Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/mpc-hc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrevil_xxl <drevil_xxl@users.sourceforge.net>2009-07-26 22:18:11 +0400
committerdrevil_xxl <drevil_xxl@users.sourceforge.net>2009-07-26 22:18:11 +0400
commit223da78ac76b6d27cf14577230140028ace6739f (patch)
treeb49b598f5d5854b96d50dca9335e68c576844899 /include
parent9e277eeaae08785ceefe0ef525dafd268f27a3f0 (diff)
updated project files
git-svn-id: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk@1189 10f7b99b-c216-0410-bff0-8a66a9350fd8
Diffstat (limited to 'include')
-rw-r--r--include/dx/d3d.h1688
-rw-r--r--include/dx/d3d8.h1279
-rw-r--r--include/dx/d3d8caps.h364
-rw-r--r--include/dx/d3d8types.h1684
-rw-r--r--include/dx/d3dcaps.h601
-rw-r--r--include/dx/d3drm.h342
-rw-r--r--include/dx/d3drmdef.h695
-rw-r--r--include/dx/d3drmobj.h1666
-rw-r--r--include/dx/d3drmwin.h50
-rw-r--r--include/dx/d3dtypes.h2119
-rw-r--r--include/dx/dxtrans.h5362
11 files changed, 15850 insertions, 0 deletions
diff --git a/include/dx/d3d.h b/include/dx/d3d.h
new file mode 100644
index 000000000..1cb8a966a
--- /dev/null
+++ b/include/dx/d3d.h
@@ -0,0 +1,1688 @@
+/*==========================================================================;
+ *
+ * Copyright (C) Microsoft Corporation. All Rights Reserved.
+ *
+ * File: d3d.h
+ * Content: Direct3D include file
+ *
+ ****************************************************************************/
+
+#ifndef _D3D_H_
+#define _D3D_H_
+
+#ifndef DIRECT3D_VERSION
+#define DIRECT3D_VERSION 0x0700
+#endif
+
+// include this file content only if compiling for <=DX7 interfaces
+#if(DIRECT3D_VERSION < 0x0800)
+
+
+#include <stdlib.h>
+
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+
+#define D3DAPI WINAPI
+
+/*
+ * Interface IID's
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM)
+DEFINE_GUID( IID_IDirect3D, 0x3BBA0080,0x2421,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56 );
+#if(DIRECT3D_VERSION >= 0x0500)
+DEFINE_GUID( IID_IDirect3D2, 0x6aae1ec1,0x662a,0x11d0,0x88,0x9d,0x00,0xaa,0x00,0xbb,0xb7,0x6a);
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+#if(DIRECT3D_VERSION >= 0x0600)
+DEFINE_GUID( IID_IDirect3D3, 0xbb223240,0xe72b,0x11d0,0xa9,0xb4,0x00,0xaa,0x00,0xc0,0x99,0x3e);
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+#if(DIRECT3D_VERSION >= 0x0700)
+DEFINE_GUID( IID_IDirect3D7, 0xf5049e77,0x4861,0x11d2,0xa4,0x7,0x0,0xa0,0xc9,0x6,0x29,0xa8);
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+#if(DIRECT3D_VERSION >= 0x0500)
+DEFINE_GUID( IID_IDirect3DRampDevice, 0xF2086B20,0x259F,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56 );
+DEFINE_GUID( IID_IDirect3DRGBDevice, 0xA4665C60,0x2673,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56 );
+DEFINE_GUID( IID_IDirect3DHALDevice, 0x84E63dE0,0x46AA,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
+DEFINE_GUID( IID_IDirect3DMMXDevice, 0x881949a1,0xd6f3,0x11d0,0x89,0xab,0x00,0xa0,0xc9,0x05,0x41,0x29 );
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#if(DIRECT3D_VERSION >= 0x0600)
+DEFINE_GUID( IID_IDirect3DRefDevice, 0x50936643, 0x13e9, 0x11d1, 0x89, 0xaa, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29);
+DEFINE_GUID( IID_IDirect3DNullDevice, 0x8767df22, 0xbacc, 0x11d1, 0x89, 0x69, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+#if(DIRECT3D_VERSION >= 0x0700)
+DEFINE_GUID( IID_IDirect3DTnLHalDevice, 0xf5049e78, 0x4861, 0x11d2, 0xa4, 0x7, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+/*
+ * Internal Guid to distinguish requested MMX from MMX being used as an RGB rasterizer
+ */
+
+DEFINE_GUID( IID_IDirect3DDevice, 0x64108800,0x957d,0X11d0,0x89,0xab,0x00,0xa0,0xc9,0x05,0x41,0x29 );
+#if(DIRECT3D_VERSION >= 0x0500)
+DEFINE_GUID( IID_IDirect3DDevice2, 0x93281501, 0x8cf8, 0x11d0, 0x89, 0xab, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29);
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+#if(DIRECT3D_VERSION >= 0x0600)
+DEFINE_GUID( IID_IDirect3DDevice3, 0xb0ab3b60, 0x33d7, 0x11d1, 0xa9, 0x81, 0x0, 0xc0, 0x4f, 0xd7, 0xb1, 0x74);
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+#if(DIRECT3D_VERSION >= 0x0700)
+DEFINE_GUID( IID_IDirect3DDevice7, 0xf5049e79, 0x4861, 0x11d2, 0xa4, 0x7, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+DEFINE_GUID( IID_IDirect3DTexture, 0x2CDCD9E0,0x25A0,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56 );
+#if(DIRECT3D_VERSION >= 0x0500)
+DEFINE_GUID( IID_IDirect3DTexture2, 0x93281502, 0x8cf8, 0x11d0, 0x89, 0xab, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29);
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+DEFINE_GUID( IID_IDirect3DLight, 0x4417C142,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
+
+DEFINE_GUID( IID_IDirect3DMaterial, 0x4417C144,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
+#if(DIRECT3D_VERSION >= 0x0500)
+DEFINE_GUID( IID_IDirect3DMaterial2, 0x93281503, 0x8cf8, 0x11d0, 0x89, 0xab, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29);
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+#if(DIRECT3D_VERSION >= 0x0600)
+DEFINE_GUID( IID_IDirect3DMaterial3, 0xca9c46f4, 0xd3c5, 0x11d1, 0xb7, 0x5a, 0x0, 0x60, 0x8, 0x52, 0xb3, 0x12);
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+DEFINE_GUID( IID_IDirect3DExecuteBuffer,0x4417C145,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
+DEFINE_GUID( IID_IDirect3DViewport, 0x4417C146,0x33AD,0x11CF,0x81,0x6F,0x00,0x00,0xC0,0x20,0x15,0x6E );
+#if(DIRECT3D_VERSION >= 0x0500)
+DEFINE_GUID( IID_IDirect3DViewport2, 0x93281500, 0x8cf8, 0x11d0, 0x89, 0xab, 0x0, 0xa0, 0xc9, 0x5, 0x41, 0x29);
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+#if(DIRECT3D_VERSION >= 0x0600)
+DEFINE_GUID( IID_IDirect3DViewport3, 0xb0ab3b61, 0x33d7, 0x11d1, 0xa9, 0x81, 0x0, 0xc0, 0x4f, 0xd7, 0xb1, 0x74);
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+#if(DIRECT3D_VERSION >= 0x0600)
+DEFINE_GUID( IID_IDirect3DVertexBuffer, 0x7a503555, 0x4a83, 0x11d1, 0xa5, 0xdb, 0x0, 0xa0, 0xc9, 0x3, 0x67, 0xf8);
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+#if(DIRECT3D_VERSION >= 0x0700)
+DEFINE_GUID( IID_IDirect3DVertexBuffer7, 0xf5049e7d, 0x4861, 0x11d2, 0xa4, 0x7, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+#endif
+
+#ifdef __cplusplus
+struct IDirect3D;
+struct IDirect3DDevice;
+struct IDirect3DLight;
+struct IDirect3DMaterial;
+struct IDirect3DExecuteBuffer;
+struct IDirect3DTexture;
+struct IDirect3DViewport;
+typedef struct IDirect3D *LPDIRECT3D;
+typedef struct IDirect3DDevice *LPDIRECT3DDEVICE;
+typedef struct IDirect3DExecuteBuffer *LPDIRECT3DEXECUTEBUFFER;
+typedef struct IDirect3DLight *LPDIRECT3DLIGHT;
+typedef struct IDirect3DMaterial *LPDIRECT3DMATERIAL;
+typedef struct IDirect3DTexture *LPDIRECT3DTEXTURE;
+typedef struct IDirect3DViewport *LPDIRECT3DVIEWPORT;
+
+#if(DIRECT3D_VERSION >= 0x0500)
+struct IDirect3D2;
+struct IDirect3DDevice2;
+struct IDirect3DMaterial2;
+struct IDirect3DTexture2;
+struct IDirect3DViewport2;
+typedef struct IDirect3D2 *LPDIRECT3D2;
+typedef struct IDirect3DDevice2 *LPDIRECT3DDEVICE2;
+typedef struct IDirect3DMaterial2 *LPDIRECT3DMATERIAL2;
+typedef struct IDirect3DTexture2 *LPDIRECT3DTEXTURE2;
+typedef struct IDirect3DViewport2 *LPDIRECT3DVIEWPORT2;
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#if(DIRECT3D_VERSION >= 0x0600)
+struct IDirect3D3;
+struct IDirect3DDevice3;
+struct IDirect3DMaterial3;
+struct IDirect3DViewport3;
+struct IDirect3DVertexBuffer;
+typedef struct IDirect3D3 *LPDIRECT3D3;
+typedef struct IDirect3DDevice3 *LPDIRECT3DDEVICE3;
+typedef struct IDirect3DMaterial3 *LPDIRECT3DMATERIAL3;
+typedef struct IDirect3DViewport3 *LPDIRECT3DVIEWPORT3;
+typedef struct IDirect3DVertexBuffer *LPDIRECT3DVERTEXBUFFER;
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+#if(DIRECT3D_VERSION >= 0x0700)
+struct IDirect3D7;
+struct IDirect3DDevice7;
+struct IDirect3DVertexBuffer7;
+typedef struct IDirect3D7 *LPDIRECT3D7;
+typedef struct IDirect3DDevice7 *LPDIRECT3DDEVICE7;
+typedef struct IDirect3DVertexBuffer7 *LPDIRECT3DVERTEXBUFFER7;
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+#else
+
+typedef struct IDirect3D *LPDIRECT3D;
+typedef struct IDirect3DDevice *LPDIRECT3DDEVICE;
+typedef struct IDirect3DExecuteBuffer *LPDIRECT3DEXECUTEBUFFER;
+typedef struct IDirect3DLight *LPDIRECT3DLIGHT;
+typedef struct IDirect3DMaterial *LPDIRECT3DMATERIAL;
+typedef struct IDirect3DTexture *LPDIRECT3DTEXTURE;
+typedef struct IDirect3DViewport *LPDIRECT3DVIEWPORT;
+
+#if(DIRECT3D_VERSION >= 0x0500)
+typedef struct IDirect3D2 *LPDIRECT3D2;
+typedef struct IDirect3DDevice2 *LPDIRECT3DDEVICE2;
+typedef struct IDirect3DMaterial2 *LPDIRECT3DMATERIAL2;
+typedef struct IDirect3DTexture2 *LPDIRECT3DTEXTURE2;
+typedef struct IDirect3DViewport2 *LPDIRECT3DVIEWPORT2;
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#if(DIRECT3D_VERSION >= 0x0600)
+typedef struct IDirect3D3 *LPDIRECT3D3;
+typedef struct IDirect3DDevice3 *LPDIRECT3DDEVICE3;
+typedef struct IDirect3DMaterial3 *LPDIRECT3DMATERIAL3;
+typedef struct IDirect3DViewport3 *LPDIRECT3DVIEWPORT3;
+typedef struct IDirect3DVertexBuffer *LPDIRECT3DVERTEXBUFFER;
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+#if(DIRECT3D_VERSION >= 0x0700)
+typedef struct IDirect3D7 *LPDIRECT3D7;
+typedef struct IDirect3DDevice7 *LPDIRECT3DDEVICE7;
+typedef struct IDirect3DVertexBuffer7 *LPDIRECT3DVERTEXBUFFER7;
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+#endif
+
+#include "d3dtypes.h"
+#include "d3dcaps.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Direct3D interfaces
+ */
+#undef INTERFACE
+#define INTERFACE IDirect3D
+
+DECLARE_INTERFACE_(IDirect3D, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3D methods ***/
+ STDMETHOD(Initialize)(THIS_ REFCLSID) PURE;
+ STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK,LPVOID) PURE;
+ STDMETHOD(CreateLight)(THIS_ LPDIRECT3DLIGHT*,IUnknown*) PURE;
+ STDMETHOD(CreateMaterial)(THIS_ LPDIRECT3DMATERIAL*,IUnknown*) PURE;
+ STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DVIEWPORT*,IUnknown*) PURE;
+ STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH,LPD3DFINDDEVICERESULT) PURE;
+};
+
+typedef struct IDirect3D *LPDIRECT3D;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3D_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3D_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3D_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3D_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirect3D_EnumDevices(p,a,b) (p)->lpVtbl->EnumDevices(p,a,b)
+#define IDirect3D_CreateLight(p,a,b) (p)->lpVtbl->CreateLight(p,a,b)
+#define IDirect3D_CreateMaterial(p,a,b) (p)->lpVtbl->CreateMaterial(p,a,b)
+#define IDirect3D_CreateViewport(p,a,b) (p)->lpVtbl->CreateViewport(p,a,b)
+#define IDirect3D_FindDevice(p,a,b) (p)->lpVtbl->FindDevice(p,a,b)
+#else
+#define IDirect3D_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3D_AddRef(p) (p)->AddRef()
+#define IDirect3D_Release(p) (p)->Release()
+#define IDirect3D_Initialize(p,a) (p)->Initialize(a)
+#define IDirect3D_EnumDevices(p,a,b) (p)->EnumDevices(a,b)
+#define IDirect3D_CreateLight(p,a,b) (p)->CreateLight(a,b)
+#define IDirect3D_CreateMaterial(p,a,b) (p)->CreateMaterial(a,b)
+#define IDirect3D_CreateViewport(p,a,b) (p)->CreateViewport(a,b)
+#define IDirect3D_FindDevice(p,a,b) (p)->FindDevice(a,b)
+#endif
+
+#if(DIRECT3D_VERSION >= 0x0500)
+#undef INTERFACE
+#define INTERFACE IDirect3D2
+
+DECLARE_INTERFACE_(IDirect3D2, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3D2 methods ***/
+ STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK,LPVOID) PURE;
+ STDMETHOD(CreateLight)(THIS_ LPDIRECT3DLIGHT*,IUnknown*) PURE;
+ STDMETHOD(CreateMaterial)(THIS_ LPDIRECT3DMATERIAL2*,IUnknown*) PURE;
+ STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DVIEWPORT2*,IUnknown*) PURE;
+ STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH,LPD3DFINDDEVICERESULT) PURE;
+ STDMETHOD(CreateDevice)(THIS_ REFCLSID,LPDIRECTDRAWSURFACE,LPDIRECT3DDEVICE2*) PURE;
+};
+
+typedef struct IDirect3D2 *LPDIRECT3D2;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3D2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3D2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3D2_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3D2_EnumDevices(p,a,b) (p)->lpVtbl->EnumDevices(p,a,b)
+#define IDirect3D2_CreateLight(p,a,b) (p)->lpVtbl->CreateLight(p,a,b)
+#define IDirect3D2_CreateMaterial(p,a,b) (p)->lpVtbl->CreateMaterial(p,a,b)
+#define IDirect3D2_CreateViewport(p,a,b) (p)->lpVtbl->CreateViewport(p,a,b)
+#define IDirect3D2_FindDevice(p,a,b) (p)->lpVtbl->FindDevice(p,a,b)
+#define IDirect3D2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
+#else
+#define IDirect3D2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3D2_AddRef(p) (p)->AddRef()
+#define IDirect3D2_Release(p) (p)->Release()
+#define IDirect3D2_EnumDevices(p,a,b) (p)->EnumDevices(a,b)
+#define IDirect3D2_CreateLight(p,a,b) (p)->CreateLight(a,b)
+#define IDirect3D2_CreateMaterial(p,a,b) (p)->CreateMaterial(a,b)
+#define IDirect3D2_CreateViewport(p,a,b) (p)->CreateViewport(a,b)
+#define IDirect3D2_FindDevice(p,a,b) (p)->FindDevice(a,b)
+#define IDirect3D2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#if(DIRECT3D_VERSION >= 0x0600)
+#undef INTERFACE
+#define INTERFACE IDirect3D3
+
+DECLARE_INTERFACE_(IDirect3D3, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3D3 methods ***/
+ STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK,LPVOID) PURE;
+ STDMETHOD(CreateLight)(THIS_ LPDIRECT3DLIGHT*,LPUNKNOWN) PURE;
+ STDMETHOD(CreateMaterial)(THIS_ LPDIRECT3DMATERIAL3*,LPUNKNOWN) PURE;
+ STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DVIEWPORT3*,LPUNKNOWN) PURE;
+ STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH,LPD3DFINDDEVICERESULT) PURE;
+ STDMETHOD(CreateDevice)(THIS_ REFCLSID,LPDIRECTDRAWSURFACE4,LPDIRECT3DDEVICE3*,LPUNKNOWN) PURE;
+ STDMETHOD(CreateVertexBuffer)(THIS_ LPD3DVERTEXBUFFERDESC,LPDIRECT3DVERTEXBUFFER*,DWORD,LPUNKNOWN) PURE;
+ STDMETHOD(EnumZBufferFormats)(THIS_ REFCLSID,LPD3DENUMPIXELFORMATSCALLBACK,LPVOID) PURE;
+ STDMETHOD(EvictManagedTextures)(THIS) PURE;
+};
+
+typedef struct IDirect3D3 *LPDIRECT3D3;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3D3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3D3_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3D3_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3D3_EnumDevices(p,a,b) (p)->lpVtbl->EnumDevices(p,a,b)
+#define IDirect3D3_CreateLight(p,a,b) (p)->lpVtbl->CreateLight(p,a,b)
+#define IDirect3D3_CreateMaterial(p,a,b) (p)->lpVtbl->CreateMaterial(p,a,b)
+#define IDirect3D3_CreateViewport(p,a,b) (p)->lpVtbl->CreateViewport(p,a,b)
+#define IDirect3D3_FindDevice(p,a,b) (p)->lpVtbl->FindDevice(p,a,b)
+#define IDirect3D3_CreateDevice(p,a,b,c,d) (p)->lpVtbl->CreateDevice(p,a,b,c,d)
+#define IDirect3D3_CreateVertexBuffer(p,a,b,c,d) (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d)
+#define IDirect3D3_EnumZBufferFormats(p,a,b,c) (p)->lpVtbl->EnumZBufferFormats(p,a,b,c)
+#define IDirect3D3_EvictManagedTextures(p) (p)->lpVtbl->EvictManagedTextures(p)
+#else
+#define IDirect3D3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3D3_AddRef(p) (p)->AddRef()
+#define IDirect3D3_Release(p) (p)->Release()
+#define IDirect3D3_EnumDevices(p,a,b) (p)->EnumDevices(a,b)
+#define IDirect3D3_CreateLight(p,a,b) (p)->CreateLight(a,b)
+#define IDirect3D3_CreateMaterial(p,a,b) (p)->CreateMaterial(a,b)
+#define IDirect3D3_CreateViewport(p,a,b) (p)->CreateViewport(a,b)
+#define IDirect3D3_FindDevice(p,a,b) (p)->FindDevice(a,b)
+#define IDirect3D3_CreateDevice(p,a,b,c,d) (p)->CreateDevice(a,b,c,d)
+#define IDirect3D3_CreateVertexBuffer(p,a,b,c,d) (p)->CreateVertexBuffer(a,b,c,d)
+#define IDirect3D3_EnumZBufferFormats(p,a,b,c) (p)->EnumZBufferFormats(a,b,c)
+#define IDirect3D3_EvictManagedTextures(p) (p)->EvictManagedTextures()
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+#if(DIRECT3D_VERSION >= 0x0700)
+#undef INTERFACE
+#define INTERFACE IDirect3D7
+
+DECLARE_INTERFACE_(IDirect3D7, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3D7 methods ***/
+ STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK7,LPVOID) PURE;
+ STDMETHOD(CreateDevice)(THIS_ REFCLSID,LPDIRECTDRAWSURFACE7,LPDIRECT3DDEVICE7*) PURE;
+ STDMETHOD(CreateVertexBuffer)(THIS_ LPD3DVERTEXBUFFERDESC,LPDIRECT3DVERTEXBUFFER7*,DWORD) PURE;
+ STDMETHOD(EnumZBufferFormats)(THIS_ REFCLSID,LPD3DENUMPIXELFORMATSCALLBACK,LPVOID) PURE;
+ STDMETHOD(EvictManagedTextures)(THIS) PURE;
+};
+
+typedef struct IDirect3D7 *LPDIRECT3D7;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3D7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3D7_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3D7_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3D7_EnumDevices(p,a,b) (p)->lpVtbl->EnumDevices(p,a,b)
+#define IDirect3D7_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
+#define IDirect3D7_CreateVertexBuffer(p,a,b,c) (p)->lpVtbl->CreateVertexBuffer(p,a,b,c)
+#define IDirect3D7_EnumZBufferFormats(p,a,b,c) (p)->lpVtbl->EnumZBufferFormats(p,a,b,c)
+#define IDirect3D7_EvictManagedTextures(p) (p)->lpVtbl->EvictManagedTextures(p)
+#else
+#define IDirect3D7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3D7_AddRef(p) (p)->AddRef()
+#define IDirect3D7_Release(p) (p)->Release()
+#define IDirect3D7_EnumDevices(p,a,b) (p)->EnumDevices(a,b)
+#define IDirect3D7_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
+#define IDirect3D7_CreateVertexBuffer(p,a,b,c) (p)->CreateVertexBuffer(a,b,c)
+#define IDirect3D7_EnumZBufferFormats(p,a,b,c) (p)->EnumZBufferFormats(a,b,c)
+#define IDirect3D7_EvictManagedTextures(p) (p)->EvictManagedTextures()
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+/*
+ * Direct3D Device interfaces
+ */
+#undef INTERFACE
+#define INTERFACE IDirect3DDevice
+
+DECLARE_INTERFACE_(IDirect3DDevice, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DDevice methods ***/
+ STDMETHOD(Initialize)(THIS_ LPDIRECT3D,LPGUID,LPD3DDEVICEDESC) PURE;
+ STDMETHOD(GetCaps)(THIS_ LPD3DDEVICEDESC,LPD3DDEVICEDESC) PURE;
+ STDMETHOD(SwapTextureHandles)(THIS_ LPDIRECT3DTEXTURE,LPDIRECT3DTEXTURE) PURE;
+ STDMETHOD(CreateExecuteBuffer)(THIS_ LPD3DEXECUTEBUFFERDESC,LPDIRECT3DEXECUTEBUFFER*,IUnknown*) PURE;
+ STDMETHOD(GetStats)(THIS_ LPD3DSTATS) PURE;
+ STDMETHOD(Execute)(THIS_ LPDIRECT3DEXECUTEBUFFER,LPDIRECT3DVIEWPORT,DWORD) PURE;
+ STDMETHOD(AddViewport)(THIS_ LPDIRECT3DVIEWPORT) PURE;
+ STDMETHOD(DeleteViewport)(THIS_ LPDIRECT3DVIEWPORT) PURE;
+ STDMETHOD(NextViewport)(THIS_ LPDIRECT3DVIEWPORT,LPDIRECT3DVIEWPORT*,DWORD) PURE;
+ STDMETHOD(Pick)(THIS_ LPDIRECT3DEXECUTEBUFFER,LPDIRECT3DVIEWPORT,DWORD,LPD3DRECT) PURE;
+ STDMETHOD(GetPickRecords)(THIS_ LPDWORD,LPD3DPICKRECORD) PURE;
+ STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMTEXTUREFORMATSCALLBACK,LPVOID) PURE;
+ STDMETHOD(CreateMatrix)(THIS_ LPD3DMATRIXHANDLE) PURE;
+ STDMETHOD(SetMatrix)(THIS_ D3DMATRIXHANDLE,const LPD3DMATRIX) PURE;
+ STDMETHOD(GetMatrix)(THIS_ D3DMATRIXHANDLE,LPD3DMATRIX) PURE;
+ STDMETHOD(DeleteMatrix)(THIS_ D3DMATRIXHANDLE) PURE;
+ STDMETHOD(BeginScene)(THIS) PURE;
+ STDMETHOD(EndScene)(THIS) PURE;
+ STDMETHOD(GetDirect3D)(THIS_ LPDIRECT3D*) PURE;
+};
+
+typedef struct IDirect3DDevice *LPDIRECT3DDEVICE;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DDevice_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DDevice_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DDevice_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
+#define IDirect3DDevice_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirect3DDevice_SwapTextureHandles(p,a,b) (p)->lpVtbl->SwapTextureHandles(p,a,b)
+#define IDirect3DDevice_CreateExecuteBuffer(p,a,b,c) (p)->lpVtbl->CreateExecuteBuffer(p,a,b,c)
+#define IDirect3DDevice_GetStats(p,a) (p)->lpVtbl->GetStats(p,a)
+#define IDirect3DDevice_Execute(p,a,b,c) (p)->lpVtbl->Execute(p,a,b,c)
+#define IDirect3DDevice_AddViewport(p,a) (p)->lpVtbl->AddViewport(p,a)
+#define IDirect3DDevice_DeleteViewport(p,a) (p)->lpVtbl->DeleteViewport(p,a)
+#define IDirect3DDevice_NextViewport(p,a,b,c) (p)->lpVtbl->NextViewport(p,a,b,c)
+#define IDirect3DDevice_Pick(p,a,b,c,d) (p)->lpVtbl->Pick(p,a,b,c,d)
+#define IDirect3DDevice_GetPickRecords(p,a,b) (p)->lpVtbl->GetPickRecords(p,a,b)
+#define IDirect3DDevice_EnumTextureFormats(p,a,b) (p)->lpVtbl->EnumTextureFormats(p,a,b)
+#define IDirect3DDevice_CreateMatrix(p,a) (p)->lpVtbl->CreateMatrix(p,a)
+#define IDirect3DDevice_SetMatrix(p,a,b) (p)->lpVtbl->SetMatrix(p,a,b)
+#define IDirect3DDevice_GetMatrix(p,a,b) (p)->lpVtbl->GetMatrix(p,a,b)
+#define IDirect3DDevice_DeleteMatrix(p,a) (p)->lpVtbl->DeleteMatrix(p,a)
+#define IDirect3DDevice_BeginScene(p) (p)->lpVtbl->BeginScene(p)
+#define IDirect3DDevice_EndScene(p) (p)->lpVtbl->EndScene(p)
+#define IDirect3DDevice_GetDirect3D(p,a) (p)->lpVtbl->GetDirect3D(p,a)
+#else
+#define IDirect3DDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DDevice_AddRef(p) (p)->AddRef()
+#define IDirect3DDevice_Release(p) (p)->Release()
+#define IDirect3DDevice_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
+#define IDirect3DDevice_GetCaps(p,a,b) (p)->GetCaps(a,b)
+#define IDirect3DDevice_SwapTextureHandles(p,a,b) (p)->SwapTextureHandles(a,b)
+#define IDirect3DDevice_CreateExecuteBuffer(p,a,b,c) (p)->CreateExecuteBuffer(a,b,c)
+#define IDirect3DDevice_GetStats(p,a) (p)->GetStats(a)
+#define IDirect3DDevice_Execute(p,a,b,c) (p)->Execute(a,b,c)
+#define IDirect3DDevice_AddViewport(p,a) (p)->AddViewport(a)
+#define IDirect3DDevice_DeleteViewport(p,a) (p)->DeleteViewport(a)
+#define IDirect3DDevice_NextViewport(p,a,b,c) (p)->NextViewport(a,b,c)
+#define IDirect3DDevice_Pick(p,a,b,c,d) (p)->Pick(a,b,c,d)
+#define IDirect3DDevice_GetPickRecords(p,a,b) (p)->GetPickRecords(a,b)
+#define IDirect3DDevice_EnumTextureFormats(p,a,b) (p)->EnumTextureFormats(a,b)
+#define IDirect3DDevice_CreateMatrix(p,a) (p)->CreateMatrix(a)
+#define IDirect3DDevice_SetMatrix(p,a,b) (p)->SetMatrix(a,b)
+#define IDirect3DDevice_GetMatrix(p,a,b) (p)->GetMatrix(a,b)
+#define IDirect3DDevice_DeleteMatrix(p,a) (p)->DeleteMatrix(a)
+#define IDirect3DDevice_BeginScene(p) (p)->BeginScene()
+#define IDirect3DDevice_EndScene(p) (p)->EndScene()
+#define IDirect3DDevice_GetDirect3D(p,a) (p)->GetDirect3D(a)
+#endif
+
+#if(DIRECT3D_VERSION >= 0x0500)
+#undef INTERFACE
+#define INTERFACE IDirect3DDevice2
+
+DECLARE_INTERFACE_(IDirect3DDevice2, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DDevice2 methods ***/
+ STDMETHOD(GetCaps)(THIS_ LPD3DDEVICEDESC,LPD3DDEVICEDESC) PURE;
+ STDMETHOD(SwapTextureHandles)(THIS_ LPDIRECT3DTEXTURE2,LPDIRECT3DTEXTURE2) PURE;
+ STDMETHOD(GetStats)(THIS_ LPD3DSTATS) PURE;
+ STDMETHOD(AddViewport)(THIS_ LPDIRECT3DVIEWPORT2) PURE;
+ STDMETHOD(DeleteViewport)(THIS_ LPDIRECT3DVIEWPORT2) PURE;
+ STDMETHOD(NextViewport)(THIS_ LPDIRECT3DVIEWPORT2,LPDIRECT3DVIEWPORT2*,DWORD) PURE;
+ STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMTEXTUREFORMATSCALLBACK,LPVOID) PURE;
+ STDMETHOD(BeginScene)(THIS) PURE;
+ STDMETHOD(EndScene)(THIS) PURE;
+ STDMETHOD(GetDirect3D)(THIS_ LPDIRECT3D2*) PURE;
+ STDMETHOD(SetCurrentViewport)(THIS_ LPDIRECT3DVIEWPORT2) PURE;
+ STDMETHOD(GetCurrentViewport)(THIS_ LPDIRECT3DVIEWPORT2 *) PURE;
+ STDMETHOD(SetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE,DWORD) PURE;
+ STDMETHOD(GetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
+ STDMETHOD(Begin)(THIS_ D3DPRIMITIVETYPE,D3DVERTEXTYPE,DWORD) PURE;
+ STDMETHOD(BeginIndexed)(THIS_ D3DPRIMITIVETYPE,D3DVERTEXTYPE,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(Vertex)(THIS_ LPVOID) PURE;
+ STDMETHOD(Index)(THIS_ WORD) PURE;
+ STDMETHOD(End)(THIS_ DWORD) PURE;
+ STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE,LPDWORD) PURE;
+ STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE,DWORD) PURE;
+ STDMETHOD(GetLightState)(THIS_ D3DLIGHTSTATETYPE,LPDWORD) PURE;
+ STDMETHOD(SetLightState)(THIS_ D3DLIGHTSTATETYPE,DWORD) PURE;
+ STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE,LPD3DMATRIX) PURE;
+ STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE,LPD3DMATRIX) PURE;
+ STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE,LPD3DMATRIX) PURE;
+ STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE,D3DVERTEXTYPE,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE,D3DVERTEXTYPE,LPVOID,DWORD,LPWORD,DWORD,DWORD) PURE;
+ STDMETHOD(SetClipStatus)(THIS_ LPD3DCLIPSTATUS) PURE;
+ STDMETHOD(GetClipStatus)(THIS_ LPD3DCLIPSTATUS) PURE;
+};
+
+typedef struct IDirect3DDevice2 *LPDIRECT3DDEVICE2;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DDevice2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DDevice2_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DDevice2_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirect3DDevice2_SwapTextureHandles(p,a,b) (p)->lpVtbl->SwapTextureHandles(p,a,b)
+#define IDirect3DDevice2_GetStats(p,a) (p)->lpVtbl->GetStats(p,a)
+#define IDirect3DDevice2_AddViewport(p,a) (p)->lpVtbl->AddViewport(p,a)
+#define IDirect3DDevice2_DeleteViewport(p,a) (p)->lpVtbl->DeleteViewport(p,a)
+#define IDirect3DDevice2_NextViewport(p,a,b,c) (p)->lpVtbl->NextViewport(p,a,b,c)
+#define IDirect3DDevice2_EnumTextureFormats(p,a,b) (p)->lpVtbl->EnumTextureFormats(p,a,b)
+#define IDirect3DDevice2_BeginScene(p) (p)->lpVtbl->BeginScene(p)
+#define IDirect3DDevice2_EndScene(p) (p)->lpVtbl->EndScene(p)
+#define IDirect3DDevice2_GetDirect3D(p,a) (p)->lpVtbl->GetDirect3D(p,a)
+#define IDirect3DDevice2_SetCurrentViewport(p,a) (p)->lpVtbl->SetCurrentViewport(p,a)
+#define IDirect3DDevice2_GetCurrentViewport(p,a) (p)->lpVtbl->GetCurrentViewport(p,a)
+#define IDirect3DDevice2_SetRenderTarget(p,a,b) (p)->lpVtbl->SetRenderTarget(p,a,b)
+#define IDirect3DDevice2_GetRenderTarget(p,a) (p)->lpVtbl->GetRenderTarget(p,a)
+#define IDirect3DDevice2_Begin(p,a,b,c) (p)->lpVtbl->Begin(p,a,b,c)
+#define IDirect3DDevice2_BeginIndexed(p,a,b,c,d,e) (p)->lpVtbl->BeginIndexed(p,a,b,c,d,e)
+#define IDirect3DDevice2_Vertex(p,a) (p)->lpVtbl->Vertex(p,a)
+#define IDirect3DDevice2_Index(p,a) (p)->lpVtbl->Index(p,a)
+#define IDirect3DDevice2_End(p,a) (p)->lpVtbl->End(p,a)
+#define IDirect3DDevice2_GetRenderState(p,a,b) (p)->lpVtbl->GetRenderState(p,a,b)
+#define IDirect3DDevice2_SetRenderState(p,a,b) (p)->lpVtbl->SetRenderState(p,a,b)
+#define IDirect3DDevice2_GetLightState(p,a,b) (p)->lpVtbl->GetLightState(p,a,b)
+#define IDirect3DDevice2_SetLightState(p,a,b) (p)->lpVtbl->SetLightState(p,a,b)
+#define IDirect3DDevice2_SetTransform(p,a,b) (p)->lpVtbl->SetTransform(p,a,b)
+#define IDirect3DDevice2_GetTransform(p,a,b) (p)->lpVtbl->GetTransform(p,a,b)
+#define IDirect3DDevice2_MultiplyTransform(p,a,b) (p)->lpVtbl->MultiplyTransform(p,a,b)
+#define IDirect3DDevice2_DrawPrimitive(p,a,b,c,d,e) (p)->lpVtbl->DrawPrimitive(p,a,b,c,d,e)
+#define IDirect3DDevice2_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice2_SetClipStatus(p,a) (p)->lpVtbl->SetClipStatus(p,a)
+#define IDirect3DDevice2_GetClipStatus(p,a) (p)->lpVtbl->GetClipStatus(p,a)
+#else
+#define IDirect3DDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DDevice2_AddRef(p) (p)->AddRef()
+#define IDirect3DDevice2_Release(p) (p)->Release()
+#define IDirect3DDevice2_GetCaps(p,a,b) (p)->GetCaps(a,b)
+#define IDirect3DDevice2_SwapTextureHandles(p,a,b) (p)->SwapTextureHandles(a,b)
+#define IDirect3DDevice2_GetStats(p,a) (p)->GetStats(a)
+#define IDirect3DDevice2_AddViewport(p,a) (p)->AddViewport(a)
+#define IDirect3DDevice2_DeleteViewport(p,a) (p)->DeleteViewport(a)
+#define IDirect3DDevice2_NextViewport(p,a,b,c) (p)->NextViewport(a,b,c)
+#define IDirect3DDevice2_EnumTextureFormats(p,a,b) (p)->EnumTextureFormats(a,b)
+#define IDirect3DDevice2_BeginScene(p) (p)->BeginScene()
+#define IDirect3DDevice2_EndScene(p) (p)->EndScene()
+#define IDirect3DDevice2_GetDirect3D(p,a) (p)->GetDirect3D(a)
+#define IDirect3DDevice2_SetCurrentViewport(p,a) (p)->SetCurrentViewport(a)
+#define IDirect3DDevice2_GetCurrentViewport(p,a) (p)->GetCurrentViewport(a)
+#define IDirect3DDevice2_SetRenderTarget(p,a,b) (p)->SetRenderTarget(a,b)
+#define IDirect3DDevice2_GetRenderTarget(p,a) (p)->GetRenderTarget(a)
+#define IDirect3DDevice2_Begin(p,a,b,c) (p)->Begin(a,b,c)
+#define IDirect3DDevice2_BeginIndexed(p,a,b,c,d,e) (p)->BeginIndexed(a,b,c,d,e)
+#define IDirect3DDevice2_Vertex(p,a) (p)->Vertex(a)
+#define IDirect3DDevice2_Index(p,a) (p)->Index(a)
+#define IDirect3DDevice2_End(p,a) (p)->End(a)
+#define IDirect3DDevice2_GetRenderState(p,a,b) (p)->GetRenderState(a,b)
+#define IDirect3DDevice2_SetRenderState(p,a,b) (p)->SetRenderState(a,b)
+#define IDirect3DDevice2_GetLightState(p,a,b) (p)->GetLightState(a,b)
+#define IDirect3DDevice2_SetLightState(p,a,b) (p)->SetLightState(a,b)
+#define IDirect3DDevice2_SetTransform(p,a,b) (p)->SetTransform(a,b)
+#define IDirect3DDevice2_GetTransform(p,a,b) (p)->GetTransform(a,b)
+#define IDirect3DDevice2_MultiplyTransform(p,a,b) (p)->MultiplyTransform(a,b)
+#define IDirect3DDevice2_DrawPrimitive(p,a,b,c,d,e) (p)->DrawPrimitive(a,b,c,d,e)
+#define IDirect3DDevice2_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitive(a,b,c,d,e,f,g)
+#define IDirect3DDevice2_SetClipStatus(p,a) (p)->SetClipStatus(a)
+#define IDirect3DDevice2_GetClipStatus(p,a) (p)->GetClipStatus(a)
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#if(DIRECT3D_VERSION >= 0x0600)
+#undef INTERFACE
+#define INTERFACE IDirect3DDevice3
+
+DECLARE_INTERFACE_(IDirect3DDevice3, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DDevice3 methods ***/
+ STDMETHOD(GetCaps)(THIS_ LPD3DDEVICEDESC,LPD3DDEVICEDESC) PURE;
+ STDMETHOD(GetStats)(THIS_ LPD3DSTATS) PURE;
+ STDMETHOD(AddViewport)(THIS_ LPDIRECT3DVIEWPORT3) PURE;
+ STDMETHOD(DeleteViewport)(THIS_ LPDIRECT3DVIEWPORT3) PURE;
+ STDMETHOD(NextViewport)(THIS_ LPDIRECT3DVIEWPORT3,LPDIRECT3DVIEWPORT3*,DWORD) PURE;
+ STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMPIXELFORMATSCALLBACK,LPVOID) PURE;
+ STDMETHOD(BeginScene)(THIS) PURE;
+ STDMETHOD(EndScene)(THIS) PURE;
+ STDMETHOD(GetDirect3D)(THIS_ LPDIRECT3D3*) PURE;
+ STDMETHOD(SetCurrentViewport)(THIS_ LPDIRECT3DVIEWPORT3) PURE;
+ STDMETHOD(GetCurrentViewport)(THIS_ LPDIRECT3DVIEWPORT3 *) PURE;
+ STDMETHOD(SetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE4,DWORD) PURE;
+ STDMETHOD(GetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE4 *) PURE;
+ STDMETHOD(Begin)(THIS_ D3DPRIMITIVETYPE,DWORD,DWORD) PURE;
+ STDMETHOD(BeginIndexed)(THIS_ D3DPRIMITIVETYPE,DWORD,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(Vertex)(THIS_ LPVOID) PURE;
+ STDMETHOD(Index)(THIS_ WORD) PURE;
+ STDMETHOD(End)(THIS_ DWORD) PURE;
+ STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE,LPDWORD) PURE;
+ STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE,DWORD) PURE;
+ STDMETHOD(GetLightState)(THIS_ D3DLIGHTSTATETYPE,LPDWORD) PURE;
+ STDMETHOD(SetLightState)(THIS_ D3DLIGHTSTATETYPE,DWORD) PURE;
+ STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE,LPD3DMATRIX) PURE;
+ STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE,LPD3DMATRIX) PURE;
+ STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE,LPD3DMATRIX) PURE;
+ STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE,DWORD,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE,DWORD,LPVOID,DWORD,LPWORD,DWORD,DWORD) PURE;
+ STDMETHOD(SetClipStatus)(THIS_ LPD3DCLIPSTATUS) PURE;
+ STDMETHOD(GetClipStatus)(THIS_ LPD3DCLIPSTATUS) PURE;
+ STDMETHOD(DrawPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE,DWORD,LPD3DDRAWPRIMITIVESTRIDEDDATA,DWORD,DWORD) PURE;
+ STDMETHOD(DrawIndexedPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE,DWORD,LPD3DDRAWPRIMITIVESTRIDEDDATA,DWORD,LPWORD,DWORD,DWORD) PURE;
+ STDMETHOD(DrawPrimitiveVB)(THIS_ D3DPRIMITIVETYPE,LPDIRECT3DVERTEXBUFFER,DWORD,DWORD,DWORD) PURE;
+ STDMETHOD(DrawIndexedPrimitiveVB)(THIS_ D3DPRIMITIVETYPE,LPDIRECT3DVERTEXBUFFER,LPWORD,DWORD,DWORD) PURE;
+ STDMETHOD(ComputeSphereVisibility)(THIS_ LPD3DVECTOR,LPD3DVALUE,DWORD,DWORD,LPDWORD) PURE;
+ STDMETHOD(GetTexture)(THIS_ DWORD,LPDIRECT3DTEXTURE2 *) PURE;
+ STDMETHOD(SetTexture)(THIS_ DWORD,LPDIRECT3DTEXTURE2) PURE;
+ STDMETHOD(GetTextureStageState)(THIS_ DWORD,D3DTEXTURESTAGESTATETYPE,LPDWORD) PURE;
+ STDMETHOD(SetTextureStageState)(THIS_ DWORD,D3DTEXTURESTAGESTATETYPE,DWORD) PURE;
+ STDMETHOD(ValidateDevice)(THIS_ LPDWORD) PURE;
+};
+
+typedef struct IDirect3DDevice3 *LPDIRECT3DDEVICE3;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DDevice3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DDevice3_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DDevice3_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DDevice3_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirect3DDevice3_GetStats(p,a) (p)->lpVtbl->GetStats(p,a)
+#define IDirect3DDevice3_AddViewport(p,a) (p)->lpVtbl->AddViewport(p,a)
+#define IDirect3DDevice3_DeleteViewport(p,a) (p)->lpVtbl->DeleteViewport(p,a)
+#define IDirect3DDevice3_NextViewport(p,a,b,c) (p)->lpVtbl->NextViewport(p,a,b,c)
+#define IDirect3DDevice3_EnumTextureFormats(p,a,b) (p)->lpVtbl->EnumTextureFormats(p,a,b)
+#define IDirect3DDevice3_BeginScene(p) (p)->lpVtbl->BeginScene(p)
+#define IDirect3DDevice3_EndScene(p) (p)->lpVtbl->EndScene(p)
+#define IDirect3DDevice3_GetDirect3D(p,a) (p)->lpVtbl->GetDirect3D(p,a)
+#define IDirect3DDevice3_SetCurrentViewport(p,a) (p)->lpVtbl->SetCurrentViewport(p,a)
+#define IDirect3DDevice3_GetCurrentViewport(p,a) (p)->lpVtbl->GetCurrentViewport(p,a)
+#define IDirect3DDevice3_SetRenderTarget(p,a,b) (p)->lpVtbl->SetRenderTarget(p,a,b)
+#define IDirect3DDevice3_GetRenderTarget(p,a) (p)->lpVtbl->GetRenderTarget(p,a)
+#define IDirect3DDevice3_Begin(p,a,b,c) (p)->lpVtbl->Begin(p,a,b,c)
+#define IDirect3DDevice3_BeginIndexed(p,a,b,c,d,e) (p)->lpVtbl->BeginIndexed(p,a,b,c,d,e)
+#define IDirect3DDevice3_Vertex(p,a) (p)->lpVtbl->Vertex(p,a)
+#define IDirect3DDevice3_Index(p,a) (p)->lpVtbl->Index(p,a)
+#define IDirect3DDevice3_End(p,a) (p)->lpVtbl->End(p,a)
+#define IDirect3DDevice3_GetRenderState(p,a,b) (p)->lpVtbl->GetRenderState(p,a,b)
+#define IDirect3DDevice3_SetRenderState(p,a,b) (p)->lpVtbl->SetRenderState(p,a,b)
+#define IDirect3DDevice3_GetLightState(p,a,b) (p)->lpVtbl->GetLightState(p,a,b)
+#define IDirect3DDevice3_SetLightState(p,a,b) (p)->lpVtbl->SetLightState(p,a,b)
+#define IDirect3DDevice3_SetTransform(p,a,b) (p)->lpVtbl->SetTransform(p,a,b)
+#define IDirect3DDevice3_GetTransform(p,a,b) (p)->lpVtbl->GetTransform(p,a,b)
+#define IDirect3DDevice3_MultiplyTransform(p,a,b) (p)->lpVtbl->MultiplyTransform(p,a,b)
+#define IDirect3DDevice3_DrawPrimitive(p,a,b,c,d,e) (p)->lpVtbl->DrawPrimitive(p,a,b,c,d,e)
+#define IDirect3DDevice3_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice3_SetClipStatus(p,a) (p)->lpVtbl->SetClipStatus(p,a)
+#define IDirect3DDevice3_GetClipStatus(p,a) (p)->lpVtbl->GetClipStatus(p,a)
+#define IDirect3DDevice3_DrawPrimitiveStrided(p,a,b,c,d,e) (p)->lpVtbl->DrawPrimitiveStrided(p,a,b,c,d,e)
+#define IDirect3DDevice3_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice3_DrawPrimitiveVB(p,a,b,c,d,e) (p)->lpVtbl->DrawPrimitiveVB(p,a,b,c,d,e)
+#define IDirect3DDevice3_DrawIndexedPrimitiveVB(p,a,b,c,d,e) (p)->lpVtbl->DrawIndexedPrimitiveVB(p,a,b,c,d,e)
+#define IDirect3DDevice3_ComputeSphereVisibility(p,a,b,c,d,e) (p)->lpVtbl->ComputeSphereVisibility(p,a,b,c,d,e)
+#define IDirect3DDevice3_GetTexture(p,a,b) (p)->lpVtbl->GetTexture(p,a,b)
+#define IDirect3DDevice3_SetTexture(p,a,b) (p)->lpVtbl->SetTexture(p,a,b)
+#define IDirect3DDevice3_GetTextureStageState(p,a,b,c) (p)->lpVtbl->GetTextureStageState(p,a,b,c)
+#define IDirect3DDevice3_SetTextureStageState(p,a,b,c) (p)->lpVtbl->SetTextureStageState(p,a,b,c)
+#define IDirect3DDevice3_ValidateDevice(p,a) (p)->lpVtbl->ValidateDevice(p,a)
+#else
+#define IDirect3DDevice3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DDevice3_AddRef(p) (p)->AddRef()
+#define IDirect3DDevice3_Release(p) (p)->Release()
+#define IDirect3DDevice3_GetCaps(p,a,b) (p)->GetCaps(a,b)
+#define IDirect3DDevice3_GetStats(p,a) (p)->GetStats(a)
+#define IDirect3DDevice3_AddViewport(p,a) (p)->AddViewport(a)
+#define IDirect3DDevice3_DeleteViewport(p,a) (p)->DeleteViewport(a)
+#define IDirect3DDevice3_NextViewport(p,a,b,c) (p)->NextViewport(a,b,c)
+#define IDirect3DDevice3_EnumTextureFormats(p,a,b) (p)->EnumTextureFormats(a,b)
+#define IDirect3DDevice3_BeginScene(p) (p)->BeginScene()
+#define IDirect3DDevice3_EndScene(p) (p)->EndScene()
+#define IDirect3DDevice3_GetDirect3D(p,a) (p)->GetDirect3D(a)
+#define IDirect3DDevice3_SetCurrentViewport(p,a) (p)->SetCurrentViewport(a)
+#define IDirect3DDevice3_GetCurrentViewport(p,a) (p)->GetCurrentViewport(a)
+#define IDirect3DDevice3_SetRenderTarget(p,a,b) (p)->SetRenderTarget(a,b)
+#define IDirect3DDevice3_GetRenderTarget(p,a) (p)->GetRenderTarget(a)
+#define IDirect3DDevice3_Begin(p,a,b,c) (p)->Begin(a,b,c)
+#define IDirect3DDevice3_BeginIndexed(p,a,b,c,d,e) (p)->BeginIndexed(a,b,c,d,e)
+#define IDirect3DDevice3_Vertex(p,a) (p)->Vertex(a)
+#define IDirect3DDevice3_Index(p,a) (p)->Index(a)
+#define IDirect3DDevice3_End(p,a) (p)->End(a)
+#define IDirect3DDevice3_GetRenderState(p,a,b) (p)->GetRenderState(a,b)
+#define IDirect3DDevice3_SetRenderState(p,a,b) (p)->SetRenderState(a,b)
+#define IDirect3DDevice3_GetLightState(p,a,b) (p)->GetLightState(a,b)
+#define IDirect3DDevice3_SetLightState(p,a,b) (p)->SetLightState(a,b)
+#define IDirect3DDevice3_SetTransform(p,a,b) (p)->SetTransform(a,b)
+#define IDirect3DDevice3_GetTransform(p,a,b) (p)->GetTransform(a,b)
+#define IDirect3DDevice3_MultiplyTransform(p,a,b) (p)->MultiplyTransform(a,b)
+#define IDirect3DDevice3_DrawPrimitive(p,a,b,c,d,e) (p)->DrawPrimitive(a,b,c,d,e)
+#define IDirect3DDevice3_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitive(a,b,c,d,e,f,g)
+#define IDirect3DDevice3_SetClipStatus(p,a) (p)->SetClipStatus(a)
+#define IDirect3DDevice3_GetClipStatus(p,a) (p)->GetClipStatus(a)
+#define IDirect3DDevice3_DrawPrimitiveStrided(p,a,b,c,d,e) (p)->DrawPrimitiveStrided(a,b,c,d,e)
+#define IDirect3DDevice3_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitiveStrided(a,b,c,d,e,f,g)
+#define IDirect3DDevice3_DrawPrimitiveVB(p,a,b,c,d,e) (p)->DrawPrimitiveVB(a,b,c,d,e)
+#define IDirect3DDevice3_DrawIndexedPrimitiveVB(p,a,b,c,d,e) (p)->DrawIndexedPrimitiveVB(a,b,c,d,e)
+#define IDirect3DDevice3_ComputeSphereVisibility(p,a,b,c,d,e) (p)->ComputeSphereVisibility(a,b,c,d,e)
+#define IDirect3DDevice3_GetTexture(p,a,b) (p)->GetTexture(a,b)
+#define IDirect3DDevice3_SetTexture(p,a,b) (p)->SetTexture(a,b)
+#define IDirect3DDevice3_GetTextureStageState(p,a,b,c) (p)->GetTextureStageState(a,b,c)
+#define IDirect3DDevice3_SetTextureStageState(p,a,b,c) (p)->SetTextureStageState(a,b,c)
+#define IDirect3DDevice3_ValidateDevice(p,a) (p)->ValidateDevice(a)
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+#if(DIRECT3D_VERSION >= 0x0700)
+#undef INTERFACE
+#define INTERFACE IDirect3DDevice7
+
+DECLARE_INTERFACE_(IDirect3DDevice7, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DDevice7 methods ***/
+ STDMETHOD(GetCaps)(THIS_ LPD3DDEVICEDESC7) PURE;
+ STDMETHOD(EnumTextureFormats)(THIS_ LPD3DENUMPIXELFORMATSCALLBACK,LPVOID) PURE;
+ STDMETHOD(BeginScene)(THIS) PURE;
+ STDMETHOD(EndScene)(THIS) PURE;
+ STDMETHOD(GetDirect3D)(THIS_ LPDIRECT3D7*) PURE;
+ STDMETHOD(SetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE7,DWORD) PURE;
+ STDMETHOD(GetRenderTarget)(THIS_ LPDIRECTDRAWSURFACE7 *) PURE;
+ STDMETHOD(Clear)(THIS_ DWORD,LPD3DRECT,DWORD,D3DCOLOR,D3DVALUE,DWORD) PURE;
+ STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE,LPD3DMATRIX) PURE;
+ STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE,LPD3DMATRIX) PURE;
+ STDMETHOD(SetViewport)(THIS_ LPD3DVIEWPORT7) PURE;
+ STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE,LPD3DMATRIX) PURE;
+ STDMETHOD(GetViewport)(THIS_ LPD3DVIEWPORT7) PURE;
+ STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL7) PURE;
+ STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL7) PURE;
+ STDMETHOD(SetLight)(THIS_ DWORD,LPD3DLIGHT7) PURE;
+ STDMETHOD(GetLight)(THIS_ DWORD,LPD3DLIGHT7) PURE;
+ STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE,DWORD) PURE;
+ STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE,LPDWORD) PURE;
+ STDMETHOD(BeginStateBlock)(THIS) PURE;
+ STDMETHOD(EndStateBlock)(THIS_ LPDWORD) PURE;
+ STDMETHOD(PreLoad)(THIS_ LPDIRECTDRAWSURFACE7) PURE;
+ STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE,DWORD,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE,DWORD,LPVOID,DWORD,LPWORD,DWORD,DWORD) PURE;
+ STDMETHOD(SetClipStatus)(THIS_ LPD3DCLIPSTATUS) PURE;
+ STDMETHOD(GetClipStatus)(THIS_ LPD3DCLIPSTATUS) PURE;
+ STDMETHOD(DrawPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE,DWORD,LPD3DDRAWPRIMITIVESTRIDEDDATA,DWORD,DWORD) PURE;
+ STDMETHOD(DrawIndexedPrimitiveStrided)(THIS_ D3DPRIMITIVETYPE,DWORD,LPD3DDRAWPRIMITIVESTRIDEDDATA,DWORD,LPWORD,DWORD,DWORD) PURE;
+ STDMETHOD(DrawPrimitiveVB)(THIS_ D3DPRIMITIVETYPE,LPDIRECT3DVERTEXBUFFER7,DWORD,DWORD,DWORD) PURE;
+ STDMETHOD(DrawIndexedPrimitiveVB)(THIS_ D3DPRIMITIVETYPE,LPDIRECT3DVERTEXBUFFER7,DWORD,DWORD,LPWORD,DWORD,DWORD) PURE;
+ STDMETHOD(ComputeSphereVisibility)(THIS_ LPD3DVECTOR,LPD3DVALUE,DWORD,DWORD,LPDWORD) PURE;
+ STDMETHOD(GetTexture)(THIS_ DWORD,LPDIRECTDRAWSURFACE7 *) PURE;
+ STDMETHOD(SetTexture)(THIS_ DWORD,LPDIRECTDRAWSURFACE7) PURE;
+ STDMETHOD(GetTextureStageState)(THIS_ DWORD,D3DTEXTURESTAGESTATETYPE,LPDWORD) PURE;
+ STDMETHOD(SetTextureStageState)(THIS_ DWORD,D3DTEXTURESTAGESTATETYPE,DWORD) PURE;
+ STDMETHOD(ValidateDevice)(THIS_ LPDWORD) PURE;
+ STDMETHOD(ApplyStateBlock)(THIS_ DWORD) PURE;
+ STDMETHOD(CaptureStateBlock)(THIS_ DWORD) PURE;
+ STDMETHOD(DeleteStateBlock)(THIS_ DWORD) PURE;
+ STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE,LPDWORD) PURE;
+ STDMETHOD(Load)(THIS_ LPDIRECTDRAWSURFACE7,LPPOINT,LPDIRECTDRAWSURFACE7,LPRECT,DWORD) PURE;
+ STDMETHOD(LightEnable)(THIS_ DWORD,BOOL) PURE;
+ STDMETHOD(GetLightEnable)(THIS_ DWORD,BOOL*) PURE;
+ STDMETHOD(SetClipPlane)(THIS_ DWORD,D3DVALUE*) PURE;
+ STDMETHOD(GetClipPlane)(THIS_ DWORD,D3DVALUE*) PURE;
+ STDMETHOD(GetInfo)(THIS_ DWORD,LPVOID,DWORD) PURE;
+};
+
+typedef struct IDirect3DDevice7 *LPDIRECT3DDEVICE7;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DDevice7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DDevice7_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DDevice7_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DDevice7_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
+#define IDirect3DDevice7_EnumTextureFormats(p,a,b) (p)->lpVtbl->EnumTextureFormats(p,a,b)
+#define IDirect3DDevice7_BeginScene(p) (p)->lpVtbl->BeginScene(p)
+#define IDirect3DDevice7_EndScene(p) (p)->lpVtbl->EndScene(p)
+#define IDirect3DDevice7_GetDirect3D(p,a) (p)->lpVtbl->GetDirect3D(p,a)
+#define IDirect3DDevice7_SetRenderTarget(p,a,b) (p)->lpVtbl->SetRenderTarget(p,a,b)
+#define IDirect3DDevice7_GetRenderTarget(p,a) (p)->lpVtbl->GetRenderTarget(p,a)
+#define IDirect3DDevice7_Clear(p,a,b,c,d,e,f) (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
+#define IDirect3DDevice7_SetTransform(p,a,b) (p)->lpVtbl->SetTransform(p,a,b)
+#define IDirect3DDevice7_GetTransform(p,a,b) (p)->lpVtbl->GetTransform(p,a,b)
+#define IDirect3DDevice7_SetViewport(p,a) (p)->lpVtbl->SetViewport(p,a)
+#define IDirect3DDevice7_MultiplyTransform(p,a,b) (p)->lpVtbl->MultiplyTransform(p,a,b)
+#define IDirect3DDevice7_GetViewport(p,a) (p)->lpVtbl->GetViewport(p,a)
+#define IDirect3DDevice7_SetMaterial(p,a) (p)->lpVtbl->SetMaterial(p,a)
+#define IDirect3DDevice7_GetMaterial(p,a) (p)->lpVtbl->GetMaterial(p,a)
+#define IDirect3DDevice7_SetLight(p,a,b) (p)->lpVtbl->SetLight(p,a,b)
+#define IDirect3DDevice7_GetLight(p,a,b) (p)->lpVtbl->GetLight(p,a,b)
+#define IDirect3DDevice7_SetRenderState(p,a,b) (p)->lpVtbl->SetRenderState(p,a,b)
+#define IDirect3DDevice7_GetRenderState(p,a,b) (p)->lpVtbl->GetRenderState(p,a,b)
+#define IDirect3DDevice7_BeginStateBlock(p) (p)->lpVtbl->BeginStateBlock(p)
+#define IDirect3DDevice7_EndStateBlock(p,a) (p)->lpVtbl->EndStateBlock(p,a)
+#define IDirect3DDevice7_PreLoad(p,a) (p)->lpVtbl->PreLoad(p,a)
+#define IDirect3DDevice7_DrawPrimitive(p,a,b,c,d,e) (p)->lpVtbl->DrawPrimitive(p,a,b,c,d,e)
+#define IDirect3DDevice7_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice7_SetClipStatus(p,a) (p)->lpVtbl->SetClipStatus(p,a)
+#define IDirect3DDevice7_GetClipStatus(p,a) (p)->lpVtbl->GetClipStatus(p,a)
+#define IDirect3DDevice7_DrawPrimitiveStrided(p,a,b,c,d,e) (p)->lpVtbl->DrawPrimitiveStrided(p,a,b,c,d,e)
+#define IDirect3DDevice7_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice7_DrawPrimitiveVB(p,a,b,c,d,e) (p)->lpVtbl->DrawPrimitiveVB(p,a,b,c,d,e)
+#define IDirect3DDevice7_DrawIndexedPrimitiveVB(p,a,b,c,d,e,f,g) (p)->lpVtbl->DrawIndexedPrimitiveVB(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice7_ComputeSphereVisibility(p,a,b,c,d,e) (p)->lpVtbl->ComputeSphereVisibility(p,a,b,c,d,e)
+#define IDirect3DDevice7_GetTexture(p,a,b) (p)->lpVtbl->GetTexture(p,a,b)
+#define IDirect3DDevice7_SetTexture(p,a,b) (p)->lpVtbl->SetTexture(p,a,b)
+#define IDirect3DDevice7_GetTextureStageState(p,a,b,c) (p)->lpVtbl->GetTextureStageState(p,a,b,c)
+#define IDirect3DDevice7_SetTextureStageState(p,a,b,c) (p)->lpVtbl->SetTextureStageState(p,a,b,c)
+#define IDirect3DDevice7_ValidateDevice(p,a) (p)->lpVtbl->ValidateDevice(p,a)
+#define IDirect3DDevice7_ApplyStateBlock(p,a) (p)->lpVtbl->ApplyStateBlock(p,a)
+#define IDirect3DDevice7_CaptureStateBlock(p,a) (p)->lpVtbl->CaptureStateBlock(p,a)
+#define IDirect3DDevice7_DeleteStateBlock(p,a) (p)->lpVtbl->DeleteStateBlock(p,a)
+#define IDirect3DDevice7_CreateStateBlock(p,a,b) (p)->lpVtbl->CreateStateBlock(p,a,b)
+#define IDirect3DDevice7_Load(p,a,b,c,d,e) (p)->lpVtbl->Load(p,a,b,c,d,e)
+#define IDirect3DDevice7_LightEnable(p,a,b) (p)->lpVtbl->LightEnable(p,a,b)
+#define IDirect3DDevice7_GetLightEnable(p,a,b) (p)->lpVtbl->GetLightEnable(p,a,b)
+#define IDirect3DDevice7_SetClipPlane(p,a,b) (p)->lpVtbl->SetClipPlane(p,a,b)
+#define IDirect3DDevice7_GetClipPlane(p,a,b) (p)->lpVtbl->GetClipPlane(p,a,b)
+#define IDirect3DDevice7_GetInfo(p,a,b,c) (p)->lpVtbl->GetInfo(p,a,b,c)
+#else
+#define IDirect3DDevice7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DDevice7_AddRef(p) (p)->AddRef()
+#define IDirect3DDevice7_Release(p) (p)->Release()
+#define IDirect3DDevice7_GetCaps(p,a) (p)->GetCaps(a)
+#define IDirect3DDevice7_EnumTextureFormats(p,a,b) (p)->EnumTextureFormats(a,b)
+#define IDirect3DDevice7_BeginScene(p) (p)->BeginScene()
+#define IDirect3DDevice7_EndScene(p) (p)->EndScene()
+#define IDirect3DDevice7_GetDirect3D(p,a) (p)->GetDirect3D(a)
+#define IDirect3DDevice7_SetRenderTarget(p,a,b) (p)->SetRenderTarget(a,b)
+#define IDirect3DDevice7_GetRenderTarget(p,a) (p)->GetRenderTarget(a)
+#define IDirect3DDevice7_Clear(p,a,b,c,d,e,f) (p)->Clear(a,b,c,d,e,f)
+#define IDirect3DDevice7_SetTransform(p,a,b) (p)->SetTransform(a,b)
+#define IDirect3DDevice7_GetTransform(p,a,b) (p)->GetTransform(a,b)
+#define IDirect3DDevice7_SetViewport(p,a) (p)->SetViewport(a)
+#define IDirect3DDevice7_MultiplyTransform(p,a,b) (p)->MultiplyTransform(a,b)
+#define IDirect3DDevice7_GetViewport(p,a) (p)->GetViewport(a)
+#define IDirect3DDevice7_SetMaterial(p,a) (p)->SetMaterial(a)
+#define IDirect3DDevice7_GetMaterial(p,a) (p)->GetMaterial(a)
+#define IDirect3DDevice7_SetLight(p,a,b) (p)->SetLight(a,b)
+#define IDirect3DDevice7_GetLight(p,a,b) (p)->GetLight(a,b)
+#define IDirect3DDevice7_SetRenderState(p,a,b) (p)->SetRenderState(a,b)
+#define IDirect3DDevice7_GetRenderState(p,a,b) (p)->GetRenderState(a,b)
+#define IDirect3DDevice7_BeginStateBlock(p) (p)->BeginStateBlock()
+#define IDirect3DDevice7_EndStateBlock(p,a) (p)->EndStateBlock(a)
+#define IDirect3DDevice7_PreLoad(p,a) (p)->PreLoad(a)
+#define IDirect3DDevice7_DrawPrimitive(p,a,b,c,d,e) (p)->DrawPrimitive(a,b,c,d,e)
+#define IDirect3DDevice7_DrawIndexedPrimitive(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitive(a,b,c,d,e,f,g)
+#define IDirect3DDevice7_SetClipStatus(p,a) (p)->SetClipStatus(a)
+#define IDirect3DDevice7_GetClipStatus(p,a) (p)->GetClipStatus(a)
+#define IDirect3DDevice7_DrawPrimitiveStrided(p,a,b,c,d,e) (p)->DrawPrimitiveStrided(a,b,c,d,e)
+#define IDirect3DDevice7_DrawIndexedPrimitiveStrided(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitiveStrided(a,b,c,d,e,f,g)
+#define IDirect3DDevice7_DrawPrimitiveVB(p,a,b,c,d,e) (p)->DrawPrimitiveVB(a,b,c,d,e)
+#define IDirect3DDevice7_DrawIndexedPrimitiveVB(p,a,b,c,d,e,f,g) (p)->DrawIndexedPrimitiveVB(a,b,c,d,e,f,g)
+#define IDirect3DDevice7_ComputeSphereVisibility(p,a,b,c,d,e) (p)->ComputeSphereVisibility(a,b,c,d,e)
+#define IDirect3DDevice7_GetTexture(p,a,b) (p)->GetTexture(a,b)
+#define IDirect3DDevice7_SetTexture(p,a,b) (p)->SetTexture(a,b)
+#define IDirect3DDevice7_GetTextureStageState(p,a,b,c) (p)->GetTextureStageState(a,b,c)
+#define IDirect3DDevice7_SetTextureStageState(p,a,b,c) (p)->SetTextureStageState(a,b,c)
+#define IDirect3DDevice7_ValidateDevice(p,a) (p)->ValidateDevice(a)
+#define IDirect3DDevice7_ApplyStateBlock(p,a) (p)->ApplyStateBlock(a)
+#define IDirect3DDevice7_CaptureStateBlock(p,a) (p)->CaptureStateBlock(a)
+#define IDirect3DDevice7_DeleteStateBlock(p,a) (p)->DeleteStateBlock(a)
+#define IDirect3DDevice7_CreateStateBlock(p,a,b) (p)->CreateStateBlock(a,b)
+#define IDirect3DDevice7_Load(p,a,b,c,d,e) (p)->Load(a,b,c,d,e)
+#define IDirect3DDevice7_LightEnable(p,a,b) (p)->LightEnable(a,b)
+#define IDirect3DDevice7_GetLightEnable(p,a,b) (p)->GetLightEnable(a,b)
+#define IDirect3DDevice7_SetClipPlane(p,a,b) (p)->SetClipPlane(a,b)
+#define IDirect3DDevice7_GetClipPlane(p,a,b) (p)->GetClipPlane(a,b)
+#define IDirect3DDevice7_GetInfo(p,a,b,c) (p)->GetInfo(a,b,c)
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+/*
+ * Execute Buffer interface
+ */
+#undef INTERFACE
+#define INTERFACE IDirect3DExecuteBuffer
+
+DECLARE_INTERFACE_(IDirect3DExecuteBuffer, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DExecuteBuffer methods ***/
+ STDMETHOD(Initialize)(THIS_ LPDIRECT3DDEVICE,LPD3DEXECUTEBUFFERDESC) PURE;
+ STDMETHOD(Lock)(THIS_ LPD3DEXECUTEBUFFERDESC) PURE;
+ STDMETHOD(Unlock)(THIS) PURE;
+ STDMETHOD(SetExecuteData)(THIS_ LPD3DEXECUTEDATA) PURE;
+ STDMETHOD(GetExecuteData)(THIS_ LPD3DEXECUTEDATA) PURE;
+ STDMETHOD(Validate)(THIS_ LPDWORD,LPD3DVALIDATECALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(Optimize)(THIS_ DWORD) PURE;
+};
+
+typedef struct IDirect3DExecuteBuffer *LPDIRECT3DEXECUTEBUFFER;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DExecuteBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DExecuteBuffer_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DExecuteBuffer_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DExecuteBuffer_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirect3DExecuteBuffer_Lock(p,a) (p)->lpVtbl->Lock(p,a)
+#define IDirect3DExecuteBuffer_Unlock(p) (p)->lpVtbl->Unlock(p)
+#define IDirect3DExecuteBuffer_SetExecuteData(p,a) (p)->lpVtbl->SetExecuteData(p,a)
+#define IDirect3DExecuteBuffer_GetExecuteData(p,a) (p)->lpVtbl->GetExecuteData(p,a)
+#define IDirect3DExecuteBuffer_Validate(p,a,b,c,d) (p)->lpVtbl->Validate(p,a,b,c,d)
+#define IDirect3DExecuteBuffer_Optimize(p,a) (p)->lpVtbl->Optimize(p,a)
+#else
+#define IDirect3DExecuteBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DExecuteBuffer_AddRef(p) (p)->AddRef()
+#define IDirect3DExecuteBuffer_Release(p) (p)->Release()
+#define IDirect3DExecuteBuffer_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirect3DExecuteBuffer_Lock(p,a) (p)->Lock(a)
+#define IDirect3DExecuteBuffer_Unlock(p) (p)->Unlock()
+#define IDirect3DExecuteBuffer_SetExecuteData(p,a) (p)->SetExecuteData(a)
+#define IDirect3DExecuteBuffer_GetExecuteData(p,a) (p)->GetExecuteData(a)
+#define IDirect3DExecuteBuffer_Validate(p,a,b,c,d) (p)->Validate(a,b,c,d)
+#define IDirect3DExecuteBuffer_Optimize(p,a) (p)->Optimize(a)
+#endif
+
+/*
+ * Light interfaces
+ */
+#undef INTERFACE
+#define INTERFACE IDirect3DLight
+
+DECLARE_INTERFACE_(IDirect3DLight, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DLight methods ***/
+ STDMETHOD(Initialize)(THIS_ LPDIRECT3D) PURE;
+ STDMETHOD(SetLight)(THIS_ LPD3DLIGHT) PURE;
+ STDMETHOD(GetLight)(THIS_ LPD3DLIGHT) PURE;
+};
+
+typedef struct IDirect3DLight *LPDIRECT3DLIGHT;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DLight_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DLight_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DLight_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DLight_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirect3DLight_SetLight(p,a) (p)->lpVtbl->SetLight(p,a)
+#define IDirect3DLight_GetLight(p,a) (p)->lpVtbl->GetLight(p,a)
+#else
+#define IDirect3DLight_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DLight_AddRef(p) (p)->AddRef()
+#define IDirect3DLight_Release(p) (p)->Release()
+#define IDirect3DLight_Initialize(p,a) (p)->Initialize(a)
+#define IDirect3DLight_SetLight(p,a) (p)->SetLight(a)
+#define IDirect3DLight_GetLight(p,a) (p)->GetLight(a)
+#endif
+
+/*
+ * Material interfaces
+ */
+#undef INTERFACE
+#define INTERFACE IDirect3DMaterial
+
+DECLARE_INTERFACE_(IDirect3DMaterial, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DMaterial methods ***/
+ STDMETHOD(Initialize)(THIS_ LPDIRECT3D) PURE;
+ STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL) PURE;
+ STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL) PURE;
+ STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE,LPD3DMATERIALHANDLE) PURE;
+ STDMETHOD(Reserve)(THIS) PURE;
+ STDMETHOD(Unreserve)(THIS) PURE;
+};
+
+typedef struct IDirect3DMaterial *LPDIRECT3DMATERIAL;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DMaterial_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DMaterial_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DMaterial_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DMaterial_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirect3DMaterial_SetMaterial(p,a) (p)->lpVtbl->SetMaterial(p,a)
+#define IDirect3DMaterial_GetMaterial(p,a) (p)->lpVtbl->GetMaterial(p,a)
+#define IDirect3DMaterial_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
+#define IDirect3DMaterial_Reserve(p) (p)->lpVtbl->Reserve(p)
+#define IDirect3DMaterial_Unreserve(p) (p)->lpVtbl->Unreserve(p)
+#else
+#define IDirect3DMaterial_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DMaterial_AddRef(p) (p)->AddRef()
+#define IDirect3DMaterial_Release(p) (p)->Release()
+#define IDirect3DMaterial_Initialize(p,a) (p)->Initialize(a)
+#define IDirect3DMaterial_SetMaterial(p,a) (p)->SetMaterial(a)
+#define IDirect3DMaterial_GetMaterial(p,a) (p)->GetMaterial(a)
+#define IDirect3DMaterial_GetHandle(p,a,b) (p)->GetHandle(a,b)
+#define IDirect3DMaterial_Reserve(p) (p)->Reserve()
+#define IDirect3DMaterial_Unreserve(p) (p)->Unreserve()
+#endif
+
+#if(DIRECT3D_VERSION >= 0x0500)
+#undef INTERFACE
+#define INTERFACE IDirect3DMaterial2
+
+DECLARE_INTERFACE_(IDirect3DMaterial2, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DMaterial2 methods ***/
+ STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL) PURE;
+ STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL) PURE;
+ STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE2,LPD3DMATERIALHANDLE) PURE;
+};
+
+typedef struct IDirect3DMaterial2 *LPDIRECT3DMATERIAL2;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DMaterial2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DMaterial2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DMaterial2_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DMaterial2_SetMaterial(p,a) (p)->lpVtbl->SetMaterial(p,a)
+#define IDirect3DMaterial2_GetMaterial(p,a) (p)->lpVtbl->GetMaterial(p,a)
+#define IDirect3DMaterial2_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
+#else
+#define IDirect3DMaterial2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DMaterial2_AddRef(p) (p)->AddRef()
+#define IDirect3DMaterial2_Release(p) (p)->Release()
+#define IDirect3DMaterial2_SetMaterial(p,a) (p)->SetMaterial(a)
+#define IDirect3DMaterial2_GetMaterial(p,a) (p)->GetMaterial(a)
+#define IDirect3DMaterial2_GetHandle(p,a,b) (p)->GetHandle(a,b)
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#if(DIRECT3D_VERSION >= 0x0600)
+#undef INTERFACE
+#define INTERFACE IDirect3DMaterial3
+
+DECLARE_INTERFACE_(IDirect3DMaterial3, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DMaterial3 methods ***/
+ STDMETHOD(SetMaterial)(THIS_ LPD3DMATERIAL) PURE;
+ STDMETHOD(GetMaterial)(THIS_ LPD3DMATERIAL) PURE;
+ STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE3,LPD3DMATERIALHANDLE) PURE;
+};
+
+typedef struct IDirect3DMaterial3 *LPDIRECT3DMATERIAL3;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DMaterial3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DMaterial3_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DMaterial3_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DMaterial3_SetMaterial(p,a) (p)->lpVtbl->SetMaterial(p,a)
+#define IDirect3DMaterial3_GetMaterial(p,a) (p)->lpVtbl->GetMaterial(p,a)
+#define IDirect3DMaterial3_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
+#else
+#define IDirect3DMaterial3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DMaterial3_AddRef(p) (p)->AddRef()
+#define IDirect3DMaterial3_Release(p) (p)->Release()
+#define IDirect3DMaterial3_SetMaterial(p,a) (p)->SetMaterial(a)
+#define IDirect3DMaterial3_GetMaterial(p,a) (p)->GetMaterial(a)
+#define IDirect3DMaterial3_GetHandle(p,a,b) (p)->GetHandle(a,b)
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+/*
+ * Texture interfaces
+ */
+#undef INTERFACE
+#define INTERFACE IDirect3DTexture
+
+DECLARE_INTERFACE_(IDirect3DTexture, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DTexture methods ***/
+ STDMETHOD(Initialize)(THIS_ LPDIRECT3DDEVICE,LPDIRECTDRAWSURFACE) PURE;
+ STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE,LPD3DTEXTUREHANDLE) PURE;
+ STDMETHOD(PaletteChanged)(THIS_ DWORD,DWORD) PURE;
+ STDMETHOD(Load)(THIS_ LPDIRECT3DTEXTURE) PURE;
+ STDMETHOD(Unload)(THIS) PURE;
+};
+
+typedef struct IDirect3DTexture *LPDIRECT3DTEXTURE;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DTexture_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DTexture_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DTexture_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DTexture_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirect3DTexture_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
+#define IDirect3DTexture_PaletteChanged(p,a,b) (p)->lpVtbl->PaletteChanged(p,a,b)
+#define IDirect3DTexture_Load(p,a) (p)->lpVtbl->Load(p,a)
+#define IDirect3DTexture_Unload(p) (p)->lpVtbl->Unload(p)
+#else
+#define IDirect3DTexture_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DTexture_AddRef(p) (p)->AddRef()
+#define IDirect3DTexture_Release(p) (p)->Release()
+#define IDirect3DTexture_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirect3DTexture_GetHandle(p,a,b) (p)->GetHandle(a,b)
+#define IDirect3DTexture_PaletteChanged(p,a,b) (p)->PaletteChanged(a,b)
+#define IDirect3DTexture_Load(p,a) (p)->Load(a)
+#define IDirect3DTexture_Unload(p) (p)->Unload()
+#endif
+
+#if(DIRECT3D_VERSION >= 0x0500)
+#undef INTERFACE
+#define INTERFACE IDirect3DTexture2
+
+DECLARE_INTERFACE_(IDirect3DTexture2, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DTexture2 methods ***/
+ STDMETHOD(GetHandle)(THIS_ LPDIRECT3DDEVICE2,LPD3DTEXTUREHANDLE) PURE;
+ STDMETHOD(PaletteChanged)(THIS_ DWORD,DWORD) PURE;
+ STDMETHOD(Load)(THIS_ LPDIRECT3DTEXTURE2) PURE;
+};
+
+typedef struct IDirect3DTexture2 *LPDIRECT3DTEXTURE2;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DTexture2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DTexture2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DTexture2_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DTexture2_GetHandle(p,a,b) (p)->lpVtbl->GetHandle(p,a,b)
+#define IDirect3DTexture2_PaletteChanged(p,a,b) (p)->lpVtbl->PaletteChanged(p,a,b)
+#define IDirect3DTexture2_Load(p,a) (p)->lpVtbl->Load(p,a)
+#else
+#define IDirect3DTexture2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DTexture2_AddRef(p) (p)->AddRef()
+#define IDirect3DTexture2_Release(p) (p)->Release()
+#define IDirect3DTexture2_GetHandle(p,a,b) (p)->GetHandle(a,b)
+#define IDirect3DTexture2_PaletteChanged(p,a,b) (p)->PaletteChanged(a,b)
+#define IDirect3DTexture2_Load(p,a) (p)->Load(a)
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+/*
+ * Viewport interfaces
+ */
+#undef INTERFACE
+#define INTERFACE IDirect3DViewport
+
+DECLARE_INTERFACE_(IDirect3DViewport, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DViewport methods ***/
+ STDMETHOD(Initialize)(THIS_ LPDIRECT3D) PURE;
+ STDMETHOD(GetViewport)(THIS_ LPD3DVIEWPORT) PURE;
+ STDMETHOD(SetViewport)(THIS_ LPD3DVIEWPORT) PURE;
+ STDMETHOD(TransformVertices)(THIS_ DWORD,LPD3DTRANSFORMDATA,DWORD,LPDWORD) PURE;
+ STDMETHOD(LightElements)(THIS_ DWORD,LPD3DLIGHTDATA) PURE;
+ STDMETHOD(SetBackground)(THIS_ D3DMATERIALHANDLE) PURE;
+ STDMETHOD(GetBackground)(THIS_ LPD3DMATERIALHANDLE,LPBOOL) PURE;
+ STDMETHOD(SetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
+ STDMETHOD(GetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE*,LPBOOL) PURE;
+ STDMETHOD(Clear)(THIS_ DWORD,LPD3DRECT,DWORD) PURE;
+ STDMETHOD(AddLight)(THIS_ LPDIRECT3DLIGHT) PURE;
+ STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DLIGHT) PURE;
+ STDMETHOD(NextLight)(THIS_ LPDIRECT3DLIGHT,LPDIRECT3DLIGHT*,DWORD) PURE;
+};
+
+typedef struct IDirect3DViewport *LPDIRECT3DVIEWPORT;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DViewport_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DViewport_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DViewport_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DViewport_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirect3DViewport_GetViewport(p,a) (p)->lpVtbl->GetViewport(p,a)
+#define IDirect3DViewport_SetViewport(p,a) (p)->lpVtbl->SetViewport(p,a)
+#define IDirect3DViewport_TransformVertices(p,a,b,c,d) (p)->lpVtbl->TransformVertices(p,a,b,c,d)
+#define IDirect3DViewport_LightElements(p,a,b) (p)->lpVtbl->LightElements(p,a,b)
+#define IDirect3DViewport_SetBackground(p,a) (p)->lpVtbl->SetBackground(p,a)
+#define IDirect3DViewport_GetBackground(p,a,b) (p)->lpVtbl->GetBackground(p,a,b)
+#define IDirect3DViewport_SetBackgroundDepth(p,a) (p)->lpVtbl->SetBackgroundDepth(p,a)
+#define IDirect3DViewport_GetBackgroundDepth(p,a,b) (p)->lpVtbl->GetBackgroundDepth(p,a,b)
+#define IDirect3DViewport_Clear(p,a,b,c) (p)->lpVtbl->Clear(p,a,b,c)
+#define IDirect3DViewport_AddLight(p,a) (p)->lpVtbl->AddLight(p,a)
+#define IDirect3DViewport_DeleteLight(p,a) (p)->lpVtbl->DeleteLight(p,a)
+#define IDirect3DViewport_NextLight(p,a,b,c) (p)->lpVtbl->NextLight(p,a,b,c)
+#else
+#define IDirect3DViewport_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DViewport_AddRef(p) (p)->AddRef()
+#define IDirect3DViewport_Release(p) (p)->Release()
+#define IDirect3DViewport_Initialize(p,a) (p)->Initialize(a)
+#define IDirect3DViewport_GetViewport(p,a) (p)->GetViewport(a)
+#define IDirect3DViewport_SetViewport(p,a) (p)->SetViewport(a)
+#define IDirect3DViewport_TransformVertices(p,a,b,c,d) (p)->TransformVertices(a,b,c,d)
+#define IDirect3DViewport_LightElements(p,a,b) (p)->LightElements(a,b)
+#define IDirect3DViewport_SetBackground(p,a) (p)->SetBackground(a)
+#define IDirect3DViewport_GetBackground(p,a,b) (p)->GetBackground(a,b)
+#define IDirect3DViewport_SetBackgroundDepth(p,a) (p)->SetBackgroundDepth(a)
+#define IDirect3DViewport_GetBackgroundDepth(p,a,b) (p)->GetBackgroundDepth(a,b)
+#define IDirect3DViewport_Clear(p,a,b,c) (p)->Clear(a,b,c)
+#define IDirect3DViewport_AddLight(p,a) (p)->AddLight(a)
+#define IDirect3DViewport_DeleteLight(p,a) (p)->DeleteLight(a)
+#define IDirect3DViewport_NextLight(p,a,b,c) (p)->NextLight(a,b,c)
+#endif
+
+#if(DIRECT3D_VERSION >= 0x0500)
+#undef INTERFACE
+#define INTERFACE IDirect3DViewport2
+
+DECLARE_INTERFACE_(IDirect3DViewport2, IDirect3DViewport)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DViewport methods ***/
+ STDMETHOD(Initialize)(THIS_ LPDIRECT3D) PURE;
+ STDMETHOD(GetViewport)(THIS_ LPD3DVIEWPORT) PURE;
+ STDMETHOD(SetViewport)(THIS_ LPD3DVIEWPORT) PURE;
+ STDMETHOD(TransformVertices)(THIS_ DWORD,LPD3DTRANSFORMDATA,DWORD,LPDWORD) PURE;
+ STDMETHOD(LightElements)(THIS_ DWORD,LPD3DLIGHTDATA) PURE;
+ STDMETHOD(SetBackground)(THIS_ D3DMATERIALHANDLE) PURE;
+ STDMETHOD(GetBackground)(THIS_ LPD3DMATERIALHANDLE,LPBOOL) PURE;
+ STDMETHOD(SetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
+ STDMETHOD(GetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE*,LPBOOL) PURE;
+ STDMETHOD(Clear)(THIS_ DWORD,LPD3DRECT,DWORD) PURE;
+ STDMETHOD(AddLight)(THIS_ LPDIRECT3DLIGHT) PURE;
+ STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DLIGHT) PURE;
+ STDMETHOD(NextLight)(THIS_ LPDIRECT3DLIGHT,LPDIRECT3DLIGHT*,DWORD) PURE;
+ STDMETHOD(GetViewport2)(THIS_ LPD3DVIEWPORT2) PURE;
+ STDMETHOD(SetViewport2)(THIS_ LPD3DVIEWPORT2) PURE;
+};
+
+typedef struct IDirect3DViewport2 *LPDIRECT3DVIEWPORT2;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DViewport2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DViewport2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DViewport2_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DViewport2_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirect3DViewport2_GetViewport(p,a) (p)->lpVtbl->GetViewport(p,a)
+#define IDirect3DViewport2_SetViewport(p,a) (p)->lpVtbl->SetViewport(p,a)
+#define IDirect3DViewport2_TransformVertices(p,a,b,c,d) (p)->lpVtbl->TransformVertices(p,a,b,c,d)
+#define IDirect3DViewport2_LightElements(p,a,b) (p)->lpVtbl->LightElements(p,a,b)
+#define IDirect3DViewport2_SetBackground(p,a) (p)->lpVtbl->SetBackground(p,a)
+#define IDirect3DViewport2_GetBackground(p,a,b) (p)->lpVtbl->GetBackground(p,a,b)
+#define IDirect3DViewport2_SetBackgroundDepth(p,a) (p)->lpVtbl->SetBackgroundDepth(p,a)
+#define IDirect3DViewport2_GetBackgroundDepth(p,a,b) (p)->lpVtbl->GetBackgroundDepth(p,a,b)
+#define IDirect3DViewport2_Clear(p,a,b,c) (p)->lpVtbl->Clear(p,a,b,c)
+#define IDirect3DViewport2_AddLight(p,a) (p)->lpVtbl->AddLight(p,a)
+#define IDirect3DViewport2_DeleteLight(p,a) (p)->lpVtbl->DeleteLight(p,a)
+#define IDirect3DViewport2_NextLight(p,a,b,c) (p)->lpVtbl->NextLight(p,a,b,c)
+#define IDirect3DViewport2_GetViewport2(p,a) (p)->lpVtbl->GetViewport2(p,a)
+#define IDirect3DViewport2_SetViewport2(p,a) (p)->lpVtbl->SetViewport2(p,a)
+#else
+#define IDirect3DViewport2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DViewport2_AddRef(p) (p)->AddRef()
+#define IDirect3DViewport2_Release(p) (p)->Release()
+#define IDirect3DViewport2_Initialize(p,a) (p)->Initialize(a)
+#define IDirect3DViewport2_GetViewport(p,a) (p)->GetViewport(a)
+#define IDirect3DViewport2_SetViewport(p,a) (p)->SetViewport(a)
+#define IDirect3DViewport2_TransformVertices(p,a,b,c,d) (p)->TransformVertices(a,b,c,d)
+#define IDirect3DViewport2_LightElements(p,a,b) (p)->LightElements(a,b)
+#define IDirect3DViewport2_SetBackground(p,a) (p)->SetBackground(a)
+#define IDirect3DViewport2_GetBackground(p,a,b) (p)->GetBackground(a,b)
+#define IDirect3DViewport2_SetBackgroundDepth(p,a) (p)->SetBackgroundDepth(a)
+#define IDirect3DViewport2_GetBackgroundDepth(p,a,b) (p)->GetBackgroundDepth(a,b)
+#define IDirect3DViewport2_Clear(p,a,b,c) (p)->Clear(a,b,c)
+#define IDirect3DViewport2_AddLight(p,a) (p)->AddLight(a)
+#define IDirect3DViewport2_DeleteLight(p,a) (p)->DeleteLight(a)
+#define IDirect3DViewport2_NextLight(p,a,b,c) (p)->NextLight(a,b,c)
+#define IDirect3DViewport2_GetViewport2(p,a) (p)->GetViewport2(a)
+#define IDirect3DViewport2_SetViewport2(p,a) (p)->SetViewport2(a)
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#if(DIRECT3D_VERSION >= 0x0600)
+
+#undef INTERFACE
+#define INTERFACE IDirect3DViewport3
+
+DECLARE_INTERFACE_(IDirect3DViewport3, IDirect3DViewport2)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DViewport2 methods ***/
+ STDMETHOD(Initialize)(THIS_ LPDIRECT3D) PURE;
+ STDMETHOD(GetViewport)(THIS_ LPD3DVIEWPORT) PURE;
+ STDMETHOD(SetViewport)(THIS_ LPD3DVIEWPORT) PURE;
+ STDMETHOD(TransformVertices)(THIS_ DWORD,LPD3DTRANSFORMDATA,DWORD,LPDWORD) PURE;
+ STDMETHOD(LightElements)(THIS_ DWORD,LPD3DLIGHTDATA) PURE;
+ STDMETHOD(SetBackground)(THIS_ D3DMATERIALHANDLE) PURE;
+ STDMETHOD(GetBackground)(THIS_ LPD3DMATERIALHANDLE,LPBOOL) PURE;
+ STDMETHOD(SetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
+ STDMETHOD(GetBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE*,LPBOOL) PURE;
+ STDMETHOD(Clear)(THIS_ DWORD,LPD3DRECT,DWORD) PURE;
+ STDMETHOD(AddLight)(THIS_ LPDIRECT3DLIGHT) PURE;
+ STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DLIGHT) PURE;
+ STDMETHOD(NextLight)(THIS_ LPDIRECT3DLIGHT,LPDIRECT3DLIGHT*,DWORD) PURE;
+ STDMETHOD(GetViewport2)(THIS_ LPD3DVIEWPORT2) PURE;
+ STDMETHOD(SetViewport2)(THIS_ LPD3DVIEWPORT2) PURE;
+ STDMETHOD(SetBackgroundDepth2)(THIS_ LPDIRECTDRAWSURFACE4) PURE;
+ STDMETHOD(GetBackgroundDepth2)(THIS_ LPDIRECTDRAWSURFACE4*,LPBOOL) PURE;
+ STDMETHOD(Clear2)(THIS_ DWORD,LPD3DRECT,DWORD,D3DCOLOR,D3DVALUE,DWORD) PURE;
+};
+
+typedef struct IDirect3DViewport3 *LPDIRECT3DVIEWPORT3;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DViewport3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DViewport3_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DViewport3_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DViewport3_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirect3DViewport3_GetViewport(p,a) (p)->lpVtbl->GetViewport(p,a)
+#define IDirect3DViewport3_SetViewport(p,a) (p)->lpVtbl->SetViewport(p,a)
+#define IDirect3DViewport3_TransformVertices(p,a,b,c,d) (p)->lpVtbl->TransformVertices(p,a,b,c,d)
+#define IDirect3DViewport3_LightElements(p,a,b) (p)->lpVtbl->LightElements(p,a,b)
+#define IDirect3DViewport3_SetBackground(p,a) (p)->lpVtbl->SetBackground(p,a)
+#define IDirect3DViewport3_GetBackground(p,a,b) (p)->lpVtbl->GetBackground(p,a,b)
+#define IDirect3DViewport3_SetBackgroundDepth(p,a) (p)->lpVtbl->SetBackgroundDepth(p,a)
+#define IDirect3DViewport3_GetBackgroundDepth(p,a,b) (p)->lpVtbl->GetBackgroundDepth(p,a,b)
+#define IDirect3DViewport3_Clear(p,a,b,c) (p)->lpVtbl->Clear(p,a,b,c)
+#define IDirect3DViewport3_AddLight(p,a) (p)->lpVtbl->AddLight(p,a)
+#define IDirect3DViewport3_DeleteLight(p,a) (p)->lpVtbl->DeleteLight(p,a)
+#define IDirect3DViewport3_NextLight(p,a,b,c) (p)->lpVtbl->NextLight(p,a,b,c)
+#define IDirect3DViewport3_GetViewport2(p,a) (p)->lpVtbl->GetViewport2(p,a)
+#define IDirect3DViewport3_SetViewport2(p,a) (p)->lpVtbl->SetViewport2(p,a)
+#define IDirect3DViewport3_SetBackgroundDepth2(p,a) (p)->lpVtbl->SetBackgroundDepth2(p,a)
+#define IDirect3DViewport3_GetBackgroundDepth2(p,a,b) (p)->lpVtbl->GetBackgroundDepth2(p,a,b)
+#define IDirect3DViewport3_Clear2(p,a,b,c,d,e,f) (p)->lpVtbl->Clear2(p,a,b,c,d,e,f)
+#else
+#define IDirect3DViewport3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DViewport3_AddRef(p) (p)->AddRef()
+#define IDirect3DViewport3_Release(p) (p)->Release()
+#define IDirect3DViewport3_Initialize(p,a) (p)->Initialize(a)
+#define IDirect3DViewport3_GetViewport(p,a) (p)->GetViewport(a)
+#define IDirect3DViewport3_SetViewport(p,a) (p)->SetViewport(a)
+#define IDirect3DViewport3_TransformVertices(p,a,b,c,d) (p)->TransformVertices(a,b,c,d)
+#define IDirect3DViewport3_LightElements(p,a,b) (p)->LightElements(a,b)
+#define IDirect3DViewport3_SetBackground(p,a) (p)->SetBackground(a)
+#define IDirect3DViewport3_GetBackground(p,a,b) (p)->GetBackground(a,b)
+#define IDirect3DViewport3_SetBackgroundDepth(p,a) (p)->SetBackgroundDepth(a)
+#define IDirect3DViewport3_GetBackgroundDepth(p,a,b) (p)->GetBackgroundDepth(a,b)
+#define IDirect3DViewport3_Clear(p,a,b,c) (p)->Clear(a,b,c)
+#define IDirect3DViewport3_AddLight(p,a) (p)->AddLight(a)
+#define IDirect3DViewport3_DeleteLight(p,a) (p)->DeleteLight(a)
+#define IDirect3DViewport3_NextLight(p,a,b,c) (p)->NextLight(a,b,c)
+#define IDirect3DViewport3_GetViewport2(p,a) (p)->GetViewport2(a)
+#define IDirect3DViewport3_SetViewport2(p,a) (p)->SetViewport2(a)
+#define IDirect3DViewport3_SetBackgroundDepth2(p,a) (p)->SetBackgroundDepth2(a)
+#define IDirect3DViewport3_GetBackgroundDepth2(p,a,b) (p)->GetBackgroundDepth2(a,b)
+#define IDirect3DViewport3_Clear2(p,a,b,c,d,e,f) (p)->Clear2(a,b,c,d,e,f)
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+#if(DIRECT3D_VERSION >= 0x0600)
+#undef INTERFACE
+#define INTERFACE IDirect3DVertexBuffer
+
+DECLARE_INTERFACE_(IDirect3DVertexBuffer, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DVertexBuffer methods ***/
+ STDMETHOD(Lock)(THIS_ DWORD,LPVOID*,LPDWORD) PURE;
+ STDMETHOD(Unlock)(THIS) PURE;
+ STDMETHOD(ProcessVertices)(THIS_ DWORD,DWORD,DWORD,LPDIRECT3DVERTEXBUFFER,DWORD,LPDIRECT3DDEVICE3,DWORD) PURE;
+ STDMETHOD(GetVertexBufferDesc)(THIS_ LPD3DVERTEXBUFFERDESC) PURE;
+ STDMETHOD(Optimize)(THIS_ LPDIRECT3DDEVICE3,DWORD) PURE;
+};
+
+typedef struct IDirect3DVertexBuffer *LPDIRECT3DVERTEXBUFFER;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DVertexBuffer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexBuffer_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexBuffer_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DVertexBuffer_Lock(p,a,b,c) (p)->lpVtbl->Lock(p,a,b,c)
+#define IDirect3DVertexBuffer_Unlock(p) (p)->lpVtbl->Unlock(p)
+#define IDirect3DVertexBuffer_ProcessVertices(p,a,b,c,d,e,f,g) (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f,g)
+#define IDirect3DVertexBuffer_GetVertexBufferDesc(p,a) (p)->lpVtbl->GetVertexBufferDesc(p,a)
+#define IDirect3DVertexBuffer_Optimize(p,a,b) (p)->lpVtbl->Optimize(p,a,b)
+#else
+#define IDirect3DVertexBuffer_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DVertexBuffer_AddRef(p) (p)->AddRef()
+#define IDirect3DVertexBuffer_Release(p) (p)->Release()
+#define IDirect3DVertexBuffer_Lock(p,a,b,c) (p)->Lock(a,b,c)
+#define IDirect3DVertexBuffer_Unlock(p) (p)->Unlock()
+#define IDirect3DVertexBuffer_ProcessVertices(p,a,b,c,d,e,f,g) (p)->ProcessVertices(a,b,c,d,e,f,g)
+#define IDirect3DVertexBuffer_GetVertexBufferDesc(p,a) (p)->GetVertexBufferDesc(a)
+#define IDirect3DVertexBuffer_Optimize(p,a,b) (p)->Optimize(a,b)
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+#if(DIRECT3D_VERSION >= 0x0700)
+#undef INTERFACE
+#define INTERFACE IDirect3DVertexBuffer7
+
+DECLARE_INTERFACE_(IDirect3DVertexBuffer7, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DVertexBuffer7 methods ***/
+ STDMETHOD(Lock)(THIS_ DWORD,LPVOID*,LPDWORD) PURE;
+ STDMETHOD(Unlock)(THIS) PURE;
+ STDMETHOD(ProcessVertices)(THIS_ DWORD,DWORD,DWORD,LPDIRECT3DVERTEXBUFFER7,DWORD,LPDIRECT3DDEVICE7,DWORD) PURE;
+ STDMETHOD(GetVertexBufferDesc)(THIS_ LPD3DVERTEXBUFFERDESC) PURE;
+ STDMETHOD(Optimize)(THIS_ LPDIRECT3DDEVICE7,DWORD) PURE;
+ STDMETHOD(ProcessVerticesStrided)(THIS_ DWORD,DWORD,DWORD,LPD3DDRAWPRIMITIVESTRIDEDDATA,DWORD,LPDIRECT3DDEVICE7,DWORD) PURE;
+};
+
+typedef struct IDirect3DVertexBuffer7 *LPDIRECT3DVERTEXBUFFER7;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DVertexBuffer7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexBuffer7_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexBuffer7_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DVertexBuffer7_Lock(p,a,b,c) (p)->lpVtbl->Lock(p,a,b,c)
+#define IDirect3DVertexBuffer7_Unlock(p) (p)->lpVtbl->Unlock(p)
+#define IDirect3DVertexBuffer7_ProcessVertices(p,a,b,c,d,e,f,g) (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f,g)
+#define IDirect3DVertexBuffer7_GetVertexBufferDesc(p,a) (p)->lpVtbl->GetVertexBufferDesc(p,a)
+#define IDirect3DVertexBuffer7_Optimize(p,a,b) (p)->lpVtbl->Optimize(p,a,b)
+#define IDirect3DVertexBuffer7_ProcessVerticesStrided(p,a,b,c,d,e,f,g) (p)->lpVtbl->ProcessVerticesStrided(p,a,b,c,d,e,f,g)
+#else
+#define IDirect3DVertexBuffer7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DVertexBuffer7_AddRef(p) (p)->AddRef()
+#define IDirect3DVertexBuffer7_Release(p) (p)->Release()
+#define IDirect3DVertexBuffer7_Lock(p,a,b,c) (p)->Lock(a,b,c)
+#define IDirect3DVertexBuffer7_Unlock(p) (p)->Unlock()
+#define IDirect3DVertexBuffer7_ProcessVertices(p,a,b,c,d,e,f,g) (p)->ProcessVertices(a,b,c,d,e,f,g)
+#define IDirect3DVertexBuffer7_GetVertexBufferDesc(p,a) (p)->GetVertexBufferDesc(a)
+#define IDirect3DVertexBuffer7_Optimize(p,a,b) (p)->Optimize(a,b)
+#define IDirect3DVertexBuffer7_ProcessVerticesStrided(p,a,b,c,d,e,f,g) (p)->ProcessVerticesStrided(a,b,c,d,e,f,g)
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+#if(DIRECT3D_VERSION >= 0x0500)
+/****************************************************************************
+ *
+ * Flags for IDirect3DDevice::NextViewport
+ *
+ ****************************************************************************/
+
+/*
+ * Return the next viewport
+ */
+#define D3DNEXT_NEXT 0x00000001l
+
+/*
+ * Return the first viewport
+ */
+#define D3DNEXT_HEAD 0x00000002l
+
+/*
+ * Return the last viewport
+ */
+#define D3DNEXT_TAIL 0x00000004l
+
+
+/****************************************************************************
+ *
+ * Flags for DrawPrimitive/DrawIndexedPrimitive
+ * Also valid for Begin/BeginIndexed
+ * Also valid for VertexBuffer::CreateVertexBuffer
+ ****************************************************************************/
+
+/*
+ * Wait until the device is ready to draw the primitive
+ * This will cause DP to not return DDERR_WASSTILLDRAWING
+ */
+#define D3DDP_WAIT 0x00000001l
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#if (DIRECT3D_VERSION == 0x0500)
+/*
+ * Hint that it is acceptable to render the primitive out of order.
+ */
+#define D3DDP_OUTOFORDER 0x00000002l
+#endif
+
+
+#if(DIRECT3D_VERSION >= 0x0500)
+/*
+ * Hint that the primitives have been clipped by the application.
+ */
+#define D3DDP_DONOTCLIP 0x00000004l
+
+/*
+ * Hint that the extents need not be updated.
+ */
+#define D3DDP_DONOTUPDATEEXTENTS 0x00000008l
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#if(DIRECT3D_VERSION >= 0x0600)
+
+/*
+ * Hint that the lighting should not be applied on vertices.
+ */
+
+#define D3DDP_DONOTLIGHT 0x00000010l
+
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+/*
+ * Direct3D Errors
+ * DirectDraw error codes are used when errors not specified here.
+ */
+#define D3D_OK DD_OK
+#define D3DERR_BADMAJORVERSION MAKE_DDHRESULT(700)
+#define D3DERR_BADMINORVERSION MAKE_DDHRESULT(701)
+
+#if(DIRECT3D_VERSION >= 0x0500)
+/*
+ * An invalid device was requested by the application.
+ */
+#define D3DERR_INVALID_DEVICE MAKE_DDHRESULT(705)
+#define D3DERR_INITFAILED MAKE_DDHRESULT(706)
+
+/*
+ * SetRenderTarget attempted on a device that was
+ * QI'd off the render target.
+ */
+#define D3DERR_DEVICEAGGREGATED MAKE_DDHRESULT(707)
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#define D3DERR_EXECUTE_CREATE_FAILED MAKE_DDHRESULT(710)
+#define D3DERR_EXECUTE_DESTROY_FAILED MAKE_DDHRESULT(711)
+#define D3DERR_EXECUTE_LOCK_FAILED MAKE_DDHRESULT(712)
+#define D3DERR_EXECUTE_UNLOCK_FAILED MAKE_DDHRESULT(713)
+#define D3DERR_EXECUTE_LOCKED MAKE_DDHRESULT(714)
+#define D3DERR_EXECUTE_NOT_LOCKED MAKE_DDHRESULT(715)
+
+#define D3DERR_EXECUTE_FAILED MAKE_DDHRESULT(716)
+#define D3DERR_EXECUTE_CLIPPED_FAILED MAKE_DDHRESULT(717)
+
+#define D3DERR_TEXTURE_NO_SUPPORT MAKE_DDHRESULT(720)
+#define D3DERR_TEXTURE_CREATE_FAILED MAKE_DDHRESULT(721)
+#define D3DERR_TEXTURE_DESTROY_FAILED MAKE_DDHRESULT(722)
+#define D3DERR_TEXTURE_LOCK_FAILED MAKE_DDHRESULT(723)
+#define D3DERR_TEXTURE_UNLOCK_FAILED MAKE_DDHRESULT(724)
+#define D3DERR_TEXTURE_LOAD_FAILED MAKE_DDHRESULT(725)
+#define D3DERR_TEXTURE_SWAP_FAILED MAKE_DDHRESULT(726)
+#define D3DERR_TEXTURE_LOCKED MAKE_DDHRESULT(727)
+#define D3DERR_TEXTURE_NOT_LOCKED MAKE_DDHRESULT(728)
+#define D3DERR_TEXTURE_GETSURF_FAILED MAKE_DDHRESULT(729)
+
+#define D3DERR_MATRIX_CREATE_FAILED MAKE_DDHRESULT(730)
+#define D3DERR_MATRIX_DESTROY_FAILED MAKE_DDHRESULT(731)
+#define D3DERR_MATRIX_SETDATA_FAILED MAKE_DDHRESULT(732)
+#define D3DERR_MATRIX_GETDATA_FAILED MAKE_DDHRESULT(733)
+#define D3DERR_SETVIEWPORTDATA_FAILED MAKE_DDHRESULT(734)
+
+#if(DIRECT3D_VERSION >= 0x0500)
+#define D3DERR_INVALIDCURRENTVIEWPORT MAKE_DDHRESULT(735)
+#define D3DERR_INVALIDPRIMITIVETYPE MAKE_DDHRESULT(736)
+#define D3DERR_INVALIDVERTEXTYPE MAKE_DDHRESULT(737)
+#define D3DERR_TEXTURE_BADSIZE MAKE_DDHRESULT(738)
+#define D3DERR_INVALIDRAMPTEXTURE MAKE_DDHRESULT(739)
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#define D3DERR_MATERIAL_CREATE_FAILED MAKE_DDHRESULT(740)
+#define D3DERR_MATERIAL_DESTROY_FAILED MAKE_DDHRESULT(741)
+#define D3DERR_MATERIAL_SETDATA_FAILED MAKE_DDHRESULT(742)
+#define D3DERR_MATERIAL_GETDATA_FAILED MAKE_DDHRESULT(743)
+
+#if(DIRECT3D_VERSION >= 0x0500)
+#define D3DERR_INVALIDPALETTE MAKE_DDHRESULT(744)
+
+#define D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY MAKE_DDHRESULT(745)
+#define D3DERR_ZBUFF_NEEDS_VIDEOMEMORY MAKE_DDHRESULT(746)
+#define D3DERR_SURFACENOTINVIDMEM MAKE_DDHRESULT(747)
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#define D3DERR_LIGHT_SET_FAILED MAKE_DDHRESULT(750)
+#if(DIRECT3D_VERSION >= 0x0500)
+#define D3DERR_LIGHTHASVIEWPORT MAKE_DDHRESULT(751)
+#define D3DERR_LIGHTNOTINTHISVIEWPORT MAKE_DDHRESULT(752)
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#define D3DERR_SCENE_IN_SCENE MAKE_DDHRESULT(760)
+#define D3DERR_SCENE_NOT_IN_SCENE MAKE_DDHRESULT(761)
+#define D3DERR_SCENE_BEGIN_FAILED MAKE_DDHRESULT(762)
+#define D3DERR_SCENE_END_FAILED MAKE_DDHRESULT(763)
+
+#if(DIRECT3D_VERSION >= 0x0500)
+#define D3DERR_INBEGIN MAKE_DDHRESULT(770)
+#define D3DERR_NOTINBEGIN MAKE_DDHRESULT(771)
+#define D3DERR_NOVIEWPORTS MAKE_DDHRESULT(772)
+#define D3DERR_VIEWPORTDATANOTSET MAKE_DDHRESULT(773)
+#define D3DERR_VIEWPORTHASNODEVICE MAKE_DDHRESULT(774)
+#define D3DERR_NOCURRENTVIEWPORT MAKE_DDHRESULT(775)
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#if(DIRECT3D_VERSION >= 0x0600)
+#define D3DERR_INVALIDVERTEXFORMAT MAKE_DDHRESULT(2048)
+
+/*
+ * Attempted to CreateTexture on a surface that had a color key
+ */
+#define D3DERR_COLORKEYATTACHED MAKE_DDHRESULT(2050)
+
+#define D3DERR_VERTEXBUFFEROPTIMIZED MAKE_DDHRESULT(2060)
+#define D3DERR_VBUF_CREATE_FAILED MAKE_DDHRESULT(2061)
+#define D3DERR_VERTEXBUFFERLOCKED MAKE_DDHRESULT(2062)
+#define D3DERR_VERTEXBUFFERUNLOCKFAILED MAKE_DDHRESULT(2063)
+
+#define D3DERR_ZBUFFER_NOTPRESENT MAKE_DDHRESULT(2070)
+#define D3DERR_STENCILBUFFER_NOTPRESENT MAKE_DDHRESULT(2071)
+
+#define D3DERR_WRONGTEXTUREFORMAT MAKE_DDHRESULT(2072)
+#define D3DERR_UNSUPPORTEDCOLOROPERATION MAKE_DDHRESULT(2073)
+#define D3DERR_UNSUPPORTEDCOLORARG MAKE_DDHRESULT(2074)
+#define D3DERR_UNSUPPORTEDALPHAOPERATION MAKE_DDHRESULT(2075)
+#define D3DERR_UNSUPPORTEDALPHAARG MAKE_DDHRESULT(2076)
+#define D3DERR_TOOMANYOPERATIONS MAKE_DDHRESULT(2077)
+#define D3DERR_CONFLICTINGTEXTUREFILTER MAKE_DDHRESULT(2078)
+#define D3DERR_UNSUPPORTEDFACTORVALUE MAKE_DDHRESULT(2079)
+#define D3DERR_CONFLICTINGRENDERSTATE MAKE_DDHRESULT(2081)
+#define D3DERR_UNSUPPORTEDTEXTUREFILTER MAKE_DDHRESULT(2082)
+#define D3DERR_TOOMANYPRIMITIVES MAKE_DDHRESULT(2083)
+#define D3DERR_INVALIDMATRIX MAKE_DDHRESULT(2084)
+#define D3DERR_TOOMANYVERTICES MAKE_DDHRESULT(2085)
+#define D3DERR_CONFLICTINGTEXTUREPALETTE MAKE_DDHRESULT(2086)
+
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+#if(DIRECT3D_VERSION >= 0x0700)
+#define D3DERR_INVALIDSTATEBLOCK MAKE_DDHRESULT(2100)
+#define D3DERR_INBEGINSTATEBLOCK MAKE_DDHRESULT(2101)
+#define D3DERR_NOTINBEGINSTATEBLOCK MAKE_DDHRESULT(2102)
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* (DIRECT3D_VERSION < 0x0800) */
+#endif /* _D3D_H_ */
+
diff --git a/include/dx/d3d8.h b/include/dx/d3d8.h
new file mode 100644
index 000000000..2600282c1
--- /dev/null
+++ b/include/dx/d3d8.h
@@ -0,0 +1,1279 @@
+/*==========================================================================;
+ *
+ * Copyright (C) Microsoft Corporation. All Rights Reserved.
+ *
+ * File: d3d8.h
+ * Content: Direct3D include file
+ *
+ ****************************************************************************/
+
+#ifndef _D3D8_H_
+#define _D3D8_H_
+
+#ifndef DIRECT3D_VERSION
+#define DIRECT3D_VERSION 0x0800
+#endif //DIRECT3D_VERSION
+
+// include this file content only if compiling for DX8 interfaces
+#if(DIRECT3D_VERSION >= 0x0800)
+
+
+/* This identifier is passed to Direct3DCreate8 in order to ensure that an
+ * application was built against the correct header files. This number is
+ * incremented whenever a header (or other) change would require applications
+ * to be rebuilt. If the version doesn't match, Direct3DCreate8 will fail.
+ * (The number itself has no meaning.)*/
+
+#define D3D_SDK_VERSION 220
+
+
+#include <stdlib.h>
+
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+
+#include <windows.h>
+
+#if !defined(HMONITOR_DECLARED) && (WINVER < 0x0500)
+ #define HMONITOR_DECLARED
+ DECLARE_HANDLE(HMONITOR);
+#endif
+
+#define D3DAPI WINAPI
+
+/*
+ * Interface IID's
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM)
+
+/* IID_IDirect3D8 */
+/* {1DD9E8DA-1C77-4d40-B0CF-98FEFDFF9512} */
+DEFINE_GUID(IID_IDirect3D8, 0x1dd9e8da, 0x1c77, 0x4d40, 0xb0, 0xcf, 0x98, 0xfe, 0xfd, 0xff, 0x95, 0x12);
+
+/* IID_IDirect3DDevice8 */
+/* {7385E5DF-8FE8-41D5-86B6-D7B48547B6CF} */
+DEFINE_GUID(IID_IDirect3DDevice8, 0x7385e5df, 0x8fe8, 0x41d5, 0x86, 0xb6, 0xd7, 0xb4, 0x85, 0x47, 0xb6, 0xcf);
+
+/* IID_IDirect3DResource8 */
+/* {1B36BB7B-09B7-410a-B445-7D1430D7B33F} */
+DEFINE_GUID(IID_IDirect3DResource8, 0x1b36bb7b, 0x9b7, 0x410a, 0xb4, 0x45, 0x7d, 0x14, 0x30, 0xd7, 0xb3, 0x3f);
+
+/* IID_IDirect3DBaseTexture8 */
+/* {B4211CFA-51B9-4a9f-AB78-DB99B2BB678E} */
+DEFINE_GUID(IID_IDirect3DBaseTexture8, 0xb4211cfa, 0x51b9, 0x4a9f, 0xab, 0x78, 0xdb, 0x99, 0xb2, 0xbb, 0x67, 0x8e);
+
+/* IID_IDirect3DTexture8 */
+/* {E4CDD575-2866-4f01-B12E-7EECE1EC9358} */
+DEFINE_GUID(IID_IDirect3DTexture8, 0xe4cdd575, 0x2866, 0x4f01, 0xb1, 0x2e, 0x7e, 0xec, 0xe1, 0xec, 0x93, 0x58);
+
+/* IID_IDirect3DCubeTexture8 */
+/* {3EE5B968-2ACA-4c34-8BB5-7E0C3D19B750} */
+DEFINE_GUID(IID_IDirect3DCubeTexture8, 0x3ee5b968, 0x2aca, 0x4c34, 0x8b, 0xb5, 0x7e, 0x0c, 0x3d, 0x19, 0xb7, 0x50);
+
+/* IID_IDirect3DVolumeTexture8 */
+/* {4B8AAAFA-140F-42ba-9131-597EAFAA2EAD} */
+DEFINE_GUID(IID_IDirect3DVolumeTexture8, 0x4b8aaafa, 0x140f, 0x42ba, 0x91, 0x31, 0x59, 0x7e, 0xaf, 0xaa, 0x2e, 0xad);
+
+/* IID_IDirect3DVertexBuffer8 */
+/* {8AEEEAC7-05F9-44d4-B591-000B0DF1CB95} */
+DEFINE_GUID(IID_IDirect3DVertexBuffer8, 0x8aeeeac7, 0x05f9, 0x44d4, 0xb5, 0x91, 0x00, 0x0b, 0x0d, 0xf1, 0xcb, 0x95);
+
+/* IID_IDirect3DIndexBuffer8 */
+/* {0E689C9A-053D-44a0-9D92-DB0E3D750F86} */
+DEFINE_GUID(IID_IDirect3DIndexBuffer8, 0x0e689c9a, 0x053d, 0x44a0, 0x9d, 0x92, 0xdb, 0x0e, 0x3d, 0x75, 0x0f, 0x86);
+
+/* IID_IDirect3DSurface8 */
+/* {B96EEBCA-B326-4ea5-882F-2FF5BAE021DD} */
+DEFINE_GUID(IID_IDirect3DSurface8, 0xb96eebca, 0xb326, 0x4ea5, 0x88, 0x2f, 0x2f, 0xf5, 0xba, 0xe0, 0x21, 0xdd);
+
+/* IID_IDirect3DVolume8 */
+/* {BD7349F5-14F1-42e4-9C79-972380DB40C0} */
+DEFINE_GUID(IID_IDirect3DVolume8, 0xbd7349f5, 0x14f1, 0x42e4, 0x9c, 0x79, 0x97, 0x23, 0x80, 0xdb, 0x40, 0xc0);
+
+/* IID_IDirect3DSwapChain8 */
+/* {928C088B-76B9-4C6B-A536-A590853876CD} */
+DEFINE_GUID(IID_IDirect3DSwapChain8, 0x928c088b, 0x76b9, 0x4c6b, 0xa5, 0x36, 0xa5, 0x90, 0x85, 0x38, 0x76, 0xcd);
+
+#endif
+
+#ifdef __cplusplus
+
+interface IDirect3D8;
+interface IDirect3DDevice8;
+
+interface IDirect3DResource8;
+interface IDirect3DBaseTexture8;
+interface IDirect3DTexture8;
+interface IDirect3DVolumeTexture8;
+interface IDirect3DCubeTexture8;
+
+interface IDirect3DVertexBuffer8;
+interface IDirect3DIndexBuffer8;
+
+interface IDirect3DSurface8;
+interface IDirect3DVolume8;
+
+interface IDirect3DSwapChain8;
+
+#endif
+
+
+typedef interface IDirect3D8 IDirect3D8;
+typedef interface IDirect3DDevice8 IDirect3DDevice8;
+typedef interface IDirect3DResource8 IDirect3DResource8;
+typedef interface IDirect3DBaseTexture8 IDirect3DBaseTexture8;
+typedef interface IDirect3DTexture8 IDirect3DTexture8;
+typedef interface IDirect3DVolumeTexture8 IDirect3DVolumeTexture8;
+typedef interface IDirect3DCubeTexture8 IDirect3DCubeTexture8;
+typedef interface IDirect3DVertexBuffer8 IDirect3DVertexBuffer8;
+typedef interface IDirect3DIndexBuffer8 IDirect3DIndexBuffer8;
+typedef interface IDirect3DSurface8 IDirect3DSurface8;
+typedef interface IDirect3DVolume8 IDirect3DVolume8;
+typedef interface IDirect3DSwapChain8 IDirect3DSwapChain8;
+
+#include "d3d8types.h"
+#include "d3d8caps.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * DLL Function for creating a Direct3D8 object. This object supports
+ * enumeration and allows the creation of Direct3DDevice8 objects.
+ * Pass the value of the constant D3D_SDK_VERSION to this function, so
+ * that the run-time can validate that your application was compiled
+ * against the right headers.
+ */
+
+IDirect3D8 * WINAPI Direct3DCreate8(UINT SDKVersion);
+
+
+/*
+ * Direct3D interfaces
+ */
+
+
+
+
+
+
+#undef INTERFACE
+#define INTERFACE IDirect3D8
+
+DECLARE_INTERFACE_(IDirect3D8, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3D8 methods ***/
+ STDMETHOD(RegisterSoftwareDevice)(THIS_ void* pInitializeFunction) PURE;
+ STDMETHOD_(UINT, GetAdapterCount)(THIS) PURE;
+ STDMETHOD(GetAdapterIdentifier)(THIS_ UINT Adapter,DWORD Flags,D3DADAPTER_IDENTIFIER8* pIdentifier) PURE;
+ STDMETHOD_(UINT, GetAdapterModeCount)(THIS_ UINT Adapter) PURE;
+ STDMETHOD(EnumAdapterModes)(THIS_ UINT Adapter,UINT Mode,D3DDISPLAYMODE* pMode) PURE;
+ STDMETHOD(GetAdapterDisplayMode)(THIS_ UINT Adapter,D3DDISPLAYMODE* pMode) PURE;
+ STDMETHOD(CheckDeviceType)(THIS_ UINT Adapter,D3DDEVTYPE CheckType,D3DFORMAT DisplayFormat,D3DFORMAT BackBufferFormat,BOOL Windowed) PURE;
+ STDMETHOD(CheckDeviceFormat)(THIS_ UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT AdapterFormat,DWORD Usage,D3DRESOURCETYPE RType,D3DFORMAT CheckFormat) PURE;
+ STDMETHOD(CheckDeviceMultiSampleType)(THIS_ UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT SurfaceFormat,BOOL Windowed,D3DMULTISAMPLE_TYPE MultiSampleType) PURE;
+ STDMETHOD(CheckDepthStencilMatch)(THIS_ UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT AdapterFormat,D3DFORMAT RenderTargetFormat,D3DFORMAT DepthStencilFormat) PURE;
+ STDMETHOD(GetDeviceCaps)(THIS_ UINT Adapter,D3DDEVTYPE DeviceType,D3DCAPS8* pCaps) PURE;
+ STDMETHOD_(HMONITOR, GetAdapterMonitor)(THIS_ UINT Adapter) PURE;
+ STDMETHOD(CreateDevice)(THIS_ UINT Adapter,D3DDEVTYPE DeviceType,HWND hFocusWindow,DWORD BehaviorFlags,D3DPRESENT_PARAMETERS* pPresentationParameters,IDirect3DDevice8** ppReturnedDeviceInterface) PURE;
+};
+
+typedef struct IDirect3D8 *LPDIRECT3D8, *PDIRECT3D8;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3D8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3D8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3D8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3D8_RegisterSoftwareDevice(p,a) (p)->lpVtbl->RegisterSoftwareDevice(p,a)
+#define IDirect3D8_GetAdapterCount(p) (p)->lpVtbl->GetAdapterCount(p)
+#define IDirect3D8_GetAdapterIdentifier(p,a,b,c) (p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)
+#define IDirect3D8_GetAdapterModeCount(p,a) (p)->lpVtbl->GetAdapterModeCount(p,a)
+#define IDirect3D8_EnumAdapterModes(p,a,b,c) (p)->lpVtbl->EnumAdapterModes(p,a,b,c)
+#define IDirect3D8_GetAdapterDisplayMode(p,a,b) (p)->lpVtbl->GetAdapterDisplayMode(p,a,b)
+#define IDirect3D8_CheckDeviceType(p,a,b,c,d,e) (p)->lpVtbl->CheckDeviceType(p,a,b,c,d,e)
+#define IDirect3D8_CheckDeviceFormat(p,a,b,c,d,e,f) (p)->lpVtbl->CheckDeviceFormat(p,a,b,c,d,e,f)
+#define IDirect3D8_CheckDeviceMultiSampleType(p,a,b,c,d,e) (p)->lpVtbl->CheckDeviceMultiSampleType(p,a,b,c,d,e)
+#define IDirect3D8_CheckDepthStencilMatch(p,a,b,c,d,e) (p)->lpVtbl->CheckDepthStencilMatch(p,a,b,c,d,e)
+#define IDirect3D8_GetDeviceCaps(p,a,b,c) (p)->lpVtbl->GetDeviceCaps(p,a,b,c)
+#define IDirect3D8_GetAdapterMonitor(p,a) (p)->lpVtbl->GetAdapterMonitor(p,a)
+#define IDirect3D8_CreateDevice(p,a,b,c,d,e,f) (p)->lpVtbl->CreateDevice(p,a,b,c,d,e,f)
+#else
+#define IDirect3D8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3D8_AddRef(p) (p)->AddRef()
+#define IDirect3D8_Release(p) (p)->Release()
+#define IDirect3D8_RegisterSoftwareDevice(p,a) (p)->RegisterSoftwareDevice(a)
+#define IDirect3D8_GetAdapterCount(p) (p)->GetAdapterCount()
+#define IDirect3D8_GetAdapterIdentifier(p,a,b,c) (p)->GetAdapterIdentifier(a,b,c)
+#define IDirect3D8_GetAdapterModeCount(p,a) (p)->GetAdapterModeCount(a)
+#define IDirect3D8_EnumAdapterModes(p,a,b,c) (p)->EnumAdapterModes(a,b,c)
+#define IDirect3D8_GetAdapterDisplayMode(p,a,b) (p)->GetAdapterDisplayMode(a,b)
+#define IDirect3D8_CheckDeviceType(p,a,b,c,d,e) (p)->CheckDeviceType(a,b,c,d,e)
+#define IDirect3D8_CheckDeviceFormat(p,a,b,c,d,e,f) (p)->CheckDeviceFormat(a,b,c,d,e,f)
+#define IDirect3D8_CheckDeviceMultiSampleType(p,a,b,c,d,e) (p)->CheckDeviceMultiSampleType(a,b,c,d,e)
+#define IDirect3D8_CheckDepthStencilMatch(p,a,b,c,d,e) (p)->CheckDepthStencilMatch(a,b,c,d,e)
+#define IDirect3D8_GetDeviceCaps(p,a,b,c) (p)->GetDeviceCaps(a,b,c)
+#define IDirect3D8_GetAdapterMonitor(p,a) (p)->GetAdapterMonitor(a)
+#define IDirect3D8_CreateDevice(p,a,b,c,d,e,f) (p)->CreateDevice(a,b,c,d,e,f)
+#endif
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#undef INTERFACE
+#define INTERFACE IDirect3DDevice8
+
+DECLARE_INTERFACE_(IDirect3DDevice8, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DDevice8 methods ***/
+ STDMETHOD(TestCooperativeLevel)(THIS) PURE;
+ STDMETHOD_(UINT, GetAvailableTextureMem)(THIS) PURE;
+ STDMETHOD(ResourceManagerDiscardBytes)(THIS_ DWORD Bytes) PURE;
+ STDMETHOD(GetDirect3D)(THIS_ IDirect3D8** ppD3D8) PURE;
+ STDMETHOD(GetDeviceCaps)(THIS_ D3DCAPS8* pCaps) PURE;
+ STDMETHOD(GetDisplayMode)(THIS_ D3DDISPLAYMODE* pMode) PURE;
+ STDMETHOD(GetCreationParameters)(THIS_ D3DDEVICE_CREATION_PARAMETERS *pParameters) PURE;
+ STDMETHOD(SetCursorProperties)(THIS_ UINT XHotSpot,UINT YHotSpot,IDirect3DSurface8* pCursorBitmap) PURE;
+ STDMETHOD_(void, SetCursorPosition)(THIS_ int X,int Y,DWORD Flags) PURE;
+ STDMETHOD_(BOOL, ShowCursor)(THIS_ BOOL bShow) PURE;
+ STDMETHOD(CreateAdditionalSwapChain)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters,IDirect3DSwapChain8** pSwapChain) PURE;
+ STDMETHOD(Reset)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters) PURE;
+ STDMETHOD(Present)(THIS_ CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion) PURE;
+ STDMETHOD(GetBackBuffer)(THIS_ UINT BackBuffer,D3DBACKBUFFER_TYPE Type,IDirect3DSurface8** ppBackBuffer) PURE;
+ STDMETHOD(GetRasterStatus)(THIS_ D3DRASTER_STATUS* pRasterStatus) PURE;
+ STDMETHOD_(void, SetGammaRamp)(THIS_ DWORD Flags,CONST D3DGAMMARAMP* pRamp) PURE;
+ STDMETHOD_(void, GetGammaRamp)(THIS_ D3DGAMMARAMP* pRamp) PURE;
+ STDMETHOD(CreateTexture)(THIS_ UINT Width,UINT Height,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DTexture8** ppTexture) PURE;
+ STDMETHOD(CreateVolumeTexture)(THIS_ UINT Width,UINT Height,UINT Depth,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DVolumeTexture8** ppVolumeTexture) PURE;
+ STDMETHOD(CreateCubeTexture)(THIS_ UINT EdgeLength,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DCubeTexture8** ppCubeTexture) PURE;
+ STDMETHOD(CreateVertexBuffer)(THIS_ UINT Length,DWORD Usage,DWORD FVF,D3DPOOL Pool,IDirect3DVertexBuffer8** ppVertexBuffer) PURE;
+ STDMETHOD(CreateIndexBuffer)(THIS_ UINT Length,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DIndexBuffer8** ppIndexBuffer) PURE;
+ STDMETHOD(CreateRenderTarget)(THIS_ UINT Width,UINT Height,D3DFORMAT Format,D3DMULTISAMPLE_TYPE MultiSample,BOOL Lockable,IDirect3DSurface8** ppSurface) PURE;
+ STDMETHOD(CreateDepthStencilSurface)(THIS_ UINT Width,UINT Height,D3DFORMAT Format,D3DMULTISAMPLE_TYPE MultiSample,IDirect3DSurface8** ppSurface) PURE;
+ STDMETHOD(CreateImageSurface)(THIS_ UINT Width,UINT Height,D3DFORMAT Format,IDirect3DSurface8** ppSurface) PURE;
+ STDMETHOD(CopyRects)(THIS_ IDirect3DSurface8* pSourceSurface,CONST RECT* pSourceRectsArray,UINT cRects,IDirect3DSurface8* pDestinationSurface,CONST POINT* pDestPointsArray) PURE;
+ STDMETHOD(UpdateTexture)(THIS_ IDirect3DBaseTexture8* pSourceTexture,IDirect3DBaseTexture8* pDestinationTexture) PURE;
+ STDMETHOD(GetFrontBuffer)(THIS_ IDirect3DSurface8* pDestSurface) PURE;
+ STDMETHOD(SetRenderTarget)(THIS_ IDirect3DSurface8* pRenderTarget,IDirect3DSurface8* pNewZStencil) PURE;
+ STDMETHOD(GetRenderTarget)(THIS_ IDirect3DSurface8** ppRenderTarget) PURE;
+ STDMETHOD(GetDepthStencilSurface)(THIS_ IDirect3DSurface8** ppZStencilSurface) PURE;
+ STDMETHOD(BeginScene)(THIS) PURE;
+ STDMETHOD(EndScene)(THIS) PURE;
+ STDMETHOD(Clear)(THIS_ DWORD Count,CONST D3DRECT* pRects,DWORD Flags,D3DCOLOR Color,float Z,DWORD Stencil) PURE;
+ STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE State,CONST D3DMATRIX* pMatrix) PURE;
+ STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE State,D3DMATRIX* pMatrix) PURE;
+ STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE,CONST D3DMATRIX*) PURE;
+ STDMETHOD(SetViewport)(THIS_ CONST D3DVIEWPORT8* pViewport) PURE;
+ STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT8* pViewport) PURE;
+ STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL8* pMaterial) PURE;
+ STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL8* pMaterial) PURE;
+ STDMETHOD(SetLight)(THIS_ DWORD Index,CONST D3DLIGHT8*) PURE;
+ STDMETHOD(GetLight)(THIS_ DWORD Index,D3DLIGHT8*) PURE;
+ STDMETHOD(LightEnable)(THIS_ DWORD Index,BOOL Enable) PURE;
+ STDMETHOD(GetLightEnable)(THIS_ DWORD Index,BOOL* pEnable) PURE;
+ STDMETHOD(SetClipPlane)(THIS_ DWORD Index,CONST float* pPlane) PURE;
+ STDMETHOD(GetClipPlane)(THIS_ DWORD Index,float* pPlane) PURE;
+ STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE State,DWORD Value) PURE;
+ STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE State,DWORD* pValue) PURE;
+ STDMETHOD(BeginStateBlock)(THIS) PURE;
+ STDMETHOD(EndStateBlock)(THIS_ DWORD* pToken) PURE;
+ STDMETHOD(ApplyStateBlock)(THIS_ DWORD Token) PURE;
+ STDMETHOD(CaptureStateBlock)(THIS_ DWORD Token) PURE;
+ STDMETHOD(DeleteStateBlock)(THIS_ DWORD Token) PURE;
+ STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE Type,DWORD* pToken) PURE;
+ STDMETHOD(SetClipStatus)(THIS_ CONST D3DCLIPSTATUS8* pClipStatus) PURE;
+ STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS8* pClipStatus) PURE;
+ STDMETHOD(GetTexture)(THIS_ DWORD Stage,IDirect3DBaseTexture8** ppTexture) PURE;
+ STDMETHOD(SetTexture)(THIS_ DWORD Stage,IDirect3DBaseTexture8* pTexture) PURE;
+ STDMETHOD(GetTextureStageState)(THIS_ DWORD Stage,D3DTEXTURESTAGESTATETYPE Type,DWORD* pValue) PURE;
+ STDMETHOD(SetTextureStageState)(THIS_ DWORD Stage,D3DTEXTURESTAGESTATETYPE Type,DWORD Value) PURE;
+ STDMETHOD(ValidateDevice)(THIS_ DWORD* pNumPasses) PURE;
+ STDMETHOD(GetInfo)(THIS_ DWORD DevInfoID,void* pDevInfoStruct,DWORD DevInfoStructSize) PURE;
+ STDMETHOD(SetPaletteEntries)(THIS_ UINT PaletteNumber,CONST PALETTEENTRY* pEntries) PURE;
+ STDMETHOD(GetPaletteEntries)(THIS_ UINT PaletteNumber,PALETTEENTRY* pEntries) PURE;
+ STDMETHOD(SetCurrentTexturePalette)(THIS_ UINT PaletteNumber) PURE;
+ STDMETHOD(GetCurrentTexturePalette)(THIS_ UINT *PaletteNumber) PURE;
+ STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE PrimitiveType,UINT StartVertex,UINT PrimitiveCount) PURE;
+ STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE,UINT minIndex,UINT NumVertices,UINT startIndex,UINT primCount) PURE;
+ STDMETHOD(DrawPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType,UINT PrimitiveCount,CONST void* pVertexStreamZeroData,UINT VertexStreamZeroStride) PURE;
+ STDMETHOD(DrawIndexedPrimitiveUP)(THIS_ D3DPRIMITIVETYPE PrimitiveType,UINT MinVertexIndex,UINT NumVertexIndices,UINT PrimitiveCount,CONST void* pIndexData,D3DFORMAT IndexDataFormat,CONST void* pVertexStreamZeroData,UINT VertexStreamZeroStride) PURE;
+ STDMETHOD(ProcessVertices)(THIS_ UINT SrcStartIndex,UINT DestIndex,UINT VertexCount,IDirect3DVertexBuffer8* pDestBuffer,DWORD Flags) PURE;
+ STDMETHOD(CreateVertexShader)(THIS_ CONST DWORD* pDeclaration,CONST DWORD* pFunction,DWORD* pHandle,DWORD Usage) PURE;
+ STDMETHOD(SetVertexShader)(THIS_ DWORD Handle) PURE;
+ STDMETHOD(GetVertexShader)(THIS_ DWORD* pHandle) PURE;
+ STDMETHOD(DeleteVertexShader)(THIS_ DWORD Handle) PURE;
+ STDMETHOD(SetVertexShaderConstant)(THIS_ DWORD Register,CONST void* pConstantData,DWORD ConstantCount) PURE;
+ STDMETHOD(GetVertexShaderConstant)(THIS_ DWORD Register,void* pConstantData,DWORD ConstantCount) PURE;
+ STDMETHOD(GetVertexShaderDeclaration)(THIS_ DWORD Handle,void* pData,DWORD* pSizeOfData) PURE;
+ STDMETHOD(GetVertexShaderFunction)(THIS_ DWORD Handle,void* pData,DWORD* pSizeOfData) PURE;
+ STDMETHOD(SetStreamSource)(THIS_ UINT StreamNumber,IDirect3DVertexBuffer8* pStreamData,UINT Stride) PURE;
+ STDMETHOD(GetStreamSource)(THIS_ UINT StreamNumber,IDirect3DVertexBuffer8** ppStreamData,UINT* pStride) PURE;
+ STDMETHOD(SetIndices)(THIS_ IDirect3DIndexBuffer8* pIndexData,UINT BaseVertexIndex) PURE;
+ STDMETHOD(GetIndices)(THIS_ IDirect3DIndexBuffer8** ppIndexData,UINT* pBaseVertexIndex) PURE;
+ STDMETHOD(CreatePixelShader)(THIS_ CONST DWORD* pFunction,DWORD* pHandle) PURE;
+ STDMETHOD(SetPixelShader)(THIS_ DWORD Handle) PURE;
+ STDMETHOD(GetPixelShader)(THIS_ DWORD* pHandle) PURE;
+ STDMETHOD(DeletePixelShader)(THIS_ DWORD Handle) PURE;
+ STDMETHOD(SetPixelShaderConstant)(THIS_ DWORD Register,CONST void* pConstantData,DWORD ConstantCount) PURE;
+ STDMETHOD(GetPixelShaderConstant)(THIS_ DWORD Register,void* pConstantData,DWORD ConstantCount) PURE;
+ STDMETHOD(GetPixelShaderFunction)(THIS_ DWORD Handle,void* pData,DWORD* pSizeOfData) PURE;
+ STDMETHOD(DrawRectPatch)(THIS_ UINT Handle,CONST float* pNumSegs,CONST D3DRECTPATCH_INFO* pRectPatchInfo) PURE;
+ STDMETHOD(DrawTriPatch)(THIS_ UINT Handle,CONST float* pNumSegs,CONST D3DTRIPATCH_INFO* pTriPatchInfo) PURE;
+ STDMETHOD(DeletePatch)(THIS_ UINT Handle) PURE;
+};
+
+typedef struct IDirect3DDevice8 *LPDIRECT3DDEVICE8, *PDIRECT3DDEVICE8;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DDevice8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DDevice8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DDevice8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DDevice8_TestCooperativeLevel(p) (p)->lpVtbl->TestCooperativeLevel(p)
+#define IDirect3DDevice8_GetAvailableTextureMem(p) (p)->lpVtbl->GetAvailableTextureMem(p)
+#define IDirect3DDevice8_ResourceManagerDiscardBytes(p,a) (p)->lpVtbl->ResourceManagerDiscardBytes(p,a)
+#define IDirect3DDevice8_GetDirect3D(p,a) (p)->lpVtbl->GetDirect3D(p,a)
+#define IDirect3DDevice8_GetDeviceCaps(p,a) (p)->lpVtbl->GetDeviceCaps(p,a)
+#define IDirect3DDevice8_GetDisplayMode(p,a) (p)->lpVtbl->GetDisplayMode(p,a)
+#define IDirect3DDevice8_GetCreationParameters(p,a) (p)->lpVtbl->GetCreationParameters(p,a)
+#define IDirect3DDevice8_SetCursorProperties(p,a,b,c) (p)->lpVtbl->SetCursorProperties(p,a,b,c)
+#define IDirect3DDevice8_SetCursorPosition(p,a,b,c) (p)->lpVtbl->SetCursorPosition(p,a,b,c)
+#define IDirect3DDevice8_ShowCursor(p,a) (p)->lpVtbl->ShowCursor(p,a)
+#define IDirect3DDevice8_CreateAdditionalSwapChain(p,a,b) (p)->lpVtbl->CreateAdditionalSwapChain(p,a,b)
+#define IDirect3DDevice8_Reset(p,a) (p)->lpVtbl->Reset(p,a)
+#define IDirect3DDevice8_Present(p,a,b,c,d) (p)->lpVtbl->Present(p,a,b,c,d)
+#define IDirect3DDevice8_GetBackBuffer(p,a,b,c) (p)->lpVtbl->GetBackBuffer(p,a,b,c)
+#define IDirect3DDevice8_GetRasterStatus(p,a) (p)->lpVtbl->GetRasterStatus(p,a)
+#define IDirect3DDevice8_SetGammaRamp(p,a,b) (p)->lpVtbl->SetGammaRamp(p,a,b)
+#define IDirect3DDevice8_GetGammaRamp(p,a) (p)->lpVtbl->GetGammaRamp(p,a)
+#define IDirect3DDevice8_CreateTexture(p,a,b,c,d,e,f,g) (p)->lpVtbl->CreateTexture(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice8_CreateVolumeTexture(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->CreateVolumeTexture(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice8_CreateCubeTexture(p,a,b,c,d,e,f) (p)->lpVtbl->CreateCubeTexture(p,a,b,c,d,e,f)
+#define IDirect3DDevice8_CreateVertexBuffer(p,a,b,c,d,e) (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d,e)
+#define IDirect3DDevice8_CreateIndexBuffer(p,a,b,c,d,e) (p)->lpVtbl->CreateIndexBuffer(p,a,b,c,d,e)
+#define IDirect3DDevice8_CreateRenderTarget(p,a,b,c,d,e,f) (p)->lpVtbl->CreateRenderTarget(p,a,b,c,d,e,f)
+#define IDirect3DDevice8_CreateDepthStencilSurface(p,a,b,c,d,e) (p)->lpVtbl->CreateDepthStencilSurface(p,a,b,c,d,e)
+#define IDirect3DDevice8_CreateImageSurface(p,a,b,c,d) (p)->lpVtbl->CreateImageSurface(p,a,b,c,d)
+#define IDirect3DDevice8_CopyRects(p,a,b,c,d,e) (p)->lpVtbl->CopyRects(p,a,b,c,d,e)
+#define IDirect3DDevice8_UpdateTexture(p,a,b) (p)->lpVtbl->UpdateTexture(p,a,b)
+#define IDirect3DDevice8_GetFrontBuffer(p,a) (p)->lpVtbl->GetFrontBuffer(p,a)
+#define IDirect3DDevice8_SetRenderTarget(p,a,b) (p)->lpVtbl->SetRenderTarget(p,a,b)
+#define IDirect3DDevice8_GetRenderTarget(p,a) (p)->lpVtbl->GetRenderTarget(p,a)
+#define IDirect3DDevice8_GetDepthStencilSurface(p,a) (p)->lpVtbl->GetDepthStencilSurface(p,a)
+#define IDirect3DDevice8_BeginScene(p) (p)->lpVtbl->BeginScene(p)
+#define IDirect3DDevice8_EndScene(p) (p)->lpVtbl->EndScene(p)
+#define IDirect3DDevice8_Clear(p,a,b,c,d,e,f) (p)->lpVtbl->Clear(p,a,b,c,d,e,f)
+#define IDirect3DDevice8_SetTransform(p,a,b) (p)->lpVtbl->SetTransform(p,a,b)
+#define IDirect3DDevice8_GetTransform(p,a,b) (p)->lpVtbl->GetTransform(p,a,b)
+#define IDirect3DDevice8_MultiplyTransform(p,a,b) (p)->lpVtbl->MultiplyTransform(p,a,b)
+#define IDirect3DDevice8_SetViewport(p,a) (p)->lpVtbl->SetViewport(p,a)
+#define IDirect3DDevice8_GetViewport(p,a) (p)->lpVtbl->GetViewport(p,a)
+#define IDirect3DDevice8_SetMaterial(p,a) (p)->lpVtbl->SetMaterial(p,a)
+#define IDirect3DDevice8_GetMaterial(p,a) (p)->lpVtbl->GetMaterial(p,a)
+#define IDirect3DDevice8_SetLight(p,a,b) (p)->lpVtbl->SetLight(p,a,b)
+#define IDirect3DDevice8_GetLight(p,a,b) (p)->lpVtbl->GetLight(p,a,b)
+#define IDirect3DDevice8_LightEnable(p,a,b) (p)->lpVtbl->LightEnable(p,a,b)
+#define IDirect3DDevice8_GetLightEnable(p,a,b) (p)->lpVtbl->GetLightEnable(p,a,b)
+#define IDirect3DDevice8_SetClipPlane(p,a,b) (p)->lpVtbl->SetClipPlane(p,a,b)
+#define IDirect3DDevice8_GetClipPlane(p,a,b) (p)->lpVtbl->GetClipPlane(p,a,b)
+#define IDirect3DDevice8_SetRenderState(p,a,b) (p)->lpVtbl->SetRenderState(p,a,b)
+#define IDirect3DDevice8_GetRenderState(p,a,b) (p)->lpVtbl->GetRenderState(p,a,b)
+#define IDirect3DDevice8_BeginStateBlock(p) (p)->lpVtbl->BeginStateBlock(p)
+#define IDirect3DDevice8_EndStateBlock(p,a) (p)->lpVtbl->EndStateBlock(p,a)
+#define IDirect3DDevice8_ApplyStateBlock(p,a) (p)->lpVtbl->ApplyStateBlock(p,a)
+#define IDirect3DDevice8_CaptureStateBlock(p,a) (p)->lpVtbl->CaptureStateBlock(p,a)
+#define IDirect3DDevice8_DeleteStateBlock(p,a) (p)->lpVtbl->DeleteStateBlock(p,a)
+#define IDirect3DDevice8_CreateStateBlock(p,a,b) (p)->lpVtbl->CreateStateBlock(p,a,b)
+#define IDirect3DDevice8_SetClipStatus(p,a) (p)->lpVtbl->SetClipStatus(p,a)
+#define IDirect3DDevice8_GetClipStatus(p,a) (p)->lpVtbl->GetClipStatus(p,a)
+#define IDirect3DDevice8_GetTexture(p,a,b) (p)->lpVtbl->GetTexture(p,a,b)
+#define IDirect3DDevice8_SetTexture(p,a,b) (p)->lpVtbl->SetTexture(p,a,b)
+#define IDirect3DDevice8_GetTextureStageState(p,a,b,c) (p)->lpVtbl->GetTextureStageState(p,a,b,c)
+#define IDirect3DDevice8_SetTextureStageState(p,a,b,c) (p)->lpVtbl->SetTextureStageState(p,a,b,c)
+#define IDirect3DDevice8_ValidateDevice(p,a) (p)->lpVtbl->ValidateDevice(p,a)
+#define IDirect3DDevice8_GetInfo(p,a,b,c) (p)->lpVtbl->GetInfo(p,a,b,c)
+#define IDirect3DDevice8_SetPaletteEntries(p,a,b) (p)->lpVtbl->SetPaletteEntries(p,a,b)
+#define IDirect3DDevice8_GetPaletteEntries(p,a,b) (p)->lpVtbl->GetPaletteEntries(p,a,b)
+#define IDirect3DDevice8_SetCurrentTexturePalette(p,a) (p)->lpVtbl->SetCurrentTexturePalette(p,a)
+#define IDirect3DDevice8_GetCurrentTexturePalette(p,a) (p)->lpVtbl->GetCurrentTexturePalette(p,a)
+#define IDirect3DDevice8_DrawPrimitive(p,a,b,c) (p)->lpVtbl->DrawPrimitive(p,a,b,c)
+#define IDirect3DDevice8_DrawIndexedPrimitive(p,a,b,c,d,e) (p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e)
+#define IDirect3DDevice8_DrawPrimitiveUP(p,a,b,c,d) (p)->lpVtbl->DrawPrimitiveUP(p,a,b,c,d)
+#define IDirect3DDevice8_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice8_ProcessVertices(p,a,b,c,d,e) (p)->lpVtbl->ProcessVertices(p,a,b,c,d,e)
+#define IDirect3DDevice8_CreateVertexShader(p,a,b,c,d) (p)->lpVtbl->CreateVertexShader(p,a,b,c,d)
+#define IDirect3DDevice8_SetVertexShader(p,a) (p)->lpVtbl->SetVertexShader(p,a)
+#define IDirect3DDevice8_GetVertexShader(p,a) (p)->lpVtbl->GetVertexShader(p,a)
+#define IDirect3DDevice8_DeleteVertexShader(p,a) (p)->lpVtbl->DeleteVertexShader(p,a)
+#define IDirect3DDevice8_SetVertexShaderConstant(p,a,b,c) (p)->lpVtbl->SetVertexShaderConstant(p,a,b,c)
+#define IDirect3DDevice8_GetVertexShaderConstant(p,a,b,c) (p)->lpVtbl->GetVertexShaderConstant(p,a,b,c)
+#define IDirect3DDevice8_GetVertexShaderDeclaration(p,a,b,c) (p)->lpVtbl->GetVertexShaderDeclaration(p,a,b,c)
+#define IDirect3DDevice8_GetVertexShaderFunction(p,a,b,c) (p)->lpVtbl->GetVertexShaderFunction(p,a,b,c)
+#define IDirect3DDevice8_SetStreamSource(p,a,b,c) (p)->lpVtbl->SetStreamSource(p,a,b,c)
+#define IDirect3DDevice8_GetStreamSource(p,a,b,c) (p)->lpVtbl->GetStreamSource(p,a,b,c)
+#define IDirect3DDevice8_SetIndices(p,a,b) (p)->lpVtbl->SetIndices(p,a,b)
+#define IDirect3DDevice8_GetIndices(p,a,b) (p)->lpVtbl->GetIndices(p,a,b)
+#define IDirect3DDevice8_CreatePixelShader(p,a,b) (p)->lpVtbl->CreatePixelShader(p,a,b)
+#define IDirect3DDevice8_SetPixelShader(p,a) (p)->lpVtbl->SetPixelShader(p,a)
+#define IDirect3DDevice8_GetPixelShader(p,a) (p)->lpVtbl->GetPixelShader(p,a)
+#define IDirect3DDevice8_DeletePixelShader(p,a) (p)->lpVtbl->DeletePixelShader(p,a)
+#define IDirect3DDevice8_SetPixelShaderConstant(p,a,b,c) (p)->lpVtbl->SetPixelShaderConstant(p,a,b,c)
+#define IDirect3DDevice8_GetPixelShaderConstant(p,a,b,c) (p)->lpVtbl->GetPixelShaderConstant(p,a,b,c)
+#define IDirect3DDevice8_GetPixelShaderFunction(p,a,b,c) (p)->lpVtbl->GetPixelShaderFunction(p,a,b,c)
+#define IDirect3DDevice8_DrawRectPatch(p,a,b,c) (p)->lpVtbl->DrawRectPatch(p,a,b,c)
+#define IDirect3DDevice8_DrawTriPatch(p,a,b,c) (p)->lpVtbl->DrawTriPatch(p,a,b,c)
+#define IDirect3DDevice8_DeletePatch(p,a) (p)->lpVtbl->DeletePatch(p,a)
+#else
+#define IDirect3DDevice8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DDevice8_AddRef(p) (p)->AddRef()
+#define IDirect3DDevice8_Release(p) (p)->Release()
+#define IDirect3DDevice8_TestCooperativeLevel(p) (p)->TestCooperativeLevel()
+#define IDirect3DDevice8_GetAvailableTextureMem(p) (p)->GetAvailableTextureMem()
+#define IDirect3DDevice8_ResourceManagerDiscardBytes(p,a) (p)->ResourceManagerDiscardBytes(a)
+#define IDirect3DDevice8_GetDirect3D(p,a) (p)->GetDirect3D(a)
+#define IDirect3DDevice8_GetDeviceCaps(p,a) (p)->GetDeviceCaps(a)
+#define IDirect3DDevice8_GetDisplayMode(p,a) (p)->GetDisplayMode(a)
+#define IDirect3DDevice8_GetCreationParameters(p,a) (p)->GetCreationParameters(a)
+#define IDirect3DDevice8_SetCursorProperties(p,a,b,c) (p)->SetCursorProperties(a,b,c)
+#define IDirect3DDevice8_SetCursorPosition(p,a,b,c) (p)->SetCursorPosition(a,b,c)
+#define IDirect3DDevice8_ShowCursor(p,a) (p)->ShowCursor(a)
+#define IDirect3DDevice8_CreateAdditionalSwapChain(p,a,b) (p)->CreateAdditionalSwapChain(a,b)
+#define IDirect3DDevice8_Reset(p,a) (p)->Reset(a)
+#define IDirect3DDevice8_Present(p,a,b,c,d) (p)->Present(a,b,c,d)
+#define IDirect3DDevice8_GetBackBuffer(p,a,b,c) (p)->GetBackBuffer(a,b,c)
+#define IDirect3DDevice8_GetRasterStatus(p,a) (p)->GetRasterStatus(a)
+#define IDirect3DDevice8_SetGammaRamp(p,a,b) (p)->SetGammaRamp(a,b)
+#define IDirect3DDevice8_GetGammaRamp(p,a) (p)->GetGammaRamp(a)
+#define IDirect3DDevice8_CreateTexture(p,a,b,c,d,e,f,g) (p)->CreateTexture(a,b,c,d,e,f,g)
+#define IDirect3DDevice8_CreateVolumeTexture(p,a,b,c,d,e,f,g,h) (p)->CreateVolumeTexture(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice8_CreateCubeTexture(p,a,b,c,d,e,f) (p)->CreateCubeTexture(a,b,c,d,e,f)
+#define IDirect3DDevice8_CreateVertexBuffer(p,a,b,c,d,e) (p)->CreateVertexBuffer(a,b,c,d,e)
+#define IDirect3DDevice8_CreateIndexBuffer(p,a,b,c,d,e) (p)->CreateIndexBuffer(a,b,c,d,e)
+#define IDirect3DDevice8_CreateRenderTarget(p,a,b,c,d,e,f) (p)->CreateRenderTarget(a,b,c,d,e,f)
+#define IDirect3DDevice8_CreateDepthStencilSurface(p,a,b,c,d,e) (p)->CreateDepthStencilSurface(a,b,c,d,e)
+#define IDirect3DDevice8_CreateImageSurface(p,a,b,c,d) (p)->CreateImageSurface(a,b,c,d)
+#define IDirect3DDevice8_CopyRects(p,a,b,c,d,e) (p)->CopyRects(a,b,c,d,e)
+#define IDirect3DDevice8_UpdateTexture(p,a,b) (p)->UpdateTexture(a,b)
+#define IDirect3DDevice8_GetFrontBuffer(p,a) (p)->GetFrontBuffer(a)
+#define IDirect3DDevice8_SetRenderTarget(p,a,b) (p)->SetRenderTarget(a,b)
+#define IDirect3DDevice8_GetRenderTarget(p,a) (p)->GetRenderTarget(a)
+#define IDirect3DDevice8_GetDepthStencilSurface(p,a) (p)->GetDepthStencilSurface(a)
+#define IDirect3DDevice8_BeginScene(p) (p)->BeginScene()
+#define IDirect3DDevice8_EndScene(p) (p)->EndScene()
+#define IDirect3DDevice8_Clear(p,a,b,c,d,e,f) (p)->Clear(a,b,c,d,e,f)
+#define IDirect3DDevice8_SetTransform(p,a,b) (p)->SetTransform(a,b)
+#define IDirect3DDevice8_GetTransform(p,a,b) (p)->GetTransform(a,b)
+#define IDirect3DDevice8_MultiplyTransform(p,a,b) (p)->MultiplyTransform(a,b)
+#define IDirect3DDevice8_SetViewport(p,a) (p)->SetViewport(a)
+#define IDirect3DDevice8_GetViewport(p,a) (p)->GetViewport(a)
+#define IDirect3DDevice8_SetMaterial(p,a) (p)->SetMaterial(a)
+#define IDirect3DDevice8_GetMaterial(p,a) (p)->GetMaterial(a)
+#define IDirect3DDevice8_SetLight(p,a,b) (p)->SetLight(a,b)
+#define IDirect3DDevice8_GetLight(p,a,b) (p)->GetLight(a,b)
+#define IDirect3DDevice8_LightEnable(p,a,b) (p)->LightEnable(a,b)
+#define IDirect3DDevice8_GetLightEnable(p,a,b) (p)->GetLightEnable(a,b)
+#define IDirect3DDevice8_SetClipPlane(p,a,b) (p)->SetClipPlane(a,b)
+#define IDirect3DDevice8_GetClipPlane(p,a,b) (p)->GetClipPlane(a,b)
+#define IDirect3DDevice8_SetRenderState(p,a,b) (p)->SetRenderState(a,b)
+#define IDirect3DDevice8_GetRenderState(p,a,b) (p)->GetRenderState(a,b)
+#define IDirect3DDevice8_BeginStateBlock(p) (p)->BeginStateBlock()
+#define IDirect3DDevice8_EndStateBlock(p,a) (p)->EndStateBlock(a)
+#define IDirect3DDevice8_ApplyStateBlock(p,a) (p)->ApplyStateBlock(a)
+#define IDirect3DDevice8_CaptureStateBlock(p,a) (p)->CaptureStateBlock(a)
+#define IDirect3DDevice8_DeleteStateBlock(p,a) (p)->DeleteStateBlock(a)
+#define IDirect3DDevice8_CreateStateBlock(p,a,b) (p)->CreateStateBlock(a,b)
+#define IDirect3DDevice8_SetClipStatus(p,a) (p)->SetClipStatus(a)
+#define IDirect3DDevice8_GetClipStatus(p,a) (p)->GetClipStatus(a)
+#define IDirect3DDevice8_GetTexture(p,a,b) (p)->GetTexture(a,b)
+#define IDirect3DDevice8_SetTexture(p,a,b) (p)->SetTexture(a,b)
+#define IDirect3DDevice8_GetTextureStageState(p,a,b,c) (p)->GetTextureStageState(a,b,c)
+#define IDirect3DDevice8_SetTextureStageState(p,a,b,c) (p)->SetTextureStageState(a,b,c)
+#define IDirect3DDevice8_ValidateDevice(p,a) (p)->ValidateDevice(a)
+#define IDirect3DDevice8_GetInfo(p,a,b,c) (p)->GetInfo(a,b,c)
+#define IDirect3DDevice8_SetPaletteEntries(p,a,b) (p)->SetPaletteEntries(a,b)
+#define IDirect3DDevice8_GetPaletteEntries(p,a,b) (p)->GetPaletteEntries(a,b)
+#define IDirect3DDevice8_SetCurrentTexturePalette(p,a) (p)->SetCurrentTexturePalette(a)
+#define IDirect3DDevice8_GetCurrentTexturePalette(p,a) (p)->GetCurrentTexturePalette(a)
+#define IDirect3DDevice8_DrawPrimitive(p,a,b,c) (p)->DrawPrimitive(a,b,c)
+#define IDirect3DDevice8_DrawIndexedPrimitive(p,a,b,c,d,e) (p)->DrawIndexedPrimitive(a,b,c,d,e)
+#define IDirect3DDevice8_DrawPrimitiveUP(p,a,b,c,d) (p)->DrawPrimitiveUP(a,b,c,d)
+#define IDirect3DDevice8_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h) (p)->DrawIndexedPrimitiveUP(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice8_ProcessVertices(p,a,b,c,d,e) (p)->ProcessVertices(a,b,c,d,e)
+#define IDirect3DDevice8_CreateVertexShader(p,a,b,c,d) (p)->CreateVertexShader(a,b,c,d)
+#define IDirect3DDevice8_SetVertexShader(p,a) (p)->SetVertexShader(a)
+#define IDirect3DDevice8_GetVertexShader(p,a) (p)->GetVertexShader(a)
+#define IDirect3DDevice8_DeleteVertexShader(p,a) (p)->DeleteVertexShader(a)
+#define IDirect3DDevice8_SetVertexShaderConstant(p,a,b,c) (p)->SetVertexShaderConstant(a,b,c)
+#define IDirect3DDevice8_GetVertexShaderConstant(p,a,b,c) (p)->GetVertexShaderConstant(a,b,c)
+#define IDirect3DDevice8_GetVertexShaderDeclaration(p,a,b,c) (p)->GetVertexShaderDeclaration(a,b,c)
+#define IDirect3DDevice8_GetVertexShaderFunction(p,a,b,c) (p)->GetVertexShaderFunction(a,b,c)
+#define IDirect3DDevice8_SetStreamSource(p,a,b,c) (p)->SetStreamSource(a,b,c)
+#define IDirect3DDevice8_GetStreamSource(p,a,b,c) (p)->GetStreamSource(a,b,c)
+#define IDirect3DDevice8_SetIndices(p,a,b) (p)->SetIndices(a,b)
+#define IDirect3DDevice8_GetIndices(p,a,b) (p)->GetIndices(a,b)
+#define IDirect3DDevice8_CreatePixelShader(p,a,b) (p)->CreatePixelShader(a,b)
+#define IDirect3DDevice8_SetPixelShader(p,a) (p)->SetPixelShader(a)
+#define IDirect3DDevice8_GetPixelShader(p,a) (p)->GetPixelShader(a)
+#define IDirect3DDevice8_DeletePixelShader(p,a) (p)->DeletePixelShader(a)
+#define IDirect3DDevice8_SetPixelShaderConstant(p,a,b,c) (p)->SetPixelShaderConstant(a,b,c)
+#define IDirect3DDevice8_GetPixelShaderConstant(p,a,b,c) (p)->GetPixelShaderConstant(a,b,c)
+#define IDirect3DDevice8_GetPixelShaderFunction(p,a,b,c) (p)->GetPixelShaderFunction(a,b,c)
+#define IDirect3DDevice8_DrawRectPatch(p,a,b,c) (p)->DrawRectPatch(a,b,c)
+#define IDirect3DDevice8_DrawTriPatch(p,a,b,c) (p)->DrawTriPatch(a,b,c)
+#define IDirect3DDevice8_DeletePatch(p,a) (p)->DeletePatch(a)
+#endif
+
+
+
+#undef INTERFACE
+#define INTERFACE IDirect3DSwapChain8
+
+DECLARE_INTERFACE_(IDirect3DSwapChain8, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DSwapChain8 methods ***/
+ STDMETHOD(Present)(THIS_ CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion) PURE;
+ STDMETHOD(GetBackBuffer)(THIS_ UINT BackBuffer,D3DBACKBUFFER_TYPE Type,IDirect3DSurface8** ppBackBuffer) PURE;
+};
+
+typedef struct IDirect3DSwapChain8 *LPDIRECT3DSWAPCHAIN8, *PDIRECT3DSWAPCHAIN8;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DSwapChain8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DSwapChain8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DSwapChain8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DSwapChain8_Present(p,a,b,c,d) (p)->lpVtbl->Present(p,a,b,c,d)
+#define IDirect3DSwapChain8_GetBackBuffer(p,a,b,c) (p)->lpVtbl->GetBackBuffer(p,a,b,c)
+#else
+#define IDirect3DSwapChain8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DSwapChain8_AddRef(p) (p)->AddRef()
+#define IDirect3DSwapChain8_Release(p) (p)->Release()
+#define IDirect3DSwapChain8_Present(p,a,b,c,d) (p)->Present(a,b,c,d)
+#define IDirect3DSwapChain8_GetBackBuffer(p,a,b,c) (p)->GetBackBuffer(a,b,c)
+#endif
+
+
+
+#undef INTERFACE
+#define INTERFACE IDirect3DResource8
+
+DECLARE_INTERFACE_(IDirect3DResource8, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DResource8 methods ***/
+ STDMETHOD(GetDevice)(THIS_ IDirect3DDevice8** ppDevice) PURE;
+ STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags) PURE;
+ STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid,void* pData,DWORD* pSizeOfData) PURE;
+ STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+ STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+ STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+ STDMETHOD_(void, PreLoad)(THIS) PURE;
+ STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+};
+
+typedef struct IDirect3DResource8 *LPDIRECT3DRESOURCE8, *PDIRECT3DRESOURCE8;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DResource8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DResource8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DResource8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DResource8_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DResource8_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DResource8_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DResource8_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DResource8_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DResource8_GetPriority(p) (p)->lpVtbl->GetPriority(p)
+#define IDirect3DResource8_PreLoad(p) (p)->lpVtbl->PreLoad(p)
+#define IDirect3DResource8_GetType(p) (p)->lpVtbl->GetType(p)
+#else
+#define IDirect3DResource8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DResource8_AddRef(p) (p)->AddRef()
+#define IDirect3DResource8_Release(p) (p)->Release()
+#define IDirect3DResource8_GetDevice(p,a) (p)->GetDevice(a)
+#define IDirect3DResource8_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DResource8_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
+#define IDirect3DResource8_FreePrivateData(p,a) (p)->FreePrivateData(a)
+#define IDirect3DResource8_SetPriority(p,a) (p)->SetPriority(a)
+#define IDirect3DResource8_GetPriority(p) (p)->GetPriority()
+#define IDirect3DResource8_PreLoad(p) (p)->PreLoad()
+#define IDirect3DResource8_GetType(p) (p)->GetType()
+#endif
+
+
+
+
+#undef INTERFACE
+#define INTERFACE IDirect3DBaseTexture8
+
+DECLARE_INTERFACE_(IDirect3DBaseTexture8, IDirect3DResource8)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DResource8 methods ***/
+ STDMETHOD(GetDevice)(THIS_ IDirect3DDevice8** ppDevice) PURE;
+ STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags) PURE;
+ STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid,void* pData,DWORD* pSizeOfData) PURE;
+ STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+ STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+ STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+ STDMETHOD_(void, PreLoad)(THIS) PURE;
+ STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+ STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
+ STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
+ STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
+};
+
+typedef struct IDirect3DBaseTexture8 *LPDIRECT3DBASETEXTURE8, *PDIRECT3DBASETEXTURE8;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DBaseTexture8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DBaseTexture8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DBaseTexture8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DBaseTexture8_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DBaseTexture8_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DBaseTexture8_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DBaseTexture8_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DBaseTexture8_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DBaseTexture8_GetPriority(p) (p)->lpVtbl->GetPriority(p)
+#define IDirect3DBaseTexture8_PreLoad(p) (p)->lpVtbl->PreLoad(p)
+#define IDirect3DBaseTexture8_GetType(p) (p)->lpVtbl->GetType(p)
+#define IDirect3DBaseTexture8_SetLOD(p,a) (p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DBaseTexture8_GetLOD(p) (p)->lpVtbl->GetLOD(p)
+#define IDirect3DBaseTexture8_GetLevelCount(p) (p)->lpVtbl->GetLevelCount(p)
+#else
+#define IDirect3DBaseTexture8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DBaseTexture8_AddRef(p) (p)->AddRef()
+#define IDirect3DBaseTexture8_Release(p) (p)->Release()
+#define IDirect3DBaseTexture8_GetDevice(p,a) (p)->GetDevice(a)
+#define IDirect3DBaseTexture8_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DBaseTexture8_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
+#define IDirect3DBaseTexture8_FreePrivateData(p,a) (p)->FreePrivateData(a)
+#define IDirect3DBaseTexture8_SetPriority(p,a) (p)->SetPriority(a)
+#define IDirect3DBaseTexture8_GetPriority(p) (p)->GetPriority()
+#define IDirect3DBaseTexture8_PreLoad(p) (p)->PreLoad()
+#define IDirect3DBaseTexture8_GetType(p) (p)->GetType()
+#define IDirect3DBaseTexture8_SetLOD(p,a) (p)->SetLOD(a)
+#define IDirect3DBaseTexture8_GetLOD(p) (p)->GetLOD()
+#define IDirect3DBaseTexture8_GetLevelCount(p) (p)->GetLevelCount()
+#endif
+
+
+
+
+
+#undef INTERFACE
+#define INTERFACE IDirect3DTexture8
+
+DECLARE_INTERFACE_(IDirect3DTexture8, IDirect3DBaseTexture8)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DBaseTexture8 methods ***/
+ STDMETHOD(GetDevice)(THIS_ IDirect3DDevice8** ppDevice) PURE;
+ STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags) PURE;
+ STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid,void* pData,DWORD* pSizeOfData) PURE;
+ STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+ STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+ STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+ STDMETHOD_(void, PreLoad)(THIS) PURE;
+ STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+ STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
+ STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
+ STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
+ STDMETHOD(GetLevelDesc)(THIS_ UINT Level,D3DSURFACE_DESC *pDesc) PURE;
+ STDMETHOD(GetSurfaceLevel)(THIS_ UINT Level,IDirect3DSurface8** ppSurfaceLevel) PURE;
+ STDMETHOD(LockRect)(THIS_ UINT Level,D3DLOCKED_RECT* pLockedRect,CONST RECT* pRect,DWORD Flags) PURE;
+ STDMETHOD(UnlockRect)(THIS_ UINT Level) PURE;
+ STDMETHOD(AddDirtyRect)(THIS_ CONST RECT* pDirtyRect) PURE;
+};
+
+typedef struct IDirect3DTexture8 *LPDIRECT3DTEXTURE8, *PDIRECT3DTEXTURE8;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DTexture8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DTexture8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DTexture8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DTexture8_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DTexture8_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DTexture8_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DTexture8_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DTexture8_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DTexture8_GetPriority(p) (p)->lpVtbl->GetPriority(p)
+#define IDirect3DTexture8_PreLoad(p) (p)->lpVtbl->PreLoad(p)
+#define IDirect3DTexture8_GetType(p) (p)->lpVtbl->GetType(p)
+#define IDirect3DTexture8_SetLOD(p,a) (p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DTexture8_GetLOD(p) (p)->lpVtbl->GetLOD(p)
+#define IDirect3DTexture8_GetLevelCount(p) (p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DTexture8_GetLevelDesc(p,a,b) (p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DTexture8_GetSurfaceLevel(p,a,b) (p)->lpVtbl->GetSurfaceLevel(p,a,b)
+#define IDirect3DTexture8_LockRect(p,a,b,c,d) (p)->lpVtbl->LockRect(p,a,b,c,d)
+#define IDirect3DTexture8_UnlockRect(p,a) (p)->lpVtbl->UnlockRect(p,a)
+#define IDirect3DTexture8_AddDirtyRect(p,a) (p)->lpVtbl->AddDirtyRect(p,a)
+#else
+#define IDirect3DTexture8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DTexture8_AddRef(p) (p)->AddRef()
+#define IDirect3DTexture8_Release(p) (p)->Release()
+#define IDirect3DTexture8_GetDevice(p,a) (p)->GetDevice(a)
+#define IDirect3DTexture8_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DTexture8_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
+#define IDirect3DTexture8_FreePrivateData(p,a) (p)->FreePrivateData(a)
+#define IDirect3DTexture8_SetPriority(p,a) (p)->SetPriority(a)
+#define IDirect3DTexture8_GetPriority(p) (p)->GetPriority()
+#define IDirect3DTexture8_PreLoad(p) (p)->PreLoad()
+#define IDirect3DTexture8_GetType(p) (p)->GetType()
+#define IDirect3DTexture8_SetLOD(p,a) (p)->SetLOD(a)
+#define IDirect3DTexture8_GetLOD(p) (p)->GetLOD()
+#define IDirect3DTexture8_GetLevelCount(p) (p)->GetLevelCount()
+#define IDirect3DTexture8_GetLevelDesc(p,a,b) (p)->GetLevelDesc(a,b)
+#define IDirect3DTexture8_GetSurfaceLevel(p,a,b) (p)->GetSurfaceLevel(a,b)
+#define IDirect3DTexture8_LockRect(p,a,b,c,d) (p)->LockRect(a,b,c,d)
+#define IDirect3DTexture8_UnlockRect(p,a) (p)->UnlockRect(a)
+#define IDirect3DTexture8_AddDirtyRect(p,a) (p)->AddDirtyRect(a)
+#endif
+
+
+
+
+
+#undef INTERFACE
+#define INTERFACE IDirect3DVolumeTexture8
+
+DECLARE_INTERFACE_(IDirect3DVolumeTexture8, IDirect3DBaseTexture8)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DBaseTexture8 methods ***/
+ STDMETHOD(GetDevice)(THIS_ IDirect3DDevice8** ppDevice) PURE;
+ STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags) PURE;
+ STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid,void* pData,DWORD* pSizeOfData) PURE;
+ STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+ STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+ STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+ STDMETHOD_(void, PreLoad)(THIS) PURE;
+ STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+ STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
+ STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
+ STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
+ STDMETHOD(GetLevelDesc)(THIS_ UINT Level,D3DVOLUME_DESC *pDesc) PURE;
+ STDMETHOD(GetVolumeLevel)(THIS_ UINT Level,IDirect3DVolume8** ppVolumeLevel) PURE;
+ STDMETHOD(LockBox)(THIS_ UINT Level,D3DLOCKED_BOX* pLockedVolume,CONST D3DBOX* pBox,DWORD Flags) PURE;
+ STDMETHOD(UnlockBox)(THIS_ UINT Level) PURE;
+ STDMETHOD(AddDirtyBox)(THIS_ CONST D3DBOX* pDirtyBox) PURE;
+};
+
+typedef struct IDirect3DVolumeTexture8 *LPDIRECT3DVOLUMETEXTURE8, *PDIRECT3DVOLUMETEXTURE8;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DVolumeTexture8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVolumeTexture8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DVolumeTexture8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DVolumeTexture8_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVolumeTexture8_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVolumeTexture8_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVolumeTexture8_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVolumeTexture8_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DVolumeTexture8_GetPriority(p) (p)->lpVtbl->GetPriority(p)
+#define IDirect3DVolumeTexture8_PreLoad(p) (p)->lpVtbl->PreLoad(p)
+#define IDirect3DVolumeTexture8_GetType(p) (p)->lpVtbl->GetType(p)
+#define IDirect3DVolumeTexture8_SetLOD(p,a) (p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DVolumeTexture8_GetLOD(p) (p)->lpVtbl->GetLOD(p)
+#define IDirect3DVolumeTexture8_GetLevelCount(p) (p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DVolumeTexture8_GetLevelDesc(p,a,b) (p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DVolumeTexture8_GetVolumeLevel(p,a,b) (p)->lpVtbl->GetVolumeLevel(p,a,b)
+#define IDirect3DVolumeTexture8_LockBox(p,a,b,c,d) (p)->lpVtbl->LockBox(p,a,b,c,d)
+#define IDirect3DVolumeTexture8_UnlockBox(p,a) (p)->lpVtbl->UnlockBox(p,a)
+#define IDirect3DVolumeTexture8_AddDirtyBox(p,a) (p)->lpVtbl->AddDirtyBox(p,a)
+#else
+#define IDirect3DVolumeTexture8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DVolumeTexture8_AddRef(p) (p)->AddRef()
+#define IDirect3DVolumeTexture8_Release(p) (p)->Release()
+#define IDirect3DVolumeTexture8_GetDevice(p,a) (p)->GetDevice(a)
+#define IDirect3DVolumeTexture8_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVolumeTexture8_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
+#define IDirect3DVolumeTexture8_FreePrivateData(p,a) (p)->FreePrivateData(a)
+#define IDirect3DVolumeTexture8_SetPriority(p,a) (p)->SetPriority(a)
+#define IDirect3DVolumeTexture8_GetPriority(p) (p)->GetPriority()
+#define IDirect3DVolumeTexture8_PreLoad(p) (p)->PreLoad()
+#define IDirect3DVolumeTexture8_GetType(p) (p)->GetType()
+#define IDirect3DVolumeTexture8_SetLOD(p,a) (p)->SetLOD(a)
+#define IDirect3DVolumeTexture8_GetLOD(p) (p)->GetLOD()
+#define IDirect3DVolumeTexture8_GetLevelCount(p) (p)->GetLevelCount()
+#define IDirect3DVolumeTexture8_GetLevelDesc(p,a,b) (p)->GetLevelDesc(a,b)
+#define IDirect3DVolumeTexture8_GetVolumeLevel(p,a,b) (p)->GetVolumeLevel(a,b)
+#define IDirect3DVolumeTexture8_LockBox(p,a,b,c,d) (p)->LockBox(a,b,c,d)
+#define IDirect3DVolumeTexture8_UnlockBox(p,a) (p)->UnlockBox(a)
+#define IDirect3DVolumeTexture8_AddDirtyBox(p,a) (p)->AddDirtyBox(a)
+#endif
+
+
+
+
+
+#undef INTERFACE
+#define INTERFACE IDirect3DCubeTexture8
+
+DECLARE_INTERFACE_(IDirect3DCubeTexture8, IDirect3DBaseTexture8)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DBaseTexture8 methods ***/
+ STDMETHOD(GetDevice)(THIS_ IDirect3DDevice8** ppDevice) PURE;
+ STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags) PURE;
+ STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid,void* pData,DWORD* pSizeOfData) PURE;
+ STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+ STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+ STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+ STDMETHOD_(void, PreLoad)(THIS) PURE;
+ STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+ STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
+ STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
+ STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
+ STDMETHOD(GetLevelDesc)(THIS_ UINT Level,D3DSURFACE_DESC *pDesc) PURE;
+ STDMETHOD(GetCubeMapSurface)(THIS_ D3DCUBEMAP_FACES FaceType,UINT Level,IDirect3DSurface8** ppCubeMapSurface) PURE;
+ STDMETHOD(LockRect)(THIS_ D3DCUBEMAP_FACES FaceType,UINT Level,D3DLOCKED_RECT* pLockedRect,CONST RECT* pRect,DWORD Flags) PURE;
+ STDMETHOD(UnlockRect)(THIS_ D3DCUBEMAP_FACES FaceType,UINT Level) PURE;
+ STDMETHOD(AddDirtyRect)(THIS_ D3DCUBEMAP_FACES FaceType,CONST RECT* pDirtyRect) PURE;
+};
+
+typedef struct IDirect3DCubeTexture8 *LPDIRECT3DCUBETEXTURE8, *PDIRECT3DCUBETEXTURE8;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DCubeTexture8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DCubeTexture8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DCubeTexture8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DCubeTexture8_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DCubeTexture8_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DCubeTexture8_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DCubeTexture8_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DCubeTexture8_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DCubeTexture8_GetPriority(p) (p)->lpVtbl->GetPriority(p)
+#define IDirect3DCubeTexture8_PreLoad(p) (p)->lpVtbl->PreLoad(p)
+#define IDirect3DCubeTexture8_GetType(p) (p)->lpVtbl->GetType(p)
+#define IDirect3DCubeTexture8_SetLOD(p,a) (p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DCubeTexture8_GetLOD(p) (p)->lpVtbl->GetLOD(p)
+#define IDirect3DCubeTexture8_GetLevelCount(p) (p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DCubeTexture8_GetLevelDesc(p,a,b) (p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DCubeTexture8_GetCubeMapSurface(p,a,b,c) (p)->lpVtbl->GetCubeMapSurface(p,a,b,c)
+#define IDirect3DCubeTexture8_LockRect(p,a,b,c,d,e) (p)->lpVtbl->LockRect(p,a,b,c,d,e)
+#define IDirect3DCubeTexture8_UnlockRect(p,a,b) (p)->lpVtbl->UnlockRect(p,a,b)
+#define IDirect3DCubeTexture8_AddDirtyRect(p,a,b) (p)->lpVtbl->AddDirtyRect(p,a,b)
+#else
+#define IDirect3DCubeTexture8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DCubeTexture8_AddRef(p) (p)->AddRef()
+#define IDirect3DCubeTexture8_Release(p) (p)->Release()
+#define IDirect3DCubeTexture8_GetDevice(p,a) (p)->GetDevice(a)
+#define IDirect3DCubeTexture8_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DCubeTexture8_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
+#define IDirect3DCubeTexture8_FreePrivateData(p,a) (p)->FreePrivateData(a)
+#define IDirect3DCubeTexture8_SetPriority(p,a) (p)->SetPriority(a)
+#define IDirect3DCubeTexture8_GetPriority(p) (p)->GetPriority()
+#define IDirect3DCubeTexture8_PreLoad(p) (p)->PreLoad()
+#define IDirect3DCubeTexture8_GetType(p) (p)->GetType()
+#define IDirect3DCubeTexture8_SetLOD(p,a) (p)->SetLOD(a)
+#define IDirect3DCubeTexture8_GetLOD(p) (p)->GetLOD()
+#define IDirect3DCubeTexture8_GetLevelCount(p) (p)->GetLevelCount()
+#define IDirect3DCubeTexture8_GetLevelDesc(p,a,b) (p)->GetLevelDesc(a,b)
+#define IDirect3DCubeTexture8_GetCubeMapSurface(p,a,b,c) (p)->GetCubeMapSurface(a,b,c)
+#define IDirect3DCubeTexture8_LockRect(p,a,b,c,d,e) (p)->LockRect(a,b,c,d,e)
+#define IDirect3DCubeTexture8_UnlockRect(p,a,b) (p)->UnlockRect(a,b)
+#define IDirect3DCubeTexture8_AddDirtyRect(p,a,b) (p)->AddDirtyRect(a,b)
+#endif
+
+
+
+
+#undef INTERFACE
+#define INTERFACE IDirect3DVertexBuffer8
+
+DECLARE_INTERFACE_(IDirect3DVertexBuffer8, IDirect3DResource8)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DResource8 methods ***/
+ STDMETHOD(GetDevice)(THIS_ IDirect3DDevice8** ppDevice) PURE;
+ STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags) PURE;
+ STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid,void* pData,DWORD* pSizeOfData) PURE;
+ STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+ STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+ STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+ STDMETHOD_(void, PreLoad)(THIS) PURE;
+ STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ UINT OffsetToLock,UINT SizeToLock,BYTE** ppbData,DWORD Flags) PURE;
+ STDMETHOD(Unlock)(THIS) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3DVERTEXBUFFER_DESC *pDesc) PURE;
+};
+
+typedef struct IDirect3DVertexBuffer8 *LPDIRECT3DVERTEXBUFFER8, *PDIRECT3DVERTEXBUFFER8;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DVertexBuffer8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexBuffer8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexBuffer8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DVertexBuffer8_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVertexBuffer8_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVertexBuffer8_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVertexBuffer8_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVertexBuffer8_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DVertexBuffer8_GetPriority(p) (p)->lpVtbl->GetPriority(p)
+#define IDirect3DVertexBuffer8_PreLoad(p) (p)->lpVtbl->PreLoad(p)
+#define IDirect3DVertexBuffer8_GetType(p) (p)->lpVtbl->GetType(p)
+#define IDirect3DVertexBuffer8_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirect3DVertexBuffer8_Unlock(p) (p)->lpVtbl->Unlock(p)
+#define IDirect3DVertexBuffer8_GetDesc(p,a) (p)->lpVtbl->GetDesc(p,a)
+#else
+#define IDirect3DVertexBuffer8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DVertexBuffer8_AddRef(p) (p)->AddRef()
+#define IDirect3DVertexBuffer8_Release(p) (p)->Release()
+#define IDirect3DVertexBuffer8_GetDevice(p,a) (p)->GetDevice(a)
+#define IDirect3DVertexBuffer8_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVertexBuffer8_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
+#define IDirect3DVertexBuffer8_FreePrivateData(p,a) (p)->FreePrivateData(a)
+#define IDirect3DVertexBuffer8_SetPriority(p,a) (p)->SetPriority(a)
+#define IDirect3DVertexBuffer8_GetPriority(p) (p)->GetPriority()
+#define IDirect3DVertexBuffer8_PreLoad(p) (p)->PreLoad()
+#define IDirect3DVertexBuffer8_GetType(p) (p)->GetType()
+#define IDirect3DVertexBuffer8_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
+#define IDirect3DVertexBuffer8_Unlock(p) (p)->Unlock()
+#define IDirect3DVertexBuffer8_GetDesc(p,a) (p)->GetDesc(a)
+#endif
+
+
+
+
+#undef INTERFACE
+#define INTERFACE IDirect3DIndexBuffer8
+
+DECLARE_INTERFACE_(IDirect3DIndexBuffer8, IDirect3DResource8)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DResource8 methods ***/
+ STDMETHOD(GetDevice)(THIS_ IDirect3DDevice8** ppDevice) PURE;
+ STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags) PURE;
+ STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid,void* pData,DWORD* pSizeOfData) PURE;
+ STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+ STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
+ STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
+ STDMETHOD_(void, PreLoad)(THIS) PURE;
+ STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ UINT OffsetToLock,UINT SizeToLock,BYTE** ppbData,DWORD Flags) PURE;
+ STDMETHOD(Unlock)(THIS) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3DINDEXBUFFER_DESC *pDesc) PURE;
+};
+
+typedef struct IDirect3DIndexBuffer8 *LPDIRECT3DINDEXBUFFER8, *PDIRECT3DINDEXBUFFER8;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DIndexBuffer8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DIndexBuffer8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DIndexBuffer8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DIndexBuffer8_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DIndexBuffer8_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DIndexBuffer8_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DIndexBuffer8_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DIndexBuffer8_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DIndexBuffer8_GetPriority(p) (p)->lpVtbl->GetPriority(p)
+#define IDirect3DIndexBuffer8_PreLoad(p) (p)->lpVtbl->PreLoad(p)
+#define IDirect3DIndexBuffer8_GetType(p) (p)->lpVtbl->GetType(p)
+#define IDirect3DIndexBuffer8_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirect3DIndexBuffer8_Unlock(p) (p)->lpVtbl->Unlock(p)
+#define IDirect3DIndexBuffer8_GetDesc(p,a) (p)->lpVtbl->GetDesc(p,a)
+#else
+#define IDirect3DIndexBuffer8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DIndexBuffer8_AddRef(p) (p)->AddRef()
+#define IDirect3DIndexBuffer8_Release(p) (p)->Release()
+#define IDirect3DIndexBuffer8_GetDevice(p,a) (p)->GetDevice(a)
+#define IDirect3DIndexBuffer8_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DIndexBuffer8_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
+#define IDirect3DIndexBuffer8_FreePrivateData(p,a) (p)->FreePrivateData(a)
+#define IDirect3DIndexBuffer8_SetPriority(p,a) (p)->SetPriority(a)
+#define IDirect3DIndexBuffer8_GetPriority(p) (p)->GetPriority()
+#define IDirect3DIndexBuffer8_PreLoad(p) (p)->PreLoad()
+#define IDirect3DIndexBuffer8_GetType(p) (p)->GetType()
+#define IDirect3DIndexBuffer8_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
+#define IDirect3DIndexBuffer8_Unlock(p) (p)->Unlock()
+#define IDirect3DIndexBuffer8_GetDesc(p,a) (p)->GetDesc(a)
+#endif
+
+
+
+
+#undef INTERFACE
+#define INTERFACE IDirect3DSurface8
+
+DECLARE_INTERFACE_(IDirect3DSurface8, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DSurface8 methods ***/
+ STDMETHOD(GetDevice)(THIS_ IDirect3DDevice8** ppDevice) PURE;
+ STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags) PURE;
+ STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid,void* pData,DWORD* pSizeOfData) PURE;
+ STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+ STDMETHOD(GetContainer)(THIS_ REFIID riid,void** ppContainer) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3DSURFACE_DESC *pDesc) PURE;
+ STDMETHOD(LockRect)(THIS_ D3DLOCKED_RECT* pLockedRect,CONST RECT* pRect,DWORD Flags) PURE;
+ STDMETHOD(UnlockRect)(THIS) PURE;
+};
+
+typedef struct IDirect3DSurface8 *LPDIRECT3DSURFACE8, *PDIRECT3DSURFACE8;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DSurface8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DSurface8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DSurface8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DSurface8_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DSurface8_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DSurface8_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DSurface8_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DSurface8_GetContainer(p,a,b) (p)->lpVtbl->GetContainer(p,a,b)
+#define IDirect3DSurface8_GetDesc(p,a) (p)->lpVtbl->GetDesc(p,a)
+#define IDirect3DSurface8_LockRect(p,a,b,c) (p)->lpVtbl->LockRect(p,a,b,c)
+#define IDirect3DSurface8_UnlockRect(p) (p)->lpVtbl->UnlockRect(p)
+#else
+#define IDirect3DSurface8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DSurface8_AddRef(p) (p)->AddRef()
+#define IDirect3DSurface8_Release(p) (p)->Release()
+#define IDirect3DSurface8_GetDevice(p,a) (p)->GetDevice(a)
+#define IDirect3DSurface8_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DSurface8_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
+#define IDirect3DSurface8_FreePrivateData(p,a) (p)->FreePrivateData(a)
+#define IDirect3DSurface8_GetContainer(p,a,b) (p)->GetContainer(a,b)
+#define IDirect3DSurface8_GetDesc(p,a) (p)->GetDesc(a)
+#define IDirect3DSurface8_LockRect(p,a,b,c) (p)->LockRect(a,b,c)
+#define IDirect3DSurface8_UnlockRect(p) (p)->UnlockRect()
+#endif
+
+
+
+
+#undef INTERFACE
+#define INTERFACE IDirect3DVolume8
+
+DECLARE_INTERFACE_(IDirect3DVolume8, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirect3DVolume8 methods ***/
+ STDMETHOD(GetDevice)(THIS_ IDirect3DDevice8** ppDevice) PURE;
+ STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags) PURE;
+ STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid,void* pData,DWORD* pSizeOfData) PURE;
+ STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
+ STDMETHOD(GetContainer)(THIS_ REFIID riid,void** ppContainer) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3DVOLUME_DESC *pDesc) PURE;
+ STDMETHOD(LockBox)(THIS_ D3DLOCKED_BOX * pLockedVolume,CONST D3DBOX* pBox,DWORD Flags) PURE;
+ STDMETHOD(UnlockBox)(THIS) PURE;
+};
+
+typedef struct IDirect3DVolume8 *LPDIRECT3DVOLUME8, *PDIRECT3DVOLUME8;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DVolume8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVolume8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirect3DVolume8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirect3DVolume8_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVolume8_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVolume8_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVolume8_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVolume8_GetContainer(p,a,b) (p)->lpVtbl->GetContainer(p,a,b)
+#define IDirect3DVolume8_GetDesc(p,a) (p)->lpVtbl->GetDesc(p,a)
+#define IDirect3DVolume8_LockBox(p,a,b,c) (p)->lpVtbl->LockBox(p,a,b,c)
+#define IDirect3DVolume8_UnlockBox(p) (p)->lpVtbl->UnlockBox(p)
+#else
+#define IDirect3DVolume8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirect3DVolume8_AddRef(p) (p)->AddRef()
+#define IDirect3DVolume8_Release(p) (p)->Release()
+#define IDirect3DVolume8_GetDevice(p,a) (p)->GetDevice(a)
+#define IDirect3DVolume8_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVolume8_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
+#define IDirect3DVolume8_FreePrivateData(p,a) (p)->FreePrivateData(a)
+#define IDirect3DVolume8_GetContainer(p,a,b) (p)->GetContainer(a,b)
+#define IDirect3DVolume8_GetDesc(p,a) (p)->GetDesc(a)
+#define IDirect3DVolume8_LockBox(p,a,b,c) (p)->LockBox(a,b,c)
+#define IDirect3DVolume8_UnlockBox(p) (p)->UnlockBox()
+#endif
+
+/****************************************************************************
+ * Flags for SetPrivateData method on all D3D8 interfaces
+ *
+ * The passed pointer is an IUnknown ptr. The SizeOfData argument to SetPrivateData
+ * must be set to sizeof(IUnknown*). Direct3D will call AddRef through this
+ * pointer and Release when the private data is destroyed. The data will be
+ * destroyed when another SetPrivateData with the same GUID is set, when
+ * FreePrivateData is called, or when the D3D8 object is freed.
+ ****************************************************************************/
+#define D3DSPD_IUNKNOWN 0x00000001L
+
+/****************************************************************************
+ *
+ * Parameter for IDirect3D8 Enum and GetCaps8 functions to get the info for
+ * the current mode only.
+ *
+ ****************************************************************************/
+
+#define D3DCURRENT_DISPLAY_MODE 0x00EFFFFFL
+
+/****************************************************************************
+ *
+ * Flags for IDirect3D8::CreateDevice's BehaviorFlags
+ *
+ ****************************************************************************/
+
+#define D3DCREATE_FPU_PRESERVE 0x00000002L
+#define D3DCREATE_MULTITHREADED 0x00000004L
+
+#define D3DCREATE_PUREDEVICE 0x00000010L
+#define D3DCREATE_SOFTWARE_VERTEXPROCESSING 0x00000020L
+#define D3DCREATE_HARDWARE_VERTEXPROCESSING 0x00000040L
+#define D3DCREATE_MIXED_VERTEXPROCESSING 0x00000080L
+
+#define D3DCREATE_DISABLE_DRIVER_MANAGEMENT 0x00000100L
+
+
+/****************************************************************************
+ *
+ * Parameter for IDirect3D8::CreateDevice's iAdapter
+ *
+ ****************************************************************************/
+
+#define D3DADAPTER_DEFAULT 0
+
+/****************************************************************************
+ *
+ * Flags for IDirect3D8::EnumAdapters
+ *
+ ****************************************************************************/
+
+#define D3DENUM_NO_WHQL_LEVEL 0x00000002L
+
+/****************************************************************************
+ *
+ * Maximum number of back-buffers supported in DX8
+ *
+ ****************************************************************************/
+
+#define D3DPRESENT_BACK_BUFFERS_MAX 3L
+
+/****************************************************************************
+ *
+ * Flags for IDirect3DDevice8::SetGammaRamp
+ *
+ ****************************************************************************/
+
+#define D3DSGR_NO_CALIBRATION 0x00000000L
+#define D3DSGR_CALIBRATE 0x00000001L
+
+/****************************************************************************
+ *
+ * Flags for IDirect3DDevice8::SetCursorPosition
+ *
+ ****************************************************************************/
+
+#define D3DCURSOR_IMMEDIATE_UPDATE 0x00000001L
+
+/****************************************************************************
+ *
+ * Flags for DrawPrimitive/DrawIndexedPrimitive
+ * Also valid for Begin/BeginIndexed
+ * Also valid for VertexBuffer::CreateVertexBuffer
+ ****************************************************************************/
+
+
+/*
+ * DirectDraw error codes
+ */
+#define _FACD3D 0x876
+#define MAKE_D3DHRESULT( code ) MAKE_HRESULT( 1, _FACD3D, code )
+
+/*
+ * Direct3D Errors
+ */
+#define D3D_OK S_OK
+
+#define D3DERR_WRONGTEXTUREFORMAT MAKE_D3DHRESULT(2072)
+#define D3DERR_UNSUPPORTEDCOLOROPERATION MAKE_D3DHRESULT(2073)
+#define D3DERR_UNSUPPORTEDCOLORARG MAKE_D3DHRESULT(2074)
+#define D3DERR_UNSUPPORTEDALPHAOPERATION MAKE_D3DHRESULT(2075)
+#define D3DERR_UNSUPPORTEDALPHAARG MAKE_D3DHRESULT(2076)
+#define D3DERR_TOOMANYOPERATIONS MAKE_D3DHRESULT(2077)
+#define D3DERR_CONFLICTINGTEXTUREFILTER MAKE_D3DHRESULT(2078)
+#define D3DERR_UNSUPPORTEDFACTORVALUE MAKE_D3DHRESULT(2079)
+#define D3DERR_CONFLICTINGRENDERSTATE MAKE_D3DHRESULT(2081)
+#define D3DERR_UNSUPPORTEDTEXTUREFILTER MAKE_D3DHRESULT(2082)
+#define D3DERR_CONFLICTINGTEXTUREPALETTE MAKE_D3DHRESULT(2086)
+#define D3DERR_DRIVERINTERNALERROR MAKE_D3DHRESULT(2087)
+
+#define D3DERR_NOTFOUND MAKE_D3DHRESULT(2150)
+#define D3DERR_MOREDATA MAKE_D3DHRESULT(2151)
+#define D3DERR_DEVICELOST MAKE_D3DHRESULT(2152)
+#define D3DERR_DEVICENOTRESET MAKE_D3DHRESULT(2153)
+#define D3DERR_NOTAVAILABLE MAKE_D3DHRESULT(2154)
+#define D3DERR_OUTOFVIDEOMEMORY MAKE_D3DHRESULT(380)
+#define D3DERR_INVALIDDEVICE MAKE_D3DHRESULT(2155)
+#define D3DERR_INVALIDCALL MAKE_D3DHRESULT(2156)
+#define D3DERR_DRIVERINVALIDCALL MAKE_D3DHRESULT(2157)
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* (DIRECT3D_VERSION >= 0x0800) */
+#endif /* _D3D_H_ */
+
diff --git a/include/dx/d3d8caps.h b/include/dx/d3d8caps.h
new file mode 100644
index 000000000..6a7dc115b
--- /dev/null
+++ b/include/dx/d3d8caps.h
@@ -0,0 +1,364 @@
+/*==========================================================================;
+ *
+ * Copyright (C) Microsoft Corporation. All Rights Reserved.
+ *
+ * File: d3d8caps.h
+ * Content: Direct3D capabilities include file
+ *
+ ***************************************************************************/
+
+#ifndef _D3D8CAPS_H
+#define _D3D8CAPS_H
+
+#ifndef DIRECT3D_VERSION
+#define DIRECT3D_VERSION 0x0800
+#endif //DIRECT3D_VERSION
+
+// include this file content only if compiling for DX8 interfaces
+#if(DIRECT3D_VERSION >= 0x0800)
+
+#if defined(_X86_) || defined(_IA64_)
+#pragma pack(4)
+#endif
+
+typedef struct _D3DCAPS8
+{
+ /* Device Info */
+ D3DDEVTYPE DeviceType;
+ UINT AdapterOrdinal;
+
+ /* Caps from DX7 Draw */
+ DWORD Caps;
+ DWORD Caps2;
+ DWORD Caps3;
+ DWORD PresentationIntervals;
+
+ /* Cursor Caps */
+ DWORD CursorCaps;
+
+ /* 3D Device Caps */
+ DWORD DevCaps;
+
+ DWORD PrimitiveMiscCaps;
+ DWORD RasterCaps;
+ DWORD ZCmpCaps;
+ DWORD SrcBlendCaps;
+ DWORD DestBlendCaps;
+ DWORD AlphaCmpCaps;
+ DWORD ShadeCaps;
+ DWORD TextureCaps;
+ DWORD TextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DTexture8's
+ DWORD CubeTextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DCubeTexture8's
+ DWORD VolumeTextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DVolumeTexture8's
+ DWORD TextureAddressCaps; // D3DPTADDRESSCAPS for IDirect3DTexture8's
+ DWORD VolumeTextureAddressCaps; // D3DPTADDRESSCAPS for IDirect3DVolumeTexture8's
+
+ DWORD LineCaps; // D3DLINECAPS
+
+ DWORD MaxTextureWidth, MaxTextureHeight;
+ DWORD MaxVolumeExtent;
+
+ DWORD MaxTextureRepeat;
+ DWORD MaxTextureAspectRatio;
+ DWORD MaxAnisotropy;
+ float MaxVertexW;
+
+ float GuardBandLeft;
+ float GuardBandTop;
+ float GuardBandRight;
+ float GuardBandBottom;
+
+ float ExtentsAdjust;
+ DWORD StencilCaps;
+
+ DWORD FVFCaps;
+ DWORD TextureOpCaps;
+ DWORD MaxTextureBlendStages;
+ DWORD MaxSimultaneousTextures;
+
+ DWORD VertexProcessingCaps;
+ DWORD MaxActiveLights;
+ DWORD MaxUserClipPlanes;
+ DWORD MaxVertexBlendMatrices;
+ DWORD MaxVertexBlendMatrixIndex;
+
+ float MaxPointSize;
+
+ DWORD MaxPrimitiveCount; // max number of primitives per DrawPrimitive call
+ DWORD MaxVertexIndex;
+ DWORD MaxStreams;
+ DWORD MaxStreamStride; // max stride for SetStreamSource
+
+ DWORD VertexShaderVersion;
+ DWORD MaxVertexShaderConst; // number of vertex shader constant registers
+
+ DWORD PixelShaderVersion;
+ float MaxPixelShaderValue; // max value of pixel shader arithmetic component
+
+} D3DCAPS8;
+
+//
+// BIT DEFINES FOR D3DCAPS8 DWORD MEMBERS
+//
+
+//
+// Caps
+//
+#define D3DCAPS_READ_SCANLINE 0x00020000L
+
+//
+// Caps2
+//
+#define D3DCAPS2_NO2DDURING3DSCENE 0x00000002L
+#define D3DCAPS2_FULLSCREENGAMMA 0x00020000L
+#define D3DCAPS2_CANRENDERWINDOWED 0x00080000L
+#define D3DCAPS2_CANCALIBRATEGAMMA 0x00100000L
+#define D3DCAPS2_RESERVED 0x02000000L
+#define D3DCAPS2_CANMANAGERESOURCE 0x10000000L
+#define D3DCAPS2_DYNAMICTEXTURES 0x20000000L
+
+//
+// Caps3
+//
+#define D3DCAPS3_RESERVED 0x8000001fL
+
+// Indicates that the device can respect the ALPHABLENDENABLE render state
+// when fullscreen while using the FLIP or DISCARD swap effect.
+// COPY and COPYVSYNC swap effects work whether or not this flag is set.
+#define D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD 0x00000020L
+
+//
+// PresentationIntervals
+//
+#define D3DPRESENT_INTERVAL_DEFAULT 0x00000000L
+#define D3DPRESENT_INTERVAL_ONE 0x00000001L
+#define D3DPRESENT_INTERVAL_TWO 0x00000002L
+#define D3DPRESENT_INTERVAL_THREE 0x00000004L
+#define D3DPRESENT_INTERVAL_FOUR 0x00000008L
+#define D3DPRESENT_INTERVAL_IMMEDIATE 0x80000000L
+
+//
+// CursorCaps
+//
+// Driver supports HW color cursor in at least hi-res modes(height >=400)
+#define D3DCURSORCAPS_COLOR 0x00000001L
+// Driver supports HW cursor also in low-res modes(height < 400)
+#define D3DCURSORCAPS_LOWRES 0x00000002L
+
+//
+// DevCaps
+//
+#define D3DDEVCAPS_EXECUTESYSTEMMEMORY 0x00000010L /* Device can use execute buffers from system memory */
+#define D3DDEVCAPS_EXECUTEVIDEOMEMORY 0x00000020L /* Device can use execute buffers from video memory */
+#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY 0x00000040L /* Device can use TL buffers from system memory */
+#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY 0x00000080L /* Device can use TL buffers from video memory */
+#define D3DDEVCAPS_TEXTURESYSTEMMEMORY 0x00000100L /* Device can texture from system memory */
+#define D3DDEVCAPS_TEXTUREVIDEOMEMORY 0x00000200L /* Device can texture from device memory */
+#define D3DDEVCAPS_DRAWPRIMTLVERTEX 0x00000400L /* Device can draw TLVERTEX primitives */
+#define D3DDEVCAPS_CANRENDERAFTERFLIP 0x00000800L /* Device can render without waiting for flip to complete */
+#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM 0x00001000L /* Device can texture from nonlocal video memory */
+#define D3DDEVCAPS_DRAWPRIMITIVES2 0x00002000L /* Device can support DrawPrimitives2 */
+#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES 0x00004000L /* Device is texturing from separate memory pools */
+#define D3DDEVCAPS_DRAWPRIMITIVES2EX 0x00008000L /* Device can support Extended DrawPrimitives2 i.e. DX7 compliant driver*/
+#define D3DDEVCAPS_HWTRANSFORMANDLIGHT 0x00010000L /* Device can support transformation and lighting in hardware and DRAWPRIMITIVES2EX must be also */
+#define D3DDEVCAPS_CANBLTSYSTONONLOCAL 0x00020000L /* Device supports a Tex Blt from system memory to non-local vidmem */
+#define D3DDEVCAPS_HWRASTERIZATION 0x00080000L /* Device has HW acceleration for rasterization */
+#define D3DDEVCAPS_PUREDEVICE 0x00100000L /* Device supports D3DCREATE_PUREDEVICE */
+#define D3DDEVCAPS_QUINTICRTPATCHES 0x00200000L /* Device supports quintic Beziers and BSplines */
+#define D3DDEVCAPS_RTPATCHES 0x00400000L /* Device supports Rect and Tri patches */
+#define D3DDEVCAPS_RTPATCHHANDLEZERO 0x00800000L /* Indicates that RT Patches may be drawn efficiently using handle 0 */
+#define D3DDEVCAPS_NPATCHES 0x01000000L /* Device supports N-Patches */
+
+//
+// PrimitiveMiscCaps
+//
+#define D3DPMISCCAPS_MASKZ 0x00000002L
+#define D3DPMISCCAPS_LINEPATTERNREP 0x00000004L
+#define D3DPMISCCAPS_CULLNONE 0x00000010L
+#define D3DPMISCCAPS_CULLCW 0x00000020L
+#define D3DPMISCCAPS_CULLCCW 0x00000040L
+#define D3DPMISCCAPS_COLORWRITEENABLE 0x00000080L
+#define D3DPMISCCAPS_CLIPPLANESCALEDPOINTS 0x00000100L /* Device correctly clips scaled points to clip planes */
+#define D3DPMISCCAPS_CLIPTLVERTS 0x00000200L /* device will clip post-transformed vertex primitives */
+#define D3DPMISCCAPS_TSSARGTEMP 0x00000400L /* device supports D3DTA_TEMP for temporary register */
+#define D3DPMISCCAPS_BLENDOP 0x00000800L /* device supports D3DRS_BLENDOP */
+#define D3DPMISCCAPS_NULLREFERENCE 0x00001000L /* Reference Device that doesnt render */
+
+//
+// LineCaps
+//
+#define D3DLINECAPS_TEXTURE 0x00000001L
+#define D3DLINECAPS_ZTEST 0x00000002L
+#define D3DLINECAPS_BLEND 0x00000004L
+#define D3DLINECAPS_ALPHACMP 0x00000008L
+#define D3DLINECAPS_FOG 0x00000010L
+
+//
+// RasterCaps
+//
+#define D3DPRASTERCAPS_DITHER 0x00000001L
+#define D3DPRASTERCAPS_PAT 0x00000008L
+#define D3DPRASTERCAPS_ZTEST 0x00000010L
+#define D3DPRASTERCAPS_FOGVERTEX 0x00000080L
+#define D3DPRASTERCAPS_FOGTABLE 0x00000100L
+#define D3DPRASTERCAPS_ANTIALIASEDGES 0x00001000L
+#define D3DPRASTERCAPS_MIPMAPLODBIAS 0x00002000L
+#define D3DPRASTERCAPS_ZBIAS 0x00004000L
+#define D3DPRASTERCAPS_ZBUFFERLESSHSR 0x00008000L
+#define D3DPRASTERCAPS_FOGRANGE 0x00010000L
+#define D3DPRASTERCAPS_ANISOTROPY 0x00020000L
+#define D3DPRASTERCAPS_WBUFFER 0x00040000L
+#define D3DPRASTERCAPS_WFOG 0x00100000L
+#define D3DPRASTERCAPS_ZFOG 0x00200000L
+#define D3DPRASTERCAPS_COLORPERSPECTIVE 0x00400000L /* Device iterates colors perspective correct */
+#define D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE 0x00800000L
+
+//
+// ZCmpCaps, AlphaCmpCaps
+//
+#define D3DPCMPCAPS_NEVER 0x00000001L
+#define D3DPCMPCAPS_LESS 0x00000002L
+#define D3DPCMPCAPS_EQUAL 0x00000004L
+#define D3DPCMPCAPS_LESSEQUAL 0x00000008L
+#define D3DPCMPCAPS_GREATER 0x00000010L
+#define D3DPCMPCAPS_NOTEQUAL 0x00000020L
+#define D3DPCMPCAPS_GREATEREQUAL 0x00000040L
+#define D3DPCMPCAPS_ALWAYS 0x00000080L
+
+//
+// SourceBlendCaps, DestBlendCaps
+//
+#define D3DPBLENDCAPS_ZERO 0x00000001L
+#define D3DPBLENDCAPS_ONE 0x00000002L
+#define D3DPBLENDCAPS_SRCCOLOR 0x00000004L
+#define D3DPBLENDCAPS_INVSRCCOLOR 0x00000008L
+#define D3DPBLENDCAPS_SRCALPHA 0x00000010L
+#define D3DPBLENDCAPS_INVSRCALPHA 0x00000020L
+#define D3DPBLENDCAPS_DESTALPHA 0x00000040L
+#define D3DPBLENDCAPS_INVDESTALPHA 0x00000080L
+#define D3DPBLENDCAPS_DESTCOLOR 0x00000100L
+#define D3DPBLENDCAPS_INVDESTCOLOR 0x00000200L
+#define D3DPBLENDCAPS_SRCALPHASAT 0x00000400L
+#define D3DPBLENDCAPS_BOTHSRCALPHA 0x00000800L
+#define D3DPBLENDCAPS_BOTHINVSRCALPHA 0x00001000L
+
+//
+// ShadeCaps
+//
+#define D3DPSHADECAPS_COLORGOURAUDRGB 0x00000008L
+#define D3DPSHADECAPS_SPECULARGOURAUDRGB 0x00000200L
+#define D3DPSHADECAPS_ALPHAGOURAUDBLEND 0x00004000L
+#define D3DPSHADECAPS_FOGGOURAUD 0x00080000L
+
+//
+// TextureCaps
+//
+#define D3DPTEXTURECAPS_PERSPECTIVE 0x00000001L /* Perspective-correct texturing is supported */
+#define D3DPTEXTURECAPS_POW2 0x00000002L /* Power-of-2 texture dimensions are required - applies to non-Cube/Volume textures only. */
+#define D3DPTEXTURECAPS_ALPHA 0x00000004L /* Alpha in texture pixels is supported */
+#define D3DPTEXTURECAPS_SQUAREONLY 0x00000020L /* Only square textures are supported */
+#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 0x00000040L /* Texture indices are not scaled by the texture size prior to interpolation */
+#define D3DPTEXTURECAPS_ALPHAPALETTE 0x00000080L /* Device can draw alpha from texture palettes */
+// Device can use non-POW2 textures if:
+// 1) D3DTEXTURE_ADDRESS is set to CLAMP for this texture's stage
+// 2) D3DRS_WRAP(N) is zero for this texture's coordinates
+// 3) mip mapping is not enabled (use magnification filter only)
+#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL 0x00000100L
+#define D3DPTEXTURECAPS_PROJECTED 0x00000400L /* Device can do D3DTTFF_PROJECTED */
+#define D3DPTEXTURECAPS_CUBEMAP 0x00000800L /* Device can do cubemap textures */
+#define D3DPTEXTURECAPS_VOLUMEMAP 0x00002000L /* Device can do volume textures */
+#define D3DPTEXTURECAPS_MIPMAP 0x00004000L /* Device can do mipmapped textures */
+#define D3DPTEXTURECAPS_MIPVOLUMEMAP 0x00008000L /* Device can do mipmapped volume textures */
+#define D3DPTEXTURECAPS_MIPCUBEMAP 0x00010000L /* Device can do mipmapped cube maps */
+#define D3DPTEXTURECAPS_CUBEMAP_POW2 0x00020000L /* Device requires that cubemaps be power-of-2 dimension */
+#define D3DPTEXTURECAPS_VOLUMEMAP_POW2 0x00040000L /* Device requires that volume maps be power-of-2 dimension */
+
+//
+// TextureFilterCaps
+//
+#define D3DPTFILTERCAPS_MINFPOINT 0x00000100L /* Min Filter */
+#define D3DPTFILTERCAPS_MINFLINEAR 0x00000200L
+#define D3DPTFILTERCAPS_MINFANISOTROPIC 0x00000400L
+#define D3DPTFILTERCAPS_MIPFPOINT 0x00010000L /* Mip Filter */
+#define D3DPTFILTERCAPS_MIPFLINEAR 0x00020000L
+#define D3DPTFILTERCAPS_MAGFPOINT 0x01000000L /* Mag Filter */
+#define D3DPTFILTERCAPS_MAGFLINEAR 0x02000000L
+#define D3DPTFILTERCAPS_MAGFANISOTROPIC 0x04000000L
+#define D3DPTFILTERCAPS_MAGFAFLATCUBIC 0x08000000L
+#define D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC 0x10000000L
+
+//
+// TextureAddressCaps
+//
+#define D3DPTADDRESSCAPS_WRAP 0x00000001L
+#define D3DPTADDRESSCAPS_MIRROR 0x00000002L
+#define D3DPTADDRESSCAPS_CLAMP 0x00000004L
+#define D3DPTADDRESSCAPS_BORDER 0x00000008L
+#define D3DPTADDRESSCAPS_INDEPENDENTUV 0x00000010L
+#define D3DPTADDRESSCAPS_MIRRORONCE 0x00000020L
+
+//
+// StencilCaps
+//
+#define D3DSTENCILCAPS_KEEP 0x00000001L
+#define D3DSTENCILCAPS_ZERO 0x00000002L
+#define D3DSTENCILCAPS_REPLACE 0x00000004L
+#define D3DSTENCILCAPS_INCRSAT 0x00000008L
+#define D3DSTENCILCAPS_DECRSAT 0x00000010L
+#define D3DSTENCILCAPS_INVERT 0x00000020L
+#define D3DSTENCILCAPS_INCR 0x00000040L
+#define D3DSTENCILCAPS_DECR 0x00000080L
+
+//
+// TextureOpCaps
+//
+#define D3DTEXOPCAPS_DISABLE 0x00000001L
+#define D3DTEXOPCAPS_SELECTARG1 0x00000002L
+#define D3DTEXOPCAPS_SELECTARG2 0x00000004L
+#define D3DTEXOPCAPS_MODULATE 0x00000008L
+#define D3DTEXOPCAPS_MODULATE2X 0x00000010L
+#define D3DTEXOPCAPS_MODULATE4X 0x00000020L
+#define D3DTEXOPCAPS_ADD 0x00000040L
+#define D3DTEXOPCAPS_ADDSIGNED 0x00000080L
+#define D3DTEXOPCAPS_ADDSIGNED2X 0x00000100L
+#define D3DTEXOPCAPS_SUBTRACT 0x00000200L
+#define D3DTEXOPCAPS_ADDSMOOTH 0x00000400L
+#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA 0x00000800L
+#define D3DTEXOPCAPS_BLENDTEXTUREALPHA 0x00001000L
+#define D3DTEXOPCAPS_BLENDFACTORALPHA 0x00002000L
+#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM 0x00004000L
+#define D3DTEXOPCAPS_BLENDCURRENTALPHA 0x00008000L
+#define D3DTEXOPCAPS_PREMODULATE 0x00010000L
+#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR 0x00020000L
+#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA 0x00040000L
+#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR 0x00080000L
+#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA 0x00100000L
+#define D3DTEXOPCAPS_BUMPENVMAP 0x00200000L
+#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE 0x00400000L
+#define D3DTEXOPCAPS_DOTPRODUCT3 0x00800000L
+#define D3DTEXOPCAPS_MULTIPLYADD 0x01000000L
+#define D3DTEXOPCAPS_LERP 0x02000000L
+
+//
+// FVFCaps
+//
+#define D3DFVFCAPS_TEXCOORDCOUNTMASK 0x0000ffffL /* mask for texture coordinate count field */
+#define D3DFVFCAPS_DONOTSTRIPELEMENTS 0x00080000L /* Device prefers that vertex elements not be stripped */
+#define D3DFVFCAPS_PSIZE 0x00100000L /* Device can receive point size */
+
+//
+// VertexProcessingCaps
+//
+#define D3DVTXPCAPS_TEXGEN 0x00000001L /* device can do texgen */
+#define D3DVTXPCAPS_MATERIALSOURCE7 0x00000002L /* device can do DX7-level colormaterialsource ops */
+#define D3DVTXPCAPS_DIRECTIONALLIGHTS 0x00000008L /* device can do directional lights */
+#define D3DVTXPCAPS_POSITIONALLIGHTS 0x00000010L /* device can do positional lights (includes point and spot) */
+#define D3DVTXPCAPS_LOCALVIEWER 0x00000020L /* device can do local viewer */
+#define D3DVTXPCAPS_TWEENING 0x00000040L /* device can do vertex tweening */
+#define D3DVTXPCAPS_NO_VSDT_UBYTE4 0x00000080L /* device does not support D3DVSDT_UBYTE4 */
+
+#pragma pack()
+
+#endif /* (DIRECT3D_VERSION >= 0x0800) */
+#endif /* _D3D8CAPS_H_ */
+
diff --git a/include/dx/d3d8types.h b/include/dx/d3d8types.h
new file mode 100644
index 000000000..0303762cc
--- /dev/null
+++ b/include/dx/d3d8types.h
@@ -0,0 +1,1684 @@
+/*==========================================================================;
+ *
+ * Copyright (C) Microsoft Corporation. All Rights Reserved.
+ *
+ * File: d3d8types.h
+ * Content: Direct3D capabilities include file
+ *
+ ***************************************************************************/
+
+#ifndef _D3D8TYPES_H_
+#define _D3D8TYPES_H_
+
+#ifndef DIRECT3D_VERSION
+#define DIRECT3D_VERSION 0x0800
+#endif //DIRECT3D_VERSION
+
+// include this file content only if compiling for DX8 interfaces
+#if(DIRECT3D_VERSION >= 0x0800)
+
+#include <float.h>
+
+#if _MSC_VER >= 1200
+#pragma warning(push)
+#endif
+#pragma warning(disable:4201) // anonymous unions warning
+#if defined(_X86_) || defined(_IA64_)
+#pragma pack(4)
+#endif
+
+// D3DCOLOR is equivalent to D3DFMT_A8R8G8B8
+#ifndef D3DCOLOR_DEFINED
+typedef DWORD D3DCOLOR;
+#define D3DCOLOR_DEFINED
+#endif
+
+// maps unsigned 8 bits/channel to D3DCOLOR
+#define D3DCOLOR_ARGB(a,r,g,b) \
+ ((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
+#define D3DCOLOR_RGBA(r,g,b,a) D3DCOLOR_ARGB(a,r,g,b)
+#define D3DCOLOR_XRGB(r,g,b) D3DCOLOR_ARGB(0xff,r,g,b)
+
+// maps floating point channels (0.f to 1.f range) to D3DCOLOR
+#define D3DCOLOR_COLORVALUE(r,g,b,a) \
+ D3DCOLOR_RGBA((DWORD)((r)*255.f),(DWORD)((g)*255.f),(DWORD)((b)*255.f),(DWORD)((a)*255.f))
+
+
+#ifndef D3DVECTOR_DEFINED
+typedef struct _D3DVECTOR {
+ float x;
+ float y;
+ float z;
+} D3DVECTOR;
+#define D3DVECTOR_DEFINED
+#endif
+
+#ifndef D3DCOLORVALUE_DEFINED
+typedef struct _D3DCOLORVALUE {
+ float r;
+ float g;
+ float b;
+ float a;
+} D3DCOLORVALUE;
+#define D3DCOLORVALUE_DEFINED
+#endif
+
+#ifndef D3DRECT_DEFINED
+typedef struct _D3DRECT {
+ LONG x1;
+ LONG y1;
+ LONG x2;
+ LONG y2;
+} D3DRECT;
+#define D3DRECT_DEFINED
+#endif
+
+#ifndef D3DMATRIX_DEFINED
+typedef struct _D3DMATRIX {
+ union {
+ struct {
+ float _11, _12, _13, _14;
+ float _21, _22, _23, _24;
+ float _31, _32, _33, _34;
+ float _41, _42, _43, _44;
+
+ };
+ float m[4][4];
+ };
+} D3DMATRIX;
+#define D3DMATRIX_DEFINED
+#endif
+
+typedef struct _D3DVIEWPORT8 {
+ DWORD X;
+ DWORD Y; /* Viewport Top left */
+ DWORD Width;
+ DWORD Height; /* Viewport Dimensions */
+ float MinZ; /* Min/max of clip Volume */
+ float MaxZ;
+} D3DVIEWPORT8;
+
+/*
+ * Values for clip fields.
+ */
+
+// Max number of user clipping planes, supported in D3D.
+#define D3DMAXUSERCLIPPLANES 32
+
+// These bits could be ORed together to use with D3DRS_CLIPPLANEENABLE
+//
+#define D3DCLIPPLANE0 (1 << 0)
+#define D3DCLIPPLANE1 (1 << 1)
+#define D3DCLIPPLANE2 (1 << 2)
+#define D3DCLIPPLANE3 (1 << 3)
+#define D3DCLIPPLANE4 (1 << 4)
+#define D3DCLIPPLANE5 (1 << 5)
+
+// The following bits are used in the ClipUnion and ClipIntersection
+// members of the D3DCLIPSTATUS8
+//
+
+#define D3DCS_LEFT 0x00000001L
+#define D3DCS_RIGHT 0x00000002L
+#define D3DCS_TOP 0x00000004L
+#define D3DCS_BOTTOM 0x00000008L
+#define D3DCS_FRONT 0x00000010L
+#define D3DCS_BACK 0x00000020L
+#define D3DCS_PLANE0 0x00000040L
+#define D3DCS_PLANE1 0x00000080L
+#define D3DCS_PLANE2 0x00000100L
+#define D3DCS_PLANE3 0x00000200L
+#define D3DCS_PLANE4 0x00000400L
+#define D3DCS_PLANE5 0x00000800L
+
+#define D3DCS_ALL (D3DCS_LEFT | \
+ D3DCS_RIGHT | \
+ D3DCS_TOP | \
+ D3DCS_BOTTOM | \
+ D3DCS_FRONT | \
+ D3DCS_BACK | \
+ D3DCS_PLANE0 | \
+ D3DCS_PLANE1 | \
+ D3DCS_PLANE2 | \
+ D3DCS_PLANE3 | \
+ D3DCS_PLANE4 | \
+ D3DCS_PLANE5)
+
+typedef struct _D3DCLIPSTATUS8 {
+ DWORD ClipUnion;
+ DWORD ClipIntersection;
+} D3DCLIPSTATUS8;
+
+typedef struct _D3DMATERIAL8 {
+ D3DCOLORVALUE Diffuse; /* Diffuse color RGBA */
+ D3DCOLORVALUE Ambient; /* Ambient color RGB */
+ D3DCOLORVALUE Specular; /* Specular 'shininess' */
+ D3DCOLORVALUE Emissive; /* Emissive color RGB */
+ float Power; /* Sharpness if specular highlight */
+} D3DMATERIAL8;
+
+typedef enum _D3DLIGHTTYPE {
+ D3DLIGHT_POINT = 1,
+ D3DLIGHT_SPOT = 2,
+ D3DLIGHT_DIRECTIONAL = 3,
+ D3DLIGHT_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DLIGHTTYPE;
+
+typedef struct _D3DLIGHT8 {
+ D3DLIGHTTYPE Type; /* Type of light source */
+ D3DCOLORVALUE Diffuse; /* Diffuse color of light */
+ D3DCOLORVALUE Specular; /* Specular color of light */
+ D3DCOLORVALUE Ambient; /* Ambient color of light */
+ D3DVECTOR Position; /* Position in world space */
+ D3DVECTOR Direction; /* Direction in world space */
+ float Range; /* Cutoff range */
+ float Falloff; /* Falloff */
+ float Attenuation0; /* Constant attenuation */
+ float Attenuation1; /* Linear attenuation */
+ float Attenuation2; /* Quadratic attenuation */
+ float Theta; /* Inner angle of spotlight cone */
+ float Phi; /* Outer angle of spotlight cone */
+} D3DLIGHT8;
+
+/*
+ * Options for clearing
+ */
+#define D3DCLEAR_TARGET 0x00000001l /* Clear target surface */
+#define D3DCLEAR_ZBUFFER 0x00000002l /* Clear target z buffer */
+#define D3DCLEAR_STENCIL 0x00000004l /* Clear stencil planes */
+
+/*
+ * The following defines the rendering states
+ */
+
+typedef enum _D3DSHADEMODE {
+ D3DSHADE_FLAT = 1,
+ D3DSHADE_GOURAUD = 2,
+ D3DSHADE_PHONG = 3,
+ D3DSHADE_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DSHADEMODE;
+
+typedef enum _D3DFILLMODE {
+ D3DFILL_POINT = 1,
+ D3DFILL_WIREFRAME = 2,
+ D3DFILL_SOLID = 3,
+ D3DFILL_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DFILLMODE;
+
+typedef struct _D3DLINEPATTERN {
+ WORD wRepeatFactor;
+ WORD wLinePattern;
+} D3DLINEPATTERN;
+
+typedef enum _D3DBLEND {
+ D3DBLEND_ZERO = 1,
+ D3DBLEND_ONE = 2,
+ D3DBLEND_SRCCOLOR = 3,
+ D3DBLEND_INVSRCCOLOR = 4,
+ D3DBLEND_SRCALPHA = 5,
+ D3DBLEND_INVSRCALPHA = 6,
+ D3DBLEND_DESTALPHA = 7,
+ D3DBLEND_INVDESTALPHA = 8,
+ D3DBLEND_DESTCOLOR = 9,
+ D3DBLEND_INVDESTCOLOR = 10,
+ D3DBLEND_SRCALPHASAT = 11,
+ D3DBLEND_BOTHSRCALPHA = 12,
+ D3DBLEND_BOTHINVSRCALPHA = 13,
+ D3DBLEND_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DBLEND;
+
+typedef enum _D3DBLENDOP {
+ D3DBLENDOP_ADD = 1,
+ D3DBLENDOP_SUBTRACT = 2,
+ D3DBLENDOP_REVSUBTRACT = 3,
+ D3DBLENDOP_MIN = 4,
+ D3DBLENDOP_MAX = 5,
+ D3DBLENDOP_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DBLENDOP;
+
+typedef enum _D3DTEXTUREADDRESS {
+ D3DTADDRESS_WRAP = 1,
+ D3DTADDRESS_MIRROR = 2,
+ D3DTADDRESS_CLAMP = 3,
+ D3DTADDRESS_BORDER = 4,
+ D3DTADDRESS_MIRRORONCE = 5,
+ D3DTADDRESS_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DTEXTUREADDRESS;
+
+typedef enum _D3DCULL {
+ D3DCULL_NONE = 1,
+ D3DCULL_CW = 2,
+ D3DCULL_CCW = 3,
+ D3DCULL_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DCULL;
+
+typedef enum _D3DCMPFUNC {
+ D3DCMP_NEVER = 1,
+ D3DCMP_LESS = 2,
+ D3DCMP_EQUAL = 3,
+ D3DCMP_LESSEQUAL = 4,
+ D3DCMP_GREATER = 5,
+ D3DCMP_NOTEQUAL = 6,
+ D3DCMP_GREATEREQUAL = 7,
+ D3DCMP_ALWAYS = 8,
+ D3DCMP_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DCMPFUNC;
+
+typedef enum _D3DSTENCILOP {
+ D3DSTENCILOP_KEEP = 1,
+ D3DSTENCILOP_ZERO = 2,
+ D3DSTENCILOP_REPLACE = 3,
+ D3DSTENCILOP_INCRSAT = 4,
+ D3DSTENCILOP_DECRSAT = 5,
+ D3DSTENCILOP_INVERT = 6,
+ D3DSTENCILOP_INCR = 7,
+ D3DSTENCILOP_DECR = 8,
+ D3DSTENCILOP_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DSTENCILOP;
+
+typedef enum _D3DFOGMODE {
+ D3DFOG_NONE = 0,
+ D3DFOG_EXP = 1,
+ D3DFOG_EXP2 = 2,
+ D3DFOG_LINEAR = 3,
+ D3DFOG_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DFOGMODE;
+
+typedef enum _D3DZBUFFERTYPE {
+ D3DZB_FALSE = 0,
+ D3DZB_TRUE = 1, // Z buffering
+ D3DZB_USEW = 2, // W buffering
+ D3DZB_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DZBUFFERTYPE;
+
+// Primitives supported by draw-primitive API
+typedef enum _D3DPRIMITIVETYPE {
+ D3DPT_POINTLIST = 1,
+ D3DPT_LINELIST = 2,
+ D3DPT_LINESTRIP = 3,
+ D3DPT_TRIANGLELIST = 4,
+ D3DPT_TRIANGLESTRIP = 5,
+ D3DPT_TRIANGLEFAN = 6,
+ D3DPT_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DPRIMITIVETYPE;
+
+typedef enum _D3DTRANSFORMSTATETYPE {
+ D3DTS_VIEW = 2,
+ D3DTS_PROJECTION = 3,
+ D3DTS_TEXTURE0 = 16,
+ D3DTS_TEXTURE1 = 17,
+ D3DTS_TEXTURE2 = 18,
+ D3DTS_TEXTURE3 = 19,
+ D3DTS_TEXTURE4 = 20,
+ D3DTS_TEXTURE5 = 21,
+ D3DTS_TEXTURE6 = 22,
+ D3DTS_TEXTURE7 = 23,
+ D3DTS_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DTRANSFORMSTATETYPE;
+
+#define D3DTS_WORLDMATRIX(index) (D3DTRANSFORMSTATETYPE)(index + 256)
+#define D3DTS_WORLD D3DTS_WORLDMATRIX(0)
+#define D3DTS_WORLD1 D3DTS_WORLDMATRIX(1)
+#define D3DTS_WORLD2 D3DTS_WORLDMATRIX(2)
+#define D3DTS_WORLD3 D3DTS_WORLDMATRIX(3)
+
+typedef enum _D3DRENDERSTATETYPE {
+ D3DRS_ZENABLE = 7, /* D3DZBUFFERTYPE (or TRUE/FALSE for legacy) */
+ D3DRS_FILLMODE = 8, /* D3DFILLMODE */
+ D3DRS_SHADEMODE = 9, /* D3DSHADEMODE */
+ D3DRS_LINEPATTERN = 10, /* D3DLINEPATTERN */
+ D3DRS_ZWRITEENABLE = 14, /* TRUE to enable z writes */
+ D3DRS_ALPHATESTENABLE = 15, /* TRUE to enable alpha tests */
+ D3DRS_LASTPIXEL = 16, /* TRUE for last-pixel on lines */
+ D3DRS_SRCBLEND = 19, /* D3DBLEND */
+ D3DRS_DESTBLEND = 20, /* D3DBLEND */
+ D3DRS_CULLMODE = 22, /* D3DCULL */
+ D3DRS_ZFUNC = 23, /* D3DCMPFUNC */
+ D3DRS_ALPHAREF = 24, /* D3DFIXED */
+ D3DRS_ALPHAFUNC = 25, /* D3DCMPFUNC */
+ D3DRS_DITHERENABLE = 26, /* TRUE to enable dithering */
+ D3DRS_ALPHABLENDENABLE = 27, /* TRUE to enable alpha blending */
+ D3DRS_FOGENABLE = 28, /* TRUE to enable fog blending */
+ D3DRS_SPECULARENABLE = 29, /* TRUE to enable specular */
+ D3DRS_ZVISIBLE = 30, /* TRUE to enable z checking */
+ D3DRS_FOGCOLOR = 34, /* D3DCOLOR */
+ D3DRS_FOGTABLEMODE = 35, /* D3DFOGMODE */
+ D3DRS_FOGSTART = 36, /* Fog start (for both vertex and pixel fog) */
+ D3DRS_FOGEND = 37, /* Fog end */
+ D3DRS_FOGDENSITY = 38, /* Fog density */
+ D3DRS_EDGEANTIALIAS = 40, /* TRUE to enable edge antialiasing */
+ D3DRS_ZBIAS = 47, /* LONG Z bias */
+ D3DRS_RANGEFOGENABLE = 48, /* Enables range-based fog */
+ D3DRS_STENCILENABLE = 52, /* BOOL enable/disable stenciling */
+ D3DRS_STENCILFAIL = 53, /* D3DSTENCILOP to do if stencil test fails */
+ D3DRS_STENCILZFAIL = 54, /* D3DSTENCILOP to do if stencil test passes and Z test fails */
+ D3DRS_STENCILPASS = 55, /* D3DSTENCILOP to do if both stencil and Z tests pass */
+ D3DRS_STENCILFUNC = 56, /* D3DCMPFUNC fn. Stencil Test passes if ((ref & mask) stencilfn (stencil & mask)) is true */
+ D3DRS_STENCILREF = 57, /* Reference value used in stencil test */
+ D3DRS_STENCILMASK = 58, /* Mask value used in stencil test */
+ D3DRS_STENCILWRITEMASK = 59, /* Write mask applied to values written to stencil buffer */
+ D3DRS_TEXTUREFACTOR = 60, /* D3DCOLOR used for multi-texture blend */
+ D3DRS_WRAP0 = 128, /* wrap for 1st texture coord. set */
+ D3DRS_WRAP1 = 129, /* wrap for 2nd texture coord. set */
+ D3DRS_WRAP2 = 130, /* wrap for 3rd texture coord. set */
+ D3DRS_WRAP3 = 131, /* wrap for 4th texture coord. set */
+ D3DRS_WRAP4 = 132, /* wrap for 5th texture coord. set */
+ D3DRS_WRAP5 = 133, /* wrap for 6th texture coord. set */
+ D3DRS_WRAP6 = 134, /* wrap for 7th texture coord. set */
+ D3DRS_WRAP7 = 135, /* wrap for 8th texture coord. set */
+ D3DRS_CLIPPING = 136,
+ D3DRS_LIGHTING = 137,
+ D3DRS_AMBIENT = 139,
+ D3DRS_FOGVERTEXMODE = 140,
+ D3DRS_COLORVERTEX = 141,
+ D3DRS_LOCALVIEWER = 142,
+ D3DRS_NORMALIZENORMALS = 143,
+ D3DRS_DIFFUSEMATERIALSOURCE = 145,
+ D3DRS_SPECULARMATERIALSOURCE = 146,
+ D3DRS_AMBIENTMATERIALSOURCE = 147,
+ D3DRS_EMISSIVEMATERIALSOURCE = 148,
+ D3DRS_VERTEXBLEND = 151,
+ D3DRS_CLIPPLANEENABLE = 152,
+ D3DRS_SOFTWAREVERTEXPROCESSING = 153,
+ D3DRS_POINTSIZE = 154, /* float point size */
+ D3DRS_POINTSIZE_MIN = 155, /* float point size min threshold */
+ D3DRS_POINTSPRITEENABLE = 156, /* BOOL point texture coord control */
+ D3DRS_POINTSCALEENABLE = 157, /* BOOL point size scale enable */
+ D3DRS_POINTSCALE_A = 158, /* float point attenuation A value */
+ D3DRS_POINTSCALE_B = 159, /* float point attenuation B value */
+ D3DRS_POINTSCALE_C = 160, /* float point attenuation C value */
+ D3DRS_MULTISAMPLEANTIALIAS = 161, // BOOL - set to do FSAA with multisample buffer
+ D3DRS_MULTISAMPLEMASK = 162, // DWORD - per-sample enable/disable
+ D3DRS_PATCHEDGESTYLE = 163, // Sets whether patch edges will use float style tessellation
+ D3DRS_PATCHSEGMENTS = 164, // Number of segments per edge when drawing patches
+ D3DRS_DEBUGMONITORTOKEN = 165, // DEBUG ONLY - token to debug monitor
+ D3DRS_POINTSIZE_MAX = 166, /* float point size max threshold */
+ D3DRS_INDEXEDVERTEXBLENDENABLE = 167,
+ D3DRS_COLORWRITEENABLE = 168, // per-channel write enable
+ D3DRS_TWEENFACTOR = 170, // float tween factor
+ D3DRS_BLENDOP = 171, // D3DBLENDOP setting
+ D3DRS_POSITIONORDER = 172, // NPatch position interpolation order. D3DORDER_LINEAR or D3DORDER_CUBIC (default)
+ D3DRS_NORMALORDER = 173, // NPatch normal interpolation order. D3DORDER_LINEAR (default) or D3DORDER_QUADRATIC
+
+ D3DRS_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DRENDERSTATETYPE;
+
+// Values for material source
+typedef enum _D3DMATERIALCOLORSOURCE
+{
+ D3DMCS_MATERIAL = 0, // Color from material is used
+ D3DMCS_COLOR1 = 1, // Diffuse vertex color is used
+ D3DMCS_COLOR2 = 2, // Specular vertex color is used
+ D3DMCS_FORCE_DWORD = 0x7fffffff, // force 32-bit size enum
+} D3DMATERIALCOLORSOURCE;
+
+// Bias to apply to the texture coordinate set to apply a wrap to.
+#define D3DRENDERSTATE_WRAPBIAS 128UL
+
+/* Flags to construct the WRAP render states */
+#define D3DWRAP_U 0x00000001L
+#define D3DWRAP_V 0x00000002L
+#define D3DWRAP_W 0x00000004L
+
+/* Flags to construct the WRAP render states for 1D thru 4D texture coordinates */
+#define D3DWRAPCOORD_0 0x00000001L // same as D3DWRAP_U
+#define D3DWRAPCOORD_1 0x00000002L // same as D3DWRAP_V
+#define D3DWRAPCOORD_2 0x00000004L // same as D3DWRAP_W
+#define D3DWRAPCOORD_3 0x00000008L
+
+/* Flags to construct D3DRS_COLORWRITEENABLE */
+#define D3DCOLORWRITEENABLE_RED (1L<<0)
+#define D3DCOLORWRITEENABLE_GREEN (1L<<1)
+#define D3DCOLORWRITEENABLE_BLUE (1L<<2)
+#define D3DCOLORWRITEENABLE_ALPHA (1L<<3)
+
+/*
+ * State enumerants for per-stage texture processing.
+ */
+typedef enum _D3DTEXTURESTAGESTATETYPE
+{
+ D3DTSS_COLOROP = 1, /* D3DTEXTUREOP - per-stage blending controls for color channels */
+ D3DTSS_COLORARG1 = 2, /* D3DTA_* (texture arg) */
+ D3DTSS_COLORARG2 = 3, /* D3DTA_* (texture arg) */
+ D3DTSS_ALPHAOP = 4, /* D3DTEXTUREOP - per-stage blending controls for alpha channel */
+ D3DTSS_ALPHAARG1 = 5, /* D3DTA_* (texture arg) */
+ D3DTSS_ALPHAARG2 = 6, /* D3DTA_* (texture arg) */
+ D3DTSS_BUMPENVMAT00 = 7, /* float (bump mapping matrix) */
+ D3DTSS_BUMPENVMAT01 = 8, /* float (bump mapping matrix) */
+ D3DTSS_BUMPENVMAT10 = 9, /* float (bump mapping matrix) */
+ D3DTSS_BUMPENVMAT11 = 10, /* float (bump mapping matrix) */
+ D3DTSS_TEXCOORDINDEX = 11, /* identifies which set of texture coordinates index this texture */
+ D3DTSS_ADDRESSU = 13, /* D3DTEXTUREADDRESS for U coordinate */
+ D3DTSS_ADDRESSV = 14, /* D3DTEXTUREADDRESS for V coordinate */
+ D3DTSS_BORDERCOLOR = 15, /* D3DCOLOR */
+ D3DTSS_MAGFILTER = 16, /* D3DTEXTUREFILTER filter to use for magnification */
+ D3DTSS_MINFILTER = 17, /* D3DTEXTUREFILTER filter to use for minification */
+ D3DTSS_MIPFILTER = 18, /* D3DTEXTUREFILTER filter to use between mipmaps during minification */
+ D3DTSS_MIPMAPLODBIAS = 19, /* float Mipmap LOD bias */
+ D3DTSS_MAXMIPLEVEL = 20, /* DWORD 0..(n-1) LOD index of largest map to use (0 == largest) */
+ D3DTSS_MAXANISOTROPY = 21, /* DWORD maximum anisotropy */
+ D3DTSS_BUMPENVLSCALE = 22, /* float scale for bump map luminance */
+ D3DTSS_BUMPENVLOFFSET = 23, /* float offset for bump map luminance */
+ D3DTSS_TEXTURETRANSFORMFLAGS = 24, /* D3DTEXTURETRANSFORMFLAGS controls texture transform */
+ D3DTSS_ADDRESSW = 25, /* D3DTEXTUREADDRESS for W coordinate */
+ D3DTSS_COLORARG0 = 26, /* D3DTA_* third arg for triadic ops */
+ D3DTSS_ALPHAARG0 = 27, /* D3DTA_* third arg for triadic ops */
+ D3DTSS_RESULTARG = 28, /* D3DTA_* arg for result (CURRENT or TEMP) */
+ D3DTSS_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DTEXTURESTAGESTATETYPE;
+
+// Values, used with D3DTSS_TEXCOORDINDEX, to specify that the vertex data(position
+// and normal in the camera space) should be taken as texture coordinates
+// Low 16 bits are used to specify texture coordinate index, to take the WRAP mode from
+//
+#define D3DTSS_TCI_PASSTHRU 0x00000000
+#define D3DTSS_TCI_CAMERASPACENORMAL 0x00010000
+#define D3DTSS_TCI_CAMERASPACEPOSITION 0x00020000
+#define D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR 0x00030000
+
+/*
+ * Enumerations for COLOROP and ALPHAOP texture blending operations set in
+ * texture processing stage controls in D3DTSS.
+ */
+typedef enum _D3DTEXTUREOP
+{
+ // Control
+ D3DTOP_DISABLE = 1, // disables stage
+ D3DTOP_SELECTARG1 = 2, // the default
+ D3DTOP_SELECTARG2 = 3,
+
+ // Modulate
+ D3DTOP_MODULATE = 4, // multiply args together
+ D3DTOP_MODULATE2X = 5, // multiply and 1 bit
+ D3DTOP_MODULATE4X = 6, // multiply and 2 bits
+
+ // Add
+ D3DTOP_ADD = 7, // add arguments together
+ D3DTOP_ADDSIGNED = 8, // add with -0.5 bias
+ D3DTOP_ADDSIGNED2X = 9, // as above but left 1 bit
+ D3DTOP_SUBTRACT = 10, // Arg1 - Arg2, with no saturation
+ D3DTOP_ADDSMOOTH = 11, // add 2 args, subtract product
+ // Arg1 + Arg2 - Arg1*Arg2
+ // = Arg1 + (1-Arg1)*Arg2
+
+ // Linear alpha blend: Arg1*(Alpha) + Arg2*(1-Alpha)
+ D3DTOP_BLENDDIFFUSEALPHA = 12, // iterated alpha
+ D3DTOP_BLENDTEXTUREALPHA = 13, // texture alpha
+ D3DTOP_BLENDFACTORALPHA = 14, // alpha from D3DRS_TEXTUREFACTOR
+
+ // Linear alpha blend with pre-multiplied arg1 input: Arg1 + Arg2*(1-Alpha)
+ D3DTOP_BLENDTEXTUREALPHAPM = 15, // texture alpha
+ D3DTOP_BLENDCURRENTALPHA = 16, // by alpha of current color
+
+ // Specular mapping
+ D3DTOP_PREMODULATE = 17, // modulate with next texture before use
+ D3DTOP_MODULATEALPHA_ADDCOLOR = 18, // Arg1.RGB + Arg1.A*Arg2.RGB
+ // COLOROP only
+ D3DTOP_MODULATECOLOR_ADDALPHA = 19, // Arg1.RGB*Arg2.RGB + Arg1.A
+ // COLOROP only
+ D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20, // (1-Arg1.A)*Arg2.RGB + Arg1.RGB
+ // COLOROP only
+ D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21, // (1-Arg1.RGB)*Arg2.RGB + Arg1.A
+ // COLOROP only
+
+ // Bump mapping
+ D3DTOP_BUMPENVMAP = 22, // per pixel env map perturbation
+ D3DTOP_BUMPENVMAPLUMINANCE = 23, // with luminance channel
+
+ // This can do either diffuse or specular bump mapping with correct input.
+ // Performs the function (Arg1.R*Arg2.R + Arg1.G*Arg2.G + Arg1.B*Arg2.B)
+ // where each component has been scaled and offset to make it signed.
+ // The result is replicated into all four (including alpha) channels.
+ // This is a valid COLOROP only.
+ D3DTOP_DOTPRODUCT3 = 24,
+
+ // Triadic ops
+ D3DTOP_MULTIPLYADD = 25, // Arg0 + Arg1*Arg2
+ D3DTOP_LERP = 26, // (Arg0)*Arg1 + (1-Arg0)*Arg2
+
+ D3DTOP_FORCE_DWORD = 0x7fffffff,
+} D3DTEXTUREOP;
+
+/*
+ * Values for COLORARG0,1,2, ALPHAARG0,1,2, and RESULTARG texture blending
+ * operations set in texture processing stage controls in D3DRENDERSTATE.
+ */
+#define D3DTA_SELECTMASK 0x0000000f // mask for arg selector
+#define D3DTA_DIFFUSE 0x00000000 // select diffuse color (read only)
+#define D3DTA_CURRENT 0x00000001 // select stage destination register (read/write)
+#define D3DTA_TEXTURE 0x00000002 // select texture color (read only)
+#define D3DTA_TFACTOR 0x00000003 // select D3DRS_TEXTUREFACTOR (read only)
+#define D3DTA_SPECULAR 0x00000004 // select specular color (read only)
+#define D3DTA_TEMP 0x00000005 // select temporary register color (read/write)
+#define D3DTA_COMPLEMENT 0x00000010 // take 1.0 - x (read modifier)
+#define D3DTA_ALPHAREPLICATE 0x00000020 // replicate alpha to color components (read modifier)
+
+//
+// Values for D3DTSS_***FILTER texture stage states
+//
+typedef enum _D3DTEXTUREFILTERTYPE
+{
+ D3DTEXF_NONE = 0, // filtering disabled (valid for mip filter only)
+ D3DTEXF_POINT = 1, // nearest
+ D3DTEXF_LINEAR = 2, // linear interpolation
+ D3DTEXF_ANISOTROPIC = 3, // anisotropic
+ D3DTEXF_FLATCUBIC = 4, // cubic
+ D3DTEXF_GAUSSIANCUBIC = 5, // different cubic kernel
+ D3DTEXF_FORCE_DWORD = 0x7fffffff, // force 32-bit size enum
+} D3DTEXTUREFILTERTYPE;
+
+/* Bits for Flags in ProcessVertices call */
+
+#define D3DPV_DONOTCOPYDATA (1 << 0)
+
+//-------------------------------------------------------------------
+
+// Flexible vertex format bits
+//
+#define D3DFVF_RESERVED0 0x001
+#define D3DFVF_POSITION_MASK 0x00E
+#define D3DFVF_XYZ 0x002
+#define D3DFVF_XYZRHW 0x004
+#define D3DFVF_XYZB1 0x006
+#define D3DFVF_XYZB2 0x008
+#define D3DFVF_XYZB3 0x00a
+#define D3DFVF_XYZB4 0x00c
+#define D3DFVF_XYZB5 0x00e
+
+#define D3DFVF_NORMAL 0x010
+#define D3DFVF_PSIZE 0x020
+#define D3DFVF_DIFFUSE 0x040
+#define D3DFVF_SPECULAR 0x080
+
+#define D3DFVF_TEXCOUNT_MASK 0xf00
+#define D3DFVF_TEXCOUNT_SHIFT 8
+#define D3DFVF_TEX0 0x000
+#define D3DFVF_TEX1 0x100
+#define D3DFVF_TEX2 0x200
+#define D3DFVF_TEX3 0x300
+#define D3DFVF_TEX4 0x400
+#define D3DFVF_TEX5 0x500
+#define D3DFVF_TEX6 0x600
+#define D3DFVF_TEX7 0x700
+#define D3DFVF_TEX8 0x800
+
+#define D3DFVF_LASTBETA_UBYTE4 0x1000
+
+#define D3DFVF_RESERVED2 0xE000 // 4 reserved bits
+
+//---------------------------------------------------------------------
+// Vertex Shaders
+//
+
+/*
+
+Vertex Shader Declaration
+
+The declaration portion of a vertex shader defines the static external
+interface of the shader. The information in the declaration includes:
+
+- Assignments of vertex shader input registers to data streams. These
+assignments bind a specific vertex register to a single component within a
+vertex stream. A vertex stream element is identified by a byte offset
+within the stream and a type. The type specifies the arithmetic data type
+plus the dimensionality (1, 2, 3, or 4 values). Stream data which is
+less than 4 values are always expanded out to 4 values with zero or more
+0.F values and one 1.F value.
+
+- Assignment of vertex shader input registers to implicit data from the
+primitive tessellator. This controls the loading of vertex data which is
+not loaded from a stream, but rather is generated during primitive
+tessellation prior to the vertex shader.
+
+- Loading data into the constant memory at the time a shader is set as the
+current shader. Each token specifies values for one or more contiguous 4
+DWORD constant registers. This allows the shader to update an arbitrary
+subset of the constant memory, overwriting the device state (which
+contains the current values of the constant memory). Note that these
+values can be subsequently overwritten (between DrawPrimitive calls)
+during the time a shader is bound to a device via the
+SetVertexShaderConstant method.
+
+
+Declaration arrays are single-dimensional arrays of DWORDs composed of
+multiple tokens each of which is one or more DWORDs. The single-DWORD
+token value 0xFFFFFFFF is a special token used to indicate the end of the
+declaration array. The single DWORD token value 0x00000000 is a NOP token
+with is ignored during the declaration parsing. Note that 0x00000000 is a
+valid value for DWORDs following the first DWORD for multiple word tokens.
+
+[31:29] TokenType
+ 0x0 - NOP (requires all DWORD bits to be zero)
+ 0x1 - stream selector
+ 0x2 - stream data definition (map to vertex input memory)
+ 0x3 - vertex input memory from tessellator
+ 0x4 - constant memory from shader
+ 0x5 - extension
+ 0x6 - reserved
+ 0x7 - end-of-array (requires all DWORD bits to be 1)
+
+NOP Token (single DWORD token)
+ [31:29] 0x0
+ [28:00] 0x0
+
+Stream Selector (single DWORD token)
+ [31:29] 0x1
+ [28] indicates whether this is a tessellator stream
+ [27:04] 0x0
+ [03:00] stream selector (0..15)
+
+Stream Data Definition (single DWORD token)
+ Vertex Input Register Load
+ [31:29] 0x2
+ [28] 0x0
+ [27:20] 0x0
+ [19:16] type (dimensionality and data type)
+ [15:04] 0x0
+ [03:00] vertex register address (0..15)
+ Data Skip (no register load)
+ [31:29] 0x2
+ [28] 0x1
+ [27:20] 0x0
+ [19:16] count of DWORDS to skip over (0..15)
+ [15:00] 0x0
+ Vertex Input Memory from Tessellator Data (single DWORD token)
+ [31:29] 0x3
+ [28] indicates whether data is normals or u/v
+ [27:24] 0x0
+ [23:20] vertex register address (0..15)
+ [19:16] type (dimensionality)
+ [15:04] 0x0
+ [03:00] vertex register address (0..15)
+
+Constant Memory from Shader (multiple DWORD token)
+ [31:29] 0x4
+ [28:25] count of 4*DWORD constants to load (0..15)
+ [24:07] 0x0
+ [06:00] constant memory address (0..95)
+
+Extension Token (single or multiple DWORD token)
+ [31:29] 0x5
+ [28:24] count of additional DWORDs in token (0..31)
+ [23:00] extension-specific information
+
+End-of-array token (single DWORD token)
+ [31:29] 0x7
+ [28:00] 0x1fffffff
+
+The stream selector token must be immediately followed by a contiguous set of stream data definition tokens. This token sequence fully defines that stream, including the set of elements within the stream, the order in which the elements appear, the type of each element, and the vertex register into which to load an element.
+Streams are allowed to include data which is not loaded into a vertex register, thus allowing data which is not used for this shader to exist in the vertex stream. This skipped data is defined only by a count of DWORDs to skip over, since the type information is irrelevant.
+The token sequence:
+Stream Select: stream=0
+Stream Data Definition (Load): type=FLOAT3; register=3
+Stream Data Definition (Load): type=FLOAT3; register=4
+Stream Data Definition (Skip): count=2
+Stream Data Definition (Load): type=FLOAT2; register=7
+
+defines stream zero to consist of 4 elements, 3 of which are loaded into registers and the fourth skipped over. Register 3 is loaded with the first three DWORDs in each vertex interpreted as FLOAT data. Register 4 is loaded with the 4th, 5th, and 6th DWORDs interpreted as FLOAT data. The next two DWORDs (7th and 8th) are skipped over and not loaded into any vertex input register. Register 7 is loaded with the 9th and 10th DWORDS interpreted as FLOAT data.
+Placing of tokens other than NOPs between the Stream Selector and Stream Data Definition tokens is disallowed.
+
+*/
+
+typedef enum _D3DVSD_TOKENTYPE
+{
+ D3DVSD_TOKEN_NOP = 0, // NOP or extension
+ D3DVSD_TOKEN_STREAM, // stream selector
+ D3DVSD_TOKEN_STREAMDATA, // stream data definition (map to vertex input memory)
+ D3DVSD_TOKEN_TESSELLATOR, // vertex input memory from tessellator
+ D3DVSD_TOKEN_CONSTMEM, // constant memory from shader
+ D3DVSD_TOKEN_EXT, // extension
+ D3DVSD_TOKEN_END = 7, // end-of-array (requires all DWORD bits to be 1)
+ D3DVSD_FORCE_DWORD = 0x7fffffff,// force 32-bit size enum
+} D3DVSD_TOKENTYPE;
+
+#define D3DVSD_TOKENTYPESHIFT 29
+#define D3DVSD_TOKENTYPEMASK (7 << D3DVSD_TOKENTYPESHIFT)
+
+#define D3DVSD_STREAMNUMBERSHIFT 0
+#define D3DVSD_STREAMNUMBERMASK (0xF << D3DVSD_STREAMNUMBERSHIFT)
+
+#define D3DVSD_DATALOADTYPESHIFT 28
+#define D3DVSD_DATALOADTYPEMASK (0x1 << D3DVSD_DATALOADTYPESHIFT)
+
+#define D3DVSD_DATATYPESHIFT 16
+#define D3DVSD_DATATYPEMASK (0xF << D3DVSD_DATATYPESHIFT)
+
+#define D3DVSD_SKIPCOUNTSHIFT 16
+#define D3DVSD_SKIPCOUNTMASK (0xF << D3DVSD_SKIPCOUNTSHIFT)
+
+#define D3DVSD_VERTEXREGSHIFT 0
+#define D3DVSD_VERTEXREGMASK (0x1F << D3DVSD_VERTEXREGSHIFT)
+
+#define D3DVSD_VERTEXREGINSHIFT 20
+#define D3DVSD_VERTEXREGINMASK (0xF << D3DVSD_VERTEXREGINSHIFT)
+
+#define D3DVSD_CONSTCOUNTSHIFT 25
+#define D3DVSD_CONSTCOUNTMASK (0xF << D3DVSD_CONSTCOUNTSHIFT)
+
+#define D3DVSD_CONSTADDRESSSHIFT 0
+#define D3DVSD_CONSTADDRESSMASK (0x7F << D3DVSD_CONSTADDRESSSHIFT)
+
+#define D3DVSD_CONSTRSSHIFT 16
+#define D3DVSD_CONSTRSMASK (0x1FFF << D3DVSD_CONSTRSSHIFT)
+
+#define D3DVSD_EXTCOUNTSHIFT 24
+#define D3DVSD_EXTCOUNTMASK (0x1F << D3DVSD_EXTCOUNTSHIFT)
+
+#define D3DVSD_EXTINFOSHIFT 0
+#define D3DVSD_EXTINFOMASK (0xFFFFFF << D3DVSD_EXTINFOSHIFT)
+
+#define D3DVSD_MAKETOKENTYPE(tokenType) ((tokenType << D3DVSD_TOKENTYPESHIFT) & D3DVSD_TOKENTYPEMASK)
+
+// macros for generation of CreateVertexShader Declaration token array
+
+// Set current stream
+// _StreamNumber [0..(MaxStreams-1)] stream to get data from
+//
+#define D3DVSD_STREAM( _StreamNumber ) \
+ (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAM) | (_StreamNumber))
+
+// Set tessellator stream
+//
+#define D3DVSD_STREAMTESSSHIFT 28
+#define D3DVSD_STREAMTESSMASK (1 << D3DVSD_STREAMTESSSHIFT)
+#define D3DVSD_STREAM_TESS( ) \
+ (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAM) | (D3DVSD_STREAMTESSMASK))
+
+// bind single vertex register to vertex element from vertex stream
+//
+// _VertexRegister [0..15] address of the vertex register
+// _Type [D3DVSDT_*] dimensionality and arithmetic data type
+
+#define D3DVSD_REG( _VertexRegister, _Type ) \
+ (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAMDATA) | \
+ ((_Type) << D3DVSD_DATATYPESHIFT) | (_VertexRegister))
+
+// Skip _DWORDCount DWORDs in vertex
+//
+#define D3DVSD_SKIP( _DWORDCount ) \
+ (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_STREAMDATA) | 0x10000000 | \
+ ((_DWORDCount) << D3DVSD_SKIPCOUNTSHIFT))
+
+// load data into vertex shader constant memory
+//
+// _ConstantAddress [0..95] - address of constant array to begin filling data
+// _Count [0..15] - number of constant vectors to load (4 DWORDs each)
+// followed by 4*_Count DWORDS of data
+//
+#define D3DVSD_CONST( _ConstantAddress, _Count ) \
+ (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_CONSTMEM) | \
+ ((_Count) << D3DVSD_CONSTCOUNTSHIFT) | (_ConstantAddress))
+
+// enable tessellator generated normals
+//
+// _VertexRegisterIn [0..15] address of vertex register whose input stream
+// will be used in normal computation
+// _VertexRegisterOut [0..15] address of vertex register to output the normal to
+//
+#define D3DVSD_TESSNORMAL( _VertexRegisterIn, _VertexRegisterOut ) \
+ (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_TESSELLATOR) | \
+ ((_VertexRegisterIn) << D3DVSD_VERTEXREGINSHIFT) | \
+ ((0x02) << D3DVSD_DATATYPESHIFT) | (_VertexRegisterOut))
+
+// enable tessellator generated surface parameters
+//
+// _VertexRegister [0..15] address of vertex register to output parameters
+//
+#define D3DVSD_TESSUV( _VertexRegister ) \
+ (D3DVSD_MAKETOKENTYPE(D3DVSD_TOKEN_TESSELLATOR) | 0x10000000 | \
+ ((0x01) << D3DVSD_DATATYPESHIFT) | (_VertexRegister))
+
+// Generates END token
+//
+#define D3DVSD_END() 0xFFFFFFFF
+
+// Generates NOP token
+#define D3DVSD_NOP() 0x00000000
+
+// bit declarations for _Type fields
+#define D3DVSDT_FLOAT1 0x00 // 1D float expanded to (value, 0., 0., 1.)
+#define D3DVSDT_FLOAT2 0x01 // 2D float expanded to (value, value, 0., 1.)
+#define D3DVSDT_FLOAT3 0x02 // 3D float expanded to (value, value, value, 1.)
+#define D3DVSDT_FLOAT4 0x03 // 4D float
+#define D3DVSDT_D3DCOLOR 0x04 // 4D packed unsigned bytes mapped to 0. to 1. range
+ // Input is in D3DCOLOR format (ARGB) expanded to (R, G, B, A)
+#define D3DVSDT_UBYTE4 0x05 // 4D unsigned byte
+#define D3DVSDT_SHORT2 0x06 // 2D signed short expanded to (value, value, 0., 1.)
+#define D3DVSDT_SHORT4 0x07 // 4D signed short
+
+// assignments of vertex input registers for fixed function vertex shader
+//
+#define D3DVSDE_POSITION 0
+#define D3DVSDE_BLENDWEIGHT 1
+#define D3DVSDE_BLENDINDICES 2
+#define D3DVSDE_NORMAL 3
+#define D3DVSDE_PSIZE 4
+#define D3DVSDE_DIFFUSE 5
+#define D3DVSDE_SPECULAR 6
+#define D3DVSDE_TEXCOORD0 7
+#define D3DVSDE_TEXCOORD1 8
+#define D3DVSDE_TEXCOORD2 9
+#define D3DVSDE_TEXCOORD3 10
+#define D3DVSDE_TEXCOORD4 11
+#define D3DVSDE_TEXCOORD5 12
+#define D3DVSDE_TEXCOORD6 13
+#define D3DVSDE_TEXCOORD7 14
+#define D3DVSDE_POSITION2 15
+#define D3DVSDE_NORMAL2 16
+
+// Maximum supported number of texture coordinate sets
+#define D3DDP_MAXTEXCOORD 8
+
+
+//
+// Instruction Token Bit Definitions
+//
+#define D3DSI_OPCODE_MASK 0x0000FFFF
+
+typedef enum _D3DSHADER_INSTRUCTION_OPCODE_TYPE
+{
+ D3DSIO_NOP = 0, // PS/VS
+ D3DSIO_MOV , // PS/VS
+ D3DSIO_ADD , // PS/VS
+ D3DSIO_SUB , // PS
+ D3DSIO_MAD , // PS/VS
+ D3DSIO_MUL , // PS/VS
+ D3DSIO_RCP , // VS
+ D3DSIO_RSQ , // VS
+ D3DSIO_DP3 , // PS/VS
+ D3DSIO_DP4 , // PS/VS
+ D3DSIO_MIN , // VS
+ D3DSIO_MAX , // VS
+ D3DSIO_SLT , // VS
+ D3DSIO_SGE , // VS
+ D3DSIO_EXP , // VS
+ D3DSIO_LOG , // VS
+ D3DSIO_LIT , // VS
+ D3DSIO_DST , // VS
+ D3DSIO_LRP , // PS
+ D3DSIO_FRC , // VS
+ D3DSIO_M4x4 , // VS
+ D3DSIO_M4x3 , // VS
+ D3DSIO_M3x4 , // VS
+ D3DSIO_M3x3 , // VS
+ D3DSIO_M3x2 , // VS
+
+ D3DSIO_TEXCOORD = 64, // PS
+ D3DSIO_TEXKILL , // PS
+ D3DSIO_TEX , // PS
+ D3DSIO_TEXBEM , // PS
+ D3DSIO_TEXBEML , // PS
+ D3DSIO_TEXREG2AR , // PS
+ D3DSIO_TEXREG2GB , // PS
+ D3DSIO_TEXM3x2PAD , // PS
+ D3DSIO_TEXM3x2TEX , // PS
+ D3DSIO_TEXM3x3PAD , // PS
+ D3DSIO_TEXM3x3TEX , // PS
+ D3DSIO_TEXM3x3DIFF , // PS
+ D3DSIO_TEXM3x3SPEC , // PS
+ D3DSIO_TEXM3x3VSPEC , // PS
+ D3DSIO_EXPP , // VS
+ D3DSIO_LOGP , // VS
+ D3DSIO_CND , // PS
+ D3DSIO_DEF , // PS
+ D3DSIO_TEXREG2RGB , // PS
+ D3DSIO_TEXDP3TEX , // PS
+ D3DSIO_TEXM3x2DEPTH , // PS
+ D3DSIO_TEXDP3 , // PS
+ D3DSIO_TEXM3x3 , // PS
+ D3DSIO_TEXDEPTH , // PS
+ D3DSIO_CMP , // PS
+ D3DSIO_BEM , // PS
+
+ D3DSIO_PHASE = 0xFFFD,
+ D3DSIO_COMMENT = 0xFFFE,
+ D3DSIO_END = 0xFFFF,
+
+ D3DSIO_FORCE_DWORD = 0x7fffffff, // force 32-bit size enum
+} D3DSHADER_INSTRUCTION_OPCODE_TYPE;
+
+//
+// Co-Issue Instruction Modifier - if set then this instruction is to be
+// issued in parallel with the previous instruction(s) for which this bit
+// is not set.
+//
+#define D3DSI_COISSUE 0x40000000
+
+//
+// Parameter Token Bit Definitions
+//
+#define D3DSP_REGNUM_MASK 0x00001FFF
+
+// destination parameter write mask
+#define D3DSP_WRITEMASK_0 0x00010000 // Component 0 (X;Red)
+#define D3DSP_WRITEMASK_1 0x00020000 // Component 1 (Y;Green)
+#define D3DSP_WRITEMASK_2 0x00040000 // Component 2 (Z;Blue)
+#define D3DSP_WRITEMASK_3 0x00080000 // Component 3 (W;Alpha)
+#define D3DSP_WRITEMASK_ALL 0x000F0000 // All Components
+
+// destination parameter modifiers
+#define D3DSP_DSTMOD_SHIFT 20
+#define D3DSP_DSTMOD_MASK 0x00F00000
+
+typedef enum _D3DSHADER_PARAM_DSTMOD_TYPE
+{
+ D3DSPDM_NONE = 0<<D3DSP_DSTMOD_SHIFT, // nop
+ D3DSPDM_SATURATE= 1<<D3DSP_DSTMOD_SHIFT, // clamp to 0. to 1. range
+ D3DSPDM_FORCE_DWORD = 0x7fffffff, // force 32-bit size enum
+} D3DSHADER_PARAM_DSTMOD_TYPE;
+
+// destination parameter
+#define D3DSP_DSTSHIFT_SHIFT 24
+#define D3DSP_DSTSHIFT_MASK 0x0F000000
+
+// destination/source parameter register type
+#define D3DSP_REGTYPE_SHIFT 28
+#define D3DSP_REGTYPE_MASK 0x70000000
+
+typedef enum _D3DSHADER_PARAM_REGISTER_TYPE
+{
+ D3DSPR_TEMP = 0<<D3DSP_REGTYPE_SHIFT, // Temporary Register File
+ D3DSPR_INPUT = 1<<D3DSP_REGTYPE_SHIFT, // Input Register File
+ D3DSPR_CONST = 2<<D3DSP_REGTYPE_SHIFT, // Constant Register File
+ D3DSPR_ADDR = 3<<D3DSP_REGTYPE_SHIFT, // Address Register (VS)
+ D3DSPR_TEXTURE = 3<<D3DSP_REGTYPE_SHIFT, // Texture Register File (PS)
+ D3DSPR_RASTOUT = 4<<D3DSP_REGTYPE_SHIFT, // Rasterizer Register File
+ D3DSPR_ATTROUT = 5<<D3DSP_REGTYPE_SHIFT, // Attribute Output Register File
+ D3DSPR_TEXCRDOUT= 6<<D3DSP_REGTYPE_SHIFT, // Texture Coordinate Output Register File
+ D3DSPR_FORCE_DWORD = 0x7fffffff, // force 32-bit size enum
+} D3DSHADER_PARAM_REGISTER_TYPE;
+
+// Register offsets in the Rasterizer Register File
+//
+typedef enum _D3DVS_RASTOUT_OFFSETS
+{
+ D3DSRO_POSITION = 0,
+ D3DSRO_FOG,
+ D3DSRO_POINT_SIZE,
+ D3DSRO_FORCE_DWORD = 0x7fffffff, // force 32-bit size enum
+} D3DVS_RASTOUT_OFFSETS;
+
+// Source operand addressing modes
+
+#define D3DVS_ADDRESSMODE_SHIFT 13
+#define D3DVS_ADDRESSMODE_MASK (1 << D3DVS_ADDRESSMODE_SHIFT)
+
+typedef enum _D3DVS_ADDRESSMODE_TYPE
+{
+ D3DVS_ADDRMODE_ABSOLUTE = (0 << D3DVS_ADDRESSMODE_SHIFT),
+ D3DVS_ADDRMODE_RELATIVE = (1 << D3DVS_ADDRESSMODE_SHIFT), // Relative to register A0
+ D3DVS_ADDRMODE_FORCE_DWORD = 0x7fffffff, // force 32-bit size enum
+} D3DVS_ADDRESSMODE_TYPE;
+
+// Source operand swizzle definitions
+//
+#define D3DVS_SWIZZLE_SHIFT 16
+#define D3DVS_SWIZZLE_MASK 0x00FF0000
+
+// The following bits define where to take component X from:
+
+#define D3DVS_X_X (0 << D3DVS_SWIZZLE_SHIFT)
+#define D3DVS_X_Y (1 << D3DVS_SWIZZLE_SHIFT)
+#define D3DVS_X_Z (2 << D3DVS_SWIZZLE_SHIFT)
+#define D3DVS_X_W (3 << D3DVS_SWIZZLE_SHIFT)
+
+// The following bits define where to take component Y from:
+
+#define D3DVS_Y_X (0 << (D3DVS_SWIZZLE_SHIFT + 2))
+#define D3DVS_Y_Y (1 << (D3DVS_SWIZZLE_SHIFT + 2))
+#define D3DVS_Y_Z (2 << (D3DVS_SWIZZLE_SHIFT + 2))
+#define D3DVS_Y_W (3 << (D3DVS_SWIZZLE_SHIFT + 2))
+
+// The following bits define where to take component Z from:
+
+#define D3DVS_Z_X (0 << (D3DVS_SWIZZLE_SHIFT + 4))
+#define D3DVS_Z_Y (1 << (D3DVS_SWIZZLE_SHIFT + 4))
+#define D3DVS_Z_Z (2 << (D3DVS_SWIZZLE_SHIFT + 4))
+#define D3DVS_Z_W (3 << (D3DVS_SWIZZLE_SHIFT + 4))
+
+// The following bits define where to take component W from:
+
+#define D3DVS_W_X (0 << (D3DVS_SWIZZLE_SHIFT + 6))
+#define D3DVS_W_Y (1 << (D3DVS_SWIZZLE_SHIFT + 6))
+#define D3DVS_W_Z (2 << (D3DVS_SWIZZLE_SHIFT + 6))
+#define D3DVS_W_W (3 << (D3DVS_SWIZZLE_SHIFT + 6))
+
+// Value when there is no swizzle (X is taken from X, Y is taken from Y,
+// Z is taken from Z, W is taken from W
+//
+#define D3DVS_NOSWIZZLE (D3DVS_X_X | D3DVS_Y_Y | D3DVS_Z_Z | D3DVS_W_W)
+
+// source parameter swizzle
+#define D3DSP_SWIZZLE_SHIFT 16
+#define D3DSP_SWIZZLE_MASK 0x00FF0000
+
+#define D3DSP_NOSWIZZLE \
+ ( (0 << (D3DSP_SWIZZLE_SHIFT + 0)) | \
+ (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | \
+ (2 << (D3DSP_SWIZZLE_SHIFT + 4)) | \
+ (3 << (D3DSP_SWIZZLE_SHIFT + 6)) )
+
+// pixel-shader swizzle ops
+#define D3DSP_REPLICATERED \
+ ( (0 << (D3DSP_SWIZZLE_SHIFT + 0)) | \
+ (0 << (D3DSP_SWIZZLE_SHIFT + 2)) | \
+ (0 << (D3DSP_SWIZZLE_SHIFT + 4)) | \
+ (0 << (D3DSP_SWIZZLE_SHIFT + 6)) )
+
+#define D3DSP_REPLICATEGREEN \
+ ( (1 << (D3DSP_SWIZZLE_SHIFT + 0)) | \
+ (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | \
+ (1 << (D3DSP_SWIZZLE_SHIFT + 4)) | \
+ (1 << (D3DSP_SWIZZLE_SHIFT + 6)) )
+
+#define D3DSP_REPLICATEBLUE \
+ ( (2 << (D3DSP_SWIZZLE_SHIFT + 0)) | \
+ (2 << (D3DSP_SWIZZLE_SHIFT + 2)) | \
+ (2 << (D3DSP_SWIZZLE_SHIFT + 4)) | \
+ (2 << (D3DSP_SWIZZLE_SHIFT + 6)) )
+
+#define D3DSP_REPLICATEALPHA \
+ ( (3 << (D3DSP_SWIZZLE_SHIFT + 0)) | \
+ (3 << (D3DSP_SWIZZLE_SHIFT + 2)) | \
+ (3 << (D3DSP_SWIZZLE_SHIFT + 4)) | \
+ (3 << (D3DSP_SWIZZLE_SHIFT + 6)) )
+
+// source parameter modifiers
+#define D3DSP_SRCMOD_SHIFT 24
+#define D3DSP_SRCMOD_MASK 0x0F000000
+
+typedef enum _D3DSHADER_PARAM_SRCMOD_TYPE
+{
+ D3DSPSM_NONE = 0<<D3DSP_SRCMOD_SHIFT, // nop
+ D3DSPSM_NEG = 1<<D3DSP_SRCMOD_SHIFT, // negate
+ D3DSPSM_BIAS = 2<<D3DSP_SRCMOD_SHIFT, // bias
+ D3DSPSM_BIASNEG = 3<<D3DSP_SRCMOD_SHIFT, // bias and negate
+ D3DSPSM_SIGN = 4<<D3DSP_SRCMOD_SHIFT, // sign
+ D3DSPSM_SIGNNEG = 5<<D3DSP_SRCMOD_SHIFT, // sign and negate
+ D3DSPSM_COMP = 6<<D3DSP_SRCMOD_SHIFT, // complement
+ D3DSPSM_X2 = 7<<D3DSP_SRCMOD_SHIFT, // *2
+ D3DSPSM_X2NEG = 8<<D3DSP_SRCMOD_SHIFT, // *2 and negate
+ D3DSPSM_DZ = 9<<D3DSP_SRCMOD_SHIFT, // divide through by z component
+ D3DSPSM_DW = 10<<D3DSP_SRCMOD_SHIFT, // divide through by w component
+ D3DSPSM_FORCE_DWORD = 0x7fffffff, // force 32-bit size enum
+} D3DSHADER_PARAM_SRCMOD_TYPE;
+
+// pixel shader version token
+#define D3DPS_VERSION(_Major,_Minor) (0xFFFF0000|((_Major)<<8)|(_Minor))
+
+// vertex shader version token
+#define D3DVS_VERSION(_Major,_Minor) (0xFFFE0000|((_Major)<<8)|(_Minor))
+
+// extract major/minor from version cap
+#define D3DSHADER_VERSION_MAJOR(_Version) (((_Version)>>8)&0xFF)
+#define D3DSHADER_VERSION_MINOR(_Version) (((_Version)>>0)&0xFF)
+
+// destination/source parameter register type
+#define D3DSI_COMMENTSIZE_SHIFT 16
+#define D3DSI_COMMENTSIZE_MASK 0x7FFF0000
+#define D3DSHADER_COMMENT(_DWordSize) \
+ ((((_DWordSize)<<D3DSI_COMMENTSIZE_SHIFT)&D3DSI_COMMENTSIZE_MASK)|D3DSIO_COMMENT)
+
+// pixel/vertex shader end token
+#define D3DPS_END() 0x0000FFFF
+#define D3DVS_END() 0x0000FFFF
+
+//---------------------------------------------------------------------
+
+// High order surfaces
+//
+typedef enum _D3DBASISTYPE
+{
+ D3DBASIS_BEZIER = 0,
+ D3DBASIS_BSPLINE = 1,
+ D3DBASIS_INTERPOLATE = 2,
+ D3DBASIS_FORCE_DWORD = 0x7fffffff,
+} D3DBASISTYPE;
+
+typedef enum _D3DORDERTYPE
+{
+ D3DORDER_LINEAR = 1,
+ D3DORDER_QUADRATIC = 2,
+ D3DORDER_CUBIC = 3,
+ D3DORDER_QUINTIC = 5,
+ D3DORDER_FORCE_DWORD = 0x7fffffff,
+} D3DORDERTYPE;
+
+typedef enum _D3DPATCHEDGESTYLE
+{
+ D3DPATCHEDGE_DISCRETE = 0,
+ D3DPATCHEDGE_CONTINUOUS = 1,
+ D3DPATCHEDGE_FORCE_DWORD = 0x7fffffff,
+} D3DPATCHEDGESTYLE;
+
+typedef enum _D3DSTATEBLOCKTYPE
+{
+ D3DSBT_ALL = 1, // capture all state
+ D3DSBT_PIXELSTATE = 2, // capture pixel state
+ D3DSBT_VERTEXSTATE = 3, // capture vertex state
+ D3DSBT_FORCE_DWORD = 0x7fffffff,
+} D3DSTATEBLOCKTYPE;
+
+// The D3DVERTEXBLENDFLAGS type is used with D3DRS_VERTEXBLEND state.
+//
+typedef enum _D3DVERTEXBLENDFLAGS
+{
+ D3DVBF_DISABLE = 0, // Disable vertex blending
+ D3DVBF_1WEIGHTS = 1, // 2 matrix blending
+ D3DVBF_2WEIGHTS = 2, // 3 matrix blending
+ D3DVBF_3WEIGHTS = 3, // 4 matrix blending
+ D3DVBF_TWEENING = 255, // blending using D3DRS_TWEENFACTOR
+ D3DVBF_0WEIGHTS = 256, // one matrix is used with weight 1.0
+ D3DVBF_FORCE_DWORD = 0x7fffffff, // force 32-bit size enum
+} D3DVERTEXBLENDFLAGS;
+
+typedef enum _D3DTEXTURETRANSFORMFLAGS {
+ D3DTTFF_DISABLE = 0, // texture coordinates are passed directly
+ D3DTTFF_COUNT1 = 1, // rasterizer should expect 1-D texture coords
+ D3DTTFF_COUNT2 = 2, // rasterizer should expect 2-D texture coords
+ D3DTTFF_COUNT3 = 3, // rasterizer should expect 3-D texture coords
+ D3DTTFF_COUNT4 = 4, // rasterizer should expect 4-D texture coords
+ D3DTTFF_PROJECTED = 256, // texcoords to be divided by COUNTth element
+ D3DTTFF_FORCE_DWORD = 0x7fffffff,
+} D3DTEXTURETRANSFORMFLAGS;
+
+// Macros to set texture coordinate format bits in the FVF id
+
+#define D3DFVF_TEXTUREFORMAT2 0 // Two floating point values
+#define D3DFVF_TEXTUREFORMAT1 3 // One floating point value
+#define D3DFVF_TEXTUREFORMAT3 1 // Three floating point values
+#define D3DFVF_TEXTUREFORMAT4 2 // Four floating point values
+
+#define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
+#define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
+#define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
+#define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
+
+
+//---------------------------------------------------------------------
+
+/* Direct3D8 Device types */
+typedef enum _D3DDEVTYPE
+{
+ D3DDEVTYPE_HAL = 1,
+ D3DDEVTYPE_REF = 2,
+ D3DDEVTYPE_SW = 3,
+
+ D3DDEVTYPE_FORCE_DWORD = 0x7fffffff
+} D3DDEVTYPE;
+
+/* Multi-Sample buffer types */
+typedef enum _D3DMULTISAMPLE_TYPE
+{
+ D3DMULTISAMPLE_NONE = 0,
+ D3DMULTISAMPLE_2_SAMPLES = 2,
+ D3DMULTISAMPLE_3_SAMPLES = 3,
+ D3DMULTISAMPLE_4_SAMPLES = 4,
+ D3DMULTISAMPLE_5_SAMPLES = 5,
+ D3DMULTISAMPLE_6_SAMPLES = 6,
+ D3DMULTISAMPLE_7_SAMPLES = 7,
+ D3DMULTISAMPLE_8_SAMPLES = 8,
+ D3DMULTISAMPLE_9_SAMPLES = 9,
+ D3DMULTISAMPLE_10_SAMPLES = 10,
+ D3DMULTISAMPLE_11_SAMPLES = 11,
+ D3DMULTISAMPLE_12_SAMPLES = 12,
+ D3DMULTISAMPLE_13_SAMPLES = 13,
+ D3DMULTISAMPLE_14_SAMPLES = 14,
+ D3DMULTISAMPLE_15_SAMPLES = 15,
+ D3DMULTISAMPLE_16_SAMPLES = 16,
+
+ D3DMULTISAMPLE_FORCE_DWORD = 0x7fffffff
+} D3DMULTISAMPLE_TYPE;
+
+/* Formats
+ * Most of these names have the following convention:
+ * A = Alpha
+ * R = Red
+ * G = Green
+ * B = Blue
+ * X = Unused Bits
+ * P = Palette
+ * L = Luminance
+ * U = dU coordinate for BumpMap
+ * V = dV coordinate for BumpMap
+ * S = Stencil
+ * D = Depth (e.g. Z or W buffer)
+ *
+ * Further, the order of the pieces are from MSB first; hence
+ * D3DFMT_A8L8 indicates that the high byte of this two byte
+ * format is alpha.
+ *
+ * D16 indicates:
+ * - An integer 16-bit value.
+ * - An app-lockable surface.
+ *
+ * All Depth/Stencil formats except D3DFMT_D16_LOCKABLE indicate:
+ * - no particular bit ordering per pixel, and
+ * - are not app lockable, and
+ * - the driver is allowed to consume more than the indicated
+ * number of bits per Depth channel (but not Stencil channel).
+ */
+#ifndef MAKEFOURCC
+ #define MAKEFOURCC(ch0, ch1, ch2, ch3) \
+ ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
+ ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
+#endif /* defined(MAKEFOURCC) */
+
+
+typedef enum _D3DFORMAT
+{
+ D3DFMT_UNKNOWN = 0,
+
+ D3DFMT_R8G8B8 = 20,
+ D3DFMT_A8R8G8B8 = 21,
+ D3DFMT_X8R8G8B8 = 22,
+ D3DFMT_R5G6B5 = 23,
+ D3DFMT_X1R5G5B5 = 24,
+ D3DFMT_A1R5G5B5 = 25,
+ D3DFMT_A4R4G4B4 = 26,
+ D3DFMT_R3G3B2 = 27,
+ D3DFMT_A8 = 28,
+ D3DFMT_A8R3G3B2 = 29,
+ D3DFMT_X4R4G4B4 = 30,
+ D3DFMT_A2B10G10R10 = 31,
+ D3DFMT_G16R16 = 34,
+
+ D3DFMT_A8P8 = 40,
+ D3DFMT_P8 = 41,
+
+ D3DFMT_L8 = 50,
+ D3DFMT_A8L8 = 51,
+ D3DFMT_A4L4 = 52,
+
+ D3DFMT_V8U8 = 60,
+ D3DFMT_L6V5U5 = 61,
+ D3DFMT_X8L8V8U8 = 62,
+ D3DFMT_Q8W8V8U8 = 63,
+ D3DFMT_V16U16 = 64,
+ D3DFMT_W11V11U10 = 65,
+ D3DFMT_A2W10V10U10 = 67,
+
+ D3DFMT_UYVY = MAKEFOURCC('U', 'Y', 'V', 'Y'),
+ D3DFMT_YUY2 = MAKEFOURCC('Y', 'U', 'Y', '2'),
+ D3DFMT_DXT1 = MAKEFOURCC('D', 'X', 'T', '1'),
+ D3DFMT_DXT2 = MAKEFOURCC('D', 'X', 'T', '2'),
+ D3DFMT_DXT3 = MAKEFOURCC('D', 'X', 'T', '3'),
+ D3DFMT_DXT4 = MAKEFOURCC('D', 'X', 'T', '4'),
+ D3DFMT_DXT5 = MAKEFOURCC('D', 'X', 'T', '5'),
+
+ D3DFMT_D16_LOCKABLE = 70,
+ D3DFMT_D32 = 71,
+ D3DFMT_D15S1 = 73,
+ D3DFMT_D24S8 = 75,
+ D3DFMT_D16 = 80,
+ D3DFMT_D24X8 = 77,
+ D3DFMT_D24X4S4 = 79,
+
+
+ D3DFMT_VERTEXDATA =100,
+ D3DFMT_INDEX16 =101,
+ D3DFMT_INDEX32 =102,
+
+ D3DFMT_FORCE_DWORD =0x7fffffff
+} D3DFORMAT;
+
+/* Display Modes */
+typedef struct _D3DDISPLAYMODE
+{
+ UINT Width;
+ UINT Height;
+ UINT RefreshRate;
+ D3DFORMAT Format;
+} D3DDISPLAYMODE;
+
+/* Creation Parameters */
+typedef struct _D3DDEVICE_CREATION_PARAMETERS
+{
+ UINT AdapterOrdinal;
+ D3DDEVTYPE DeviceType;
+ HWND hFocusWindow;
+ DWORD BehaviorFlags;
+} D3DDEVICE_CREATION_PARAMETERS;
+
+
+/* SwapEffects */
+typedef enum _D3DSWAPEFFECT
+{
+ D3DSWAPEFFECT_DISCARD = 1,
+ D3DSWAPEFFECT_FLIP = 2,
+ D3DSWAPEFFECT_COPY = 3,
+ D3DSWAPEFFECT_COPY_VSYNC = 4,
+
+ D3DSWAPEFFECT_FORCE_DWORD = 0x7fffffff
+} D3DSWAPEFFECT;
+
+/* Pool types */
+typedef enum _D3DPOOL {
+ D3DPOOL_DEFAULT = 0,
+ D3DPOOL_MANAGED = 1,
+ D3DPOOL_SYSTEMMEM = 2,
+ D3DPOOL_SCRATCH = 3,
+
+ D3DPOOL_FORCE_DWORD = 0x7fffffff
+} D3DPOOL;
+
+
+/* RefreshRate pre-defines */
+#define D3DPRESENT_RATE_DEFAULT 0x00000000
+#define D3DPRESENT_RATE_UNLIMITED 0x7fffffff
+
+
+/* Resize Optional Parameters */
+typedef struct _D3DPRESENT_PARAMETERS_
+{
+ UINT BackBufferWidth;
+ UINT BackBufferHeight;
+ D3DFORMAT BackBufferFormat;
+ UINT BackBufferCount;
+
+ D3DMULTISAMPLE_TYPE MultiSampleType;
+
+ D3DSWAPEFFECT SwapEffect;
+ HWND hDeviceWindow;
+ BOOL Windowed;
+ BOOL EnableAutoDepthStencil;
+ D3DFORMAT AutoDepthStencilFormat;
+ DWORD Flags;
+
+ /* Following elements must be zero for Windowed mode */
+ UINT FullScreen_RefreshRateInHz;
+ UINT FullScreen_PresentationInterval;
+
+} D3DPRESENT_PARAMETERS;
+
+// Values for D3DPRESENT_PARAMETERS.Flags
+
+#define D3DPRESENTFLAG_LOCKABLE_BACKBUFFER 0x00000001
+
+
+/* Gamma Ramp: Same as DX7 */
+
+typedef struct _D3DGAMMARAMP
+{
+ WORD red [256];
+ WORD green[256];
+ WORD blue [256];
+} D3DGAMMARAMP;
+
+/* Back buffer types */
+typedef enum _D3DBACKBUFFER_TYPE
+{
+ D3DBACKBUFFER_TYPE_MONO = 0,
+ D3DBACKBUFFER_TYPE_LEFT = 1,
+ D3DBACKBUFFER_TYPE_RIGHT = 2,
+
+ D3DBACKBUFFER_TYPE_FORCE_DWORD = 0x7fffffff
+} D3DBACKBUFFER_TYPE;
+
+
+/* Types */
+typedef enum _D3DRESOURCETYPE {
+ D3DRTYPE_SURFACE = 1,
+ D3DRTYPE_VOLUME = 2,
+ D3DRTYPE_TEXTURE = 3,
+ D3DRTYPE_VOLUMETEXTURE = 4,
+ D3DRTYPE_CUBETEXTURE = 5,
+ D3DRTYPE_VERTEXBUFFER = 6,
+ D3DRTYPE_INDEXBUFFER = 7,
+
+
+ D3DRTYPE_FORCE_DWORD = 0x7fffffff
+} D3DRESOURCETYPE;
+
+/* Usages */
+#define D3DUSAGE_RENDERTARGET (0x00000001L)
+#define D3DUSAGE_DEPTHSTENCIL (0x00000002L)
+
+/* Usages for Vertex/Index buffers */
+#define D3DUSAGE_WRITEONLY (0x00000008L)
+#define D3DUSAGE_SOFTWAREPROCESSING (0x00000010L)
+#define D3DUSAGE_DONOTCLIP (0x00000020L)
+#define D3DUSAGE_POINTS (0x00000040L)
+#define D3DUSAGE_RTPATCHES (0x00000080L)
+#define D3DUSAGE_NPATCHES (0x00000100L)
+#define D3DUSAGE_DYNAMIC (0x00000200L)
+
+
+
+
+
+
+
+
+
+/* CubeMap Face identifiers */
+typedef enum _D3DCUBEMAP_FACES
+{
+ D3DCUBEMAP_FACE_POSITIVE_X = 0,
+ D3DCUBEMAP_FACE_NEGATIVE_X = 1,
+ D3DCUBEMAP_FACE_POSITIVE_Y = 2,
+ D3DCUBEMAP_FACE_NEGATIVE_Y = 3,
+ D3DCUBEMAP_FACE_POSITIVE_Z = 4,
+ D3DCUBEMAP_FACE_NEGATIVE_Z = 5,
+
+ D3DCUBEMAP_FACE_FORCE_DWORD = 0x7fffffff
+} D3DCUBEMAP_FACES;
+
+
+/* Lock flags */
+
+#define D3DLOCK_READONLY 0x00000010L
+#define D3DLOCK_DISCARD 0x00002000L
+#define D3DLOCK_NOOVERWRITE 0x00001000L
+#define D3DLOCK_NOSYSLOCK 0x00000800L
+
+#define D3DLOCK_NO_DIRTY_UPDATE 0x00008000L
+
+
+
+
+
+
+/* Vertex Buffer Description */
+typedef struct _D3DVERTEXBUFFER_DESC
+{
+ D3DFORMAT Format;
+ D3DRESOURCETYPE Type;
+ DWORD Usage;
+ D3DPOOL Pool;
+ UINT Size;
+
+ DWORD FVF;
+
+} D3DVERTEXBUFFER_DESC;
+
+/* Index Buffer Description */
+typedef struct _D3DINDEXBUFFER_DESC
+{
+ D3DFORMAT Format;
+ D3DRESOURCETYPE Type;
+ DWORD Usage;
+ D3DPOOL Pool;
+ UINT Size;
+} D3DINDEXBUFFER_DESC;
+
+
+/* Surface Description */
+typedef struct _D3DSURFACE_DESC
+{
+ D3DFORMAT Format;
+ D3DRESOURCETYPE Type;
+ DWORD Usage;
+ D3DPOOL Pool;
+ UINT Size;
+
+ D3DMULTISAMPLE_TYPE MultiSampleType;
+ UINT Width;
+ UINT Height;
+} D3DSURFACE_DESC;
+
+typedef struct _D3DVOLUME_DESC
+{
+ D3DFORMAT Format;
+ D3DRESOURCETYPE Type;
+ DWORD Usage;
+ D3DPOOL Pool;
+ UINT Size;
+
+ UINT Width;
+ UINT Height;
+ UINT Depth;
+} D3DVOLUME_DESC;
+
+/* Structure for LockRect */
+typedef struct _D3DLOCKED_RECT
+{
+ INT Pitch;
+ void* pBits;
+} D3DLOCKED_RECT;
+
+/* Structures for LockBox */
+typedef struct _D3DBOX
+{
+ UINT Left;
+ UINT Top;
+ UINT Right;
+ UINT Bottom;
+ UINT Front;
+ UINT Back;
+} D3DBOX;
+
+typedef struct _D3DLOCKED_BOX
+{
+ INT RowPitch;
+ INT SlicePitch;
+ void* pBits;
+} D3DLOCKED_BOX;
+
+/* Structures for LockRange */
+typedef struct _D3DRANGE
+{
+ UINT Offset;
+ UINT Size;
+} D3DRANGE;
+
+/* Structures for high order primitives */
+typedef struct _D3DRECTPATCH_INFO
+{
+ UINT StartVertexOffsetWidth;
+ UINT StartVertexOffsetHeight;
+ UINT Width;
+ UINT Height;
+ UINT Stride;
+ D3DBASISTYPE Basis;
+ D3DORDERTYPE Order;
+} D3DRECTPATCH_INFO;
+
+typedef struct _D3DTRIPATCH_INFO
+{
+ UINT StartVertexOffset;
+ UINT NumVertices;
+ D3DBASISTYPE Basis;
+ D3DORDERTYPE Order;
+} D3DTRIPATCH_INFO;
+
+/* Adapter Identifier */
+
+#define MAX_DEVICE_IDENTIFIER_STRING 512
+typedef struct _D3DADAPTER_IDENTIFIER8
+{
+ char Driver[MAX_DEVICE_IDENTIFIER_STRING];
+ char Description[MAX_DEVICE_IDENTIFIER_STRING];
+
+#ifdef _WIN32
+ LARGE_INTEGER DriverVersion; /* Defined for 32 bit components */
+#else
+ DWORD DriverVersionLowPart; /* Defined for 16 bit driver components */
+ DWORD DriverVersionHighPart;
+#endif
+
+ DWORD VendorId;
+ DWORD DeviceId;
+ DWORD SubSysId;
+ DWORD Revision;
+
+ GUID DeviceIdentifier;
+
+ DWORD WHQLLevel;
+
+} D3DADAPTER_IDENTIFIER8;
+
+
+/* Raster Status structure returned by GetRasterStatus */
+typedef struct _D3DRASTER_STATUS
+{
+ BOOL InVBlank;
+ UINT ScanLine;
+} D3DRASTER_STATUS;
+
+
+
+/* Debug monitor tokens (DEBUG only)
+
+ Note that if D3DRS_DEBUGMONITORTOKEN is set, the call is treated as
+ passing a token to the debug monitor. For example, if, after passing
+ D3DDMT_ENABLE/DISABLE to D3DRS_DEBUGMONITORTOKEN other token values
+ are passed in, the enabled/disabled state of the debug
+ monitor will still persist.
+
+ The debug monitor defaults to enabled.
+
+ Calling GetRenderState on D3DRS_DEBUGMONITORTOKEN is not of any use.
+*/
+typedef enum _D3DDEBUGMONITORTOKENS {
+ D3DDMT_ENABLE = 0, // enable debug monitor
+ D3DDMT_DISABLE = 1, // disable debug monitor
+ D3DDMT_FORCE_DWORD = 0x7fffffff,
+} D3DDEBUGMONITORTOKENS;
+
+// GetInfo IDs
+
+#define D3DDEVINFOID_RESOURCEMANAGER 5 /* Used with D3DDEVINFO_RESOURCEMANAGER */
+#define D3DDEVINFOID_VERTEXSTATS 6 /* Used with D3DDEVINFO_D3DVERTEXSTATS */
+
+typedef struct _D3DRESOURCESTATS
+{
+// Data collected since last Present()
+ BOOL bThrashing; /* indicates if thrashing */
+ DWORD ApproxBytesDownloaded; /* Approximate number of bytes downloaded by resource manager */
+ DWORD NumEvicts; /* number of objects evicted */
+ DWORD NumVidCreates; /* number of objects created in video memory */
+ DWORD LastPri; /* priority of last object evicted */
+ DWORD NumUsed; /* number of objects set to the device */
+ DWORD NumUsedInVidMem; /* number of objects set to the device, which are already in video memory */
+// Persistent data
+ DWORD WorkingSet; /* number of objects in video memory */
+ DWORD WorkingSetBytes; /* number of bytes in video memory */
+ DWORD TotalManaged; /* total number of managed objects */
+ DWORD TotalBytes; /* total number of bytes of managed objects */
+} D3DRESOURCESTATS;
+
+#define D3DRTYPECOUNT (D3DRTYPE_INDEXBUFFER+1)
+
+typedef struct _D3DDEVINFO_RESOURCEMANAGER
+{
+ D3DRESOURCESTATS stats[D3DRTYPECOUNT];
+} D3DDEVINFO_RESOURCEMANAGER, *LPD3DDEVINFO_RESOURCEMANAGER;
+
+typedef struct _D3DDEVINFO_D3DVERTEXSTATS
+{
+ DWORD NumRenderedTriangles; /* total number of triangles that are not clipped in this frame */
+ DWORD NumExtraClippingTriangles; /* Number of new triangles generated by clipping */
+} D3DDEVINFO_D3DVERTEXSTATS, *LPD3DDEVINFO_D3DVERTEXSTATS;
+
+
+#pragma pack()
+#if _MSC_VER >= 1200
+#pragma warning(pop)
+#else
+#pragma warning(default:4201)
+#endif
+
+#endif /* (DIRECT3D_VERSION >= 0x0800) */
+#endif /* _D3D8TYPES(P)_H_ */
+
diff --git a/include/dx/d3dcaps.h b/include/dx/d3dcaps.h
new file mode 100644
index 000000000..701bf9c13
--- /dev/null
+++ b/include/dx/d3dcaps.h
@@ -0,0 +1,601 @@
+/*==========================================================================;
+ *
+ * Copyright (C) Microsoft Corporation. All Rights Reserved.
+ *
+ * File: d3dcaps.h
+ * Content: Direct3D capabilities include file
+ *
+ ***************************************************************************/
+
+#ifndef _D3DCAPS_H
+#define _D3DCAPS_H
+
+/*
+ * Pull in DirectDraw include file automatically:
+ */
+#include "ddraw.h"
+
+#ifndef DIRECT3D_VERSION
+#define DIRECT3D_VERSION 0x0700
+#endif
+
+#if defined(_X86_) || defined(_IA64_)
+#pragma pack(4)
+#endif
+
+/* Description of capabilities of transform */
+
+typedef struct _D3DTRANSFORMCAPS {
+ DWORD dwSize;
+ DWORD dwCaps;
+} D3DTRANSFORMCAPS, *LPD3DTRANSFORMCAPS;
+
+#define D3DTRANSFORMCAPS_CLIP 0x00000001L /* Will clip whilst transforming */
+
+/* Description of capabilities of lighting */
+
+typedef struct _D3DLIGHTINGCAPS {
+ DWORD dwSize;
+ DWORD dwCaps; /* Lighting caps */
+ DWORD dwLightingModel; /* Lighting model - RGB or mono */
+ DWORD dwNumLights; /* Number of lights that can be handled */
+} D3DLIGHTINGCAPS, *LPD3DLIGHTINGCAPS;
+
+#define D3DLIGHTINGMODEL_RGB 0x00000001L
+#define D3DLIGHTINGMODEL_MONO 0x00000002L
+
+#define D3DLIGHTCAPS_POINT 0x00000001L /* Point lights supported */
+#define D3DLIGHTCAPS_SPOT 0x00000002L /* Spot lights supported */
+#define D3DLIGHTCAPS_DIRECTIONAL 0x00000004L /* Directional lights supported */
+#if(DIRECT3D_VERSION < 0x700)
+#define D3DLIGHTCAPS_PARALLELPOINT 0x00000008L /* Parallel point lights supported */
+#endif
+#if(DIRECT3D_VERSION < 0x500)
+#define D3DLIGHTCAPS_GLSPOT 0x00000010L /* GL syle spot lights supported */
+#endif
+
+/* Description of capabilities for each primitive type */
+
+typedef struct _D3DPrimCaps {
+ DWORD dwSize;
+ DWORD dwMiscCaps; /* Capability flags */
+ DWORD dwRasterCaps;
+ DWORD dwZCmpCaps;
+ DWORD dwSrcBlendCaps;
+ DWORD dwDestBlendCaps;
+ DWORD dwAlphaCmpCaps;
+ DWORD dwShadeCaps;
+ DWORD dwTextureCaps;
+ DWORD dwTextureFilterCaps;
+ DWORD dwTextureBlendCaps;
+ DWORD dwTextureAddressCaps;
+ DWORD dwStippleWidth; /* maximum width and height of */
+ DWORD dwStippleHeight; /* of supported stipple (up to 32x32) */
+} D3DPRIMCAPS, *LPD3DPRIMCAPS;
+
+/* D3DPRIMCAPS dwMiscCaps */
+
+#define D3DPMISCCAPS_MASKPLANES 0x00000001L
+#define D3DPMISCCAPS_MASKZ 0x00000002L
+#define D3DPMISCCAPS_LINEPATTERNREP 0x00000004L
+#define D3DPMISCCAPS_CONFORMANT 0x00000008L
+#define D3DPMISCCAPS_CULLNONE 0x00000010L
+#define D3DPMISCCAPS_CULLCW 0x00000020L
+#define D3DPMISCCAPS_CULLCCW 0x00000040L
+
+/* D3DPRIMCAPS dwRasterCaps */
+
+#define D3DPRASTERCAPS_DITHER 0x00000001L
+#define D3DPRASTERCAPS_ROP2 0x00000002L
+#define D3DPRASTERCAPS_XOR 0x00000004L
+#define D3DPRASTERCAPS_PAT 0x00000008L
+#define D3DPRASTERCAPS_ZTEST 0x00000010L
+#define D3DPRASTERCAPS_SUBPIXEL 0x00000020L
+#define D3DPRASTERCAPS_SUBPIXELX 0x00000040L
+#define D3DPRASTERCAPS_FOGVERTEX 0x00000080L
+#define D3DPRASTERCAPS_FOGTABLE 0x00000100L
+#define D3DPRASTERCAPS_STIPPLE 0x00000200L
+#if(DIRECT3D_VERSION >= 0x0500)
+#define D3DPRASTERCAPS_ANTIALIASSORTDEPENDENT 0x00000400L
+#define D3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT 0x00000800L
+#define D3DPRASTERCAPS_ANTIALIASEDGES 0x00001000L
+#define D3DPRASTERCAPS_MIPMAPLODBIAS 0x00002000L
+#define D3DPRASTERCAPS_ZBIAS 0x00004000L
+#define D3DPRASTERCAPS_ZBUFFERLESSHSR 0x00008000L
+#define D3DPRASTERCAPS_FOGRANGE 0x00010000L
+#define D3DPRASTERCAPS_ANISOTROPY 0x00020000L
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+#if(DIRECT3D_VERSION >= 0x0600)
+#define D3DPRASTERCAPS_WBUFFER 0x00040000L
+#define D3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT 0x00080000L
+#define D3DPRASTERCAPS_WFOG 0x00100000L
+#define D3DPRASTERCAPS_ZFOG 0x00200000L
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+/* D3DPRIMCAPS dwZCmpCaps, dwAlphaCmpCaps */
+
+#define D3DPCMPCAPS_NEVER 0x00000001L
+#define D3DPCMPCAPS_LESS 0x00000002L
+#define D3DPCMPCAPS_EQUAL 0x00000004L
+#define D3DPCMPCAPS_LESSEQUAL 0x00000008L
+#define D3DPCMPCAPS_GREATER 0x00000010L
+#define D3DPCMPCAPS_NOTEQUAL 0x00000020L
+#define D3DPCMPCAPS_GREATEREQUAL 0x00000040L
+#define D3DPCMPCAPS_ALWAYS 0x00000080L
+
+/* D3DPRIMCAPS dwSourceBlendCaps, dwDestBlendCaps */
+
+#define D3DPBLENDCAPS_ZERO 0x00000001L
+#define D3DPBLENDCAPS_ONE 0x00000002L
+#define D3DPBLENDCAPS_SRCCOLOR 0x00000004L
+#define D3DPBLENDCAPS_INVSRCCOLOR 0x00000008L
+#define D3DPBLENDCAPS_SRCALPHA 0x00000010L
+#define D3DPBLENDCAPS_INVSRCALPHA 0x00000020L
+#define D3DPBLENDCAPS_DESTALPHA 0x00000040L
+#define D3DPBLENDCAPS_INVDESTALPHA 0x00000080L
+#define D3DPBLENDCAPS_DESTCOLOR 0x00000100L
+#define D3DPBLENDCAPS_INVDESTCOLOR 0x00000200L
+#define D3DPBLENDCAPS_SRCALPHASAT 0x00000400L
+#define D3DPBLENDCAPS_BOTHSRCALPHA 0x00000800L
+#define D3DPBLENDCAPS_BOTHINVSRCALPHA 0x00001000L
+
+/* D3DPRIMCAPS dwShadeCaps */
+
+#define D3DPSHADECAPS_COLORFLATMONO 0x00000001L
+#define D3DPSHADECAPS_COLORFLATRGB 0x00000002L
+#define D3DPSHADECAPS_COLORGOURAUDMONO 0x00000004L
+#define D3DPSHADECAPS_COLORGOURAUDRGB 0x00000008L
+#define D3DPSHADECAPS_COLORPHONGMONO 0x00000010L
+#define D3DPSHADECAPS_COLORPHONGRGB 0x00000020L
+
+#define D3DPSHADECAPS_SPECULARFLATMONO 0x00000040L
+#define D3DPSHADECAPS_SPECULARFLATRGB 0x00000080L
+#define D3DPSHADECAPS_SPECULARGOURAUDMONO 0x00000100L
+#define D3DPSHADECAPS_SPECULARGOURAUDRGB 0x00000200L
+#define D3DPSHADECAPS_SPECULARPHONGMONO 0x00000400L
+#define D3DPSHADECAPS_SPECULARPHONGRGB 0x00000800L
+
+#define D3DPSHADECAPS_ALPHAFLATBLEND 0x00001000L
+#define D3DPSHADECAPS_ALPHAFLATSTIPPLED 0x00002000L
+#define D3DPSHADECAPS_ALPHAGOURAUDBLEND 0x00004000L
+#define D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED 0x00008000L
+#define D3DPSHADECAPS_ALPHAPHONGBLEND 0x00010000L
+#define D3DPSHADECAPS_ALPHAPHONGSTIPPLED 0x00020000L
+
+#define D3DPSHADECAPS_FOGFLAT 0x00040000L
+#define D3DPSHADECAPS_FOGGOURAUD 0x00080000L
+#define D3DPSHADECAPS_FOGPHONG 0x00100000L
+
+/* D3DPRIMCAPS dwTextureCaps */
+
+/*
+ * Perspective-correct texturing is supported
+ */
+#define D3DPTEXTURECAPS_PERSPECTIVE 0x00000001L
+
+/*
+ * Power-of-2 texture dimensions are required
+ */
+#define D3DPTEXTURECAPS_POW2 0x00000002L
+
+/*
+ * Alpha in texture pixels is supported
+ */
+#define D3DPTEXTURECAPS_ALPHA 0x00000004L
+
+/*
+ * Color-keyed textures are supported
+ */
+#define D3DPTEXTURECAPS_TRANSPARENCY 0x00000008L
+
+/*
+ * obsolete, see D3DPTADDRESSCAPS_BORDER
+ */
+#define D3DPTEXTURECAPS_BORDER 0x00000010L
+
+/*
+ * Only square textures are supported
+ */
+#define D3DPTEXTURECAPS_SQUAREONLY 0x00000020L
+
+#if(DIRECT3D_VERSION >= 0x0600)
+/*
+ * Texture indices are not scaled by the texture size prior
+ * to interpolation.
+ */
+#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 0x00000040L
+
+/*
+ * Device can draw alpha from texture palettes
+ */
+#define D3DPTEXTURECAPS_ALPHAPALETTE 0x00000080L
+
+/*
+ * Device can use non-POW2 textures if:
+ * 1) D3DTEXTURE_ADDRESS is set to CLAMP for this texture's stage
+ * 2) D3DRS_WRAP(N) is zero for this texture's coordinates
+ * 3) mip mapping is not enabled (use magnification filter only)
+ */
+#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL 0x00000100L
+
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+#if(DIRECT3D_VERSION >= 0x0700)
+
+// 0x00000200L unused
+
+/*
+ * Device can divide transformed texture coordinates by the
+ * COUNTth texture coordinate (can do D3DTTFF_PROJECTED)
+ */
+#define D3DPTEXTURECAPS_PROJECTED 0x00000400L
+
+/*
+ * Device can do cubemap textures
+ */
+#define D3DPTEXTURECAPS_CUBEMAP 0x00000800L
+
+#define D3DPTEXTURECAPS_COLORKEYBLEND 0x00001000L
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+/* D3DPRIMCAPS dwTextureFilterCaps */
+
+#define D3DPTFILTERCAPS_NEAREST 0x00000001L
+#define D3DPTFILTERCAPS_LINEAR 0x00000002L
+#define D3DPTFILTERCAPS_MIPNEAREST 0x00000004L
+#define D3DPTFILTERCAPS_MIPLINEAR 0x00000008L
+#define D3DPTFILTERCAPS_LINEARMIPNEAREST 0x00000010L
+#define D3DPTFILTERCAPS_LINEARMIPLINEAR 0x00000020L
+
+#if(DIRECT3D_VERSION >= 0x0600)
+/* Device3 Min Filter */
+#define D3DPTFILTERCAPS_MINFPOINT 0x00000100L
+#define D3DPTFILTERCAPS_MINFLINEAR 0x00000200L
+#define D3DPTFILTERCAPS_MINFANISOTROPIC 0x00000400L
+
+/* Device3 Mip Filter */
+#define D3DPTFILTERCAPS_MIPFPOINT 0x00010000L
+#define D3DPTFILTERCAPS_MIPFLINEAR 0x00020000L
+
+/* Device3 Mag Filter */
+#define D3DPTFILTERCAPS_MAGFPOINT 0x01000000L
+#define D3DPTFILTERCAPS_MAGFLINEAR 0x02000000L
+#define D3DPTFILTERCAPS_MAGFANISOTROPIC 0x04000000L
+#define D3DPTFILTERCAPS_MAGFAFLATCUBIC 0x08000000L
+#define D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC 0x10000000L
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+/* D3DPRIMCAPS dwTextureBlendCaps */
+
+#define D3DPTBLENDCAPS_DECAL 0x00000001L
+#define D3DPTBLENDCAPS_MODULATE 0x00000002L
+#define D3DPTBLENDCAPS_DECALALPHA 0x00000004L
+#define D3DPTBLENDCAPS_MODULATEALPHA 0x00000008L
+#define D3DPTBLENDCAPS_DECALMASK 0x00000010L
+#define D3DPTBLENDCAPS_MODULATEMASK 0x00000020L
+#define D3DPTBLENDCAPS_COPY 0x00000040L
+#if(DIRECT3D_VERSION >= 0x0500)
+#define D3DPTBLENDCAPS_ADD 0x00000080L
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+/* D3DPRIMCAPS dwTextureAddressCaps */
+#define D3DPTADDRESSCAPS_WRAP 0x00000001L
+#define D3DPTADDRESSCAPS_MIRROR 0x00000002L
+#define D3DPTADDRESSCAPS_CLAMP 0x00000004L
+#if(DIRECT3D_VERSION >= 0x0500)
+#define D3DPTADDRESSCAPS_BORDER 0x00000008L
+#define D3DPTADDRESSCAPS_INDEPENDENTUV 0x00000010L
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#if(DIRECT3D_VERSION >= 0x0600)
+
+/* D3DDEVICEDESC dwStencilCaps */
+
+#define D3DSTENCILCAPS_KEEP 0x00000001L
+#define D3DSTENCILCAPS_ZERO 0x00000002L
+#define D3DSTENCILCAPS_REPLACE 0x00000004L
+#define D3DSTENCILCAPS_INCRSAT 0x00000008L
+#define D3DSTENCILCAPS_DECRSAT 0x00000010L
+#define D3DSTENCILCAPS_INVERT 0x00000020L
+#define D3DSTENCILCAPS_INCR 0x00000040L
+#define D3DSTENCILCAPS_DECR 0x00000080L
+
+/* D3DDEVICEDESC dwTextureOpCaps */
+
+#define D3DTEXOPCAPS_DISABLE 0x00000001L
+#define D3DTEXOPCAPS_SELECTARG1 0x00000002L
+#define D3DTEXOPCAPS_SELECTARG2 0x00000004L
+#define D3DTEXOPCAPS_MODULATE 0x00000008L
+#define D3DTEXOPCAPS_MODULATE2X 0x00000010L
+#define D3DTEXOPCAPS_MODULATE4X 0x00000020L
+#define D3DTEXOPCAPS_ADD 0x00000040L
+#define D3DTEXOPCAPS_ADDSIGNED 0x00000080L
+#define D3DTEXOPCAPS_ADDSIGNED2X 0x00000100L
+#define D3DTEXOPCAPS_SUBTRACT 0x00000200L
+#define D3DTEXOPCAPS_ADDSMOOTH 0x00000400L
+#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA 0x00000800L
+#define D3DTEXOPCAPS_BLENDTEXTUREALPHA 0x00001000L
+#define D3DTEXOPCAPS_BLENDFACTORALPHA 0x00002000L
+#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM 0x00004000L
+#define D3DTEXOPCAPS_BLENDCURRENTALPHA 0x00008000L
+#define D3DTEXOPCAPS_PREMODULATE 0x00010000L
+#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR 0x00020000L
+#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA 0x00040000L
+#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR 0x00080000L
+#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA 0x00100000L
+#define D3DTEXOPCAPS_BUMPENVMAP 0x00200000L
+#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE 0x00400000L
+#define D3DTEXOPCAPS_DOTPRODUCT3 0x00800000L
+
+/* D3DDEVICEDESC dwFVFCaps flags */
+
+#define D3DFVFCAPS_TEXCOORDCOUNTMASK 0x0000ffffL /* mask for texture coordinate count field */
+#define D3DFVFCAPS_DONOTSTRIPELEMENTS 0x00080000L /* Device prefers that vertex elements not be stripped */
+
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+/*
+ * Description for a device.
+ * This is used to describe a device that is to be created or to query
+ * the current device.
+ */
+typedef struct _D3DDeviceDesc {
+ DWORD dwSize; /* Size of D3DDEVICEDESC structure */
+ DWORD dwFlags; /* Indicates which fields have valid data */
+ D3DCOLORMODEL dcmColorModel; /* Color model of device */
+ DWORD dwDevCaps; /* Capabilities of device */
+ D3DTRANSFORMCAPS dtcTransformCaps; /* Capabilities of transform */
+ BOOL bClipping; /* Device can do 3D clipping */
+ D3DLIGHTINGCAPS dlcLightingCaps; /* Capabilities of lighting */
+ D3DPRIMCAPS dpcLineCaps;
+ D3DPRIMCAPS dpcTriCaps;
+ DWORD dwDeviceRenderBitDepth; /* One of DDBB_8, 16, etc.. */
+ DWORD dwDeviceZBufferBitDepth;/* One of DDBD_16, 32, etc.. */
+ DWORD dwMaxBufferSize; /* Maximum execute buffer size */
+ DWORD dwMaxVertexCount; /* Maximum vertex count */
+#if(DIRECT3D_VERSION >= 0x0500)
+ // *** New fields for DX5 *** //
+
+ // Width and height caps are 0 for legacy HALs.
+ DWORD dwMinTextureWidth, dwMinTextureHeight;
+ DWORD dwMaxTextureWidth, dwMaxTextureHeight;
+ DWORD dwMinStippleWidth, dwMaxStippleWidth;
+ DWORD dwMinStippleHeight, dwMaxStippleHeight;
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#if(DIRECT3D_VERSION >= 0x0600)
+ // New fields for DX6
+ DWORD dwMaxTextureRepeat;
+ DWORD dwMaxTextureAspectRatio;
+ DWORD dwMaxAnisotropy;
+
+ // Guard band that the rasterizer can accommodate
+ // Screen-space vertices inside this space but outside the viewport
+ // will get clipped properly.
+ D3DVALUE dvGuardBandLeft;
+ D3DVALUE dvGuardBandTop;
+ D3DVALUE dvGuardBandRight;
+ D3DVALUE dvGuardBandBottom;
+
+ D3DVALUE dvExtentsAdjust;
+ DWORD dwStencilCaps;
+
+ DWORD dwFVFCaps;
+ DWORD dwTextureOpCaps;
+ WORD wMaxTextureBlendStages;
+ WORD wMaxSimultaneousTextures;
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+} D3DDEVICEDESC, *LPD3DDEVICEDESC;
+
+#if(DIRECT3D_VERSION >= 0x0700)
+typedef struct _D3DDeviceDesc7 {
+ DWORD dwDevCaps; /* Capabilities of device */
+ D3DPRIMCAPS dpcLineCaps;
+ D3DPRIMCAPS dpcTriCaps;
+ DWORD dwDeviceRenderBitDepth; /* One of DDBB_8, 16, etc.. */
+ DWORD dwDeviceZBufferBitDepth;/* One of DDBD_16, 32, etc.. */
+
+ DWORD dwMinTextureWidth, dwMinTextureHeight;
+ DWORD dwMaxTextureWidth, dwMaxTextureHeight;
+
+ DWORD dwMaxTextureRepeat;
+ DWORD dwMaxTextureAspectRatio;
+ DWORD dwMaxAnisotropy;
+
+ D3DVALUE dvGuardBandLeft;
+ D3DVALUE dvGuardBandTop;
+ D3DVALUE dvGuardBandRight;
+ D3DVALUE dvGuardBandBottom;
+
+ D3DVALUE dvExtentsAdjust;
+ DWORD dwStencilCaps;
+
+ DWORD dwFVFCaps;
+ DWORD dwTextureOpCaps;
+ WORD wMaxTextureBlendStages;
+ WORD wMaxSimultaneousTextures;
+
+ DWORD dwMaxActiveLights;
+ D3DVALUE dvMaxVertexW;
+ GUID deviceGUID;
+
+ WORD wMaxUserClipPlanes;
+ WORD wMaxVertexBlendMatrices;
+
+ DWORD dwVertexProcessingCaps;
+
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+ DWORD dwReserved3;
+ DWORD dwReserved4;
+} D3DDEVICEDESC7, *LPD3DDEVICEDESC7;
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+#define D3DDEVICEDESCSIZE (sizeof(D3DDEVICEDESC))
+#define D3DDEVICEDESC7SIZE (sizeof(D3DDEVICEDESC7))
+
+typedef HRESULT (CALLBACK * LPD3DENUMDEVICESCALLBACK)(GUID FAR *lpGuid, LPSTR lpDeviceDescription, LPSTR lpDeviceName, LPD3DDEVICEDESC, LPD3DDEVICEDESC, LPVOID);
+
+#if(DIRECT3D_VERSION >= 0x0700)
+typedef HRESULT (CALLBACK * LPD3DENUMDEVICESCALLBACK7)(LPSTR lpDeviceDescription, LPSTR lpDeviceName, LPD3DDEVICEDESC7, LPVOID);
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+/* D3DDEVICEDESC dwFlags indicating valid fields */
+
+#define D3DDD_COLORMODEL 0x00000001L /* dcmColorModel is valid */
+#define D3DDD_DEVCAPS 0x00000002L /* dwDevCaps is valid */
+#define D3DDD_TRANSFORMCAPS 0x00000004L /* dtcTransformCaps is valid */
+#define D3DDD_LIGHTINGCAPS 0x00000008L /* dlcLightingCaps is valid */
+#define D3DDD_BCLIPPING 0x00000010L /* bClipping is valid */
+#define D3DDD_LINECAPS 0x00000020L /* dpcLineCaps is valid */
+#define D3DDD_TRICAPS 0x00000040L /* dpcTriCaps is valid */
+#define D3DDD_DEVICERENDERBITDEPTH 0x00000080L /* dwDeviceRenderBitDepth is valid */
+#define D3DDD_DEVICEZBUFFERBITDEPTH 0x00000100L /* dwDeviceZBufferBitDepth is valid */
+#define D3DDD_MAXBUFFERSIZE 0x00000200L /* dwMaxBufferSize is valid */
+#define D3DDD_MAXVERTEXCOUNT 0x00000400L /* dwMaxVertexCount is valid */
+
+/* D3DDEVICEDESC dwDevCaps flags */
+
+#define D3DDEVCAPS_FLOATTLVERTEX 0x00000001L /* Device accepts floating point */
+ /* for post-transform vertex data */
+#define D3DDEVCAPS_SORTINCREASINGZ 0x00000002L /* Device needs data sorted for increasing Z */
+#define D3DDEVCAPS_SORTDECREASINGZ 0X00000004L /* Device needs data sorted for decreasing Z */
+#define D3DDEVCAPS_SORTEXACT 0x00000008L /* Device needs data sorted exactly */
+
+#define D3DDEVCAPS_EXECUTESYSTEMMEMORY 0x00000010L /* Device can use execute buffers from system memory */
+#define D3DDEVCAPS_EXECUTEVIDEOMEMORY 0x00000020L /* Device can use execute buffers from video memory */
+#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY 0x00000040L /* Device can use TL buffers from system memory */
+#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY 0x00000080L /* Device can use TL buffers from video memory */
+#define D3DDEVCAPS_TEXTURESYSTEMMEMORY 0x00000100L /* Device can texture from system memory */
+#define D3DDEVCAPS_TEXTUREVIDEOMEMORY 0x00000200L /* Device can texture from device memory */
+#if(DIRECT3D_VERSION >= 0x0500)
+#define D3DDEVCAPS_DRAWPRIMTLVERTEX 0x00000400L /* Device can draw TLVERTEX primitives */
+#define D3DDEVCAPS_CANRENDERAFTERFLIP 0x00000800L /* Device can render without waiting for flip to complete */
+#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM 0x00001000L /* Device can texture from nonlocal video memory */
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+#if(DIRECT3D_VERSION >= 0x0600)
+#define D3DDEVCAPS_DRAWPRIMITIVES2 0x00002000L /* Device can support DrawPrimitives2 */
+#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES 0x00004000L /* Device is texturing from separate memory pools */
+#define D3DDEVCAPS_DRAWPRIMITIVES2EX 0x00008000L /* Device can support Extended DrawPrimitives2 i.e. DX7 compliant driver*/
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+#if(DIRECT3D_VERSION >= 0x0700)
+#define D3DDEVCAPS_HWTRANSFORMANDLIGHT 0x00010000L /* Device can support transformation and lighting in hardware and DRAWPRIMITIVES2EX must be also */
+#define D3DDEVCAPS_CANBLTSYSTONONLOCAL 0x00020000L /* Device supports a Tex Blt from system memory to non-local vidmem */
+#define D3DDEVCAPS_HWRASTERIZATION 0x00080000L /* Device has HW acceleration for rasterization */
+
+/*
+ * These are the flags in the D3DDEVICEDESC7.dwVertexProcessingCaps field
+ */
+
+/* device can do texgen */
+#define D3DVTXPCAPS_TEXGEN 0x00000001L
+/* device can do IDirect3DDevice7 colormaterialsource ops */
+#define D3DVTXPCAPS_MATERIALSOURCE7 0x00000002L
+/* device can do vertex fog */
+#define D3DVTXPCAPS_VERTEXFOG 0x00000004L
+/* device can do directional lights */
+#define D3DVTXPCAPS_DIRECTIONALLIGHTS 0x00000008L
+/* device can do positional lights (includes point and spot) */
+#define D3DVTXPCAPS_POSITIONALLIGHTS 0x00000010L
+/* device can do local viewer */
+#define D3DVTXPCAPS_LOCALVIEWER 0x00000020L
+
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+#define D3DFDS_COLORMODEL 0x00000001L /* Match color model */
+#define D3DFDS_GUID 0x00000002L /* Match guid */
+#define D3DFDS_HARDWARE 0x00000004L /* Match hardware/software */
+#define D3DFDS_TRIANGLES 0x00000008L /* Match in triCaps */
+#define D3DFDS_LINES 0x00000010L /* Match in lineCaps */
+#define D3DFDS_MISCCAPS 0x00000020L /* Match primCaps.dwMiscCaps */
+#define D3DFDS_RASTERCAPS 0x00000040L /* Match primCaps.dwRasterCaps */
+#define D3DFDS_ZCMPCAPS 0x00000080L /* Match primCaps.dwZCmpCaps */
+#define D3DFDS_ALPHACMPCAPS 0x00000100L /* Match primCaps.dwAlphaCmpCaps */
+#define D3DFDS_SRCBLENDCAPS 0x00000200L /* Match primCaps.dwSourceBlendCaps */
+#define D3DFDS_DSTBLENDCAPS 0x00000400L /* Match primCaps.dwDestBlendCaps */
+#define D3DFDS_SHADECAPS 0x00000800L /* Match primCaps.dwShadeCaps */
+#define D3DFDS_TEXTURECAPS 0x00001000L /* Match primCaps.dwTextureCaps */
+#define D3DFDS_TEXTUREFILTERCAPS 0x00002000L /* Match primCaps.dwTextureFilterCaps */
+#define D3DFDS_TEXTUREBLENDCAPS 0x00004000L /* Match primCaps.dwTextureBlendCaps */
+#define D3DFDS_TEXTUREADDRESSCAPS 0x00008000L /* Match primCaps.dwTextureBlendCaps */
+
+/*
+ * FindDevice arguments
+ */
+typedef struct _D3DFINDDEVICESEARCH {
+ DWORD dwSize;
+ DWORD dwFlags;
+ BOOL bHardware;
+ D3DCOLORMODEL dcmColorModel;
+ GUID guid;
+ DWORD dwCaps;
+ D3DPRIMCAPS dpcPrimCaps;
+} D3DFINDDEVICESEARCH, *LPD3DFINDDEVICESEARCH;
+
+typedef struct _D3DFINDDEVICERESULT {
+ DWORD dwSize;
+ GUID guid; /* guid which matched */
+ D3DDEVICEDESC ddHwDesc; /* hardware D3DDEVICEDESC */
+ D3DDEVICEDESC ddSwDesc; /* software D3DDEVICEDESC */
+} D3DFINDDEVICERESULT, *LPD3DFINDDEVICERESULT;
+
+/*
+ * Description of execute buffer.
+ */
+typedef struct _D3DExecuteBufferDesc {
+ DWORD dwSize; /* size of this structure */
+ DWORD dwFlags; /* flags indicating which fields are valid */
+ DWORD dwCaps; /* capabilities of execute buffer */
+ DWORD dwBufferSize; /* size of execute buffer data */
+ LPVOID lpData; /* pointer to actual data */
+} D3DEXECUTEBUFFERDESC, *LPD3DEXECUTEBUFFERDESC;
+
+/* D3DEXECUTEBUFFER dwFlags indicating valid fields */
+
+#define D3DDEB_BUFSIZE 0x00000001l /* buffer size valid */
+#define D3DDEB_CAPS 0x00000002l /* caps valid */
+#define D3DDEB_LPDATA 0x00000004l /* lpData valid */
+
+/* D3DEXECUTEBUFFER dwCaps */
+
+#define D3DDEBCAPS_SYSTEMMEMORY 0x00000001l /* buffer in system memory */
+#define D3DDEBCAPS_VIDEOMEMORY 0x00000002l /* buffer in device memory */
+#define D3DDEBCAPS_MEM (D3DDEBCAPS_SYSTEMMEMORY|D3DDEBCAPS_VIDEOMEMORY)
+
+#if(DIRECT3D_VERSION < 0x0800)
+
+#if(DIRECT3D_VERSION >= 0x0700)
+typedef struct _D3DDEVINFO_TEXTUREMANAGER {
+ BOOL bThrashing; /* indicates if thrashing */
+ DWORD dwApproxBytesDownloaded; /* Approximate number of bytes downloaded by texture manager */
+ DWORD dwNumEvicts; /* number of textures evicted */
+ DWORD dwNumVidCreates; /* number of textures created in video memory */
+ DWORD dwNumTexturesUsed; /* number of textures used */
+ DWORD dwNumUsedTexInVid; /* number of used textures present in video memory */
+ DWORD dwWorkingSet; /* number of textures in video memory */
+ DWORD dwWorkingSetBytes; /* number of bytes in video memory */
+ DWORD dwTotalManaged; /* total number of managed textures */
+ DWORD dwTotalBytes; /* total number of bytes of managed textures */
+ DWORD dwLastPri; /* priority of last texture evicted */
+} D3DDEVINFO_TEXTUREMANAGER, *LPD3DDEVINFO_TEXTUREMANAGER;
+
+typedef struct _D3DDEVINFO_TEXTURING {
+ DWORD dwNumLoads; /* counts Load() API calls */
+ DWORD dwApproxBytesLoaded; /* Approximate number bytes loaded via Load() */
+ DWORD dwNumPreLoads; /* counts PreLoad() API calls */
+ DWORD dwNumSet; /* counts SetTexture() API calls */
+ DWORD dwNumCreates; /* counts texture creates */
+ DWORD dwNumDestroys; /* counts texture destroys */
+ DWORD dwNumSetPriorities; /* counts SetPriority() API calls */
+ DWORD dwNumSetLODs; /* counts SetLOD() API calls */
+ DWORD dwNumLocks; /* counts number of texture locks */
+ DWORD dwNumGetDCs; /* counts number of GetDCs to textures */
+} D3DDEVINFO_TEXTURING, *LPD3DDEVINFO_TEXTURING;
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+#endif //(DIRECT3D_VERSION < 0x0800)
+
+#pragma pack()
+
+
+#endif /* _D3DCAPS_H_ */
+
diff --git a/include/dx/d3drm.h b/include/dx/d3drm.h
new file mode 100644
index 000000000..95594b8a6
--- /dev/null
+++ b/include/dx/d3drm.h
@@ -0,0 +1,342 @@
+/*==========================================================================;
+ *
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *
+ * File: d3drm.h
+ * Content: Direct3DRM include file
+ *
+ ***************************************************************************/
+
+#ifndef __D3DRM_H__
+#define __D3DRM_H__
+
+#include "ddraw.h"
+
+#ifdef __cplusplus
+struct IDirect3DRM;
+#endif
+
+typedef struct IDirect3DRM *LPDIRECT3DRM;
+
+#include "d3drmobj.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+DEFINE_GUID(IID_IDirect3DRM, 0x2bc49361, 0x8327, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRM2, 0x4516ecc8, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(IID_IDirect3DRM3, 0x4516ec83, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
+WIN_TYPES(IDirect3DRM, DIRECT3DRM);
+WIN_TYPES(IDirect3DRM2, DIRECT3DRM2);
+WIN_TYPES(IDirect3DRM3, DIRECT3DRM3);
+
+/*
+ * Direct3DRM Object Class (for CoCreateInstance())
+ */
+DEFINE_GUID(CLSID_CDirect3DRM, 0x4516ec41, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
+
+
+/* Create a Direct3DRM API */
+STDAPI Direct3DRMCreate(LPDIRECT3DRM FAR *lplpDirect3DRM);
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRM
+
+DECLARE_INTERFACE_(IDirect3DRM, IUnknown)
+{
+ IUNKNOWN_METHODS(PURE);
+
+ STDMETHOD(CreateObject)
+ (THIS_ REFCLSID rclsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID FAR* ppv) PURE;
+ STDMETHOD(CreateFrame) (THIS_ LPDIRECT3DRMFRAME, LPDIRECT3DRMFRAME *) PURE;
+ STDMETHOD(CreateMesh) (THIS_ LPDIRECT3DRMMESH *) PURE;
+ STDMETHOD(CreateMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER *) PURE;
+ STDMETHOD(CreateFace) (THIS_ LPDIRECT3DRMFACE *) PURE;
+ STDMETHOD(CreateAnimation) (THIS_ LPDIRECT3DRMANIMATION *) PURE;
+ STDMETHOD(CreateAnimationSet)(THIS_ LPDIRECT3DRMANIMATIONSET *) PURE;
+ STDMETHOD(CreateTexture) (THIS_ LPD3DRMIMAGE, LPDIRECT3DRMTEXTURE *) PURE;
+ STDMETHOD(CreateLight) (THIS_ D3DRMLIGHTTYPE, D3DCOLOR, LPDIRECT3DRMLIGHT *) PURE;
+ STDMETHOD(CreateLightRGB)
+ (THIS_ D3DRMLIGHTTYPE, D3DVALUE, D3DVALUE, D3DVALUE, LPDIRECT3DRMLIGHT *) PURE;
+ STDMETHOD(CreateMaterial) (THIS_ D3DVALUE, LPDIRECT3DRMMATERIAL *) PURE;
+ STDMETHOD(CreateDevice) (THIS_ DWORD, DWORD, LPDIRECT3DRMDEVICE *) PURE;
+
+ /* Create a Windows Device using DirectDraw surfaces */
+ STDMETHOD(CreateDeviceFromSurface)
+ ( THIS_ LPGUID lpGUID, LPDIRECTDRAW lpDD,
+ LPDIRECTDRAWSURFACE lpDDSBack, LPDIRECT3DRMDEVICE *
+ ) PURE;
+
+ /* Create a Windows Device using D3D objects */
+ STDMETHOD(CreateDeviceFromD3D)
+ ( THIS_ LPDIRECT3D lpD3D, LPDIRECT3DDEVICE lpD3DDev,
+ LPDIRECT3DRMDEVICE *
+ ) PURE;
+
+ STDMETHOD(CreateDeviceFromClipper)
+ ( THIS_ LPDIRECTDRAWCLIPPER lpDDClipper, LPGUID lpGUID,
+ int width, int height, LPDIRECT3DRMDEVICE *) PURE;
+
+ STDMETHOD(CreateTextureFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS, LPDIRECT3DRMTEXTURE *) PURE;
+
+ STDMETHOD(CreateShadow)
+ ( THIS_ LPDIRECT3DRMVISUAL, LPDIRECT3DRMLIGHT,
+ D3DVALUE px, D3DVALUE py, D3DVALUE pz,
+ D3DVALUE nx, D3DVALUE ny, D3DVALUE nz,
+ LPDIRECT3DRMVISUAL *
+ ) PURE;
+ STDMETHOD(CreateViewport)
+ ( THIS_ LPDIRECT3DRMDEVICE, LPDIRECT3DRMFRAME, DWORD, DWORD,
+ DWORD, DWORD, LPDIRECT3DRMVIEWPORT *
+ ) PURE;
+ STDMETHOD(CreateWrap)
+ ( THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME,
+ D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
+ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
+ D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
+ D3DVALUE ou, D3DVALUE ov,
+ D3DVALUE su, D3DVALUE sv,
+ LPDIRECT3DRMWRAP *
+ ) PURE;
+ STDMETHOD(CreateUserVisual) (THIS_ D3DRMUSERVISUALCALLBACK, LPVOID lPArg, LPDIRECT3DRMUSERVISUAL *) PURE;
+ STDMETHOD(LoadTexture) (THIS_ const char *, LPDIRECT3DRMTEXTURE *) PURE;
+ STDMETHOD(LoadTextureFromResource) (THIS_ HRSRC rs, LPDIRECT3DRMTEXTURE *) PURE;
+
+ STDMETHOD(SetSearchPath) (THIS_ LPCSTR) PURE;
+ STDMETHOD(AddSearchPath) (THIS_ LPCSTR) PURE;
+ STDMETHOD(GetSearchPath) (THIS_ DWORD *size_return, LPSTR path_return) PURE;
+ STDMETHOD(SetDefaultTextureColors)(THIS_ DWORD) PURE;
+ STDMETHOD(SetDefaultTextureShades)(THIS_ DWORD) PURE;
+
+ STDMETHOD(GetDevices) (THIS_ LPDIRECT3DRMDEVICEARRAY *) PURE;
+ STDMETHOD(GetNamedObject) (THIS_ const char *, LPDIRECT3DRMOBJECT *) PURE;
+
+ STDMETHOD(EnumerateObjects) (THIS_ D3DRMOBJECTCALLBACK, LPVOID) PURE;
+
+ STDMETHOD(Load)
+ ( THIS_ LPVOID, LPVOID, LPIID *, DWORD, D3DRMLOADOPTIONS,
+ D3DRMLOADCALLBACK, LPVOID, D3DRMLOADTEXTURECALLBACK, LPVOID,
+ LPDIRECT3DRMFRAME
+ ) PURE;
+ STDMETHOD(Tick) (THIS_ D3DVALUE) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRM2
+
+DECLARE_INTERFACE_(IDirect3DRM2, IUnknown)
+{
+ IUNKNOWN_METHODS(PURE);
+
+ STDMETHOD(CreateObject)
+ (THIS_ REFCLSID rclsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID FAR* ppv) PURE;
+ STDMETHOD(CreateFrame) (THIS_ LPDIRECT3DRMFRAME, LPDIRECT3DRMFRAME2 *) PURE;
+ STDMETHOD(CreateMesh) (THIS_ LPDIRECT3DRMMESH *) PURE;
+ STDMETHOD(CreateMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER2 *) PURE;
+ STDMETHOD(CreateFace) (THIS_ LPDIRECT3DRMFACE *) PURE;
+ STDMETHOD(CreateAnimation) (THIS_ LPDIRECT3DRMANIMATION *) PURE;
+ STDMETHOD(CreateAnimationSet)(THIS_ LPDIRECT3DRMANIMATIONSET *) PURE;
+ STDMETHOD(CreateTexture) (THIS_ LPD3DRMIMAGE, LPDIRECT3DRMTEXTURE2 *) PURE;
+ STDMETHOD(CreateLight) (THIS_ D3DRMLIGHTTYPE, D3DCOLOR, LPDIRECT3DRMLIGHT *) PURE;
+ STDMETHOD(CreateLightRGB)
+ (THIS_ D3DRMLIGHTTYPE, D3DVALUE, D3DVALUE, D3DVALUE, LPDIRECT3DRMLIGHT *) PURE;
+ STDMETHOD(CreateMaterial) (THIS_ D3DVALUE, LPDIRECT3DRMMATERIAL *) PURE;
+ STDMETHOD(CreateDevice) (THIS_ DWORD, DWORD, LPDIRECT3DRMDEVICE2 *) PURE;
+
+ /* Create a Windows Device using DirectDraw surfaces */
+ STDMETHOD(CreateDeviceFromSurface)
+ ( THIS_ LPGUID lpGUID, LPDIRECTDRAW lpDD,
+ LPDIRECTDRAWSURFACE lpDDSBack, LPDIRECT3DRMDEVICE2 *
+ ) PURE;
+
+ /* Create a Windows Device using D3D objects */
+ STDMETHOD(CreateDeviceFromD3D)
+ ( THIS_ LPDIRECT3D2 lpD3D, LPDIRECT3DDEVICE2 lpD3DDev,
+ LPDIRECT3DRMDEVICE2 *
+ ) PURE;
+
+ STDMETHOD(CreateDeviceFromClipper)
+ ( THIS_ LPDIRECTDRAWCLIPPER lpDDClipper, LPGUID lpGUID,
+ int width, int height, LPDIRECT3DRMDEVICE2 *) PURE;
+
+ STDMETHOD(CreateTextureFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS, LPDIRECT3DRMTEXTURE2 *) PURE;
+
+ STDMETHOD(CreateShadow)
+ ( THIS_ LPDIRECT3DRMVISUAL, LPDIRECT3DRMLIGHT,
+ D3DVALUE px, D3DVALUE py, D3DVALUE pz,
+ D3DVALUE nx, D3DVALUE ny, D3DVALUE nz,
+ LPDIRECT3DRMVISUAL *
+ ) PURE;
+ STDMETHOD(CreateViewport)
+ ( THIS_ LPDIRECT3DRMDEVICE, LPDIRECT3DRMFRAME, DWORD, DWORD,
+ DWORD, DWORD, LPDIRECT3DRMVIEWPORT *
+ ) PURE;
+ STDMETHOD(CreateWrap)
+ ( THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME,
+ D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
+ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
+ D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
+ D3DVALUE ou, D3DVALUE ov,
+ D3DVALUE su, D3DVALUE sv,
+ LPDIRECT3DRMWRAP *
+ ) PURE;
+ STDMETHOD(CreateUserVisual) (THIS_ D3DRMUSERVISUALCALLBACK, LPVOID lPArg, LPDIRECT3DRMUSERVISUAL *) PURE;
+ STDMETHOD(LoadTexture) (THIS_ const char *, LPDIRECT3DRMTEXTURE2 *) PURE;
+ STDMETHOD(LoadTextureFromResource) (THIS_ HMODULE hModule, LPCTSTR strName, LPCTSTR strType, LPDIRECT3DRMTEXTURE2 *) PURE;
+
+ STDMETHOD(SetSearchPath) (THIS_ LPCSTR) PURE;
+ STDMETHOD(AddSearchPath) (THIS_ LPCSTR) PURE;
+ STDMETHOD(GetSearchPath) (THIS_ DWORD *size_return, LPSTR path_return) PURE;
+ STDMETHOD(SetDefaultTextureColors)(THIS_ DWORD) PURE;
+ STDMETHOD(SetDefaultTextureShades)(THIS_ DWORD) PURE;
+
+ STDMETHOD(GetDevices) (THIS_ LPDIRECT3DRMDEVICEARRAY *) PURE;
+ STDMETHOD(GetNamedObject) (THIS_ const char *, LPDIRECT3DRMOBJECT *) PURE;
+
+ STDMETHOD(EnumerateObjects) (THIS_ D3DRMOBJECTCALLBACK, LPVOID) PURE;
+
+ STDMETHOD(Load)
+ ( THIS_ LPVOID, LPVOID, LPIID *, DWORD, D3DRMLOADOPTIONS,
+ D3DRMLOADCALLBACK, LPVOID, D3DRMLOADTEXTURECALLBACK, LPVOID,
+ LPDIRECT3DRMFRAME
+ ) PURE;
+ STDMETHOD(Tick) (THIS_ D3DVALUE) PURE;
+
+ STDMETHOD(CreateProgressiveMesh)(THIS_ LPDIRECT3DRMPROGRESSIVEMESH *) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRM3
+
+DECLARE_INTERFACE_(IDirect3DRM3, IUnknown)
+{
+ IUNKNOWN_METHODS(PURE);
+
+ STDMETHOD(CreateObject)
+ (THIS_ REFCLSID rclsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID FAR* ppv) PURE;
+ STDMETHOD(CreateFrame) (THIS_ LPDIRECT3DRMFRAME3, LPDIRECT3DRMFRAME3 *) PURE;
+ STDMETHOD(CreateMesh) (THIS_ LPDIRECT3DRMMESH *) PURE;
+ STDMETHOD(CreateMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER3 *) PURE;
+ STDMETHOD(CreateFace) (THIS_ LPDIRECT3DRMFACE2 *) PURE;
+ STDMETHOD(CreateAnimation) (THIS_ LPDIRECT3DRMANIMATION2 *) PURE;
+ STDMETHOD(CreateAnimationSet)(THIS_ LPDIRECT3DRMANIMATIONSET2 *) PURE;
+ STDMETHOD(CreateTexture) (THIS_ LPD3DRMIMAGE, LPDIRECT3DRMTEXTURE3 *) PURE;
+ STDMETHOD(CreateLight) (THIS_ D3DRMLIGHTTYPE, D3DCOLOR, LPDIRECT3DRMLIGHT *) PURE;
+ STDMETHOD(CreateLightRGB)
+ (THIS_ D3DRMLIGHTTYPE, D3DVALUE, D3DVALUE, D3DVALUE, LPDIRECT3DRMLIGHT *) PURE;
+ STDMETHOD(CreateMaterial) (THIS_ D3DVALUE, LPDIRECT3DRMMATERIAL2 *) PURE;
+ STDMETHOD(CreateDevice) (THIS_ DWORD, DWORD, LPDIRECT3DRMDEVICE3 *) PURE;
+
+ /* Create a Windows Device using DirectDraw surfaces */
+ STDMETHOD(CreateDeviceFromSurface)
+ ( THIS_ LPGUID lpGUID, LPDIRECTDRAW lpDD,
+ LPDIRECTDRAWSURFACE lpDDSBack, DWORD dwFlags, LPDIRECT3DRMDEVICE3 *
+ ) PURE;
+
+ /* Create a Windows Device using D3D objects */
+ STDMETHOD(CreateDeviceFromD3D)
+ ( THIS_ LPDIRECT3D2 lpD3D, LPDIRECT3DDEVICE2 lpD3DDev,
+ LPDIRECT3DRMDEVICE3 *
+ ) PURE;
+
+ STDMETHOD(CreateDeviceFromClipper)
+ ( THIS_ LPDIRECTDRAWCLIPPER lpDDClipper, LPGUID lpGUID,
+ int width, int height, LPDIRECT3DRMDEVICE3 *) PURE;
+
+ STDMETHOD(CreateTextureFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS, LPDIRECT3DRMTEXTURE3 *) PURE;
+
+ STDMETHOD(CreateShadow)
+ ( THIS_ LPUNKNOWN, LPDIRECT3DRMLIGHT,
+ D3DVALUE px, D3DVALUE py, D3DVALUE pz,
+ D3DVALUE nx, D3DVALUE ny, D3DVALUE nz,
+ LPDIRECT3DRMSHADOW2 *
+ ) PURE;
+ STDMETHOD(CreateViewport)
+ ( THIS_ LPDIRECT3DRMDEVICE3, LPDIRECT3DRMFRAME3, DWORD, DWORD,
+ DWORD, DWORD, LPDIRECT3DRMVIEWPORT2 *
+ ) PURE;
+ STDMETHOD(CreateWrap)
+ ( THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME3,
+ D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
+ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
+ D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
+ D3DVALUE ou, D3DVALUE ov,
+ D3DVALUE su, D3DVALUE sv,
+ LPDIRECT3DRMWRAP *
+ ) PURE;
+ STDMETHOD(CreateUserVisual) (THIS_ D3DRMUSERVISUALCALLBACK, LPVOID lPArg, LPDIRECT3DRMUSERVISUAL *) PURE;
+ STDMETHOD(LoadTexture) (THIS_ const char *, LPDIRECT3DRMTEXTURE3 *) PURE;
+ STDMETHOD(LoadTextureFromResource) (THIS_ HMODULE hModule, LPCTSTR strName, LPCTSTR strType, LPDIRECT3DRMTEXTURE3 *) PURE;
+
+ STDMETHOD(SetSearchPath) (THIS_ LPCSTR) PURE;
+ STDMETHOD(AddSearchPath) (THIS_ LPCSTR) PURE;
+ STDMETHOD(GetSearchPath) (THIS_ DWORD *size_return, LPSTR path_return) PURE;
+ STDMETHOD(SetDefaultTextureColors)(THIS_ DWORD) PURE;
+ STDMETHOD(SetDefaultTextureShades)(THIS_ DWORD) PURE;
+
+ STDMETHOD(GetDevices) (THIS_ LPDIRECT3DRMDEVICEARRAY *) PURE;
+ STDMETHOD(GetNamedObject) (THIS_ const char *, LPDIRECT3DRMOBJECT *) PURE;
+
+ STDMETHOD(EnumerateObjects) (THIS_ D3DRMOBJECTCALLBACK, LPVOID) PURE;
+
+ STDMETHOD(Load)
+ ( THIS_ LPVOID, LPVOID, LPIID *, DWORD, D3DRMLOADOPTIONS,
+ D3DRMLOADCALLBACK, LPVOID, D3DRMLOADTEXTURE3CALLBACK, LPVOID,
+ LPDIRECT3DRMFRAME3
+ ) PURE;
+ STDMETHOD(Tick) (THIS_ D3DVALUE) PURE;
+
+ STDMETHOD(CreateProgressiveMesh)(THIS_ LPDIRECT3DRMPROGRESSIVEMESH *) PURE;
+
+ /* Used with IDirect3DRMObject2 */
+ STDMETHOD(RegisterClient) (THIS_ REFGUID rguid, LPDWORD lpdwID) PURE;
+ STDMETHOD(UnregisterClient) (THIS_ REFGUID rguid) PURE;
+
+ STDMETHOD(CreateClippedVisual) (THIS_ LPDIRECT3DRMVISUAL, LPDIRECT3DRMCLIPPEDVISUAL *) PURE;
+ STDMETHOD(SetOptions) (THIS_ DWORD);
+ STDMETHOD(GetOptions) (THIS_ LPDWORD);
+};
+
+#define D3DRM_OK DD_OK
+#define D3DRMERR_BADOBJECT MAKE_DDHRESULT(781)
+#define D3DRMERR_BADTYPE MAKE_DDHRESULT(782)
+#define D3DRMERR_BADALLOC MAKE_DDHRESULT(783)
+#define D3DRMERR_FACEUSED MAKE_DDHRESULT(784)
+#define D3DRMERR_NOTFOUND MAKE_DDHRESULT(785)
+#define D3DRMERR_NOTDONEYET MAKE_DDHRESULT(786)
+#define D3DRMERR_FILENOTFOUND MAKE_DDHRESULT(787)
+#define D3DRMERR_BADFILE MAKE_DDHRESULT(788)
+#define D3DRMERR_BADDEVICE MAKE_DDHRESULT(789)
+#define D3DRMERR_BADVALUE MAKE_DDHRESULT(790)
+#define D3DRMERR_BADMAJORVERSION MAKE_DDHRESULT(791)
+#define D3DRMERR_BADMINORVERSION MAKE_DDHRESULT(792)
+#define D3DRMERR_UNABLETOEXECUTE MAKE_DDHRESULT(793)
+#define D3DRMERR_LIBRARYNOTFOUND MAKE_DDHRESULT(794)
+#define D3DRMERR_INVALIDLIBRARY MAKE_DDHRESULT(795)
+#define D3DRMERR_PENDING MAKE_DDHRESULT(796)
+#define D3DRMERR_NOTENOUGHDATA MAKE_DDHRESULT(797)
+#define D3DRMERR_REQUESTTOOLARGE MAKE_DDHRESULT(798)
+#define D3DRMERR_REQUESTTOOSMALL MAKE_DDHRESULT(799)
+#define D3DRMERR_CONNECTIONLOST MAKE_DDHRESULT(800)
+#define D3DRMERR_LOADABORTED MAKE_DDHRESULT(801)
+#define D3DRMERR_NOINTERNET MAKE_DDHRESULT(802)
+#define D3DRMERR_BADCACHEFILE MAKE_DDHRESULT(803)
+#define D3DRMERR_BOXNOTSET MAKE_DDHRESULT(804)
+#define D3DRMERR_BADPMDATA MAKE_DDHRESULT(805)
+#define D3DRMERR_CLIENTNOTREGISTERED MAKE_DDHRESULT(806)
+#define D3DRMERR_NOTCREATEDFROMDDS MAKE_DDHRESULT(807)
+#define D3DRMERR_NOSUCHKEY MAKE_DDHRESULT(808)
+#define D3DRMERR_INCOMPATABLEKEY MAKE_DDHRESULT(809)
+#define D3DRMERR_ELEMENTINUSE MAKE_DDHRESULT(810)
+#define D3DRMERR_TEXTUREFORMATNOTFOUND MAKE_DDHRESULT(811)
+#define D3DRMERR_NOTAGGREGATED MAKE_DDHRESULT(812)
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* _D3DRMAPI_H_ */
+
+
diff --git a/include/dx/d3drmdef.h b/include/dx/d3drmdef.h
new file mode 100644
index 000000000..c6477ca6d
--- /dev/null
+++ b/include/dx/d3drmdef.h
@@ -0,0 +1,695 @@
+/*==========================================================================;
+ *
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *
+ * File: d3drm.h
+ * Content: Direct3DRM include file
+ *
+ ***************************************************************************/
+
+#ifndef __D3DRMDEFS_H__
+#define __D3DRMDEFS_H__
+
+#include <stddef.h>
+#include "d3dtypes.h"
+
+#ifdef WIN32
+#define D3DRMAPI __stdcall
+#else
+#define D3DRMAPI
+#endif
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef TRUE
+#define FALSE 0
+#define TRUE 1
+#endif
+
+typedef struct _D3DRMVECTOR4D
+{ D3DVALUE x, y, z, w;
+} D3DRMVECTOR4D, *LPD3DRMVECTOR4D;
+
+typedef D3DVALUE D3DRMMATRIX4D[4][4];
+
+typedef struct _D3DRMQUATERNION
+{ D3DVALUE s;
+ D3DVECTOR v;
+} D3DRMQUATERNION, *LPD3DRMQUATERNION;
+
+typedef struct _D3DRMRAY
+{ D3DVECTOR dvDir;
+ D3DVECTOR dvPos;
+} D3DRMRAY, *LPD3DRMRAY;
+
+typedef struct _D3DRMBOX
+{ D3DVECTOR min, max;
+} D3DRMBOX, *LPD3DRMBOX;
+
+typedef void (*D3DRMWRAPCALLBACK)
+ (LPD3DVECTOR, int* u, int* v, LPD3DVECTOR a, LPD3DVECTOR b, LPVOID);
+
+typedef enum _D3DRMLIGHTTYPE
+{ D3DRMLIGHT_AMBIENT,
+ D3DRMLIGHT_POINT,
+ D3DRMLIGHT_SPOT,
+ D3DRMLIGHT_DIRECTIONAL,
+ D3DRMLIGHT_PARALLELPOINT
+} D3DRMLIGHTTYPE, *LPD3DRMLIGHTTYPE;
+
+typedef enum _D3DRMSHADEMODE {
+ D3DRMSHADE_FLAT = 0,
+ D3DRMSHADE_GOURAUD = 1,
+ D3DRMSHADE_PHONG = 2,
+
+ D3DRMSHADE_MASK = 7,
+ D3DRMSHADE_MAX = 8
+} D3DRMSHADEMODE, *LPD3DRMSHADEMODE;
+
+typedef enum _D3DRMLIGHTMODE {
+ D3DRMLIGHT_OFF = 0 * D3DRMSHADE_MAX,
+ D3DRMLIGHT_ON = 1 * D3DRMSHADE_MAX,
+
+ D3DRMLIGHT_MASK = 7 * D3DRMSHADE_MAX,
+ D3DRMLIGHT_MAX = 8 * D3DRMSHADE_MAX
+} D3DRMLIGHTMODE, *LPD3DRMLIGHTMODE;
+
+typedef enum _D3DRMFILLMODE {
+ D3DRMFILL_POINTS = 0 * D3DRMLIGHT_MAX,
+ D3DRMFILL_WIREFRAME = 1 * D3DRMLIGHT_MAX,
+ D3DRMFILL_SOLID = 2 * D3DRMLIGHT_MAX,
+
+ D3DRMFILL_MASK = 7 * D3DRMLIGHT_MAX,
+ D3DRMFILL_MAX = 8 * D3DRMLIGHT_MAX
+} D3DRMFILLMODE, *LPD3DRMFILLMODE;
+
+typedef DWORD D3DRMRENDERQUALITY, *LPD3DRMRENDERQUALITY;
+
+#define D3DRMRENDER_WIREFRAME (D3DRMSHADE_FLAT+D3DRMLIGHT_OFF+D3DRMFILL_WIREFRAME)
+#define D3DRMRENDER_UNLITFLAT (D3DRMSHADE_FLAT+D3DRMLIGHT_OFF+D3DRMFILL_SOLID)
+#define D3DRMRENDER_FLAT (D3DRMSHADE_FLAT+D3DRMLIGHT_ON+D3DRMFILL_SOLID)
+#define D3DRMRENDER_GOURAUD (D3DRMSHADE_GOURAUD+D3DRMLIGHT_ON+D3DRMFILL_SOLID)
+#define D3DRMRENDER_PHONG (D3DRMSHADE_PHONG+D3DRMLIGHT_ON+D3DRMFILL_SOLID)
+
+#define D3DRMRENDERMODE_BLENDEDTRANSPARENCY 1
+#define D3DRMRENDERMODE_SORTEDTRANSPARENCY 2
+#define D3DRMRENDERMODE_LIGHTINMODELSPACE 8
+#define D3DRMRENDERMODE_VIEWDEPENDENTSPECULAR 16
+#define D3DRMRENDERMODE_DISABLESORTEDALPHAZWRITE 32
+
+typedef enum _D3DRMTEXTUREQUALITY
+{ D3DRMTEXTURE_NEAREST, /* choose nearest texel */
+ D3DRMTEXTURE_LINEAR, /* interpolate 4 texels */
+ D3DRMTEXTURE_MIPNEAREST, /* nearest texel in nearest mipmap */
+ D3DRMTEXTURE_MIPLINEAR, /* interpolate 2 texels from 2 mipmaps */
+ D3DRMTEXTURE_LINEARMIPNEAREST, /* interpolate 4 texels in nearest mipmap */
+ D3DRMTEXTURE_LINEARMIPLINEAR /* interpolate 8 texels from 2 mipmaps */
+} D3DRMTEXTUREQUALITY, *LPD3DRMTEXTUREQUALITY;
+
+/*
+ * Texture flags
+ */
+#define D3DRMTEXTURE_FORCERESIDENT 0x00000001 /* texture should be kept in video memory */
+#define D3DRMTEXTURE_STATIC 0x00000002 /* texture will not change */
+#define D3DRMTEXTURE_DOWNSAMPLEPOINT 0x00000004 /* point filtering should be used when downsampling */
+#define D3DRMTEXTURE_DOWNSAMPLEBILINEAR 0x00000008 /* bilinear filtering should be used when downsampling */
+#define D3DRMTEXTURE_DOWNSAMPLEREDUCEDEPTH 0x00000010 /* reduce bit depth when downsampling */
+#define D3DRMTEXTURE_DOWNSAMPLENONE 0x00000020 /* texture should never be downsampled */
+#define D3DRMTEXTURE_CHANGEDPIXELS 0x00000040 /* pixels have changed */
+#define D3DRMTEXTURE_CHANGEDPALETTE 0x00000080 /* palette has changed */
+#define D3DRMTEXTURE_INVALIDATEONLY 0x00000100 /* dirty regions are invalid */
+
+/*
+ * Shadow flags
+ */
+#define D3DRMSHADOW_TRUEALPHA 0x00000001 /* shadow should render without artifacts when true alpha is on */
+
+typedef enum _D3DRMCOMBINETYPE
+{ D3DRMCOMBINE_REPLACE,
+ D3DRMCOMBINE_BEFORE,
+ D3DRMCOMBINE_AFTER
+} D3DRMCOMBINETYPE, *LPD3DRMCOMBINETYPE;
+
+typedef D3DCOLORMODEL D3DRMCOLORMODEL, *LPD3DRMCOLORMODEL;
+
+typedef enum _D3DRMPALETTEFLAGS
+{ D3DRMPALETTE_FREE, /* renderer may use this entry freely */
+ D3DRMPALETTE_READONLY, /* fixed but may be used by renderer */
+ D3DRMPALETTE_RESERVED /* may not be used by renderer */
+} D3DRMPALETTEFLAGS, *LPD3DRMPALETTEFLAGS;
+
+typedef struct _D3DRMPALETTEENTRY
+{ unsigned char red; /* 0 .. 255 */
+ unsigned char green; /* 0 .. 255 */
+ unsigned char blue; /* 0 .. 255 */
+ unsigned char flags; /* one of D3DRMPALETTEFLAGS */
+} D3DRMPALETTEENTRY, *LPD3DRMPALETTEENTRY;
+
+typedef struct _D3DRMIMAGE
+{ int width, height; /* width and height in pixels */
+ int aspectx, aspecty; /* aspect ratio for non-square pixels */
+ int depth; /* bits per pixel */
+ int rgb; /* if false, pixels are indices into a
+ palette otherwise, pixels encode
+ RGB values. */
+ int bytes_per_line; /* number of bytes of memory for a
+ scanline. This must be a multiple
+ of 4. */
+ void* buffer1; /* memory to render into (first buffer). */
+ void* buffer2; /* second rendering buffer for double
+ buffering, set to NULL for single
+ buffering. */
+ unsigned long red_mask;
+ unsigned long green_mask;
+ unsigned long blue_mask;
+ unsigned long alpha_mask; /* if rgb is true, these are masks for
+ the red, green and blue parts of a
+ pixel. Otherwise, these are masks
+ for the significant bits of the
+ red, green and blue elements in the
+ palette. For instance, most SVGA
+ displays use 64 intensities of red,
+ green and blue, so the masks should
+ all be set to 0xfc. */
+ int palette_size; /* number of entries in palette */
+ D3DRMPALETTEENTRY* palette; /* description of the palette (only if
+ rgb is false). Must be (1<<depth)
+ elements. */
+} D3DRMIMAGE, *LPD3DRMIMAGE;
+
+typedef enum _D3DRMWRAPTYPE
+{ D3DRMWRAP_FLAT,
+ D3DRMWRAP_CYLINDER,
+ D3DRMWRAP_SPHERE,
+ D3DRMWRAP_CHROME,
+ D3DRMWRAP_SHEET,
+ D3DRMWRAP_BOX
+} D3DRMWRAPTYPE, *LPD3DRMWRAPTYPE;
+
+#define D3DRMWIREFRAME_CULL 1 /* cull backfaces */
+#define D3DRMWIREFRAME_HIDDENLINE 2 /* lines are obscured by closer objects */
+
+/*
+ * Do not use righthanded perspective in Viewport2::SetProjection().
+ * Set up righthanded mode by using IDirect3DRM3::SetOptions().
+ */
+typedef enum _D3DRMPROJECTIONTYPE
+{ D3DRMPROJECT_PERSPECTIVE,
+ D3DRMPROJECT_ORTHOGRAPHIC,
+ D3DRMPROJECT_RIGHTHANDPERSPECTIVE, /* Only valid pre-DX6 */
+ D3DRMPROJECT_RIGHTHANDORTHOGRAPHIC /* Only valid pre-DX6 */
+} D3DRMPROJECTIONTYPE, *LPD3DRMPROJECTIONTYPE;
+
+#define D3DRMOPTIONS_LEFTHANDED 0x00000001L /* Default */
+#define D3DRMOPTIONS_RIGHTHANDED 0x00000002L
+
+typedef enum _D3DRMXOFFORMAT
+{ D3DRMXOF_BINARY,
+ D3DRMXOF_COMPRESSED,
+ D3DRMXOF_TEXT
+} D3DRMXOFFORMAT, *LPD3DRMXOFFORMAT;
+
+typedef DWORD D3DRMSAVEOPTIONS;
+#define D3DRMXOFSAVE_NORMALS 1
+#define D3DRMXOFSAVE_TEXTURECOORDINATES 2
+#define D3DRMXOFSAVE_MATERIALS 4
+#define D3DRMXOFSAVE_TEXTURENAMES 8
+#define D3DRMXOFSAVE_ALL 15
+#define D3DRMXOFSAVE_TEMPLATES 16
+#define D3DRMXOFSAVE_TEXTURETOPOLOGY 32
+
+typedef enum _D3DRMCOLORSOURCE
+{ D3DRMCOLOR_FROMFACE,
+ D3DRMCOLOR_FROMVERTEX
+} D3DRMCOLORSOURCE, *LPD3DRMCOLORSOURCE;
+
+typedef enum _D3DRMFRAMECONSTRAINT
+{ D3DRMCONSTRAIN_Z, /* use only X and Y rotations */
+ D3DRMCONSTRAIN_Y, /* use only X and Z rotations */
+ D3DRMCONSTRAIN_X /* use only Y and Z rotations */
+} D3DRMFRAMECONSTRAINT, *LPD3DRMFRAMECONSTRAINT;
+
+typedef enum _D3DRMMATERIALMODE
+{ D3DRMMATERIAL_FROMMESH,
+ D3DRMMATERIAL_FROMPARENT,
+ D3DRMMATERIAL_FROMFRAME
+} D3DRMMATERIALMODE, *LPD3DRMMATERIALMODE;
+
+typedef enum _D3DRMFOGMODE
+{ D3DRMFOG_LINEAR, /* linear between start and end */
+ D3DRMFOG_EXPONENTIAL, /* density * exp(-distance) */
+ D3DRMFOG_EXPONENTIALSQUARED /* density * exp(-distance*distance) */
+} D3DRMFOGMODE, *LPD3DRMFOGMODE;
+
+typedef enum _D3DRMZBUFFERMODE {
+ D3DRMZBUFFER_FROMPARENT, /* default */
+ D3DRMZBUFFER_ENABLE, /* enable zbuffering */
+ D3DRMZBUFFER_DISABLE /* disable zbuffering */
+} D3DRMZBUFFERMODE, *LPD3DRMZBUFFERMODE;
+
+typedef enum _D3DRMSORTMODE {
+ D3DRMSORT_FROMPARENT, /* default */
+ D3DRMSORT_NONE, /* don't sort child frames */
+ D3DRMSORT_FRONTTOBACK, /* sort child frames front-to-back */
+ D3DRMSORT_BACKTOFRONT /* sort child frames back-to-front */
+} D3DRMSORTMODE, *LPD3DRMSORTMODE;
+
+typedef struct _D3DRMMATERIALOVERRIDE
+{
+ DWORD dwSize; /* Size of this structure */
+ DWORD dwFlags; /* Indicate which fields are valid */
+ D3DCOLORVALUE dcDiffuse; /* RGBA */
+ D3DCOLORVALUE dcAmbient; /* RGB */
+ D3DCOLORVALUE dcEmissive; /* RGB */
+ D3DCOLORVALUE dcSpecular; /* RGB */
+ D3DVALUE dvPower;
+ LPUNKNOWN lpD3DRMTex;
+} D3DRMMATERIALOVERRIDE, *LPD3DRMMATERIALOVERRIDE;
+
+#define D3DRMMATERIALOVERRIDE_DIFFUSE_ALPHAONLY 0x00000001L
+#define D3DRMMATERIALOVERRIDE_DIFFUSE_RGBONLY 0x00000002L
+#define D3DRMMATERIALOVERRIDE_DIFFUSE 0x00000003L
+#define D3DRMMATERIALOVERRIDE_AMBIENT 0x00000004L
+#define D3DRMMATERIALOVERRIDE_EMISSIVE 0x00000008L
+#define D3DRMMATERIALOVERRIDE_SPECULAR 0x00000010L
+#define D3DRMMATERIALOVERRIDE_POWER 0x00000020L
+#define D3DRMMATERIALOVERRIDE_TEXTURE 0x00000040L
+#define D3DRMMATERIALOVERRIDE_DIFFUSE_ALPHAMULTIPLY 0x00000080L
+#define D3DRMMATERIALOVERRIDE_ALL 0x000000FFL
+
+#define D3DRMFPTF_ALPHA 0x00000001L
+#define D3DRMFPTF_NOALPHA 0x00000002L
+#define D3DRMFPTF_PALETTIZED 0x00000004L
+#define D3DRMFPTF_NOTPALETTIZED 0x00000008L
+
+#define D3DRMSTATECHANGE_UPDATEONLY 0x000000001L
+#define D3DRMSTATECHANGE_VOLATILE 0x000000002L
+#define D3DRMSTATECHANGE_NONVOLATILE 0x000000004L
+#define D3DRMSTATECHANGE_RENDER 0x000000020L
+#define D3DRMSTATECHANGE_LIGHT 0x000000040L
+
+/*
+ * Values for flags in RM3::CreateDeviceFromSurface
+ */
+#define D3DRMDEVICE_NOZBUFFER 0x00000001L
+
+/*
+ * Values for flags in Object2::SetClientData
+ */
+#define D3DRMCLIENTDATA_NONE 0x00000001L
+#define D3DRMCLIENTDATA_LOCALFREE 0x00000002L
+#define D3DRMCLIENTDATA_IUNKNOWN 0x00000004L
+
+/*
+ * Values for flags in Frame2::AddMoveCallback.
+ */
+#define D3DRMCALLBACK_PREORDER 0
+#define D3DRMCALLBACK_POSTORDER 1
+
+/*
+ * Values for flags in MeshBuilder2::RayPick.
+ */
+#define D3DRMRAYPICK_ONLYBOUNDINGBOXES 1
+#define D3DRMRAYPICK_IGNOREFURTHERPRIMITIVES 2
+#define D3DRMRAYPICK_INTERPOLATEUV 4
+#define D3DRMRAYPICK_INTERPOLATECOLOR 8
+#define D3DRMRAYPICK_INTERPOLATENORMAL 0x10
+
+/*
+ * Values for flags in MeshBuilder3::AddFacesIndexed.
+ */
+#define D3DRMADDFACES_VERTICESONLY 1
+
+/*
+ * Values for flags in MeshBuilder2::GenerateNormals.
+ */
+#define D3DRMGENERATENORMALS_PRECOMPACT 1
+#define D3DRMGENERATENORMALS_USECREASEANGLE 2
+
+/*
+ * Values for MeshBuilder3::GetParentMesh
+ */
+#define D3DRMMESHBUILDER_DIRECTPARENT 1
+#define D3DRMMESHBUILDER_ROOTMESH 2
+
+/*
+ * Flags for MeshBuilder3::Enable
+ */
+#define D3DRMMESHBUILDER_RENDERENABLE 0x00000001L
+#define D3DRMMESHBUILDER_PICKENABLE 0x00000002L
+
+/*
+ * Flags for MeshBuilder3::AddMeshBuilder
+ */
+#define D3DRMADDMESHBUILDER_DONTCOPYAPPDATA 1
+#define D3DRMADDMESHBUILDER_FLATTENSUBMESHES 2
+#define D3DRMADDMESHBUILDER_NOSUBMESHES 4
+
+/*
+ * Flags for Object2::GetAge when used with MeshBuilders
+ */
+#define D3DRMMESHBUILDERAGE_GEOMETRY 0x00000001L
+#define D3DRMMESHBUILDERAGE_MATERIALS 0x00000002L
+#define D3DRMMESHBUILDERAGE_TEXTURES 0x00000004L
+
+/*
+ * Format flags for MeshBuilder3::AddTriangles.
+ */
+#define D3DRMFVF_TYPE 0x00000001L
+#define D3DRMFVF_NORMAL 0x00000002L
+#define D3DRMFVF_COLOR 0x00000004L
+#define D3DRMFVF_TEXTURECOORDS 0x00000008L
+
+#define D3DRMVERTEX_STRIP 0x00000001L
+#define D3DRMVERTEX_FAN 0x00000002L
+#define D3DRMVERTEX_LIST 0x00000004L
+
+/*
+ * Values for flags in Viewport2::Clear2
+ */
+#define D3DRMCLEAR_TARGET 0x00000001L
+#define D3DRMCLEAR_ZBUFFER 0x00000002L
+#define D3DRMCLEAR_DIRTYRECTS 0x00000004L
+#define D3DRMCLEAR_ALL (D3DRMCLEAR_TARGET | \
+ D3DRMCLEAR_ZBUFFER | \
+ D3DRMCLEAR_DIRTYRECTS)
+
+/*
+ * Values for flags in Frame3::SetSceneFogMethod
+ */
+#define D3DRMFOGMETHOD_VERTEX 0x00000001L
+#define D3DRMFOGMETHOD_TABLE 0x00000002L
+#define D3DRMFOGMETHOD_ANY 0x00000004L
+
+/*
+ * Values for flags in Frame3::SetTraversalOptions
+ */
+#define D3DRMFRAME_RENDERENABLE 0x00000001L
+#define D3DRMFRAME_PICKENABLE 0x00000002L
+
+typedef DWORD D3DRMANIMATIONOPTIONS;
+#define D3DRMANIMATION_OPEN 0x01L
+#define D3DRMANIMATION_CLOSED 0x02L
+#define D3DRMANIMATION_LINEARPOSITION 0x04L
+#define D3DRMANIMATION_SPLINEPOSITION 0x08L
+#define D3DRMANIMATION_SCALEANDROTATION 0x00000010L
+#define D3DRMANIMATION_POSITION 0x00000020L
+
+typedef DWORD D3DRMINTERPOLATIONOPTIONS;
+#define D3DRMINTERPOLATION_OPEN 0x01L
+#define D3DRMINTERPOLATION_CLOSED 0x02L
+#define D3DRMINTERPOLATION_NEAREST 0x0100L
+#define D3DRMINTERPOLATION_LINEAR 0x04L
+#define D3DRMINTERPOLATION_SPLINE 0x08L
+#define D3DRMINTERPOLATION_VERTEXCOLOR 0x40L
+#define D3DRMINTERPOLATION_SLERPNORMALS 0x80L
+
+typedef DWORD D3DRMLOADOPTIONS;
+
+#define D3DRMLOAD_FROMFILE 0x00L
+#define D3DRMLOAD_FROMRESOURCE 0x01L
+#define D3DRMLOAD_FROMMEMORY 0x02L
+#define D3DRMLOAD_FROMSTREAM 0x04L
+#define D3DRMLOAD_FROMURL 0x08L
+
+#define D3DRMLOAD_BYNAME 0x10L
+#define D3DRMLOAD_BYPOSITION 0x20L
+#define D3DRMLOAD_BYGUID 0x40L
+#define D3DRMLOAD_FIRST 0x80L
+
+#define D3DRMLOAD_INSTANCEBYREFERENCE 0x100L
+#define D3DRMLOAD_INSTANCEBYCOPYING 0x200L
+
+#define D3DRMLOAD_ASYNCHRONOUS 0x400L
+
+typedef struct _D3DRMLOADRESOURCE {
+ HMODULE hModule;
+ LPCTSTR lpName;
+ LPCTSTR lpType;
+} D3DRMLOADRESOURCE, *LPD3DRMLOADRESOURCE;
+
+typedef struct _D3DRMLOADMEMORY {
+ LPVOID lpMemory;
+ DWORD dSize;
+} D3DRMLOADMEMORY, *LPD3DRMLOADMEMORY;
+
+#define D3DRMPMESHSTATUS_VALID 0x01L
+#define D3DRMPMESHSTATUS_INTERRUPTED 0x02L
+#define D3DRMPMESHSTATUS_BASEMESHCOMPLETE 0x04L
+#define D3DRMPMESHSTATUS_COMPLETE 0x08L
+#define D3DRMPMESHSTATUS_RENDERABLE 0x10L
+
+#define D3DRMPMESHEVENT_BASEMESH 0x01L
+#define D3DRMPMESHEVENT_COMPLETE 0x02L
+
+typedef struct _D3DRMPMESHLOADSTATUS {
+ DWORD dwSize; // Size of this structure
+ DWORD dwPMeshSize; // Total Size (bytes)
+ DWORD dwBaseMeshSize; // Total Size of the Base Mesh
+ DWORD dwBytesLoaded; // Total bytes loaded
+ DWORD dwVerticesLoaded; // Number of vertices loaded
+ DWORD dwFacesLoaded; // Number of faces loaded
+ HRESULT dwLoadResult; // Result of the load operation
+ DWORD dwFlags;
+} D3DRMPMESHLOADSTATUS, *LPD3DRMPMESHLOADSTATUS;
+
+typedef enum _D3DRMUSERVISUALREASON {
+ D3DRMUSERVISUAL_CANSEE,
+ D3DRMUSERVISUAL_RENDER
+} D3DRMUSERVISUALREASON, *LPD3DRMUSERVISUALREASON;
+
+
+typedef struct _D3DRMANIMATIONKEY
+{
+ DWORD dwSize;
+ DWORD dwKeyType;
+ D3DVALUE dvTime;
+ DWORD dwID;
+#if (!defined __cplusplus) || (!defined D3D_OVERLOADS)
+ union
+ {
+ D3DRMQUATERNION dqRotateKey;
+ D3DVECTOR dvScaleKey;
+ D3DVECTOR dvPositionKey;
+ };
+#else
+ /*
+ * We do this as D3D_OVERLOADS defines constructors for D3DVECTOR,
+ * this can then not be used in a union. Use the inlines provided
+ * to extract and set the required component.
+ */
+ D3DVALUE dvK[4];
+#endif
+} D3DRMANIMATIONKEY;
+typedef D3DRMANIMATIONKEY *LPD3DRMANIMATIONKEY;
+
+#if (defined __cplusplus) && (defined D3D_OVERLOADS)
+inline VOID
+D3DRMAnimationGetRotateKey(const D3DRMANIMATIONKEY& rmKey,
+ D3DRMQUATERNION& rmQuat)
+{
+ rmQuat.s = rmKey.dvK[0];
+ rmQuat.v = D3DVECTOR(rmKey.dvK[1], rmKey.dvK[2], rmKey.dvK[3]);
+}
+
+inline VOID
+D3DRMAnimationGetScaleKey(const D3DRMANIMATIONKEY& rmKey,
+ D3DVECTOR& dvVec)
+{
+ dvVec = D3DVECTOR(rmKey.dvK[0], rmKey.dvK[1], rmKey.dvK[2]);
+}
+
+inline VOID
+D3DRMAnimationGetPositionKey(const D3DRMANIMATIONKEY& rmKey,
+ D3DVECTOR& dvVec)
+{
+ dvVec = D3DVECTOR(rmKey.dvK[0], rmKey.dvK[1], rmKey.dvK[2]);
+}
+inline VOID
+D3DRMAnimationSetRotateKey(D3DRMANIMATIONKEY& rmKey,
+ const D3DRMQUATERNION& rmQuat)
+{
+ rmKey.dvK[0] = rmQuat.s;
+ rmKey.dvK[1] = rmQuat.v.x;
+ rmKey.dvK[2] = rmQuat.v.y;
+ rmKey.dvK[3] = rmQuat.v.z;
+}
+
+inline VOID
+D3DRMAnimationSetScaleKey(D3DRMANIMATIONKEY& rmKey,
+ const D3DVECTOR& dvVec)
+{
+ rmKey.dvK[0] = dvVec.x;
+ rmKey.dvK[1] = dvVec.y;
+ rmKey.dvK[2] = dvVec.z;
+}
+
+inline VOID
+D3DRMAnimationSetPositionKey(D3DRMANIMATIONKEY& rmKey,
+ const D3DVECTOR& dvVec)
+{
+ rmKey.dvK[0] = dvVec.x;
+ rmKey.dvK[1] = dvVec.y;
+ rmKey.dvK[2] = dvVec.z;
+}
+#endif
+
+#define D3DRMANIMATION_ROTATEKEY 0x01
+#define D3DRMANIMATION_SCALEKEY 0x02
+#define D3DRMANIMATION_POSITIONKEY 0x03
+
+
+typedef DWORD D3DRMMAPPING, D3DRMMAPPINGFLAG, *LPD3DRMMAPPING;
+static const D3DRMMAPPINGFLAG D3DRMMAP_WRAPU = 1;
+static const D3DRMMAPPINGFLAG D3DRMMAP_WRAPV = 2;
+static const D3DRMMAPPINGFLAG D3DRMMAP_PERSPCORRECT = 4;
+
+typedef struct _D3DRMVERTEX
+{ D3DVECTOR position;
+ D3DVECTOR normal;
+ D3DVALUE tu, tv;
+ D3DCOLOR color;
+} D3DRMVERTEX, *LPD3DRMVERTEX;
+
+typedef LONG D3DRMGROUPINDEX; /* group indexes begin a 0 */
+static const D3DRMGROUPINDEX D3DRMGROUP_ALLGROUPS = -1;
+
+/*
+ * Create a color from three components in the range 0-1 inclusive.
+ */
+extern D3DCOLOR D3DRMAPI D3DRMCreateColorRGB(D3DVALUE red,
+ D3DVALUE green,
+ D3DVALUE blue);
+
+/*
+ * Create a color from four components in the range 0-1 inclusive.
+ */
+extern D3DCOLOR D3DRMAPI D3DRMCreateColorRGBA(D3DVALUE red,
+ D3DVALUE green,
+ D3DVALUE blue,
+ D3DVALUE alpha);
+
+/*
+ * Get the red component of a color.
+ */
+extern D3DVALUE D3DRMAPI D3DRMColorGetRed(D3DCOLOR);
+
+/*
+ * Get the green component of a color.
+ */
+extern D3DVALUE D3DRMAPI D3DRMColorGetGreen(D3DCOLOR);
+
+/*
+ * Get the blue component of a color.
+ */
+extern D3DVALUE D3DRMAPI D3DRMColorGetBlue(D3DCOLOR);
+
+/*
+ * Get the alpha component of a color.
+ */
+extern D3DVALUE D3DRMAPI D3DRMColorGetAlpha(D3DCOLOR);
+
+/*
+ * Add two vectors. Returns its first argument.
+ */
+extern LPD3DVECTOR D3DRMAPI D3DRMVectorAdd(LPD3DVECTOR d,
+ LPD3DVECTOR s1,
+ LPD3DVECTOR s2);
+
+/*
+ * Subtract two vectors. Returns its first argument.
+ */
+extern LPD3DVECTOR D3DRMAPI D3DRMVectorSubtract(LPD3DVECTOR d,
+ LPD3DVECTOR s1,
+ LPD3DVECTOR s2);
+/*
+ * Reflect a ray about a given normal. Returns its first argument.
+ */
+extern LPD3DVECTOR D3DRMAPI D3DRMVectorReflect(LPD3DVECTOR d,
+ LPD3DVECTOR ray,
+ LPD3DVECTOR norm);
+
+/*
+ * Calculate the vector cross product. Returns its first argument.
+ */
+extern LPD3DVECTOR D3DRMAPI D3DRMVectorCrossProduct(LPD3DVECTOR d,
+ LPD3DVECTOR s1,
+ LPD3DVECTOR s2);
+/*
+ * Return the vector dot product.
+ */
+extern D3DVALUE D3DRMAPI D3DRMVectorDotProduct(LPD3DVECTOR s1,
+ LPD3DVECTOR s2);
+
+/*
+ * Scale a vector so that its modulus is 1. Returns its argument or
+ * NULL if there was an error (e.g. a zero vector was passed).
+ */
+extern LPD3DVECTOR D3DRMAPI D3DRMVectorNormalize(LPD3DVECTOR);
+#define D3DRMVectorNormalise D3DRMVectorNormalize
+
+/*
+ * Return the length of a vector (e.g. sqrt(x*x + y*y + z*z)).
+ */
+extern D3DVALUE D3DRMAPI D3DRMVectorModulus(LPD3DVECTOR v);
+
+/*
+ * Set the rotation part of a matrix to be a rotation of theta radians
+ * around the given axis.
+ */
+
+extern LPD3DVECTOR D3DRMAPI D3DRMVectorRotate(LPD3DVECTOR r, LPD3DVECTOR v, LPD3DVECTOR axis, D3DVALUE theta);
+
+/*
+ * Scale a vector uniformly in all three axes
+ */
+extern LPD3DVECTOR D3DRMAPI D3DRMVectorScale(LPD3DVECTOR d, LPD3DVECTOR s, D3DVALUE factor);
+
+/*
+ * Return a random unit vector
+ */
+extern LPD3DVECTOR D3DRMAPI D3DRMVectorRandom(LPD3DVECTOR d);
+
+/*
+ * Returns a unit quaternion that represents a rotation of theta radians
+ * around the given axis.
+ */
+
+extern LPD3DRMQUATERNION D3DRMAPI D3DRMQuaternionFromRotation(LPD3DRMQUATERNION quat,
+ LPD3DVECTOR v,
+ D3DVALUE theta);
+
+/*
+ * Calculate the product of two quaternions
+ */
+extern LPD3DRMQUATERNION D3DRMAPI D3DRMQuaternionMultiply(LPD3DRMQUATERNION q,
+ LPD3DRMQUATERNION a,
+ LPD3DRMQUATERNION b);
+
+/*
+ * Interpolate between two quaternions
+ */
+extern LPD3DRMQUATERNION D3DRMAPI D3DRMQuaternionSlerp(LPD3DRMQUATERNION q,
+ LPD3DRMQUATERNION a,
+ LPD3DRMQUATERNION b,
+ D3DVALUE alpha);
+
+/*
+ * Calculate the matrix for the rotation that a unit quaternion represents
+ */
+extern void D3DRMAPI D3DRMMatrixFromQuaternion(D3DRMMATRIX4D dmMat, LPD3DRMQUATERNION lpDqQuat);
+
+/*
+ * Calculate the quaternion that corresponds to a rotation matrix
+ */
+extern LPD3DRMQUATERNION D3DRMAPI D3DRMQuaternionFromMatrix(LPD3DRMQUATERNION, D3DRMMATRIX4D);
+
+
+#if defined(__cplusplus)
+};
+#endif
+
+#endif
+
diff --git a/include/dx/d3drmobj.h b/include/dx/d3drmobj.h
new file mode 100644
index 000000000..d0bb934ef
--- /dev/null
+++ b/include/dx/d3drmobj.h
@@ -0,0 +1,1666 @@
+/*==========================================================================;
+ *
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *
+ * File: d3drm.h
+ * Content: Direct3DRM include file
+ *
+ ***************************************************************************/
+
+#ifndef _D3DRMOBJ_H_
+#define _D3DRMOBJ_H_
+
+#include <objbase.h> /* Use Windows header files */
+#define VIRTUAL
+#include "d3drmdef.h"
+
+#include "d3d.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * The methods for IUnknown
+ */
+#define IUNKNOWN_METHODS(kind) \
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) kind; \
+ STDMETHOD_(ULONG, AddRef) (THIS) kind; \
+ STDMETHOD_(ULONG, Release) (THIS) kind
+
+/*
+ * The methods for IDirect3DRMObject
+ */
+#define IDIRECT3DRMOBJECT_METHODS(kind) \
+ STDMETHOD(Clone) (THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) kind; \
+ STDMETHOD(AddDestroyCallback) (THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) kind; \
+ STDMETHOD(DeleteDestroyCallback) (THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) kind; \
+ STDMETHOD(SetAppData) (THIS_ DWORD data) kind; \
+ STDMETHOD_(DWORD, GetAppData) (THIS) kind; \
+ STDMETHOD(SetName) (THIS_ LPCSTR) kind; \
+ STDMETHOD(GetName) (THIS_ LPDWORD lpdwSize, LPSTR lpName) kind; \
+ STDMETHOD(GetClassName) (THIS_ LPDWORD lpdwSize, LPSTR lpName) kind
+
+
+#define WIN_TYPES(itype, ptype) \
+ typedef interface itype FAR *LP##ptype, FAR **LPLP##ptype
+
+WIN_TYPES(IDirect3DRMObject, DIRECT3DRMOBJECT);
+WIN_TYPES(IDirect3DRMObject2, DIRECT3DRMOBJECT2);
+WIN_TYPES(IDirect3DRMDevice, DIRECT3DRMDEVICE);
+WIN_TYPES(IDirect3DRMDevice2, DIRECT3DRMDEVICE2);
+WIN_TYPES(IDirect3DRMDevice3, DIRECT3DRMDEVICE3);
+WIN_TYPES(IDirect3DRMViewport, DIRECT3DRMVIEWPORT);
+WIN_TYPES(IDirect3DRMViewport2, DIRECT3DRMVIEWPORT2);
+WIN_TYPES(IDirect3DRMFrame, DIRECT3DRMFRAME);
+WIN_TYPES(IDirect3DRMFrame2, DIRECT3DRMFRAME2);
+WIN_TYPES(IDirect3DRMFrame3, DIRECT3DRMFRAME3);
+WIN_TYPES(IDirect3DRMVisual, DIRECT3DRMVISUAL);
+WIN_TYPES(IDirect3DRMMesh, DIRECT3DRMMESH);
+WIN_TYPES(IDirect3DRMMeshBuilder, DIRECT3DRMMESHBUILDER);
+WIN_TYPES(IDirect3DRMMeshBuilder2, DIRECT3DRMMESHBUILDER2);
+WIN_TYPES(IDirect3DRMMeshBuilder3, DIRECT3DRMMESHBUILDER3);
+WIN_TYPES(IDirect3DRMFace, DIRECT3DRMFACE);
+WIN_TYPES(IDirect3DRMFace2, DIRECT3DRMFACE2);
+WIN_TYPES(IDirect3DRMLight, DIRECT3DRMLIGHT);
+WIN_TYPES(IDirect3DRMTexture, DIRECT3DRMTEXTURE);
+WIN_TYPES(IDirect3DRMTexture2, DIRECT3DRMTEXTURE2);
+WIN_TYPES(IDirect3DRMTexture3, DIRECT3DRMTEXTURE3);
+WIN_TYPES(IDirect3DRMWrap, DIRECT3DRMWRAP);
+WIN_TYPES(IDirect3DRMMaterial, DIRECT3DRMMATERIAL);
+WIN_TYPES(IDirect3DRMMaterial2, DIRECT3DRMMATERIAL2);
+WIN_TYPES(IDirect3DRMInterpolator, DIRECT3DRMINTERPOLATOR);
+WIN_TYPES(IDirect3DRMAnimation, DIRECT3DRMANIMATION);
+WIN_TYPES(IDirect3DRMAnimation2, DIRECT3DRMANIMATION2);
+WIN_TYPES(IDirect3DRMAnimationSet, DIRECT3DRMANIMATIONSET);
+WIN_TYPES(IDirect3DRMAnimationSet2, DIRECT3DRMANIMATIONSET2);
+WIN_TYPES(IDirect3DRMUserVisual, DIRECT3DRMUSERVISUAL);
+WIN_TYPES(IDirect3DRMShadow, DIRECT3DRMSHADOW);
+WIN_TYPES(IDirect3DRMShadow2, DIRECT3DRMSHADOW2);
+WIN_TYPES(IDirect3DRMArray, DIRECT3DRMARRAY);
+WIN_TYPES(IDirect3DRMObjectArray, DIRECT3DRMOBJECTARRAY);
+WIN_TYPES(IDirect3DRMDeviceArray, DIRECT3DRMDEVICEARRAY);
+WIN_TYPES(IDirect3DRMFaceArray, DIRECT3DRMFACEARRAY);
+WIN_TYPES(IDirect3DRMViewportArray, DIRECT3DRMVIEWPORTARRAY);
+WIN_TYPES(IDirect3DRMFrameArray, DIRECT3DRMFRAMEARRAY);
+WIN_TYPES(IDirect3DRMAnimationArray, DIRECT3DRMANIMATIONARRAY);
+WIN_TYPES(IDirect3DRMVisualArray, DIRECT3DRMVISUALARRAY);
+WIN_TYPES(IDirect3DRMPickedArray, DIRECT3DRMPICKEDARRAY);
+WIN_TYPES(IDirect3DRMPicked2Array, DIRECT3DRMPICKED2ARRAY);
+WIN_TYPES(IDirect3DRMLightArray, DIRECT3DRMLIGHTARRAY);
+WIN_TYPES(IDirect3DRMProgressiveMesh, DIRECT3DRMPROGRESSIVEMESH);
+WIN_TYPES(IDirect3DRMClippedVisual, DIRECT3DRMCLIPPEDVISUAL);
+
+/*
+ * Direct3DRM Object classes
+ */
+DEFINE_GUID(CLSID_CDirect3DRMDevice, 0x4fa3568e, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(CLSID_CDirect3DRMViewport, 0x4fa3568f, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(CLSID_CDirect3DRMFrame, 0x4fa35690, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(CLSID_CDirect3DRMMesh, 0x4fa35691, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(CLSID_CDirect3DRMMeshBuilder, 0x4fa35692, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(CLSID_CDirect3DRMFace, 0x4fa35693, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(CLSID_CDirect3DRMLight, 0x4fa35694, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(CLSID_CDirect3DRMTexture, 0x4fa35695, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(CLSID_CDirect3DRMWrap, 0x4fa35696, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(CLSID_CDirect3DRMMaterial, 0x4fa35697, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(CLSID_CDirect3DRMAnimation, 0x4fa35698, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(CLSID_CDirect3DRMAnimationSet, 0x4fa35699, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(CLSID_CDirect3DRMUserVisual, 0x4fa3569a, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(CLSID_CDirect3DRMShadow, 0x4fa3569b, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(CLSID_CDirect3DRMViewportInterpolator,
+0xde9eaa1, 0x3b84, 0x11d0, 0x9b, 0x6d, 0x0, 0x0, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(CLSID_CDirect3DRMFrameInterpolator,
+0xde9eaa2, 0x3b84, 0x11d0, 0x9b, 0x6d, 0x0, 0x0, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(CLSID_CDirect3DRMMeshInterpolator,
+0xde9eaa3, 0x3b84, 0x11d0, 0x9b, 0x6d, 0x0, 0x0, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(CLSID_CDirect3DRMLightInterpolator,
+0xde9eaa6, 0x3b84, 0x11d0, 0x9b, 0x6d, 0x0, 0x0, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(CLSID_CDirect3DRMMaterialInterpolator,
+0xde9eaa7, 0x3b84, 0x11d0, 0x9b, 0x6d, 0x0, 0x0, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(CLSID_CDirect3DRMTextureInterpolator,
+0xde9eaa8, 0x3b84, 0x11d0, 0x9b, 0x6d, 0x0, 0x0, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(CLSID_CDirect3DRMProgressiveMesh, 0x4516ec40, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(CLSID_CDirect3DRMClippedVisual, 0x5434e72d, 0x6d66, 0x11d1, 0xbb, 0xb, 0x0, 0x0, 0xf8, 0x75, 0x86, 0x5a);
+
+
+/*
+ * Direct3DRM Object interfaces
+ */
+DEFINE_GUID(IID_IDirect3DRMObject, 0xeb16cb00, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMObject2, 0x4516ec7c, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(IID_IDirect3DRMDevice, 0xe9e19280, 0x6e05, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMDevice2, 0x4516ec78, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(IID_IDirect3DRMDevice3, 0x549f498b, 0xbfeb, 0x11d1, 0x8e, 0xd8, 0x0, 0xa0, 0xc9, 0x67, 0xa4, 0x82);
+DEFINE_GUID(IID_IDirect3DRMViewport, 0xeb16cb02, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMViewport2, 0x4a1b1be6, 0xbfed, 0x11d1, 0x8e, 0xd8, 0x0, 0xa0, 0xc9, 0x67, 0xa4, 0x82);
+DEFINE_GUID(IID_IDirect3DRMFrame, 0xeb16cb03, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMFrame2, 0xc3dfbd60, 0x3988, 0x11d0, 0x9e, 0xc2, 0x0, 0x0, 0xc0, 0x29, 0x1a, 0xc3);
+DEFINE_GUID(IID_IDirect3DRMFrame3, 0xff6b7f70, 0xa40e, 0x11d1, 0x91, 0xf9, 0x0, 0x0, 0xf8, 0x75, 0x8e, 0x66);
+DEFINE_GUID(IID_IDirect3DRMVisual, 0xeb16cb04, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMMesh, 0xa3a80d01, 0x6e12, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMMeshBuilder, 0xa3a80d02, 0x6e12, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMMeshBuilder2, 0x4516ec77, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x0, 0x0, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(IID_IDirect3DRMMeshBuilder3, 0x4516ec82, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(IID_IDirect3DRMFace, 0xeb16cb07, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMFace2, 0x4516ec81, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(IID_IDirect3DRMLight, 0xeb16cb08, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMTexture, 0xeb16cb09, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMTexture2, 0x120f30c0, 0x1629, 0x11d0, 0x94, 0x1c, 0x0, 0x80, 0xc8, 0xc, 0xfa, 0x7b);
+DEFINE_GUID(IID_IDirect3DRMTexture3, 0xff6b7f73, 0xa40e, 0x11d1, 0x91, 0xf9, 0x0, 0x0, 0xf8, 0x75, 0x8e, 0x66);
+DEFINE_GUID(IID_IDirect3DRMWrap, 0xeb16cb0a, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMMaterial, 0xeb16cb0b, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMMaterial2, 0xff6b7f75, 0xa40e, 0x11d1, 0x91, 0xf9, 0x0, 0x0, 0xf8, 0x75, 0x8e, 0x66);
+DEFINE_GUID(IID_IDirect3DRMAnimation, 0xeb16cb0d, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMAnimation2, 0xff6b7f77, 0xa40e, 0x11d1, 0x91, 0xf9, 0x0, 0x0, 0xf8, 0x75, 0x8e, 0x66);
+DEFINE_GUID(IID_IDirect3DRMAnimationSet, 0xeb16cb0e, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMAnimationSet2, 0xff6b7f79, 0xa40e, 0x11d1, 0x91, 0xf9, 0x0, 0x0, 0xf8, 0x75, 0x8e, 0x66);
+DEFINE_GUID(IID_IDirect3DRMObjectArray, 0x242f6bc2, 0x3849, 0x11d0, 0x9b, 0x6d, 0x0, 0x0, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(IID_IDirect3DRMDeviceArray, 0xeb16cb10, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMViewportArray, 0xeb16cb11, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMFrameArray, 0xeb16cb12, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMVisualArray, 0xeb16cb13, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMLightArray, 0xeb16cb14, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMPickedArray, 0xeb16cb16, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMFaceArray, 0xeb16cb17, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMAnimationArray,
+0xd5f1cae0, 0x4bd7, 0x11d1, 0xb9, 0x74, 0x0, 0x60, 0x8, 0x3e, 0x45, 0xf3);
+DEFINE_GUID(IID_IDirect3DRMUserVisual, 0x59163de0, 0x6d43, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMShadow, 0xaf359780, 0x6ba3, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+DEFINE_GUID(IID_IDirect3DRMShadow2, 0x86b44e25, 0x9c82, 0x11d1, 0xbb, 0xb, 0x0, 0xa0, 0xc9, 0x81, 0xa0, 0xa6);
+DEFINE_GUID(IID_IDirect3DRMInterpolator, 0x242f6bc1, 0x3849, 0x11d0, 0x9b, 0x6d, 0x0, 0x0, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(IID_IDirect3DRMProgressiveMesh, 0x4516ec79, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x0, 0x0, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(IID_IDirect3DRMPicked2Array, 0x4516ec7b, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x0, 0x0, 0xc0, 0x78, 0x1b, 0xc3);
+DEFINE_GUID(IID_IDirect3DRMClippedVisual, 0x5434e733, 0x6d66, 0x11d1, 0xbb, 0xb, 0x0, 0x0, 0xf8, 0x75, 0x86, 0x5a);
+
+typedef void (__cdecl *D3DRMOBJECTCALLBACK)(LPDIRECT3DRMOBJECT obj, LPVOID arg);
+typedef void (__cdecl *D3DRMFRAMEMOVECALLBACK)(LPDIRECT3DRMFRAME obj, LPVOID arg, D3DVALUE delta);
+typedef void (__cdecl *D3DRMFRAME3MOVECALLBACK)(LPDIRECT3DRMFRAME3 obj, LPVOID arg, D3DVALUE delta);
+typedef void (__cdecl *D3DRMUPDATECALLBACK)(LPDIRECT3DRMDEVICE obj, LPVOID arg, int, LPD3DRECT);
+typedef void (__cdecl *D3DRMDEVICE3UPDATECALLBACK)(LPDIRECT3DRMDEVICE3 obj, LPVOID arg, int, LPD3DRECT);
+typedef int (__cdecl *D3DRMUSERVISUALCALLBACK)
+ ( LPDIRECT3DRMUSERVISUAL obj, LPVOID arg, D3DRMUSERVISUALREASON reason,
+ LPDIRECT3DRMDEVICE dev, LPDIRECT3DRMVIEWPORT view
+ );
+typedef HRESULT (__cdecl *D3DRMLOADTEXTURECALLBACK)
+ (char *tex_name, void *arg, LPDIRECT3DRMTEXTURE *);
+typedef HRESULT (__cdecl *D3DRMLOADTEXTURE3CALLBACK)
+ (char *tex_name, void *arg, LPDIRECT3DRMTEXTURE3 *);
+typedef void (__cdecl *D3DRMLOADCALLBACK)
+ (LPDIRECT3DRMOBJECT object, REFIID objectguid, LPVOID arg);
+
+typedef HRESULT (__cdecl *D3DRMDOWNSAMPLECALLBACK)
+ (LPDIRECT3DRMTEXTURE3 lpDirect3DRMTexture, LPVOID pArg,
+ LPDIRECTDRAWSURFACE pDDSSrc, LPDIRECTDRAWSURFACE pDDSDst);
+typedef HRESULT (__cdecl *D3DRMVALIDATIONCALLBACK)
+ (LPDIRECT3DRMTEXTURE3 lpDirect3DRMTexture, LPVOID pArg,
+ DWORD dwFlags, DWORD dwcRects, LPRECT pRects);
+
+
+typedef struct _D3DRMPICKDESC
+{
+ ULONG ulFaceIdx;
+ LONG lGroupIdx;
+ D3DVECTOR vPosition;
+
+} D3DRMPICKDESC, *LPD3DRMPICKDESC;
+
+typedef struct _D3DRMPICKDESC2
+{
+ ULONG ulFaceIdx;
+ LONG lGroupIdx;
+ D3DVECTOR dvPosition;
+ D3DVALUE tu;
+ D3DVALUE tv;
+ D3DVECTOR dvNormal;
+ D3DCOLOR dcColor;
+
+} D3DRMPICKDESC2, *LPD3DRMPICKDESC2;
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMObject
+
+/*
+ * Base class
+ */
+DECLARE_INTERFACE_(IDirect3DRMObject, IUnknown)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMObject2
+
+DECLARE_INTERFACE_(IDirect3DRMObject2, IUnknown)
+{
+ IUNKNOWN_METHODS(PURE);
+
+ /*
+ * IDirect3DRMObject2 methods
+ */
+ STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK lpFunc, LPVOID pvArg) PURE;
+ STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE; \
+ STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK lpFunc, LPVOID pvArg) PURE; \
+ STDMETHOD(GetClientData)(THIS_ DWORD dwID, LPVOID* lplpvData) PURE;
+ STDMETHOD(GetDirect3DRM)(THIS_ LPDIRECT3DRM* lplpDirect3DRM) PURE;
+ STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
+ STDMETHOD(SetClientData)(THIS_ DWORD dwID, LPVOID lpvData, DWORD dwFlags) PURE;
+ STDMETHOD(SetName)(THIS_ LPCSTR lpName) PURE;
+ STDMETHOD(GetAge)(THIS_ DWORD dwFlags, LPDWORD pdwAge) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMVisual
+
+DECLARE_INTERFACE_(IDirect3DRMVisual, IDirect3DRMObject)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMDevice
+
+DECLARE_INTERFACE_(IDirect3DRMDevice, IDirect3DRMObject)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMDevice methods
+ */
+ STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
+ STDMETHOD(InitFromD3D)(THIS_ LPDIRECT3D lpD3D, LPDIRECT3DDEVICE lpD3DDev) PURE;
+ STDMETHOD(InitFromClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper, LPGUID lpGUID, int width, int height) PURE;
+
+ STDMETHOD(Update)(THIS) PURE;
+ STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
+ STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
+ STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
+ STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
+
+ STDMETHOD(SetDither)(THIS_ BOOL) PURE;
+ STDMETHOD(SetShades)(THIS_ DWORD) PURE;
+ STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
+ STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
+
+ STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
+
+ STDMETHOD_(BOOL, GetDither)(THIS) PURE;
+ STDMETHOD_(DWORD, GetShades)(THIS) PURE;
+ STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
+ STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
+ STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
+ STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
+ STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
+ STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
+ STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
+ STDMETHOD(GetDirect3DDevice)(THIS_ LPDIRECT3DDEVICE *) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMDevice2
+
+DECLARE_INTERFACE_(IDirect3DRMDevice2, IDirect3DRMDevice)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMDevice methods
+ */
+ STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
+ STDMETHOD(InitFromD3D)(THIS_ LPDIRECT3D lpD3D, LPDIRECT3DDEVICE lpD3DDev) PURE;
+ STDMETHOD(InitFromClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper, LPGUID lpGUID, int width, int height) PURE;
+
+ STDMETHOD(Update)(THIS) PURE;
+ STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
+ STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
+ STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
+ STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
+
+ STDMETHOD(SetDither)(THIS_ BOOL) PURE;
+ STDMETHOD(SetShades)(THIS_ DWORD) PURE;
+ STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
+ STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
+
+ STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
+
+ STDMETHOD_(BOOL, GetDither)(THIS) PURE;
+ STDMETHOD_(DWORD, GetShades)(THIS) PURE;
+ STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
+ STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
+ STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
+ STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
+ STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
+ STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
+ STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
+ STDMETHOD(GetDirect3DDevice)(THIS_ LPDIRECT3DDEVICE *) PURE;
+
+ /*
+ * IDirect3DRMDevice2 methods
+ */
+ STDMETHOD(InitFromD3D2)(THIS_ LPDIRECT3D2 lpD3D, LPDIRECT3DDEVICE2 lpD3DDev) PURE;
+ STDMETHOD(InitFromSurface)(THIS_ LPGUID lpGUID, LPDIRECTDRAW lpDD, LPDIRECTDRAWSURFACE lpDDSBack) PURE;
+ STDMETHOD(SetRenderMode)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD_(DWORD, GetRenderMode)(THIS) PURE;
+ STDMETHOD(GetDirect3DDevice2)(THIS_ LPDIRECT3DDEVICE2 *) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMDevice3
+
+DECLARE_INTERFACE_(IDirect3DRMDevice3, IDirect3DRMObject)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMDevice methods
+ */
+ STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
+ STDMETHOD(InitFromD3D)(THIS_ LPDIRECT3D lpD3D, LPDIRECT3DDEVICE lpD3DDev) PURE;
+ STDMETHOD(InitFromClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper, LPGUID lpGUID, int width, int height) PURE;
+
+ STDMETHOD(Update)(THIS) PURE;
+ STDMETHOD(AddUpdateCallback)(THIS_ D3DRMDEVICE3UPDATECALLBACK, LPVOID arg) PURE;
+ STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMDEVICE3UPDATECALLBACK, LPVOID arg) PURE;
+ STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
+ STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
+
+ STDMETHOD(SetDither)(THIS_ BOOL) PURE;
+ STDMETHOD(SetShades)(THIS_ DWORD) PURE;
+ STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
+ STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
+
+ STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
+
+ STDMETHOD_(BOOL, GetDither)(THIS) PURE;
+ STDMETHOD_(DWORD, GetShades)(THIS) PURE;
+ STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
+ STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
+ STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
+ STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
+ STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
+ STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
+ STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
+ STDMETHOD(GetDirect3DDevice)(THIS_ LPDIRECT3DDEVICE *) PURE;
+
+ /*
+ * IDirect3DRMDevice2 methods
+ */
+ STDMETHOD(InitFromD3D2)(THIS_ LPDIRECT3D2 lpD3D, LPDIRECT3DDEVICE2 lpD3DDev) PURE;
+ STDMETHOD(InitFromSurface)(THIS_ LPGUID lpGUID, LPDIRECTDRAW lpDD, LPDIRECTDRAWSURFACE lpDDSBack, DWORD dwFlags) PURE;
+ STDMETHOD(SetRenderMode)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD_(DWORD, GetRenderMode)(THIS) PURE;
+ STDMETHOD(GetDirect3DDevice2)(THIS_ LPDIRECT3DDEVICE2 *) PURE;
+
+ /*
+ * IDirect3DRMDevice3 methods
+ */
+ STDMETHOD(FindPreferredTextureFormat)(THIS_ DWORD dwBitDepths, DWORD dwFlags, LPDDPIXELFORMAT lpDDPF) PURE;
+ STDMETHOD(RenderStateChange)(THIS_ D3DRENDERSTATETYPE drsType, DWORD dwVal, DWORD dwFlags) PURE;
+ STDMETHOD(LightStateChange)(THIS_ D3DLIGHTSTATETYPE drsType, DWORD dwVal, DWORD dwFlags) PURE;
+ STDMETHOD(GetStateChangeOptions)(THIS_ DWORD dwStateClass, DWORD dwStateNum, LPDWORD pdwFlags) PURE;
+ STDMETHOD(SetStateChangeOptions)(THIS_ DWORD dwStateClass, DWORD dwStateNum, DWORD dwFlags) PURE;
+};
+
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMViewport
+
+DECLARE_INTERFACE_(IDirect3DRMViewport, IDirect3DRMObject)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMViewport methods
+ */
+ STDMETHOD(Init)
+ ( THIS_ LPDIRECT3DRMDEVICE dev, LPDIRECT3DRMFRAME camera,
+ DWORD xpos, DWORD ypos, DWORD width, DWORD height
+ ) PURE;
+ STDMETHOD(Clear)(THIS) PURE;
+ STDMETHOD(Render)(THIS_ LPDIRECT3DRMFRAME) PURE;
+
+ STDMETHOD(SetFront)(THIS_ D3DVALUE) PURE;
+ STDMETHOD(SetBack)(THIS_ D3DVALUE) PURE;
+ STDMETHOD(SetField)(THIS_ D3DVALUE) PURE;
+ STDMETHOD(SetUniformScaling)(THIS_ BOOL) PURE;
+ STDMETHOD(SetCamera)(THIS_ LPDIRECT3DRMFRAME) PURE;
+ STDMETHOD(SetProjection)(THIS_ D3DRMPROJECTIONTYPE) PURE;
+ STDMETHOD(Transform)(THIS_ D3DRMVECTOR4D *d, D3DVECTOR *s) PURE;
+ STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DRMVECTOR4D *s) PURE;
+ STDMETHOD(Configure)(THIS_ LONG x, LONG y, DWORD width, DWORD height) PURE;
+ STDMETHOD(ForceUpdate)(THIS_ DWORD x1, DWORD y1, DWORD x2, DWORD y2) PURE;
+ STDMETHOD(SetPlane)(THIS_ D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top) PURE;
+
+ STDMETHOD(GetCamera)(THIS_ LPDIRECT3DRMFRAME *) PURE;
+ STDMETHOD(GetDevice)(THIS_ LPDIRECT3DRMDEVICE *) PURE;
+ STDMETHOD(GetPlane)(THIS_ D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top) PURE;
+ STDMETHOD(Pick)(THIS_ LONG x, LONG y, LPDIRECT3DRMPICKEDARRAY *return_visuals) PURE;
+
+ STDMETHOD_(BOOL, GetUniformScaling)(THIS) PURE;
+ STDMETHOD_(LONG, GetX)(THIS) PURE;
+ STDMETHOD_(LONG, GetY)(THIS) PURE;
+ STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
+ STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
+ STDMETHOD_(D3DVALUE, GetField)(THIS) PURE;
+ STDMETHOD_(D3DVALUE, GetBack)(THIS) PURE;
+ STDMETHOD_(D3DVALUE, GetFront)(THIS) PURE;
+ STDMETHOD_(D3DRMPROJECTIONTYPE, GetProjection)(THIS) PURE;
+ STDMETHOD(GetDirect3DViewport)(THIS_ LPDIRECT3DVIEWPORT *) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMViewport2
+DECLARE_INTERFACE_(IDirect3DRMViewport2, IDirect3DRMObject)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMViewport2 methods
+ */
+ STDMETHOD(Init)
+ ( THIS_ LPDIRECT3DRMDEVICE3 dev, LPDIRECT3DRMFRAME3 camera,
+ DWORD xpos, DWORD ypos, DWORD width, DWORD height
+ ) PURE;
+ STDMETHOD(Clear)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(Render)(THIS_ LPDIRECT3DRMFRAME3) PURE;
+
+ STDMETHOD(SetFront)(THIS_ D3DVALUE) PURE;
+ STDMETHOD(SetBack)(THIS_ D3DVALUE) PURE;
+ STDMETHOD(SetField)(THIS_ D3DVALUE) PURE;
+ STDMETHOD(SetUniformScaling)(THIS_ BOOL) PURE;
+ STDMETHOD(SetCamera)(THIS_ LPDIRECT3DRMFRAME3) PURE;
+ STDMETHOD(SetProjection)(THIS_ D3DRMPROJECTIONTYPE) PURE;
+ STDMETHOD(Transform)(THIS_ D3DRMVECTOR4D *d, D3DVECTOR *s) PURE;
+ STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DRMVECTOR4D *s) PURE;
+ STDMETHOD(Configure)(THIS_ LONG x, LONG y, DWORD width, DWORD height) PURE;
+ STDMETHOD(ForceUpdate)(THIS_ DWORD x1, DWORD y1, DWORD x2, DWORD y2) PURE;
+ STDMETHOD(SetPlane)(THIS_ D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top) PURE;
+
+ STDMETHOD(GetCamera)(THIS_ LPDIRECT3DRMFRAME3 *) PURE;
+ STDMETHOD(GetDevice)(THIS_ LPDIRECT3DRMDEVICE3 *) PURE;
+ STDMETHOD(GetPlane)(THIS_ D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top) PURE;
+ STDMETHOD(Pick)(THIS_ LONG x, LONG y, LPDIRECT3DRMPICKEDARRAY *return_visuals) PURE;
+
+ STDMETHOD_(BOOL, GetUniformScaling)(THIS) PURE;
+ STDMETHOD_(LONG, GetX)(THIS) PURE;
+ STDMETHOD_(LONG, GetY)(THIS) PURE;
+ STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
+ STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
+ STDMETHOD_(D3DVALUE, GetField)(THIS) PURE;
+ STDMETHOD_(D3DVALUE, GetBack)(THIS) PURE;
+ STDMETHOD_(D3DVALUE, GetFront)(THIS) PURE;
+ STDMETHOD_(D3DRMPROJECTIONTYPE, GetProjection)(THIS) PURE;
+ STDMETHOD(GetDirect3DViewport)(THIS_ LPDIRECT3DVIEWPORT *) PURE;
+ STDMETHOD(TransformVectors)(THIS_ DWORD dwNumVectors,
+ LPD3DRMVECTOR4D lpDstVectors,
+ LPD3DVECTOR lpSrcVectors) PURE;
+ STDMETHOD(InverseTransformVectors)(THIS_ DWORD dwNumVectors,
+ LPD3DVECTOR lpDstVectors,
+ LPD3DRMVECTOR4D lpSrcVectors) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMFrame
+
+DECLARE_INTERFACE_(IDirect3DRMFrame, IDirect3DRMVisual)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMFrame methods
+ */
+ STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME child) PURE;
+ STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
+ STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
+ STDMETHOD(AddTransform)(THIS_ D3DRMCOMBINETYPE, D3DRMMATRIX4D) PURE;
+ STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
+ STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
+ STDMETHOD(AddVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
+ STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
+ STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
+ STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
+ STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
+ STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME *) PURE;
+ STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_position) PURE;
+ STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE;
+ STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME *) PURE;
+ STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
+ STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
+ STDMETHOD(GetTransform)(THIS_ D3DRMMATRIX4D return_matrix) PURE;
+ STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_velocity, BOOL with_rotation) PURE;
+ STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE;
+ STDMETHOD(GetVisuals)(THIS_ LPDIRECT3DRMVISUALARRAY *visuals) PURE;
+ STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
+ STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
+ STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID lpArg)PURE;
+ STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME target, LPDIRECT3DRMFRAME reference, D3DRMFRAMECONSTRAINT) PURE;
+ STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
+ STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME) PURE;
+ STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
+ STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
+ STDMETHOD(DeleteVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
+ STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
+ STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
+ STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
+ STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE;
+ STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
+ STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end, D3DVALUE *return_density) PURE;
+ STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
+ STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
+ STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
+ STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
+ STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE;
+ STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
+ STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
+ STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
+ STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
+ STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
+ STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
+ STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
+ STDMETHOD(SetOrientation)
+ ( THIS_ LPDIRECT3DRMFRAME reference,
+ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
+ D3DVALUE ux, D3DVALUE uy, D3DVALUE uz
+ ) PURE;
+ STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
+ STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
+ STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
+ STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
+ STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, BOOL with_rotation) PURE;
+ STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
+ STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMFrame2
+
+DECLARE_INTERFACE_(IDirect3DRMFrame2, IDirect3DRMFrame)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMFrame methods
+ */
+ STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME child) PURE;
+ STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
+ STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
+ STDMETHOD(AddTransform)(THIS_ D3DRMCOMBINETYPE, D3DRMMATRIX4D) PURE;
+ STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
+ STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
+ STDMETHOD(AddVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
+ STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
+ STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
+ STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
+ STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
+ STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME *) PURE;
+ STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_position) PURE;
+ STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE;
+ STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME *) PURE;
+ STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
+ STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
+ STDMETHOD(GetTransform)(THIS_ D3DRMMATRIX4D return_matrix) PURE;
+ STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_velocity, BOOL with_rotation) PURE;
+ STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE;
+ STDMETHOD(GetVisuals)(THIS_ LPDIRECT3DRMVISUALARRAY *visuals) PURE;
+ STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
+ STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
+ STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID lpArg)PURE;
+ STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME target, LPDIRECT3DRMFRAME reference, D3DRMFRAMECONSTRAINT) PURE;
+ STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
+ STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME) PURE;
+ STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
+ STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
+ STDMETHOD(DeleteVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE;
+ STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
+ STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
+ STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
+ STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE;
+ STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
+ STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end, D3DVALUE *return_density) PURE;
+ STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
+ STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
+ STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
+ STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
+ STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE;
+ STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
+ STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
+ STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
+ STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
+ STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
+ STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
+ STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
+ STDMETHOD(SetOrientation)
+ ( THIS_ LPDIRECT3DRMFRAME reference,
+ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
+ D3DVALUE ux, D3DVALUE uy, D3DVALUE uz
+ ) PURE;
+ STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
+ STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
+ STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
+ STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
+ STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, BOOL with_rotation) PURE;
+ STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
+ STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
+
+ /*
+ * IDirect3DRMFrame2 methods
+ */
+ STDMETHOD(AddMoveCallback2)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg, DWORD dwFlags) PURE;
+ STDMETHOD(GetBox)(THIS_ LPD3DRMBOX) PURE;
+ STDMETHOD_(BOOL, GetBoxEnable)(THIS) PURE;
+ STDMETHOD(GetAxes)(THIS_ LPD3DVECTOR dir, LPD3DVECTOR up);
+ STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL *) PURE;
+ STDMETHOD_(BOOL, GetInheritAxes)(THIS);
+ STDMETHOD(GetHierarchyBox)(THIS_ LPD3DRMBOX) PURE;
+
+ STDMETHOD(SetBox)(THIS_ LPD3DRMBOX) PURE;
+ STDMETHOD(SetBoxEnable)(THIS_ BOOL) PURE;
+ STDMETHOD(SetAxes)(THIS_ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
+ D3DVALUE ux, D3DVALUE uy, D3DVALUE uz);
+ STDMETHOD(SetInheritAxes)(THIS_ BOOL inherit_from_parent);
+ STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
+ STDMETHOD(SetQuaternion)(THIS_ LPDIRECT3DRMFRAME reference, D3DRMQUATERNION *q) PURE;
+
+ STDMETHOD(RayPick)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DRMRAY ray, DWORD dwFlags, LPDIRECT3DRMPICKED2ARRAY *return_visuals) PURE;
+ STDMETHOD(Save)(THIS_ LPCSTR filename, D3DRMXOFFORMAT d3dFormat,
+ D3DRMSAVEOPTIONS d3dSaveFlags);
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMFrame3
+
+DECLARE_INTERFACE_(IDirect3DRMFrame3, IDirect3DRMVisual)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMFrame3 methods
+ */
+ STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME3 child) PURE;
+ STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
+ STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAME3MOVECALLBACK, VOID *arg, DWORD dwFlags) PURE;
+ STDMETHOD(AddTransform)(THIS_ D3DRMCOMBINETYPE, D3DRMMATRIX4D) PURE;
+ STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
+ STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
+ STDMETHOD(AddVisual)(THIS_ LPUNKNOWN) PURE;
+ STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
+ STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
+ STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
+ STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
+ STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME3 *) PURE;
+ STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR return_position) PURE;
+ STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE;
+ STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME3 *) PURE;
+ STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
+ STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE3 *) PURE;
+ STDMETHOD(GetTransform)(THIS_ LPDIRECT3DRMFRAME3 reference,
+ D3DRMMATRIX4D rmMatrix) PURE;
+ STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR return_velocity, BOOL with_rotation) PURE;
+ STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE;
+ STDMETHOD(GetVisuals)(THIS_ LPDWORD lpdwCount, LPUNKNOWN *) PURE;
+ STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
+ STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURE3CALLBACK, LPVOID lpArg)PURE;
+ STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME3 target, LPDIRECT3DRMFRAME3 reference, D3DRMFRAMECONSTRAINT) PURE;
+ STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
+ STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME3) PURE;
+ STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE;
+ STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAME3MOVECALLBACK, VOID *arg) PURE;
+ STDMETHOD(DeleteVisual)(THIS_ LPUNKNOWN) PURE;
+ STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
+ STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
+ STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
+ STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE;
+ STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
+ STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end, D3DVALUE *return_density) PURE;
+ STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
+ STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
+ STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE;
+ STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
+ STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE;
+ STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
+ STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
+ STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
+ STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
+ STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
+ STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
+ STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
+ STDMETHOD(SetOrientation)
+ ( THIS_ LPDIRECT3DRMFRAME3 reference,
+ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
+ D3DVALUE ux, D3DVALUE uy, D3DVALUE uz
+ ) PURE;
+ STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
+ STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
+ STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
+ STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, BOOL with_rotation) PURE;
+ STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
+ STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
+ STDMETHOD(GetBox)(THIS_ LPD3DRMBOX) PURE;
+ STDMETHOD_(BOOL, GetBoxEnable)(THIS) PURE;
+ STDMETHOD(GetAxes)(THIS_ LPD3DVECTOR dir, LPD3DVECTOR up);
+ STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2 *) PURE;
+ STDMETHOD_(BOOL, GetInheritAxes)(THIS);
+ STDMETHOD(GetHierarchyBox)(THIS_ LPD3DRMBOX) PURE;
+
+ STDMETHOD(SetBox)(THIS_ LPD3DRMBOX) PURE;
+ STDMETHOD(SetBoxEnable)(THIS_ BOOL) PURE;
+ STDMETHOD(SetAxes)(THIS_ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
+ D3DVALUE ux, D3DVALUE uy, D3DVALUE uz);
+ STDMETHOD(SetInheritAxes)(THIS_ BOOL inherit_from_parent);
+ STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
+ STDMETHOD(SetQuaternion)(THIS_ LPDIRECT3DRMFRAME3 reference, D3DRMQUATERNION *q) PURE;
+
+ STDMETHOD(RayPick)(THIS_ LPDIRECT3DRMFRAME3 reference, LPD3DRMRAY ray, DWORD dwFlags, LPDIRECT3DRMPICKED2ARRAY *return_visuals) PURE;
+ STDMETHOD(Save)(THIS_ LPCSTR filename, D3DRMXOFFORMAT d3dFormat,
+ D3DRMSAVEOPTIONS d3dSaveFlags);
+ STDMETHOD(TransformVectors)(THIS_ LPDIRECT3DRMFRAME3 reference,
+ DWORD dwNumVectors,
+ LPD3DVECTOR lpDstVectors,
+ LPD3DVECTOR lpSrcVectors) PURE;
+ STDMETHOD(InverseTransformVectors)(THIS_ LPDIRECT3DRMFRAME3 reference,
+ DWORD dwNumVectors,
+ LPD3DVECTOR lpDstVectors,
+ LPD3DVECTOR lpSrcVectors) PURE;
+ STDMETHOD(SetTraversalOptions)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(GetTraversalOptions)(THIS_ LPDWORD lpdwFlags) PURE;
+ STDMETHOD(SetSceneFogMethod)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(GetSceneFogMethod)(THIS_ LPDWORD lpdwFlags) PURE;
+ STDMETHOD(SetMaterialOverride)(THIS_ LPD3DRMMATERIALOVERRIDE) PURE;
+ STDMETHOD(GetMaterialOverride)(THIS_ LPD3DRMMATERIALOVERRIDE) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMMesh
+
+DECLARE_INTERFACE_(IDirect3DRMMesh, IDirect3DRMVisual)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMMesh methods
+ */
+ STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
+ STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
+ STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
+ STDMETHOD(AddGroup)(THIS_ unsigned vCount, unsigned fCount, unsigned vPerFace, unsigned *fData, D3DRMGROUPINDEX *returnId) PURE;
+ STDMETHOD(SetVertices)(THIS_ D3DRMGROUPINDEX id, unsigned index, unsigned count, D3DRMVERTEX *values) PURE;
+ STDMETHOD(SetGroupColor)(THIS_ D3DRMGROUPINDEX id, D3DCOLOR value) PURE;
+ STDMETHOD(SetGroupColorRGB)(THIS_ D3DRMGROUPINDEX id, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
+ STDMETHOD(SetGroupMapping)(THIS_ D3DRMGROUPINDEX id, D3DRMMAPPING value) PURE;
+ STDMETHOD(SetGroupQuality)(THIS_ D3DRMGROUPINDEX id, D3DRMRENDERQUALITY value) PURE;
+ STDMETHOD(SetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL value) PURE;
+ STDMETHOD(SetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE value) PURE;
+
+ STDMETHOD_(unsigned, GetGroupCount)(THIS) PURE;
+ STDMETHOD(GetGroup)(THIS_ D3DRMGROUPINDEX id, unsigned *vCount, unsigned *fCount, unsigned *vPerFace, DWORD *fDataSize, unsigned *fData) PURE;
+ STDMETHOD(GetVertices)(THIS_ D3DRMGROUPINDEX id, DWORD index, DWORD count, D3DRMVERTEX *returnPtr) PURE;
+ STDMETHOD_(D3DCOLOR, GetGroupColor)(THIS_ D3DRMGROUPINDEX id) PURE;
+ STDMETHOD_(D3DRMMAPPING, GetGroupMapping)(THIS_ D3DRMGROUPINDEX id) PURE;
+ STDMETHOD_(D3DRMRENDERQUALITY, GetGroupQuality)(THIS_ D3DRMGROUPINDEX id) PURE;
+ STDMETHOD(GetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL *returnPtr) PURE;
+ STDMETHOD(GetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE *returnPtr) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMProgressiveMesh
+
+DECLARE_INTERFACE_(IDirect3DRMProgressiveMesh, IDirect3DRMVisual)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMProgressiveMesh methods
+ */
+ STDMETHOD(Load) (THIS_ LPVOID lpObjLocation, LPVOID lpObjId,
+ D3DRMLOADOPTIONS dloLoadflags, D3DRMLOADTEXTURECALLBACK lpCallback,
+ LPVOID lpArg) PURE;
+ STDMETHOD(GetLoadStatus) (THIS_ LPD3DRMPMESHLOADSTATUS lpStatus) PURE;
+ STDMETHOD(SetMinRenderDetail) (THIS_ D3DVALUE d3dVal) PURE;
+ STDMETHOD(Abort) (THIS_ DWORD dwFlags) PURE;
+
+ STDMETHOD(GetFaceDetail) (THIS_ LPDWORD lpdwCount) PURE;
+ STDMETHOD(GetVertexDetail) (THIS_ LPDWORD lpdwCount) PURE;
+ STDMETHOD(SetFaceDetail) (THIS_ DWORD dwCount) PURE;
+ STDMETHOD(SetVertexDetail) (THIS_ DWORD dwCount) PURE;
+ STDMETHOD(GetFaceDetailRange) (THIS_ LPDWORD lpdwMin, LPDWORD lpdwMax) PURE;
+ STDMETHOD(GetVertexDetailRange) (THIS_ LPDWORD lpdwMin, LPDWORD lpdwMax) PURE;
+ STDMETHOD(GetDetail) (THIS_ D3DVALUE *lpdvVal) PURE;
+ STDMETHOD(SetDetail) (THIS_ D3DVALUE d3dVal) PURE;
+
+ STDMETHOD(RegisterEvents) (THIS_ HANDLE hEvent, DWORD dwFlags, DWORD dwReserved) PURE;
+ STDMETHOD(CreateMesh) (THIS_ LPDIRECT3DRMMESH *lplpD3DRMMesh) PURE;
+ STDMETHOD(Duplicate) (THIS_ LPDIRECT3DRMPROGRESSIVEMESH *lplpD3DRMPMesh) PURE;
+ STDMETHOD(GetBox) (THIS_ LPD3DRMBOX lpBBox) PURE;
+ STDMETHOD(SetQuality) (THIS_ D3DRMRENDERQUALITY) PURE;
+ STDMETHOD(GetQuality) (THIS_ LPD3DRMRENDERQUALITY lpdwquality) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMShadow
+
+DECLARE_INTERFACE_(IDirect3DRMShadow, IDirect3DRMVisual)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMShadow methods
+ */
+ STDMETHOD(Init)
+ ( THIS_ LPDIRECT3DRMVISUAL visual, LPDIRECT3DRMLIGHT light,
+ D3DVALUE px, D3DVALUE py, D3DVALUE pz,
+ D3DVALUE nx, D3DVALUE ny, D3DVALUE nz
+ ) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMShadow2
+
+DECLARE_INTERFACE_(IDirect3DRMShadow2, IDirect3DRMVisual)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMShadow methods
+ */
+ STDMETHOD(Init)
+ ( THIS_ LPUNKNOWN pUNK, LPDIRECT3DRMLIGHT light,
+ D3DVALUE px, D3DVALUE py, D3DVALUE pz,
+ D3DVALUE nx, D3DVALUE ny, D3DVALUE nz
+ ) PURE;
+
+ /*
+ * IDirect3DRMShadow2 methods
+ */
+ STDMETHOD(GetVisual)(THIS_ LPDIRECT3DRMVISUAL *) PURE;
+ STDMETHOD(SetVisual)(THIS_ LPUNKNOWN pUNK, DWORD) PURE;
+ STDMETHOD(GetLight)(THIS_ LPDIRECT3DRMLIGHT *) PURE;
+ STDMETHOD(SetLight)(THIS_ LPDIRECT3DRMLIGHT, DWORD) PURE;
+ STDMETHOD(GetPlane)(THIS_ LPD3DVALUE px, LPD3DVALUE py, LPD3DVALUE pz,
+ LPD3DVALUE nx, LPD3DVALUE ny, LPD3DVALUE nz) PURE;
+ STDMETHOD(SetPlane)(THIS_ D3DVALUE px, D3DVALUE py, D3DVALUE pz,
+ D3DVALUE nx, D3DVALUE ny, D3DVALUE nz, DWORD) PURE;
+ STDMETHOD(GetOptions)(THIS_ LPDWORD) PURE;
+ STDMETHOD(SetOptions)(THIS_ DWORD) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMFace
+
+DECLARE_INTERFACE_(IDirect3DRMFace, IDirect3DRMObject)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMFace methods
+ */
+ STDMETHOD(AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(AddVertexAndNormalIndexed)(THIS_ DWORD vertex, DWORD normal) PURE;
+ STDMETHOD(SetColorRGB)(THIS_ D3DVALUE, D3DVALUE, D3DVALUE) PURE;
+ STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
+ STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
+ STDMETHOD(SetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE u, D3DVALUE v) PURE;
+ STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
+ STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
+
+ STDMETHOD(GetVertex)(THIS_ DWORD index, D3DVECTOR *vertex, D3DVECTOR *normal) PURE;
+ STDMETHOD(GetVertices)(THIS_ DWORD *vertex_count, D3DVECTOR *coords, D3DVECTOR *normals);
+ STDMETHOD(GetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE *u, D3DVALUE *v) PURE;
+ STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
+ STDMETHOD(GetNormal)(THIS_ D3DVECTOR *) PURE;
+ STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
+ STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL *) PURE;
+
+ STDMETHOD_(int, GetVertexCount)(THIS) PURE;
+ STDMETHOD_(int, GetVertexIndex)(THIS_ DWORD which) PURE;
+ STDMETHOD_(int, GetTextureCoordinateIndex)(THIS_ DWORD which) PURE;
+ STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMFace2
+
+DECLARE_INTERFACE_(IDirect3DRMFace2, IDirect3DRMObject)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMFace methods
+ */
+ STDMETHOD(AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(AddVertexAndNormalIndexed)(THIS_ DWORD vertex, DWORD normal) PURE;
+ STDMETHOD(SetColorRGB)(THIS_ D3DVALUE, D3DVALUE, D3DVALUE) PURE;
+ STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
+ STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
+ STDMETHOD(SetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE u, D3DVALUE v) PURE;
+ STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
+ STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
+
+ STDMETHOD(GetVertex)(THIS_ DWORD index, D3DVECTOR *vertex, D3DVECTOR *normal) PURE;
+ STDMETHOD(GetVertices)(THIS_ DWORD *vertex_count, D3DVECTOR *coords, D3DVECTOR *normals);
+ STDMETHOD(GetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE *u, D3DVALUE *v) PURE;
+ STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE;
+ STDMETHOD(GetNormal)(THIS_ D3DVECTOR *) PURE;
+ STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE3 *) PURE;
+ STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2 *) PURE;
+
+ STDMETHOD_(int, GetVertexCount)(THIS) PURE;
+ STDMETHOD_(int, GetVertexIndex)(THIS_ DWORD which) PURE;
+ STDMETHOD_(int, GetTextureCoordinateIndex)(THIS_ DWORD which) PURE;
+ STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMMeshBuilder
+
+DECLARE_INTERFACE_(IDirect3DRMMeshBuilder, IDirect3DRMVisual)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMMeshBuilder methods
+ */
+ STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID lpArg) PURE;
+ STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
+ STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
+ STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
+ STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
+ STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
+ STDMETHOD(GenerateNormals)(THIS) PURE;
+ STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
+
+ STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
+ STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER) PURE;
+ STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME) PURE;
+ STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE) PURE;
+ STDMETHOD(AddFaces)
+ ( THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals,
+ DWORD *data, LPDIRECT3DRMFACEARRAY*
+ ) PURE;
+ STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
+ STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
+ STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
+ STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
+ STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
+ STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
+ STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
+ STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
+ STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
+ STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
+ STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
+
+ STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
+ STDMETHOD(GetVertices)
+ ( THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals, DWORD *face_data_size, DWORD *face_data
+ ) PURE;
+ STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
+
+ STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE*) PURE;
+ STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
+ STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
+ STDMETHOD_(int, GetFaceCount)(THIS) PURE;
+ STDMETHOD_(int, GetVertexCount)(THIS) PURE;
+ STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
+
+ STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMMeshBuilder2
+
+DECLARE_INTERFACE_(IDirect3DRMMeshBuilder2, IDirect3DRMMeshBuilder)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMMeshBuilder methods
+ */
+ STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID lpArg) PURE;
+ STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
+ STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
+ STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
+ STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
+ STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
+ STDMETHOD(GenerateNormals)(THIS) PURE;
+ STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
+
+ STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
+ STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER) PURE;
+ STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME) PURE;
+ STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE) PURE;
+ STDMETHOD(AddFaces)
+ ( THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals,
+ DWORD *data, LPDIRECT3DRMFACEARRAY*
+ ) PURE;
+ STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
+ STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
+ STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
+ STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
+ STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
+ STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
+ STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
+ STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
+ STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
+ STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
+ STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
+
+ STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
+ STDMETHOD(GetVertices)
+ ( THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals, DWORD *face_data_size, DWORD *face_data
+ ) PURE;
+ STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
+
+ STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE*) PURE;
+ STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
+ STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
+ STDMETHOD_(int, GetFaceCount)(THIS) PURE;
+ STDMETHOD_(int, GetVertexCount)(THIS) PURE;
+ STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
+
+ STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
+
+ /*
+ * IDirect3DRMMeshBuilder2 methods
+ */
+ STDMETHOD(GenerateNormals2)(THIS_ D3DVALUE crease, DWORD dwFlags) PURE;
+ STDMETHOD(GetFace)(THIS_ DWORD index, LPDIRECT3DRMFACE*) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMMeshBuilder3
+
+DECLARE_INTERFACE_(IDirect3DRMMeshBuilder3, IDirect3DRMVisual)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMMeshBuilder3 methods
+ */
+ STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURE3CALLBACK, LPVOID lpArg) PURE;
+ STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
+ STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
+ STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
+ STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
+ STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
+ STDMETHOD(GenerateNormals)(THIS_ D3DVALUE crease, DWORD dwFlags) PURE;
+ STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
+
+ STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE;
+ STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER3, DWORD dwFlags) PURE;
+ STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME3) PURE;
+ STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE2) PURE;
+ STDMETHOD(AddFaces)
+ ( THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals,
+ DWORD *data, LPDIRECT3DRMFACEARRAY*
+ ) PURE;
+ STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
+ STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
+ STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
+ STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
+ STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
+ STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE;
+ STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
+ STDMETHOD(SetPerspective)(THIS_ BOOL) PURE;
+ STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
+ STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
+ STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
+ STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
+ STDMETHOD(GetGeometry)
+ ( THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals, DWORD *face_data_size, DWORD *face_data
+ ) PURE;
+ STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
+ STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE2 *) PURE;
+ STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
+ STDMETHOD_(BOOL, GetPerspective)(THIS) PURE;
+ STDMETHOD_(int, GetFaceCount)(THIS) PURE;
+ STDMETHOD_(int, GetVertexCount)(THIS) PURE;
+ STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
+ STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE;
+ STDMETHOD(GetFace)(THIS_ DWORD index, LPDIRECT3DRMFACE2 *) PURE;
+ STDMETHOD(GetVertex)(THIS_ DWORD dwIndex, LPD3DVECTOR lpVector) PURE;
+ STDMETHOD(GetNormal)(THIS_ DWORD dwIndex, LPD3DVECTOR lpVector) PURE;
+ STDMETHOD(DeleteVertices)(THIS_ DWORD dwIndexFirst, DWORD dwCount) PURE;
+ STDMETHOD(DeleteNormals)(THIS_ DWORD dwIndexFirst, DWORD dwCount) PURE;
+ STDMETHOD(DeleteFace)(THIS_ LPDIRECT3DRMFACE2) PURE;
+ STDMETHOD(Empty)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(Optimize)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(AddFacesIndexed)(THIS_ DWORD dwFlags, DWORD *lpdwvIndices, DWORD *dwIndexFirst, DWORD *dwCount) PURE;
+ STDMETHOD(CreateSubMesh)(THIS_ LPUNKNOWN *) PURE;
+ STDMETHOD(GetParentMesh)(THIS_ DWORD, LPUNKNOWN *) PURE;
+ STDMETHOD(GetSubMeshes)(THIS_ LPDWORD lpdwCount, LPUNKNOWN *) PURE;
+ STDMETHOD(DeleteSubMesh)(THIS_ LPUNKNOWN) PURE;
+ STDMETHOD(Enable)(THIS_ DWORD) PURE;
+ STDMETHOD(GetEnable)(THIS_ DWORD *) PURE;
+ STDMETHOD(AddTriangles)(THIS_ DWORD dwFlags, DWORD dwFormat,
+ DWORD dwVertexCount, LPVOID lpvData) PURE;
+ STDMETHOD(SetVertices)(THIS_ DWORD dwIndexFirst, DWORD dwCount, LPD3DVECTOR) PURE;
+ STDMETHOD(GetVertices)(THIS_ DWORD dwIndexFirst, LPDWORD lpdwCount, LPD3DVECTOR) PURE;
+ STDMETHOD(SetNormals)(THIS_ DWORD dwIndexFirst, DWORD dwCount, LPD3DVECTOR) PURE;
+ STDMETHOD(GetNormals)(THIS_ DWORD dwIndexFirst, LPDWORD lpdwCount, LPD3DVECTOR) PURE;
+ STDMETHOD_(int, GetNormalCount)(THIS) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMLight
+
+DECLARE_INTERFACE_(IDirect3DRMLight, IDirect3DRMObject)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMLight methods
+ */
+ STDMETHOD(SetType)(THIS_ D3DRMLIGHTTYPE) PURE;
+ STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
+ STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
+ STDMETHOD(SetRange)(THIS_ D3DVALUE) PURE;
+ STDMETHOD(SetUmbra)(THIS_ D3DVALUE) PURE;
+ STDMETHOD(SetPenumbra)(THIS_ D3DVALUE) PURE;
+ STDMETHOD(SetConstantAttenuation)(THIS_ D3DVALUE) PURE;
+ STDMETHOD(SetLinearAttenuation)(THIS_ D3DVALUE) PURE;
+ STDMETHOD(SetQuadraticAttenuation)(THIS_ D3DVALUE) PURE;
+
+ STDMETHOD_(D3DVALUE, GetRange)(THIS) PURE;
+ STDMETHOD_(D3DVALUE, GetUmbra)(THIS) PURE;
+ STDMETHOD_(D3DVALUE, GetPenumbra)(THIS) PURE;
+ STDMETHOD_(D3DVALUE, GetConstantAttenuation)(THIS) PURE;
+ STDMETHOD_(D3DVALUE, GetLinearAttenuation)(THIS) PURE;
+ STDMETHOD_(D3DVALUE, GetQuadraticAttenuation)(THIS) PURE;
+ STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
+ STDMETHOD_(D3DRMLIGHTTYPE, GetType)(THIS) PURE;
+
+ STDMETHOD(SetEnableFrame)(THIS_ LPDIRECT3DRMFRAME) PURE;
+ STDMETHOD(GetEnableFrame)(THIS_ LPDIRECT3DRMFRAME*) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMTexture
+
+DECLARE_INTERFACE_(IDirect3DRMTexture, IDirect3DRMVisual)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMTexture methods
+ */
+ STDMETHOD(InitFromFile)(THIS_ const char *filename) PURE;
+ STDMETHOD(InitFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS) PURE;
+ STDMETHOD(InitFromResource)(THIS_ HRSRC) PURE;
+ STDMETHOD(Changed)(THIS_ BOOL pixels, BOOL palette) PURE;
+
+ STDMETHOD(SetColors)(THIS_ DWORD) PURE;
+ STDMETHOD(SetShades)(THIS_ DWORD) PURE;
+ STDMETHOD(SetDecalSize)(THIS_ D3DVALUE width, D3DVALUE height) PURE;
+ STDMETHOD(SetDecalOrigin)(THIS_ LONG x, LONG y) PURE;
+ STDMETHOD(SetDecalScale)(THIS_ DWORD) PURE;
+ STDMETHOD(SetDecalTransparency)(THIS_ BOOL) PURE;
+ STDMETHOD(SetDecalTransparentColor)(THIS_ D3DCOLOR) PURE;
+
+ STDMETHOD(GetDecalSize)(THIS_ D3DVALUE *width_return, D3DVALUE *height_return) PURE;
+ STDMETHOD(GetDecalOrigin)(THIS_ LONG *x_return, LONG *y_return) PURE;
+
+ STDMETHOD_(D3DRMIMAGE *, GetImage)(THIS) PURE;
+ STDMETHOD_(DWORD, GetShades)(THIS) PURE;
+ STDMETHOD_(DWORD, GetColors)(THIS) PURE;
+ STDMETHOD_(DWORD, GetDecalScale)(THIS) PURE;
+ STDMETHOD_(BOOL, GetDecalTransparency)(THIS) PURE;
+ STDMETHOD_(D3DCOLOR, GetDecalTransparentColor)(THIS) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMTexture2
+
+DECLARE_INTERFACE_(IDirect3DRMTexture2, IDirect3DRMTexture)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMTexture methods
+ */
+ STDMETHOD(InitFromFile)(THIS_ const char *filename) PURE;
+ STDMETHOD(InitFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS) PURE;
+ STDMETHOD(InitFromResource)(THIS_ HRSRC) PURE;
+ STDMETHOD(Changed)(THIS_ BOOL pixels, BOOL palette) PURE;
+
+ STDMETHOD(SetColors)(THIS_ DWORD) PURE;
+ STDMETHOD(SetShades)(THIS_ DWORD) PURE;
+ STDMETHOD(SetDecalSize)(THIS_ D3DVALUE width, D3DVALUE height) PURE;
+ STDMETHOD(SetDecalOrigin)(THIS_ LONG x, LONG y) PURE;
+ STDMETHOD(SetDecalScale)(THIS_ DWORD) PURE;
+ STDMETHOD(SetDecalTransparency)(THIS_ BOOL) PURE;
+ STDMETHOD(SetDecalTransparentColor)(THIS_ D3DCOLOR) PURE;
+
+ STDMETHOD(GetDecalSize)(THIS_ D3DVALUE *width_return, D3DVALUE *height_return) PURE;
+ STDMETHOD(GetDecalOrigin)(THIS_ LONG *x_return, LONG *y_return) PURE;
+
+ STDMETHOD_(D3DRMIMAGE *, GetImage)(THIS) PURE;
+ STDMETHOD_(DWORD, GetShades)(THIS) PURE;
+ STDMETHOD_(DWORD, GetColors)(THIS) PURE;
+ STDMETHOD_(DWORD, GetDecalScale)(THIS) PURE;
+ STDMETHOD_(BOOL, GetDecalTransparency)(THIS) PURE;
+ STDMETHOD_(D3DCOLOR, GetDecalTransparentColor)(THIS) PURE;
+
+ /*
+ * IDirect3DRMTexture2 methods
+ */
+ STDMETHOD(InitFromImage)(THIS_ LPD3DRMIMAGE) PURE;
+ STDMETHOD(InitFromResource2)(THIS_ HMODULE hModule, LPCTSTR strName, LPCTSTR strType) PURE;
+ STDMETHOD(GenerateMIPMap)(THIS_ DWORD) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMTexture3
+
+DECLARE_INTERFACE_(IDirect3DRMTexture3, IDirect3DRMVisual)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMTexture3 methods
+ */
+ STDMETHOD(InitFromFile)(THIS_ const char *filename) PURE;
+ STDMETHOD(InitFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS) PURE;
+ STDMETHOD(InitFromResource)(THIS_ HRSRC) PURE;
+ STDMETHOD(Changed)(THIS_ DWORD dwFlags, DWORD dwcRects, LPRECT pRects) PURE;
+ STDMETHOD(SetColors)(THIS_ DWORD) PURE;
+ STDMETHOD(SetShades)(THIS_ DWORD) PURE;
+ STDMETHOD(SetDecalSize)(THIS_ D3DVALUE width, D3DVALUE height) PURE;
+ STDMETHOD(SetDecalOrigin)(THIS_ LONG x, LONG y) PURE;
+ STDMETHOD(SetDecalScale)(THIS_ DWORD) PURE;
+ STDMETHOD(SetDecalTransparency)(THIS_ BOOL) PURE;
+ STDMETHOD(SetDecalTransparentColor)(THIS_ D3DCOLOR) PURE;
+
+ STDMETHOD(GetDecalSize)(THIS_ D3DVALUE *width_return, D3DVALUE *height_return) PURE;
+ STDMETHOD(GetDecalOrigin)(THIS_ LONG *x_return, LONG *y_return) PURE;
+
+ STDMETHOD_(D3DRMIMAGE *, GetImage)(THIS) PURE;
+ STDMETHOD_(DWORD, GetShades)(THIS) PURE;
+ STDMETHOD_(DWORD, GetColors)(THIS) PURE;
+ STDMETHOD_(DWORD, GetDecalScale)(THIS) PURE;
+ STDMETHOD_(BOOL, GetDecalTransparency)(THIS) PURE;
+ STDMETHOD_(D3DCOLOR, GetDecalTransparentColor)(THIS) PURE;
+ STDMETHOD(InitFromImage)(THIS_ LPD3DRMIMAGE) PURE;
+ STDMETHOD(InitFromResource2)(THIS_ HMODULE hModule, LPCTSTR strName, LPCTSTR strType) PURE;
+ STDMETHOD(GenerateMIPMap)(THIS_ DWORD) PURE;
+ STDMETHOD(GetSurface)(THIS_ DWORD dwFlags, LPDIRECTDRAWSURFACE* lplpDDS) PURE;
+ STDMETHOD(SetCacheOptions)(THIS_ LONG lImportance, DWORD dwFlags) PURE;
+ STDMETHOD(GetCacheOptions)(THIS_ LPLONG lplImportance, LPDWORD lpdwFlags) PURE;
+ STDMETHOD(SetDownsampleCallback)(THIS_ D3DRMDOWNSAMPLECALLBACK pCallback, LPVOID pArg) PURE;
+ STDMETHOD(SetValidationCallback)(THIS_ D3DRMVALIDATIONCALLBACK pCallback, LPVOID pArg) PURE;
+};
+
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMWrap
+
+DECLARE_INTERFACE_(IDirect3DRMWrap, IDirect3DRMObject)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMWrap methods
+ */
+ STDMETHOD(Init)
+ ( THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME ref,
+ D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
+ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
+ D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
+ D3DVALUE ou, D3DVALUE ov,
+ D3DVALUE su, D3DVALUE sv
+ ) PURE;
+ STDMETHOD(Apply)(THIS_ LPDIRECT3DRMOBJECT) PURE;
+ STDMETHOD(ApplyRelative)(THIS_ LPDIRECT3DRMFRAME frame, LPDIRECT3DRMOBJECT) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMMaterial
+
+DECLARE_INTERFACE_(IDirect3DRMMaterial, IDirect3DRMObject)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMMaterial methods
+ */
+ STDMETHOD(SetPower)(THIS_ D3DVALUE power) PURE;
+ STDMETHOD(SetSpecular)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
+ STDMETHOD(SetEmissive)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
+
+ STDMETHOD_(D3DVALUE, GetPower)(THIS) PURE;
+ STDMETHOD(GetSpecular)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
+ STDMETHOD(GetEmissive)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
+};
+
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMMaterial2
+
+DECLARE_INTERFACE_(IDirect3DRMMaterial2, IDirect3DRMObject)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMMaterial2 methods
+ */
+ STDMETHOD(SetPower)(THIS_ D3DVALUE power) PURE;
+ STDMETHOD(SetSpecular)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
+ STDMETHOD(SetEmissive)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
+ STDMETHOD_(D3DVALUE, GetPower)(THIS) PURE;
+ STDMETHOD(GetSpecular)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
+ STDMETHOD(GetEmissive)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
+ STDMETHOD(GetAmbient)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
+ STDMETHOD(SetAmbient)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
+};
+
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMAnimation
+
+DECLARE_INTERFACE_(IDirect3DRMAnimation, IDirect3DRMObject)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMAnimation methods
+ */
+ STDMETHOD(SetOptions)(THIS_ D3DRMANIMATIONOPTIONS flags) PURE;
+ STDMETHOD(AddRotateKey)(THIS_ D3DVALUE time, D3DRMQUATERNION *q) PURE;
+ STDMETHOD(AddPositionKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(AddScaleKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(DeleteKey)(THIS_ D3DVALUE time) PURE;
+ STDMETHOD(SetFrame)(THIS_ LPDIRECT3DRMFRAME frame) PURE;
+ STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
+
+ STDMETHOD_(D3DRMANIMATIONOPTIONS, GetOptions)(THIS) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMAnimation2
+
+DECLARE_INTERFACE_(IDirect3DRMAnimation2, IDirect3DRMObject)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMAnimation2 methods
+ */
+ STDMETHOD(SetOptions)(THIS_ D3DRMANIMATIONOPTIONS flags) PURE;
+ STDMETHOD(AddRotateKey)(THIS_ D3DVALUE time, D3DRMQUATERNION *q) PURE;
+ STDMETHOD(AddPositionKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(AddScaleKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
+ STDMETHOD(DeleteKey)(THIS_ D3DVALUE time) PURE;
+ STDMETHOD(SetFrame)(THIS_ LPDIRECT3DRMFRAME3 frame) PURE;
+ STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
+
+ STDMETHOD_(D3DRMANIMATIONOPTIONS, GetOptions)(THIS) PURE;
+ STDMETHOD(GetFrame)(THIS_ LPDIRECT3DRMFRAME3 *lpD3DFrame) PURE;
+ STDMETHOD(DeleteKeyByID)(THIS_ DWORD dwID) PURE;
+ STDMETHOD(AddKey)(THIS_ LPD3DRMANIMATIONKEY lpKey) PURE;
+ STDMETHOD(ModifyKey)(THIS_ LPD3DRMANIMATIONKEY lpKey) PURE;
+ STDMETHOD(GetKeys)(THIS_ D3DVALUE dvTimeMin,
+ D3DVALUE dvTimeMax, LPDWORD lpdwNumKeys,
+ LPD3DRMANIMATIONKEY lpKey);
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMAnimationSet
+
+DECLARE_INTERFACE_(IDirect3DRMAnimationSet, IDirect3DRMObject)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMAnimationSet methods
+ */
+ STDMETHOD(AddAnimation)(THIS_ LPDIRECT3DRMANIMATION aid) PURE;
+ STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID lpArg, LPDIRECT3DRMFRAME parent)PURE;
+ STDMETHOD(DeleteAnimation)(THIS_ LPDIRECT3DRMANIMATION aid) PURE;
+ STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMAnimationSet2
+
+DECLARE_INTERFACE_(IDirect3DRMAnimationSet2, IDirect3DRMObject)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMAnimationSet2 methods
+ */
+ STDMETHOD(AddAnimation)(THIS_ LPDIRECT3DRMANIMATION2 aid) PURE;
+ STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURE3CALLBACK, LPVOID lpArg, LPDIRECT3DRMFRAME3 parent)PURE;
+ STDMETHOD(DeleteAnimation)(THIS_ LPDIRECT3DRMANIMATION2 aid) PURE;
+ STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
+ STDMETHOD(GetAnimations)(THIS_ LPDIRECT3DRMANIMATIONARRAY *) PURE;
+};
+
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMUserVisual
+
+DECLARE_INTERFACE_(IDirect3DRMUserVisual, IDirect3DRMVisual)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMUserVisual methods
+ */
+ STDMETHOD(Init)(THIS_ D3DRMUSERVISUALCALLBACK fn, void *arg) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMArray
+
+DECLARE_INTERFACE_(IDirect3DRMArray, IUnknown)
+{
+ IUNKNOWN_METHODS(PURE);
+
+ STDMETHOD_(DWORD, GetSize)(THIS) PURE;
+ /* No GetElement method as it would get overloaded
+ * in derived classes, and overloading is
+ * a no-no in COM
+ */
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMObjectArray
+
+DECLARE_INTERFACE_(IDirect3DRMObjectArray, IDirect3DRMArray)
+{
+ IUNKNOWN_METHODS(PURE);
+
+ STDMETHOD_(DWORD, GetSize)(THIS) PURE;
+ STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMOBJECT *) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMDeviceArray
+
+DECLARE_INTERFACE_(IDirect3DRMDeviceArray, IDirect3DRMArray)
+{
+ IUNKNOWN_METHODS(PURE);
+
+ STDMETHOD_(DWORD, GetSize)(THIS) PURE;
+ STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMDEVICE *) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMFrameArray
+
+DECLARE_INTERFACE_(IDirect3DRMFrameArray, IDirect3DRMArray)
+{
+ IUNKNOWN_METHODS(PURE);
+
+ STDMETHOD_(DWORD, GetSize)(THIS) PURE;
+ STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMFRAME *) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMViewportArray
+
+DECLARE_INTERFACE_(IDirect3DRMViewportArray, IDirect3DRMArray)
+{
+ IUNKNOWN_METHODS(PURE);
+
+ STDMETHOD_(DWORD, GetSize)(THIS) PURE;
+ STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMVIEWPORT *) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMVisualArray
+
+DECLARE_INTERFACE_(IDirect3DRMVisualArray, IDirect3DRMArray)
+{
+ IUNKNOWN_METHODS(PURE);
+
+ STDMETHOD_(DWORD, GetSize)(THIS) PURE;
+ STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMVISUAL *) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMAnimationArray
+
+DECLARE_INTERFACE_(IDirect3DRMAnimationArray, IDirect3DRMArray)
+{
+ IUNKNOWN_METHODS(PURE);
+
+ STDMETHOD_(DWORD, GetSize)(THIS) PURE;
+ STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMANIMATION2 *) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMPickedArray
+
+DECLARE_INTERFACE_(IDirect3DRMPickedArray, IDirect3DRMArray)
+{
+ IUNKNOWN_METHODS(PURE);
+
+ STDMETHOD_(DWORD, GetSize)(THIS) PURE;
+ STDMETHOD(GetPick)(THIS_ DWORD index, LPDIRECT3DRMVISUAL *, LPDIRECT3DRMFRAMEARRAY *, LPD3DRMPICKDESC) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMLightArray
+
+DECLARE_INTERFACE_(IDirect3DRMLightArray, IDirect3DRMArray)
+{
+ IUNKNOWN_METHODS(PURE);
+
+ STDMETHOD_(DWORD, GetSize)(THIS) PURE;
+ STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMLIGHT *) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMFaceArray
+
+DECLARE_INTERFACE_(IDirect3DRMFaceArray, IDirect3DRMArray)
+{
+ IUNKNOWN_METHODS(PURE);
+
+ STDMETHOD_(DWORD, GetSize)(THIS) PURE;
+ STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMFACE *) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMPicked2Array
+
+DECLARE_INTERFACE_(IDirect3DRMPicked2Array, IDirect3DRMArray)
+{
+ IUNKNOWN_METHODS(PURE);
+
+ STDMETHOD_(DWORD, GetSize)(THIS) PURE;
+ STDMETHOD(GetPick)(THIS_ DWORD index, LPDIRECT3DRMVISUAL *, LPDIRECT3DRMFRAMEARRAY *, LPD3DRMPICKDESC2) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMInterpolator
+
+DECLARE_INTERFACE_(IDirect3DRMInterpolator, IDirect3DRMObject)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMInterpolator methods
+ */
+ STDMETHOD(AttachObject)(THIS_ LPDIRECT3DRMOBJECT) PURE;
+ STDMETHOD(GetAttachedObjects)(THIS_ LPDIRECT3DRMOBJECTARRAY *) PURE;
+ STDMETHOD(DetachObject)(THIS_ LPDIRECT3DRMOBJECT) PURE;
+ STDMETHOD(SetIndex)(THIS_ D3DVALUE) PURE;
+ STDMETHOD_(D3DVALUE, GetIndex)(THIS) PURE;
+ STDMETHOD(Interpolate)(THIS_ D3DVALUE, LPDIRECT3DRMOBJECT, D3DRMINTERPOLATIONOPTIONS) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMClippedVisual
+
+DECLARE_INTERFACE_(IDirect3DRMClippedVisual, IDirect3DRMVisual)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMClippedVisual methods
+ */
+ STDMETHOD(Init) (THIS_ LPDIRECT3DRMVISUAL) PURE;
+ STDMETHOD(AddPlane) (THIS_ LPDIRECT3DRMFRAME3, LPD3DVECTOR, LPD3DVECTOR, DWORD, LPDWORD) PURE;
+ STDMETHOD(DeletePlane)(THIS_ DWORD, DWORD) PURE;
+ STDMETHOD(GetPlaneIDs)(THIS_ LPDWORD, LPDWORD, DWORD) PURE;
+ STDMETHOD(GetPlane) (THIS_ DWORD, LPDIRECT3DRMFRAME3, LPD3DVECTOR, LPD3DVECTOR, DWORD) PURE;
+ STDMETHOD(SetPlane) (THIS_ DWORD, LPDIRECT3DRMFRAME3, LPD3DVECTOR, LPD3DVECTOR, DWORD) PURE;
+};
+
+#ifdef __cplusplus
+};
+#endif
+#endif /* _D3DRMOBJ_H_ */
+
diff --git a/include/dx/d3drmwin.h b/include/dx/d3drmwin.h
new file mode 100644
index 000000000..a7853192c
--- /dev/null
+++ b/include/dx/d3drmwin.h
@@ -0,0 +1,50 @@
+/*==========================================================================;
+ *
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ *
+ * File: d3drm.h
+ * Content: Direct3DRM include file
+ *
+ ***************************************************************************/
+
+#ifndef __D3DRMWIN_H__
+#define __D3DRMWIN_H__
+
+#ifndef WIN32
+#define WIN32
+#endif
+
+#include "d3drm.h"
+
+#include "ddraw.h"
+#include "d3d.h"
+
+/*
+ * GUIDS used by Direct3DRM Windows interface
+ */
+DEFINE_GUID(IID_IDirect3DRMWinDevice, 0xc5016cc0, 0xd273, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
+
+WIN_TYPES(IDirect3DRMWinDevice, DIRECT3DRMWINDEVICE);
+
+#undef INTERFACE
+#define INTERFACE IDirect3DRMWinDevice
+
+DECLARE_INTERFACE_(IDirect3DRMWinDevice, IDirect3DRMObject)
+{
+ IUNKNOWN_METHODS(PURE);
+ IDIRECT3DRMOBJECT_METHODS(PURE);
+
+ /*
+ * IDirect3DRMWinDevice methods
+ */
+
+ /* Repaint the window with the last frame which was rendered. */
+ STDMETHOD(HandlePaint)(THIS_ HDC hdc) PURE;
+
+ /* Respond to a WM_ACTIVATE message. */
+ STDMETHOD(HandleActivate)(THIS_ WORD wparam) PURE;
+};
+
+
+#endif
+
diff --git a/include/dx/d3dtypes.h b/include/dx/d3dtypes.h
new file mode 100644
index 000000000..d1759dcd2
--- /dev/null
+++ b/include/dx/d3dtypes.h
@@ -0,0 +1,2119 @@
+/*==========================================================================;
+ *
+ * Copyright (C) Microsoft Corporation. All Rights Reserved.
+ *
+ * File: d3dtypes.h
+ * Content: Direct3D types include file
+ *
+ ***************************************************************************/
+
+#ifndef _D3DTYPES_H_
+#define _D3DTYPES_H_
+
+#ifndef DIRECT3D_VERSION
+#define DIRECT3D_VERSION 0x0700
+#endif
+
+#if (DIRECT3D_VERSION >= 0x0800)
+#pragma message("should not include d3dtypes.h when compiling for DX8 or newer interfaces")
+#endif
+
+#include <windows.h>
+
+#include <float.h>
+#include "ddraw.h"
+
+#pragma warning(disable:4201) // anonymous unions warning
+#if defined(_X86_) || defined(_IA64_)
+#pragma pack(4)
+#endif
+
+
+/* D3DVALUE is the fundamental Direct3D fractional data type */
+
+#define D3DVALP(val, prec) ((float)(val))
+#define D3DVAL(val) ((float)(val))
+
+#ifndef DX_SHARED_DEFINES
+
+/*
+ * This definition is shared with other DirectX components whose header files
+ * might already have defined it. Therefore, we don't define this type if
+ * someone else already has (as indicated by the definition of
+ * DX_SHARED_DEFINES). We don't set DX_SHARED_DEFINES here as there are
+ * other types in this header that are also shared. The last of these
+ * shared defines in this file will set DX_SHARED_DEFINES.
+ */
+typedef float D3DVALUE, *LPD3DVALUE;
+
+#endif /* DX_SHARED_DEFINES */
+
+#define D3DDivide(a, b) (float)((double) (a) / (double) (b))
+#define D3DMultiply(a, b) ((a) * (b))
+
+typedef LONG D3DFIXED;
+
+#ifndef RGB_MAKE
+/*
+ * Format of CI colors is
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | alpha | color index | fraction |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ */
+#define CI_GETALPHA(ci) ((ci) >> 24)
+#define CI_GETINDEX(ci) (((ci) >> 8) & 0xffff)
+#define CI_GETFRACTION(ci) ((ci) & 0xff)
+#define CI_ROUNDINDEX(ci) CI_GETINDEX((ci) + 0x80)
+#define CI_MASKALPHA(ci) ((ci) & 0xffffff)
+#define CI_MAKE(a, i, f) (((a) << 24) | ((i) << 8) | (f))
+
+/*
+ * Format of RGBA colors is
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | alpha | red | green | blue |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ */
+#define RGBA_GETALPHA(rgb) ((rgb) >> 24)
+#define RGBA_GETRED(rgb) (((rgb) >> 16) & 0xff)
+#define RGBA_GETGREEN(rgb) (((rgb) >> 8) & 0xff)
+#define RGBA_GETBLUE(rgb) ((rgb) & 0xff)
+#define RGBA_MAKE(r, g, b, a) ((D3DCOLOR) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b)))
+
+/* D3DRGB and D3DRGBA may be used as initialisers for D3DCOLORs
+ * The float values must be in the range 0..1
+ */
+#define D3DRGB(r, g, b) \
+ (0xff000000L | ( ((long)((r) * 255)) << 16) | (((long)((g) * 255)) << 8) | (long)((b) * 255))
+#define D3DRGBA(r, g, b, a) \
+ ( (((long)((a) * 255)) << 24) | (((long)((r) * 255)) << 16) \
+ | (((long)((g) * 255)) << 8) | (long)((b) * 255) \
+ )
+
+/*
+ * Format of RGB colors is
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | ignored | red | green | blue |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ */
+#define RGB_GETRED(rgb) (((rgb) >> 16) & 0xff)
+#define RGB_GETGREEN(rgb) (((rgb) >> 8) & 0xff)
+#define RGB_GETBLUE(rgb) ((rgb) & 0xff)
+#define RGBA_SETALPHA(rgba, x) (((x) << 24) | ((rgba) & 0x00ffffff))
+#define RGB_MAKE(r, g, b) ((D3DCOLOR) (((r) << 16) | ((g) << 8) | (b)))
+#define RGBA_TORGB(rgba) ((D3DCOLOR) ((rgba) & 0xffffff))
+#define RGB_TORGBA(rgb) ((D3DCOLOR) ((rgb) | 0xff000000))
+
+#endif
+
+/*
+ * Flags for Enumerate functions
+ */
+
+/*
+ * Stop the enumeration
+ */
+#define D3DENUMRET_CANCEL DDENUMRET_CANCEL
+
+/*
+ * Continue the enumeration
+ */
+#define D3DENUMRET_OK DDENUMRET_OK
+
+typedef HRESULT (CALLBACK* LPD3DVALIDATECALLBACK)(LPVOID lpUserArg, DWORD dwOffset);
+typedef HRESULT (CALLBACK* LPD3DENUMTEXTUREFORMATSCALLBACK)(LPDDSURFACEDESC lpDdsd, LPVOID lpContext);
+typedef HRESULT (CALLBACK* LPD3DENUMPIXELFORMATSCALLBACK)(LPDDPIXELFORMAT lpDDPixFmt, LPVOID lpContext);
+
+#ifndef DX_SHARED_DEFINES
+
+/*
+ * This definition is shared with other DirectX components whose header files
+ * might already have defined it. Therefore, we don't define this type if
+ * someone else already has (as indicated by the definition of
+ * DX_SHARED_DEFINES). We don't set DX_SHARED_DEFINES here as there are
+ * other types in this header that are also shared. The last of these
+ * shared defines in this file will set DX_SHARED_DEFINES.
+ */
+#ifndef D3DCOLOR_DEFINED
+typedef DWORD D3DCOLOR;
+#define D3DCOLOR_DEFINED
+#endif
+typedef DWORD *LPD3DCOLOR;
+
+#endif /* DX_SHARED_DEFINES */
+
+typedef DWORD D3DMATERIALHANDLE, *LPD3DMATERIALHANDLE;
+typedef DWORD D3DTEXTUREHANDLE, *LPD3DTEXTUREHANDLE;
+typedef DWORD D3DMATRIXHANDLE, *LPD3DMATRIXHANDLE;
+
+#ifndef D3DCOLORVALUE_DEFINED
+typedef struct _D3DCOLORVALUE {
+ union {
+ D3DVALUE r;
+ D3DVALUE dvR;
+ };
+ union {
+ D3DVALUE g;
+ D3DVALUE dvG;
+ };
+ union {
+ D3DVALUE b;
+ D3DVALUE dvB;
+ };
+ union {
+ D3DVALUE a;
+ D3DVALUE dvA;
+ };
+} D3DCOLORVALUE;
+#define D3DCOLORVALUE_DEFINED
+#endif
+typedef struct _D3DCOLORVALUE *LPD3DCOLORVALUE;
+
+#ifndef D3DRECT_DEFINED
+typedef struct _D3DRECT {
+ union {
+ LONG x1;
+ LONG lX1;
+ };
+ union {
+ LONG y1;
+ LONG lY1;
+ };
+ union {
+ LONG x2;
+ LONG lX2;
+ };
+ union {
+ LONG y2;
+ LONG lY2;
+ };
+} D3DRECT;
+#define D3DRECT_DEFINED
+#endif
+typedef struct _D3DRECT *LPD3DRECT;
+
+#ifndef DX_SHARED_DEFINES
+
+/*
+ * This definition is shared with other DirectX components whose header files
+ * might already have defined it. Therefore, we don't define this type if
+ * someone else already has (as indicated by the definition of
+ * DX_SHARED_DEFINES).
+ */
+
+#ifndef D3DVECTOR_DEFINED
+typedef struct _D3DVECTOR {
+ union {
+ D3DVALUE x;
+ D3DVALUE dvX;
+ };
+ union {
+ D3DVALUE y;
+ D3DVALUE dvY;
+ };
+ union {
+ D3DVALUE z;
+ D3DVALUE dvZ;
+ };
+#if(DIRECT3D_VERSION >= 0x0500)
+#if (defined __cplusplus) && (defined D3D_OVERLOADS)
+
+public:
+
+ // =====================================
+ // Constructors
+ // =====================================
+
+ _D3DVECTOR() { }
+ _D3DVECTOR(D3DVALUE f);
+ _D3DVECTOR(D3DVALUE _x, D3DVALUE _y, D3DVALUE _z);
+ _D3DVECTOR(const D3DVALUE f[3]);
+
+ // =====================================
+ // Access grants
+ // =====================================
+
+ const D3DVALUE&operator[](int i) const;
+ D3DVALUE&operator[](int i);
+
+ // =====================================
+ // Assignment operators
+ // =====================================
+
+ _D3DVECTOR& operator += (const _D3DVECTOR& v);
+ _D3DVECTOR& operator -= (const _D3DVECTOR& v);
+ _D3DVECTOR& operator *= (const _D3DVECTOR& v);
+ _D3DVECTOR& operator /= (const _D3DVECTOR& v);
+ _D3DVECTOR& operator *= (D3DVALUE s);
+ _D3DVECTOR& operator /= (D3DVALUE s);
+
+ // =====================================
+ // Unary operators
+ // =====================================
+
+ friend _D3DVECTOR operator + (const _D3DVECTOR& v);
+ friend _D3DVECTOR operator - (const _D3DVECTOR& v);
+
+
+ // =====================================
+ // Binary operators
+ // =====================================
+
+ // Addition and subtraction
+ friend _D3DVECTOR operator + (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
+ friend _D3DVECTOR operator - (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
+ // Scalar multiplication and division
+ friend _D3DVECTOR operator * (const _D3DVECTOR& v, D3DVALUE s);
+ friend _D3DVECTOR operator * (D3DVALUE s, const _D3DVECTOR& v);
+ friend _D3DVECTOR operator / (const _D3DVECTOR& v, D3DVALUE s);
+ // Memberwise multiplication and division
+ friend _D3DVECTOR operator * (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
+ friend _D3DVECTOR operator / (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
+
+ // Vector dominance
+ friend int operator < (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
+ friend int operator <= (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
+
+ // Bitwise equality
+ friend int operator == (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
+
+ // Length-related functions
+ friend D3DVALUE SquareMagnitude (const _D3DVECTOR& v);
+ friend D3DVALUE Magnitude (const _D3DVECTOR& v);
+
+ // Returns vector with same direction and unit length
+ friend _D3DVECTOR Normalize (const _D3DVECTOR& v);
+
+ // Return min/max component of the input vector
+ friend D3DVALUE Min (const _D3DVECTOR& v);
+ friend D3DVALUE Max (const _D3DVECTOR& v);
+
+ // Return memberwise min/max of input vectors
+ friend _D3DVECTOR Minimize (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
+ friend _D3DVECTOR Maximize (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
+
+ // Dot and cross product
+ friend D3DVALUE DotProduct (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
+ friend _D3DVECTOR CrossProduct (const _D3DVECTOR& v1, const _D3DVECTOR& v2);
+
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DVECTOR;
+#define D3DVECTOR_DEFINED
+#endif
+typedef struct _D3DVECTOR *LPD3DVECTOR;
+
+/*
+ * As this is the last of the shared defines to be defined we now set
+ * D3D_SHARED_DEFINES to flag that fact that this header has defined these
+ * types.
+ */
+#define DX_SHARED_DEFINES
+
+#endif /* DX_SHARED_DEFINES */
+
+/*
+ * Vertex data types supported in an ExecuteBuffer.
+ */
+
+/*
+ * Homogeneous vertices
+ */
+
+typedef struct _D3DHVERTEX {
+ DWORD dwFlags; /* Homogeneous clipping flags */
+ union {
+ D3DVALUE hx;
+ D3DVALUE dvHX;
+ };
+ union {
+ D3DVALUE hy;
+ D3DVALUE dvHY;
+ };
+ union {
+ D3DVALUE hz;
+ D3DVALUE dvHZ;
+ };
+} D3DHVERTEX, *LPD3DHVERTEX;
+
+/*
+ * Transformed/lit vertices
+ */
+typedef struct _D3DTLVERTEX {
+ union {
+ D3DVALUE sx; /* Screen coordinates */
+ D3DVALUE dvSX;
+ };
+ union {
+ D3DVALUE sy;
+ D3DVALUE dvSY;
+ };
+ union {
+ D3DVALUE sz;
+ D3DVALUE dvSZ;
+ };
+ union {
+ D3DVALUE rhw; /* Reciprocal of homogeneous w */
+ D3DVALUE dvRHW;
+ };
+ union {
+ D3DCOLOR color; /* Vertex color */
+ D3DCOLOR dcColor;
+ };
+ union {
+ D3DCOLOR specular; /* Specular component of vertex */
+ D3DCOLOR dcSpecular;
+ };
+ union {
+ D3DVALUE tu; /* Texture coordinates */
+ D3DVALUE dvTU;
+ };
+ union {
+ D3DVALUE tv;
+ D3DVALUE dvTV;
+ };
+#if(DIRECT3D_VERSION >= 0x0500)
+#if (defined __cplusplus) && (defined D3D_OVERLOADS)
+ _D3DTLVERTEX() { }
+ _D3DTLVERTEX(const D3DVECTOR& v, float _rhw,
+ D3DCOLOR _color, D3DCOLOR _specular,
+ float _tu, float _tv)
+ { sx = v.x; sy = v.y; sz = v.z; rhw = _rhw;
+ color = _color; specular = _specular;
+ tu = _tu; tv = _tv;
+ }
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DTLVERTEX, *LPD3DTLVERTEX;
+
+/*
+ * Untransformed/lit vertices
+ */
+typedef struct _D3DLVERTEX {
+ union {
+ D3DVALUE x; /* Homogeneous coordinates */
+ D3DVALUE dvX;
+ };
+ union {
+ D3DVALUE y;
+ D3DVALUE dvY;
+ };
+ union {
+ D3DVALUE z;
+ D3DVALUE dvZ;
+ };
+ DWORD dwReserved;
+ union {
+ D3DCOLOR color; /* Vertex color */
+ D3DCOLOR dcColor;
+ };
+ union {
+ D3DCOLOR specular; /* Specular component of vertex */
+ D3DCOLOR dcSpecular;
+ };
+ union {
+ D3DVALUE tu; /* Texture coordinates */
+ D3DVALUE dvTU;
+ };
+ union {
+ D3DVALUE tv;
+ D3DVALUE dvTV;
+ };
+#if(DIRECT3D_VERSION >= 0x0500)
+#if (defined __cplusplus) && (defined D3D_OVERLOADS)
+ _D3DLVERTEX() { }
+ _D3DLVERTEX(const D3DVECTOR& v,
+ D3DCOLOR _color, D3DCOLOR _specular,
+ float _tu, float _tv)
+ { x = v.x; y = v.y; z = v.z; dwReserved = 0;
+ color = _color; specular = _specular;
+ tu = _tu; tv = _tv;
+ }
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DLVERTEX, *LPD3DLVERTEX;
+
+/*
+ * Untransformed/unlit vertices
+ */
+
+typedef struct _D3DVERTEX {
+ union {
+ D3DVALUE x; /* Homogeneous coordinates */
+ D3DVALUE dvX;
+ };
+ union {
+ D3DVALUE y;
+ D3DVALUE dvY;
+ };
+ union {
+ D3DVALUE z;
+ D3DVALUE dvZ;
+ };
+ union {
+ D3DVALUE nx; /* Normal */
+ D3DVALUE dvNX;
+ };
+ union {
+ D3DVALUE ny;
+ D3DVALUE dvNY;
+ };
+ union {
+ D3DVALUE nz;
+ D3DVALUE dvNZ;
+ };
+ union {
+ D3DVALUE tu; /* Texture coordinates */
+ D3DVALUE dvTU;
+ };
+ union {
+ D3DVALUE tv;
+ D3DVALUE dvTV;
+ };
+#if(DIRECT3D_VERSION >= 0x0500)
+#if (defined __cplusplus) && (defined D3D_OVERLOADS)
+ _D3DVERTEX() { }
+ _D3DVERTEX(const D3DVECTOR& v, const D3DVECTOR& n, float _tu, float _tv)
+ { x = v.x; y = v.y; z = v.z;
+ nx = n.x; ny = n.y; nz = n.z;
+ tu = _tu; tv = _tv;
+ }
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DVERTEX, *LPD3DVERTEX;
+
+
+/*
+ * Matrix, viewport, and tranformation structures and definitions.
+ */
+
+#ifndef D3DMATRIX_DEFINED
+typedef struct _D3DMATRIX {
+#if(DIRECT3D_VERSION >= 0x0500)
+#if (defined __cplusplus) && (defined D3D_OVERLOADS)
+ union {
+ struct {
+#endif
+
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+ D3DVALUE _11, _12, _13, _14;
+ D3DVALUE _21, _22, _23, _24;
+ D3DVALUE _31, _32, _33, _34;
+ D3DVALUE _41, _42, _43, _44;
+
+#if(DIRECT3D_VERSION >= 0x0500)
+#if (defined __cplusplus) && (defined D3D_OVERLOADS)
+ };
+ D3DVALUE m[4][4];
+ };
+ _D3DMATRIX() { }
+ _D3DMATRIX( D3DVALUE _m00, D3DVALUE _m01, D3DVALUE _m02, D3DVALUE _m03,
+ D3DVALUE _m10, D3DVALUE _m11, D3DVALUE _m12, D3DVALUE _m13,
+ D3DVALUE _m20, D3DVALUE _m21, D3DVALUE _m22, D3DVALUE _m23,
+ D3DVALUE _m30, D3DVALUE _m31, D3DVALUE _m32, D3DVALUE _m33
+ )
+ {
+ m[0][0] = _m00; m[0][1] = _m01; m[0][2] = _m02; m[0][3] = _m03;
+ m[1][0] = _m10; m[1][1] = _m11; m[1][2] = _m12; m[1][3] = _m13;
+ m[2][0] = _m20; m[2][1] = _m21; m[2][2] = _m22; m[2][3] = _m23;
+ m[3][0] = _m30; m[3][1] = _m31; m[3][2] = _m32; m[3][3] = _m33;
+ }
+
+ D3DVALUE& operator()(int iRow, int iColumn) { return m[iRow][iColumn]; }
+ const D3DVALUE& operator()(int iRow, int iColumn) const { return m[iRow][iColumn]; }
+#if(DIRECT3D_VERSION >= 0x0600)
+ friend _D3DMATRIX operator* (const _D3DMATRIX&, const _D3DMATRIX&);
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+#endif
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DMATRIX;
+#define D3DMATRIX_DEFINED
+#endif
+typedef struct _D3DMATRIX *LPD3DMATRIX;
+
+#if (defined __cplusplus) && (defined D3D_OVERLOADS)
+#include "d3dvec.inl"
+#endif
+
+typedef struct _D3DVIEWPORT {
+ DWORD dwSize;
+ DWORD dwX;
+ DWORD dwY; /* Top left */
+ DWORD dwWidth;
+ DWORD dwHeight; /* Dimensions */
+ D3DVALUE dvScaleX; /* Scale homogeneous to screen */
+ D3DVALUE dvScaleY; /* Scale homogeneous to screen */
+ D3DVALUE dvMaxX; /* Min/max homogeneous x coord */
+ D3DVALUE dvMaxY; /* Min/max homogeneous y coord */
+ D3DVALUE dvMinZ;
+ D3DVALUE dvMaxZ; /* Min/max homogeneous z coord */
+} D3DVIEWPORT, *LPD3DVIEWPORT;
+
+#if(DIRECT3D_VERSION >= 0x0500)
+typedef struct _D3DVIEWPORT2 {
+ DWORD dwSize;
+ DWORD dwX;
+ DWORD dwY; /* Viewport Top left */
+ DWORD dwWidth;
+ DWORD dwHeight; /* Viewport Dimensions */
+ D3DVALUE dvClipX; /* Top left of clip volume */
+ D3DVALUE dvClipY;
+ D3DVALUE dvClipWidth; /* Clip Volume Dimensions */
+ D3DVALUE dvClipHeight;
+ D3DVALUE dvMinZ; /* Min/max of clip Volume */
+ D3DVALUE dvMaxZ;
+} D3DVIEWPORT2, *LPD3DVIEWPORT2;
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#if(DIRECT3D_VERSION >= 0x0700)
+typedef struct _D3DVIEWPORT7 {
+ DWORD dwX;
+ DWORD dwY; /* Viewport Top left */
+ DWORD dwWidth;
+ DWORD dwHeight; /* Viewport Dimensions */
+ D3DVALUE dvMinZ; /* Min/max of clip Volume */
+ D3DVALUE dvMaxZ;
+} D3DVIEWPORT7, *LPD3DVIEWPORT7;
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+/*
+ * Values for clip fields.
+ */
+
+#if(DIRECT3D_VERSION >= 0x0700)
+
+// Max number of user clipping planes, supported in D3D.
+#define D3DMAXUSERCLIPPLANES 32
+
+// These bits could be ORed together to use with D3DRENDERSTATE_CLIPPLANEENABLE
+//
+#define D3DCLIPPLANE0 (1 << 0)
+#define D3DCLIPPLANE1 (1 << 1)
+#define D3DCLIPPLANE2 (1 << 2)
+#define D3DCLIPPLANE3 (1 << 3)
+#define D3DCLIPPLANE4 (1 << 4)
+#define D3DCLIPPLANE5 (1 << 5)
+
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+#define D3DCLIP_LEFT 0x00000001L
+#define D3DCLIP_RIGHT 0x00000002L
+#define D3DCLIP_TOP 0x00000004L
+#define D3DCLIP_BOTTOM 0x00000008L
+#define D3DCLIP_FRONT 0x00000010L
+#define D3DCLIP_BACK 0x00000020L
+#define D3DCLIP_GEN0 0x00000040L
+#define D3DCLIP_GEN1 0x00000080L
+#define D3DCLIP_GEN2 0x00000100L
+#define D3DCLIP_GEN3 0x00000200L
+#define D3DCLIP_GEN4 0x00000400L
+#define D3DCLIP_GEN5 0x00000800L
+
+/*
+ * Values for d3d status.
+ */
+#define D3DSTATUS_CLIPUNIONLEFT D3DCLIP_LEFT
+#define D3DSTATUS_CLIPUNIONRIGHT D3DCLIP_RIGHT
+#define D3DSTATUS_CLIPUNIONTOP D3DCLIP_TOP
+#define D3DSTATUS_CLIPUNIONBOTTOM D3DCLIP_BOTTOM
+#define D3DSTATUS_CLIPUNIONFRONT D3DCLIP_FRONT
+#define D3DSTATUS_CLIPUNIONBACK D3DCLIP_BACK
+#define D3DSTATUS_CLIPUNIONGEN0 D3DCLIP_GEN0
+#define D3DSTATUS_CLIPUNIONGEN1 D3DCLIP_GEN1
+#define D3DSTATUS_CLIPUNIONGEN2 D3DCLIP_GEN2
+#define D3DSTATUS_CLIPUNIONGEN3 D3DCLIP_GEN3
+#define D3DSTATUS_CLIPUNIONGEN4 D3DCLIP_GEN4
+#define D3DSTATUS_CLIPUNIONGEN5 D3DCLIP_GEN5
+
+#define D3DSTATUS_CLIPINTERSECTIONLEFT 0x00001000L
+#define D3DSTATUS_CLIPINTERSECTIONRIGHT 0x00002000L
+#define D3DSTATUS_CLIPINTERSECTIONTOP 0x00004000L
+#define D3DSTATUS_CLIPINTERSECTIONBOTTOM 0x00008000L
+#define D3DSTATUS_CLIPINTERSECTIONFRONT 0x00010000L
+#define D3DSTATUS_CLIPINTERSECTIONBACK 0x00020000L
+#define D3DSTATUS_CLIPINTERSECTIONGEN0 0x00040000L
+#define D3DSTATUS_CLIPINTERSECTIONGEN1 0x00080000L
+#define D3DSTATUS_CLIPINTERSECTIONGEN2 0x00100000L
+#define D3DSTATUS_CLIPINTERSECTIONGEN3 0x00200000L
+#define D3DSTATUS_CLIPINTERSECTIONGEN4 0x00400000L
+#define D3DSTATUS_CLIPINTERSECTIONGEN5 0x00800000L
+#define D3DSTATUS_ZNOTVISIBLE 0x01000000L
+/* Do not use 0x80000000 for any status flags in future as it is reserved */
+
+#define D3DSTATUS_CLIPUNIONALL ( \
+ D3DSTATUS_CLIPUNIONLEFT | \
+ D3DSTATUS_CLIPUNIONRIGHT | \
+ D3DSTATUS_CLIPUNIONTOP | \
+ D3DSTATUS_CLIPUNIONBOTTOM | \
+ D3DSTATUS_CLIPUNIONFRONT | \
+ D3DSTATUS_CLIPUNIONBACK | \
+ D3DSTATUS_CLIPUNIONGEN0 | \
+ D3DSTATUS_CLIPUNIONGEN1 | \
+ D3DSTATUS_CLIPUNIONGEN2 | \
+ D3DSTATUS_CLIPUNIONGEN3 | \
+ D3DSTATUS_CLIPUNIONGEN4 | \
+ D3DSTATUS_CLIPUNIONGEN5 \
+ )
+
+#define D3DSTATUS_CLIPINTERSECTIONALL ( \
+ D3DSTATUS_CLIPINTERSECTIONLEFT | \
+ D3DSTATUS_CLIPINTERSECTIONRIGHT | \
+ D3DSTATUS_CLIPINTERSECTIONTOP | \
+ D3DSTATUS_CLIPINTERSECTIONBOTTOM | \
+ D3DSTATUS_CLIPINTERSECTIONFRONT | \
+ D3DSTATUS_CLIPINTERSECTIONBACK | \
+ D3DSTATUS_CLIPINTERSECTIONGEN0 | \
+ D3DSTATUS_CLIPINTERSECTIONGEN1 | \
+ D3DSTATUS_CLIPINTERSECTIONGEN2 | \
+ D3DSTATUS_CLIPINTERSECTIONGEN3 | \
+ D3DSTATUS_CLIPINTERSECTIONGEN4 | \
+ D3DSTATUS_CLIPINTERSECTIONGEN5 \
+ )
+
+#define D3DSTATUS_DEFAULT ( \
+ D3DSTATUS_CLIPINTERSECTIONALL | \
+ D3DSTATUS_ZNOTVISIBLE)
+
+
+/*
+ * Options for direct transform calls
+ */
+#define D3DTRANSFORM_CLIPPED 0x00000001l
+#define D3DTRANSFORM_UNCLIPPED 0x00000002l
+
+typedef struct _D3DTRANSFORMDATA {
+ DWORD dwSize;
+ LPVOID lpIn; /* Input vertices */
+ DWORD dwInSize; /* Stride of input vertices */
+ LPVOID lpOut; /* Output vertices */
+ DWORD dwOutSize; /* Stride of output vertices */
+ LPD3DHVERTEX lpHOut; /* Output homogeneous vertices */
+ DWORD dwClip; /* Clipping hint */
+ DWORD dwClipIntersection;
+ DWORD dwClipUnion; /* Union of all clip flags */
+ D3DRECT drExtent; /* Extent of transformed vertices */
+} D3DTRANSFORMDATA, *LPD3DTRANSFORMDATA;
+
+/*
+ * Structure defining position and direction properties for lighting.
+ */
+typedef struct _D3DLIGHTINGELEMENT {
+ D3DVECTOR dvPosition; /* Lightable point in model space */
+ D3DVECTOR dvNormal; /* Normalised unit vector */
+} D3DLIGHTINGELEMENT, *LPD3DLIGHTINGELEMENT;
+
+/*
+ * Structure defining material properties for lighting.
+ */
+typedef struct _D3DMATERIAL {
+ DWORD dwSize;
+ union {
+ D3DCOLORVALUE diffuse; /* Diffuse color RGBA */
+ D3DCOLORVALUE dcvDiffuse;
+ };
+ union {
+ D3DCOLORVALUE ambient; /* Ambient color RGB */
+ D3DCOLORVALUE dcvAmbient;
+ };
+ union {
+ D3DCOLORVALUE specular; /* Specular 'shininess' */
+ D3DCOLORVALUE dcvSpecular;
+ };
+ union {
+ D3DCOLORVALUE emissive; /* Emissive color RGB */
+ D3DCOLORVALUE dcvEmissive;
+ };
+ union {
+ D3DVALUE power; /* Sharpness if specular highlight */
+ D3DVALUE dvPower;
+ };
+ D3DTEXTUREHANDLE hTexture; /* Handle to texture map */
+ DWORD dwRampSize;
+} D3DMATERIAL, *LPD3DMATERIAL;
+
+#if(DIRECT3D_VERSION >= 0x0700)
+
+typedef struct _D3DMATERIAL7 {
+ union {
+ D3DCOLORVALUE diffuse; /* Diffuse color RGBA */
+ D3DCOLORVALUE dcvDiffuse;
+ };
+ union {
+ D3DCOLORVALUE ambient; /* Ambient color RGB */
+ D3DCOLORVALUE dcvAmbient;
+ };
+ union {
+ D3DCOLORVALUE specular; /* Specular 'shininess' */
+ D3DCOLORVALUE dcvSpecular;
+ };
+ union {
+ D3DCOLORVALUE emissive; /* Emissive color RGB */
+ D3DCOLORVALUE dcvEmissive;
+ };
+ union {
+ D3DVALUE power; /* Sharpness if specular highlight */
+ D3DVALUE dvPower;
+ };
+} D3DMATERIAL7, *LPD3DMATERIAL7;
+
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+#if(DIRECT3D_VERSION < 0x0800)
+
+typedef enum _D3DLIGHTTYPE {
+ D3DLIGHT_POINT = 1,
+ D3DLIGHT_SPOT = 2,
+ D3DLIGHT_DIRECTIONAL = 3,
+// Note: The following light type (D3DLIGHT_PARALLELPOINT)
+// is no longer supported from D3D for DX7 onwards.
+ D3DLIGHT_PARALLELPOINT = 4,
+#if(DIRECT3D_VERSION < 0x0500) // For backward compatible headers
+ D3DLIGHT_GLSPOT = 5,
+#endif
+ D3DLIGHT_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DLIGHTTYPE;
+
+#else
+typedef enum _D3DLIGHTTYPE D3DLIGHTTYPE;
+#define D3DLIGHT_PARALLELPOINT (D3DLIGHTTYPE)4
+#define D3DLIGHT_GLSPOT (D3DLIGHTTYPE)5
+
+#endif //(DIRECT3D_VERSION < 0x0800)
+
+/*
+ * Structure defining a light source and its properties.
+ */
+typedef struct _D3DLIGHT {
+ DWORD dwSize;
+ D3DLIGHTTYPE dltType; /* Type of light source */
+ D3DCOLORVALUE dcvColor; /* Color of light */
+ D3DVECTOR dvPosition; /* Position in world space */
+ D3DVECTOR dvDirection; /* Direction in world space */
+ D3DVALUE dvRange; /* Cutoff range */
+ D3DVALUE dvFalloff; /* Falloff */
+ D3DVALUE dvAttenuation0; /* Constant attenuation */
+ D3DVALUE dvAttenuation1; /* Linear attenuation */
+ D3DVALUE dvAttenuation2; /* Quadratic attenuation */
+ D3DVALUE dvTheta; /* Inner angle of spotlight cone */
+ D3DVALUE dvPhi; /* Outer angle of spotlight cone */
+} D3DLIGHT, *LPD3DLIGHT;
+
+#if(DIRECT3D_VERSION >= 0x0700)
+
+typedef struct _D3DLIGHT7 {
+ D3DLIGHTTYPE dltType; /* Type of light source */
+ D3DCOLORVALUE dcvDiffuse; /* Diffuse color of light */
+ D3DCOLORVALUE dcvSpecular; /* Specular color of light */
+ D3DCOLORVALUE dcvAmbient; /* Ambient color of light */
+ D3DVECTOR dvPosition; /* Position in world space */
+ D3DVECTOR dvDirection; /* Direction in world space */
+ D3DVALUE dvRange; /* Cutoff range */
+ D3DVALUE dvFalloff; /* Falloff */
+ D3DVALUE dvAttenuation0; /* Constant attenuation */
+ D3DVALUE dvAttenuation1; /* Linear attenuation */
+ D3DVALUE dvAttenuation2; /* Quadratic attenuation */
+ D3DVALUE dvTheta; /* Inner angle of spotlight cone */
+ D3DVALUE dvPhi; /* Outer angle of spotlight cone */
+} D3DLIGHT7, *LPD3DLIGHT7;
+
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+#if(DIRECT3D_VERSION >= 0x0500)
+/*
+ * Structure defining a light source and its properties.
+ */
+
+/* flags bits */
+#define D3DLIGHT_ACTIVE 0x00000001
+#define D3DLIGHT_NO_SPECULAR 0x00000002
+#define D3DLIGHT_ALL (D3DLIGHT_ACTIVE | D3DLIGHT_NO_SPECULAR)
+
+/* maximum valid light range */
+#define D3DLIGHT_RANGE_MAX ((float)sqrt(FLT_MAX))
+
+typedef struct _D3DLIGHT2 {
+ DWORD dwSize;
+ D3DLIGHTTYPE dltType; /* Type of light source */
+ D3DCOLORVALUE dcvColor; /* Color of light */
+ D3DVECTOR dvPosition; /* Position in world space */
+ D3DVECTOR dvDirection; /* Direction in world space */
+ D3DVALUE dvRange; /* Cutoff range */
+ D3DVALUE dvFalloff; /* Falloff */
+ D3DVALUE dvAttenuation0; /* Constant attenuation */
+ D3DVALUE dvAttenuation1; /* Linear attenuation */
+ D3DVALUE dvAttenuation2; /* Quadratic attenuation */
+ D3DVALUE dvTheta; /* Inner angle of spotlight cone */
+ D3DVALUE dvPhi; /* Outer angle of spotlight cone */
+ DWORD dwFlags;
+} D3DLIGHT2, *LPD3DLIGHT2;
+
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+typedef struct _D3DLIGHTDATA {
+ DWORD dwSize;
+ LPD3DLIGHTINGELEMENT lpIn; /* Input positions and normals */
+ DWORD dwInSize; /* Stride of input elements */
+ LPD3DTLVERTEX lpOut; /* Output colors */
+ DWORD dwOutSize; /* Stride of output colors */
+} D3DLIGHTDATA, *LPD3DLIGHTDATA;
+
+#if(DIRECT3D_VERSION >= 0x0500)
+/*
+ * Before DX5, these values were in an enum called
+ * D3DCOLORMODEL. This was not correct, since they are
+ * bit flags. A driver can surface either or both flags
+ * in the dcmColorModel member of D3DDEVICEDESC.
+ */
+#define D3DCOLOR_MONO 1
+#define D3DCOLOR_RGB 2
+
+typedef DWORD D3DCOLORMODEL;
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+/*
+ * Options for clearing
+ */
+#define D3DCLEAR_TARGET 0x00000001l /* Clear target surface */
+#define D3DCLEAR_ZBUFFER 0x00000002l /* Clear target z buffer */
+#if(DIRECT3D_VERSION >= 0x0600)
+#define D3DCLEAR_STENCIL 0x00000004l /* Clear stencil planes */
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+/*
+ * Execute buffers are allocated via Direct3D. These buffers may then
+ * be filled by the application with instructions to execute along with
+ * vertex data.
+ */
+
+/*
+ * Supported op codes for execute instructions.
+ */
+typedef enum _D3DOPCODE {
+ D3DOP_POINT = 1,
+ D3DOP_LINE = 2,
+ D3DOP_TRIANGLE = 3,
+ D3DOP_MATRIXLOAD = 4,
+ D3DOP_MATRIXMULTIPLY = 5,
+ D3DOP_STATETRANSFORM = 6,
+ D3DOP_STATELIGHT = 7,
+ D3DOP_STATERENDER = 8,
+ D3DOP_PROCESSVERTICES = 9,
+ D3DOP_TEXTURELOAD = 10,
+ D3DOP_EXIT = 11,
+ D3DOP_BRANCHFORWARD = 12,
+ D3DOP_SPAN = 13,
+ D3DOP_SETSTATUS = 14,
+#if(DIRECT3D_VERSION >= 0x0500)
+ D3DOP_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DOPCODE;
+
+typedef struct _D3DINSTRUCTION {
+ BYTE bOpcode; /* Instruction opcode */
+ BYTE bSize; /* Size of each instruction data unit */
+ WORD wCount; /* Count of instruction data units to follow */
+} D3DINSTRUCTION, *LPD3DINSTRUCTION;
+
+/*
+ * Structure for texture loads
+ */
+typedef struct _D3DTEXTURELOAD {
+ D3DTEXTUREHANDLE hDestTexture;
+ D3DTEXTUREHANDLE hSrcTexture;
+} D3DTEXTURELOAD, *LPD3DTEXTURELOAD;
+
+/*
+ * Structure for picking
+ */
+typedef struct _D3DPICKRECORD {
+ BYTE bOpcode;
+ BYTE bPad;
+ DWORD dwOffset;
+ D3DVALUE dvZ;
+} D3DPICKRECORD, *LPD3DPICKRECORD;
+
+/*
+ * The following defines the rendering states which can be set in the
+ * execute buffer.
+ */
+
+#if(DIRECT3D_VERSION < 0x0800)
+
+typedef enum _D3DSHADEMODE {
+ D3DSHADE_FLAT = 1,
+ D3DSHADE_GOURAUD = 2,
+ D3DSHADE_PHONG = 3,
+#if(DIRECT3D_VERSION >= 0x0500)
+ D3DSHADE_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DSHADEMODE;
+
+typedef enum _D3DFILLMODE {
+ D3DFILL_POINT = 1,
+ D3DFILL_WIREFRAME = 2,
+ D3DFILL_SOLID = 3,
+#if(DIRECT3D_VERSION >= 0x0500)
+ D3DFILL_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DFILLMODE;
+
+typedef struct _D3DLINEPATTERN {
+ WORD wRepeatFactor;
+ WORD wLinePattern;
+} D3DLINEPATTERN;
+
+#endif //(DIRECT3D_VERSION < 0x0800)
+
+typedef enum _D3DTEXTUREFILTER {
+ D3DFILTER_NEAREST = 1,
+ D3DFILTER_LINEAR = 2,
+ D3DFILTER_MIPNEAREST = 3,
+ D3DFILTER_MIPLINEAR = 4,
+ D3DFILTER_LINEARMIPNEAREST = 5,
+ D3DFILTER_LINEARMIPLINEAR = 6,
+#if(DIRECT3D_VERSION >= 0x0500)
+ D3DFILTER_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DTEXTUREFILTER;
+
+#if(DIRECT3D_VERSION < 0x0800)
+
+typedef enum _D3DBLEND {
+ D3DBLEND_ZERO = 1,
+ D3DBLEND_ONE = 2,
+ D3DBLEND_SRCCOLOR = 3,
+ D3DBLEND_INVSRCCOLOR = 4,
+ D3DBLEND_SRCALPHA = 5,
+ D3DBLEND_INVSRCALPHA = 6,
+ D3DBLEND_DESTALPHA = 7,
+ D3DBLEND_INVDESTALPHA = 8,
+ D3DBLEND_DESTCOLOR = 9,
+ D3DBLEND_INVDESTCOLOR = 10,
+ D3DBLEND_SRCALPHASAT = 11,
+ D3DBLEND_BOTHSRCALPHA = 12,
+ D3DBLEND_BOTHINVSRCALPHA = 13,
+#if(DIRECT3D_VERSION >= 0x0500)
+ D3DBLEND_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DBLEND;
+
+#endif //(DIRECT3D_VERSION < 0x0800)
+
+typedef enum _D3DTEXTUREBLEND {
+ D3DTBLEND_DECAL = 1,
+ D3DTBLEND_MODULATE = 2,
+ D3DTBLEND_DECALALPHA = 3,
+ D3DTBLEND_MODULATEALPHA = 4,
+ D3DTBLEND_DECALMASK = 5,
+ D3DTBLEND_MODULATEMASK = 6,
+ D3DTBLEND_COPY = 7,
+#if(DIRECT3D_VERSION >= 0x0500)
+ D3DTBLEND_ADD = 8,
+ D3DTBLEND_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DTEXTUREBLEND;
+
+#if(DIRECT3D_VERSION < 0x0800)
+
+typedef enum _D3DTEXTUREADDRESS {
+ D3DTADDRESS_WRAP = 1,
+ D3DTADDRESS_MIRROR = 2,
+ D3DTADDRESS_CLAMP = 3,
+#if(DIRECT3D_VERSION >= 0x0500)
+ D3DTADDRESS_BORDER = 4,
+ D3DTADDRESS_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DTEXTUREADDRESS;
+
+typedef enum _D3DCULL {
+ D3DCULL_NONE = 1,
+ D3DCULL_CW = 2,
+ D3DCULL_CCW = 3,
+#if(DIRECT3D_VERSION >= 0x0500)
+ D3DCULL_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DCULL;
+
+typedef enum _D3DCMPFUNC {
+ D3DCMP_NEVER = 1,
+ D3DCMP_LESS = 2,
+ D3DCMP_EQUAL = 3,
+ D3DCMP_LESSEQUAL = 4,
+ D3DCMP_GREATER = 5,
+ D3DCMP_NOTEQUAL = 6,
+ D3DCMP_GREATEREQUAL = 7,
+ D3DCMP_ALWAYS = 8,
+#if(DIRECT3D_VERSION >= 0x0500)
+ D3DCMP_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DCMPFUNC;
+
+#if(DIRECT3D_VERSION >= 0x0600)
+typedef enum _D3DSTENCILOP {
+ D3DSTENCILOP_KEEP = 1,
+ D3DSTENCILOP_ZERO = 2,
+ D3DSTENCILOP_REPLACE = 3,
+ D3DSTENCILOP_INCRSAT = 4,
+ D3DSTENCILOP_DECRSAT = 5,
+ D3DSTENCILOP_INVERT = 6,
+ D3DSTENCILOP_INCR = 7,
+ D3DSTENCILOP_DECR = 8,
+ D3DSTENCILOP_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DSTENCILOP;
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+typedef enum _D3DFOGMODE {
+ D3DFOG_NONE = 0,
+ D3DFOG_EXP = 1,
+ D3DFOG_EXP2 = 2,
+#if(DIRECT3D_VERSION >= 0x0500)
+ D3DFOG_LINEAR = 3,
+ D3DFOG_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DFOGMODE;
+
+#if(DIRECT3D_VERSION >= 0x0600)
+typedef enum _D3DZBUFFERTYPE {
+ D3DZB_FALSE = 0,
+ D3DZB_TRUE = 1, // Z buffering
+ D3DZB_USEW = 2, // W buffering
+ D3DZB_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DZBUFFERTYPE;
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+#endif //(DIRECT3D_VERSION < 0x0800)
+
+#if(DIRECT3D_VERSION >= 0x0500)
+typedef enum _D3DANTIALIASMODE {
+ D3DANTIALIAS_NONE = 0,
+ D3DANTIALIAS_SORTDEPENDENT = 1,
+ D3DANTIALIAS_SORTINDEPENDENT = 2,
+ D3DANTIALIAS_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DANTIALIASMODE;
+
+// Vertex types supported by Direct3D
+typedef enum _D3DVERTEXTYPE {
+ D3DVT_VERTEX = 1,
+ D3DVT_LVERTEX = 2,
+ D3DVT_TLVERTEX = 3,
+ D3DVT_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DVERTEXTYPE;
+
+#if(DIRECT3D_VERSION < 0x0800)
+
+// Primitives supported by draw-primitive API
+typedef enum _D3DPRIMITIVETYPE {
+ D3DPT_POINTLIST = 1,
+ D3DPT_LINELIST = 2,
+ D3DPT_LINESTRIP = 3,
+ D3DPT_TRIANGLELIST = 4,
+ D3DPT_TRIANGLESTRIP = 5,
+ D3DPT_TRIANGLEFAN = 6,
+ D3DPT_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DPRIMITIVETYPE;
+
+#endif //(DIRECT3D_VERSION < 0x0800)
+
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+/*
+ * Amount to add to a state to generate the override for that state.
+ */
+#define D3DSTATE_OVERRIDE_BIAS 256
+
+/*
+ * A state which sets the override flag for the specified state type.
+ */
+#define D3DSTATE_OVERRIDE(type) (D3DRENDERSTATETYPE)(((DWORD) (type) + D3DSTATE_OVERRIDE_BIAS))
+
+#if(DIRECT3D_VERSION < 0x0800)
+
+typedef enum _D3DTRANSFORMSTATETYPE {
+ D3DTRANSFORMSTATE_WORLD = 1,
+ D3DTRANSFORMSTATE_VIEW = 2,
+ D3DTRANSFORMSTATE_PROJECTION = 3,
+#if(DIRECT3D_VERSION >= 0x0700)
+ D3DTRANSFORMSTATE_WORLD1 = 4, // 2nd matrix to blend
+ D3DTRANSFORMSTATE_WORLD2 = 5, // 3rd matrix to blend
+ D3DTRANSFORMSTATE_WORLD3 = 6, // 4th matrix to blend
+ D3DTRANSFORMSTATE_TEXTURE0 = 16,
+ D3DTRANSFORMSTATE_TEXTURE1 = 17,
+ D3DTRANSFORMSTATE_TEXTURE2 = 18,
+ D3DTRANSFORMSTATE_TEXTURE3 = 19,
+ D3DTRANSFORMSTATE_TEXTURE4 = 20,
+ D3DTRANSFORMSTATE_TEXTURE5 = 21,
+ D3DTRANSFORMSTATE_TEXTURE6 = 22,
+ D3DTRANSFORMSTATE_TEXTURE7 = 23,
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+#if(DIRECT3D_VERSION >= 0x0500)
+ D3DTRANSFORMSTATE_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DTRANSFORMSTATETYPE;
+
+#else
+
+//
+// legacy transform state names
+//
+typedef enum _D3DTRANSFORMSTATETYPE D3DTRANSFORMSTATETYPE;
+#define D3DTRANSFORMSTATE_WORLD (D3DTRANSFORMSTATETYPE)1
+#define D3DTRANSFORMSTATE_VIEW (D3DTRANSFORMSTATETYPE)2
+#define D3DTRANSFORMSTATE_PROJECTION (D3DTRANSFORMSTATETYPE)3
+#define D3DTRANSFORMSTATE_WORLD1 (D3DTRANSFORMSTATETYPE)4
+#define D3DTRANSFORMSTATE_WORLD2 (D3DTRANSFORMSTATETYPE)5
+#define D3DTRANSFORMSTATE_WORLD3 (D3DTRANSFORMSTATETYPE)6
+#define D3DTRANSFORMSTATE_TEXTURE0 (D3DTRANSFORMSTATETYPE)16
+#define D3DTRANSFORMSTATE_TEXTURE1 (D3DTRANSFORMSTATETYPE)17
+#define D3DTRANSFORMSTATE_TEXTURE2 (D3DTRANSFORMSTATETYPE)18
+#define D3DTRANSFORMSTATE_TEXTURE3 (D3DTRANSFORMSTATETYPE)19
+#define D3DTRANSFORMSTATE_TEXTURE4 (D3DTRANSFORMSTATETYPE)20
+#define D3DTRANSFORMSTATE_TEXTURE5 (D3DTRANSFORMSTATETYPE)21
+#define D3DTRANSFORMSTATE_TEXTURE6 (D3DTRANSFORMSTATETYPE)22
+#define D3DTRANSFORMSTATE_TEXTURE7 (D3DTRANSFORMSTATETYPE)23
+
+#endif //(DIRECT3D_VERSION < 0x0800)
+
+typedef enum _D3DLIGHTSTATETYPE {
+ D3DLIGHTSTATE_MATERIAL = 1,
+ D3DLIGHTSTATE_AMBIENT = 2,
+ D3DLIGHTSTATE_COLORMODEL = 3,
+ D3DLIGHTSTATE_FOGMODE = 4,
+ D3DLIGHTSTATE_FOGSTART = 5,
+ D3DLIGHTSTATE_FOGEND = 6,
+ D3DLIGHTSTATE_FOGDENSITY = 7,
+#if(DIRECT3D_VERSION >= 0x0600)
+ D3DLIGHTSTATE_COLORVERTEX = 8,
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+#if(DIRECT3D_VERSION >= 0x0500)
+ D3DLIGHTSTATE_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DLIGHTSTATETYPE;
+
+#if(DIRECT3D_VERSION < 0x0800)
+
+typedef enum _D3DRENDERSTATETYPE {
+ D3DRENDERSTATE_ANTIALIAS = 2, /* D3DANTIALIASMODE */
+ D3DRENDERSTATE_TEXTUREPERSPECTIVE = 4, /* TRUE for perspective correction */
+ D3DRENDERSTATE_ZENABLE = 7, /* D3DZBUFFERTYPE (or TRUE/FALSE for legacy) */
+ D3DRENDERSTATE_FILLMODE = 8, /* D3DFILL_MODE */
+ D3DRENDERSTATE_SHADEMODE = 9, /* D3DSHADEMODE */
+ D3DRENDERSTATE_LINEPATTERN = 10, /* D3DLINEPATTERN */
+ D3DRENDERSTATE_ZWRITEENABLE = 14, /* TRUE to enable z writes */
+ D3DRENDERSTATE_ALPHATESTENABLE = 15, /* TRUE to enable alpha tests */
+ D3DRENDERSTATE_LASTPIXEL = 16, /* TRUE for last-pixel on lines */
+ D3DRENDERSTATE_SRCBLEND = 19, /* D3DBLEND */
+ D3DRENDERSTATE_DESTBLEND = 20, /* D3DBLEND */
+ D3DRENDERSTATE_CULLMODE = 22, /* D3DCULL */
+ D3DRENDERSTATE_ZFUNC = 23, /* D3DCMPFUNC */
+ D3DRENDERSTATE_ALPHAREF = 24, /* D3DFIXED */
+ D3DRENDERSTATE_ALPHAFUNC = 25, /* D3DCMPFUNC */
+ D3DRENDERSTATE_DITHERENABLE = 26, /* TRUE to enable dithering */
+#if(DIRECT3D_VERSION >= 0x0500)
+ D3DRENDERSTATE_ALPHABLENDENABLE = 27, /* TRUE to enable alpha blending */
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+ D3DRENDERSTATE_FOGENABLE = 28, /* TRUE to enable fog blending */
+ D3DRENDERSTATE_SPECULARENABLE = 29, /* TRUE to enable specular */
+ D3DRENDERSTATE_ZVISIBLE = 30, /* TRUE to enable z checking */
+ D3DRENDERSTATE_STIPPLEDALPHA = 33, /* TRUE to enable stippled alpha (RGB device only) */
+ D3DRENDERSTATE_FOGCOLOR = 34, /* D3DCOLOR */
+ D3DRENDERSTATE_FOGTABLEMODE = 35, /* D3DFOGMODE */
+#if(DIRECT3D_VERSION >= 0x0700)
+ D3DRENDERSTATE_FOGSTART = 36, /* Fog start (for both vertex and pixel fog) */
+ D3DRENDERSTATE_FOGEND = 37, /* Fog end */
+ D3DRENDERSTATE_FOGDENSITY = 38, /* Fog density */
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+#if(DIRECT3D_VERSION >= 0x0500)
+ D3DRENDERSTATE_EDGEANTIALIAS = 40, /* TRUE to enable edge antialiasing */
+ D3DRENDERSTATE_COLORKEYENABLE = 41, /* TRUE to enable source colorkeyed textures */
+ D3DRENDERSTATE_ZBIAS = 47, /* LONG Z bias */
+ D3DRENDERSTATE_RANGEFOGENABLE = 48, /* Enables range-based fog */
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#if(DIRECT3D_VERSION >= 0x0600)
+ D3DRENDERSTATE_STENCILENABLE = 52, /* BOOL enable/disable stenciling */
+ D3DRENDERSTATE_STENCILFAIL = 53, /* D3DSTENCILOP to do if stencil test fails */
+ D3DRENDERSTATE_STENCILZFAIL = 54, /* D3DSTENCILOP to do if stencil test passes and Z test fails */
+ D3DRENDERSTATE_STENCILPASS = 55, /* D3DSTENCILOP to do if both stencil and Z tests pass */
+ D3DRENDERSTATE_STENCILFUNC = 56, /* D3DCMPFUNC fn. Stencil Test passes if ((ref & mask) stencilfn (stencil & mask)) is true */
+ D3DRENDERSTATE_STENCILREF = 57, /* Reference value used in stencil test */
+ D3DRENDERSTATE_STENCILMASK = 58, /* Mask value used in stencil test */
+ D3DRENDERSTATE_STENCILWRITEMASK = 59, /* Write mask applied to values written to stencil buffer */
+ D3DRENDERSTATE_TEXTUREFACTOR = 60, /* D3DCOLOR used for multi-texture blend */
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+#if(DIRECT3D_VERSION >= 0x0600)
+
+ /*
+ * 128 values [128, 255] are reserved for texture coordinate wrap flags.
+ * These are constructed with the D3DWRAP_U and D3DWRAP_V macros. Using
+ * a flags word preserves forward compatibility with texture coordinates
+ * that are >2D.
+ */
+ D3DRENDERSTATE_WRAP0 = 128, /* wrap for 1st texture coord. set */
+ D3DRENDERSTATE_WRAP1 = 129, /* wrap for 2nd texture coord. set */
+ D3DRENDERSTATE_WRAP2 = 130, /* wrap for 3rd texture coord. set */
+ D3DRENDERSTATE_WRAP3 = 131, /* wrap for 4th texture coord. set */
+ D3DRENDERSTATE_WRAP4 = 132, /* wrap for 5th texture coord. set */
+ D3DRENDERSTATE_WRAP5 = 133, /* wrap for 6th texture coord. set */
+ D3DRENDERSTATE_WRAP6 = 134, /* wrap for 7th texture coord. set */
+ D3DRENDERSTATE_WRAP7 = 135, /* wrap for 8th texture coord. set */
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+#if(DIRECT3D_VERSION >= 0x0700)
+ D3DRENDERSTATE_CLIPPING = 136,
+ D3DRENDERSTATE_LIGHTING = 137,
+ D3DRENDERSTATE_EXTENTS = 138,
+ D3DRENDERSTATE_AMBIENT = 139,
+ D3DRENDERSTATE_FOGVERTEXMODE = 140,
+ D3DRENDERSTATE_COLORVERTEX = 141,
+ D3DRENDERSTATE_LOCALVIEWER = 142,
+ D3DRENDERSTATE_NORMALIZENORMALS = 143,
+ D3DRENDERSTATE_COLORKEYBLENDENABLE = 144,
+ D3DRENDERSTATE_DIFFUSEMATERIALSOURCE = 145,
+ D3DRENDERSTATE_SPECULARMATERIALSOURCE = 146,
+ D3DRENDERSTATE_AMBIENTMATERIALSOURCE = 147,
+ D3DRENDERSTATE_EMISSIVEMATERIALSOURCE = 148,
+ D3DRENDERSTATE_VERTEXBLEND = 151,
+ D3DRENDERSTATE_CLIPPLANEENABLE = 152,
+
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+//
+// retired renderstates - not supported for DX7 interfaces
+//
+ D3DRENDERSTATE_TEXTUREHANDLE = 1, /* Texture handle for legacy interfaces (Texture,Texture2) */
+ D3DRENDERSTATE_TEXTUREADDRESS = 3, /* D3DTEXTUREADDRESS */
+ D3DRENDERSTATE_WRAPU = 5, /* TRUE for wrapping in u */
+ D3DRENDERSTATE_WRAPV = 6, /* TRUE for wrapping in v */
+ D3DRENDERSTATE_MONOENABLE = 11, /* TRUE to enable mono rasterization */
+ D3DRENDERSTATE_ROP2 = 12, /* ROP2 */
+ D3DRENDERSTATE_PLANEMASK = 13, /* DWORD physical plane mask */
+ D3DRENDERSTATE_TEXTUREMAG = 17, /* D3DTEXTUREFILTER */
+ D3DRENDERSTATE_TEXTUREMIN = 18, /* D3DTEXTUREFILTER */
+ D3DRENDERSTATE_TEXTUREMAPBLEND = 21, /* D3DTEXTUREBLEND */
+ D3DRENDERSTATE_SUBPIXEL = 31, /* TRUE to enable subpixel correction */
+ D3DRENDERSTATE_SUBPIXELX = 32, /* TRUE to enable correction in X only */
+ D3DRENDERSTATE_STIPPLEENABLE = 39, /* TRUE to enable stippling */
+#if(DIRECT3D_VERSION >= 0x0500)
+ D3DRENDERSTATE_BORDERCOLOR = 43, /* Border color for texturing w/border */
+ D3DRENDERSTATE_TEXTUREADDRESSU = 44, /* Texture addressing mode for U coordinate */
+ D3DRENDERSTATE_TEXTUREADDRESSV = 45, /* Texture addressing mode for V coordinate */
+ D3DRENDERSTATE_MIPMAPLODBIAS = 46, /* D3DVALUE Mipmap LOD bias */
+ D3DRENDERSTATE_ANISOTROPY = 49, /* Max. anisotropy. 1 = no anisotropy */
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+ D3DRENDERSTATE_FLUSHBATCH = 50, /* Explicit flush for DP batching (DX5 Only) */
+#if(DIRECT3D_VERSION >= 0x0600)
+ D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT=51, /* BOOL enable sort-independent transparency */
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+ D3DRENDERSTATE_STIPPLEPATTERN00 = 64, /* Stipple pattern 01... */
+ D3DRENDERSTATE_STIPPLEPATTERN01 = 65,
+ D3DRENDERSTATE_STIPPLEPATTERN02 = 66,
+ D3DRENDERSTATE_STIPPLEPATTERN03 = 67,
+ D3DRENDERSTATE_STIPPLEPATTERN04 = 68,
+ D3DRENDERSTATE_STIPPLEPATTERN05 = 69,
+ D3DRENDERSTATE_STIPPLEPATTERN06 = 70,
+ D3DRENDERSTATE_STIPPLEPATTERN07 = 71,
+ D3DRENDERSTATE_STIPPLEPATTERN08 = 72,
+ D3DRENDERSTATE_STIPPLEPATTERN09 = 73,
+ D3DRENDERSTATE_STIPPLEPATTERN10 = 74,
+ D3DRENDERSTATE_STIPPLEPATTERN11 = 75,
+ D3DRENDERSTATE_STIPPLEPATTERN12 = 76,
+ D3DRENDERSTATE_STIPPLEPATTERN13 = 77,
+ D3DRENDERSTATE_STIPPLEPATTERN14 = 78,
+ D3DRENDERSTATE_STIPPLEPATTERN15 = 79,
+ D3DRENDERSTATE_STIPPLEPATTERN16 = 80,
+ D3DRENDERSTATE_STIPPLEPATTERN17 = 81,
+ D3DRENDERSTATE_STIPPLEPATTERN18 = 82,
+ D3DRENDERSTATE_STIPPLEPATTERN19 = 83,
+ D3DRENDERSTATE_STIPPLEPATTERN20 = 84,
+ D3DRENDERSTATE_STIPPLEPATTERN21 = 85,
+ D3DRENDERSTATE_STIPPLEPATTERN22 = 86,
+ D3DRENDERSTATE_STIPPLEPATTERN23 = 87,
+ D3DRENDERSTATE_STIPPLEPATTERN24 = 88,
+ D3DRENDERSTATE_STIPPLEPATTERN25 = 89,
+ D3DRENDERSTATE_STIPPLEPATTERN26 = 90,
+ D3DRENDERSTATE_STIPPLEPATTERN27 = 91,
+ D3DRENDERSTATE_STIPPLEPATTERN28 = 92,
+ D3DRENDERSTATE_STIPPLEPATTERN29 = 93,
+ D3DRENDERSTATE_STIPPLEPATTERN30 = 94,
+ D3DRENDERSTATE_STIPPLEPATTERN31 = 95,
+
+//
+// retired renderstate names - the values are still used under new naming conventions
+//
+ D3DRENDERSTATE_FOGTABLESTART = 36, /* Fog table start */
+ D3DRENDERSTATE_FOGTABLEEND = 37, /* Fog table end */
+ D3DRENDERSTATE_FOGTABLEDENSITY = 38, /* Fog table density */
+
+#if(DIRECT3D_VERSION >= 0x0500)
+ D3DRENDERSTATE_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+} D3DRENDERSTATETYPE;
+
+#else
+
+typedef enum _D3DRENDERSTATETYPE D3DRENDERSTATETYPE;
+
+//
+// legacy renderstate names
+//
+#define D3DRENDERSTATE_TEXTUREPERSPECTIVE (D3DRENDERSTATETYPE)4
+#define D3DRENDERSTATE_ZENABLE (D3DRENDERSTATETYPE)7
+#define D3DRENDERSTATE_FILLMODE (D3DRENDERSTATETYPE)8
+#define D3DRENDERSTATE_SHADEMODE (D3DRENDERSTATETYPE)9
+#define D3DRENDERSTATE_LINEPATTERN (D3DRENDERSTATETYPE)10
+#define D3DRENDERSTATE_ZWRITEENABLE (D3DRENDERSTATETYPE)14
+#define D3DRENDERSTATE_ALPHATESTENABLE (D3DRENDERSTATETYPE)15
+#define D3DRENDERSTATE_LASTPIXEL (D3DRENDERSTATETYPE)16
+#define D3DRENDERSTATE_SRCBLEND (D3DRENDERSTATETYPE)19
+#define D3DRENDERSTATE_DESTBLEND (D3DRENDERSTATETYPE)20
+#define D3DRENDERSTATE_CULLMODE (D3DRENDERSTATETYPE)22
+#define D3DRENDERSTATE_ZFUNC (D3DRENDERSTATETYPE)23
+#define D3DRENDERSTATE_ALPHAREF (D3DRENDERSTATETYPE)24
+#define D3DRENDERSTATE_ALPHAFUNC (D3DRENDERSTATETYPE)25
+#define D3DRENDERSTATE_DITHERENABLE (D3DRENDERSTATETYPE)26
+#define D3DRENDERSTATE_ALPHABLENDENABLE (D3DRENDERSTATETYPE)27
+#define D3DRENDERSTATE_FOGENABLE (D3DRENDERSTATETYPE)28
+#define D3DRENDERSTATE_SPECULARENABLE (D3DRENDERSTATETYPE)29
+#define D3DRENDERSTATE_ZVISIBLE (D3DRENDERSTATETYPE)30
+#define D3DRENDERSTATE_STIPPLEDALPHA (D3DRENDERSTATETYPE)33
+#define D3DRENDERSTATE_FOGCOLOR (D3DRENDERSTATETYPE)34
+#define D3DRENDERSTATE_FOGTABLEMODE (D3DRENDERSTATETYPE)35
+#define D3DRENDERSTATE_FOGSTART (D3DRENDERSTATETYPE)36
+#define D3DRENDERSTATE_FOGEND (D3DRENDERSTATETYPE)37
+#define D3DRENDERSTATE_FOGDENSITY (D3DRENDERSTATETYPE)38
+#define D3DRENDERSTATE_EDGEANTIALIAS (D3DRENDERSTATETYPE)40
+#define D3DRENDERSTATE_ZBIAS (D3DRENDERSTATETYPE)47
+#define D3DRENDERSTATE_RANGEFOGENABLE (D3DRENDERSTATETYPE)48
+#define D3DRENDERSTATE_STENCILENABLE (D3DRENDERSTATETYPE)52
+#define D3DRENDERSTATE_STENCILFAIL (D3DRENDERSTATETYPE)53
+#define D3DRENDERSTATE_STENCILZFAIL (D3DRENDERSTATETYPE)54
+#define D3DRENDERSTATE_STENCILPASS (D3DRENDERSTATETYPE)55
+#define D3DRENDERSTATE_STENCILFUNC (D3DRENDERSTATETYPE)56
+#define D3DRENDERSTATE_STENCILREF (D3DRENDERSTATETYPE)57
+#define D3DRENDERSTATE_STENCILMASK (D3DRENDERSTATETYPE)58
+#define D3DRENDERSTATE_STENCILWRITEMASK (D3DRENDERSTATETYPE)59
+#define D3DRENDERSTATE_TEXTUREFACTOR (D3DRENDERSTATETYPE)60
+#define D3DRENDERSTATE_WRAP0 (D3DRENDERSTATETYPE)128
+#define D3DRENDERSTATE_WRAP1 (D3DRENDERSTATETYPE)129
+#define D3DRENDERSTATE_WRAP2 (D3DRENDERSTATETYPE)130
+#define D3DRENDERSTATE_WRAP3 (D3DRENDERSTATETYPE)131
+#define D3DRENDERSTATE_WRAP4 (D3DRENDERSTATETYPE)132
+#define D3DRENDERSTATE_WRAP5 (D3DRENDERSTATETYPE)133
+#define D3DRENDERSTATE_WRAP6 (D3DRENDERSTATETYPE)134
+#define D3DRENDERSTATE_WRAP7 (D3DRENDERSTATETYPE)135
+
+#define D3DRENDERSTATE_CLIPPING (D3DRENDERSTATETYPE)136
+#define D3DRENDERSTATE_LIGHTING (D3DRENDERSTATETYPE)137
+#define D3DRENDERSTATE_EXTENTS (D3DRENDERSTATETYPE)138
+#define D3DRENDERSTATE_AMBIENT (D3DRENDERSTATETYPE)139
+#define D3DRENDERSTATE_FOGVERTEXMODE (D3DRENDERSTATETYPE)140
+#define D3DRENDERSTATE_COLORVERTEX (D3DRENDERSTATETYPE)141
+#define D3DRENDERSTATE_LOCALVIEWER (D3DRENDERSTATETYPE)142
+#define D3DRENDERSTATE_NORMALIZENORMALS (D3DRENDERSTATETYPE)143
+#define D3DRENDERSTATE_COLORKEYBLENDENABLE (D3DRENDERSTATETYPE)144
+#define D3DRENDERSTATE_DIFFUSEMATERIALSOURCE (D3DRENDERSTATETYPE)145
+#define D3DRENDERSTATE_SPECULARMATERIALSOURCE (D3DRENDERSTATETYPE)146
+#define D3DRENDERSTATE_AMBIENTMATERIALSOURCE (D3DRENDERSTATETYPE)147
+#define D3DRENDERSTATE_EMISSIVEMATERIALSOURCE (D3DRENDERSTATETYPE)148
+#define D3DRENDERSTATE_VERTEXBLEND (D3DRENDERSTATETYPE)151
+#define D3DRENDERSTATE_CLIPPLANEENABLE (D3DRENDERSTATETYPE)152
+
+//
+// retired renderstates - not supported for DX7 interfaces
+//
+#define D3DRENDERSTATE_TEXTUREHANDLE (D3DRENDERSTATETYPE)1
+#define D3DRENDERSTATE_ANTIALIAS (D3DRENDERSTATETYPE)2
+#define D3DRENDERSTATE_TEXTUREADDRESS (D3DRENDERSTATETYPE)3
+#define D3DRENDERSTATE_WRAPU (D3DRENDERSTATETYPE)5
+#define D3DRENDERSTATE_WRAPV (D3DRENDERSTATETYPE)6
+#define D3DRENDERSTATE_MONOENABLE (D3DRENDERSTATETYPE)11
+#define D3DRENDERSTATE_ROP2 (D3DRENDERSTATETYPE)12
+#define D3DRENDERSTATE_PLANEMASK (D3DRENDERSTATETYPE)13
+#define D3DRENDERSTATE_TEXTUREMAG (D3DRENDERSTATETYPE)17
+#define D3DRENDERSTATE_TEXTUREMIN (D3DRENDERSTATETYPE)18
+#define D3DRENDERSTATE_TEXTUREMAPBLEND (D3DRENDERSTATETYPE)21
+#define D3DRENDERSTATE_SUBPIXEL (D3DRENDERSTATETYPE)31
+#define D3DRENDERSTATE_SUBPIXELX (D3DRENDERSTATETYPE)32
+#define D3DRENDERSTATE_STIPPLEENABLE (D3DRENDERSTATETYPE)39
+#define D3DRENDERSTATE_OLDALPHABLENDENABLE (D3DRENDERSTATETYPE)42
+#define D3DRENDERSTATE_BORDERCOLOR (D3DRENDERSTATETYPE)43
+#define D3DRENDERSTATE_TEXTUREADDRESSU (D3DRENDERSTATETYPE)44
+#define D3DRENDERSTATE_TEXTUREADDRESSV (D3DRENDERSTATETYPE)45
+#define D3DRENDERSTATE_MIPMAPLODBIAS (D3DRENDERSTATETYPE)46
+#define D3DRENDERSTATE_ANISOTROPY (D3DRENDERSTATETYPE)49
+#define D3DRENDERSTATE_FLUSHBATCH (D3DRENDERSTATETYPE)50
+#define D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT (D3DRENDERSTATETYPE)51
+#define D3DRENDERSTATE_STIPPLEPATTERN00 (D3DRENDERSTATETYPE)64
+#define D3DRENDERSTATE_STIPPLEPATTERN01 (D3DRENDERSTATETYPE)65
+#define D3DRENDERSTATE_STIPPLEPATTERN02 (D3DRENDERSTATETYPE)66
+#define D3DRENDERSTATE_STIPPLEPATTERN03 (D3DRENDERSTATETYPE)67
+#define D3DRENDERSTATE_STIPPLEPATTERN04 (D3DRENDERSTATETYPE)68
+#define D3DRENDERSTATE_STIPPLEPATTERN05 (D3DRENDERSTATETYPE)69
+#define D3DRENDERSTATE_STIPPLEPATTERN06 (D3DRENDERSTATETYPE)70
+#define D3DRENDERSTATE_STIPPLEPATTERN07 (D3DRENDERSTATETYPE)71
+#define D3DRENDERSTATE_STIPPLEPATTERN08 (D3DRENDERSTATETYPE)72
+#define D3DRENDERSTATE_STIPPLEPATTERN09 (D3DRENDERSTATETYPE)73
+#define D3DRENDERSTATE_STIPPLEPATTERN10 (D3DRENDERSTATETYPE)74
+#define D3DRENDERSTATE_STIPPLEPATTERN11 (D3DRENDERSTATETYPE)75
+#define D3DRENDERSTATE_STIPPLEPATTERN12 (D3DRENDERSTATETYPE)76
+#define D3DRENDERSTATE_STIPPLEPATTERN13 (D3DRENDERSTATETYPE)77
+#define D3DRENDERSTATE_STIPPLEPATTERN14 (D3DRENDERSTATETYPE)78
+#define D3DRENDERSTATE_STIPPLEPATTERN15 (D3DRENDERSTATETYPE)79
+#define D3DRENDERSTATE_STIPPLEPATTERN16 (D3DRENDERSTATETYPE)80
+#define D3DRENDERSTATE_STIPPLEPATTERN17 (D3DRENDERSTATETYPE)81
+#define D3DRENDERSTATE_STIPPLEPATTERN18 (D3DRENDERSTATETYPE)82
+#define D3DRENDERSTATE_STIPPLEPATTERN19 (D3DRENDERSTATETYPE)83
+#define D3DRENDERSTATE_STIPPLEPATTERN20 (D3DRENDERSTATETYPE)84
+#define D3DRENDERSTATE_STIPPLEPATTERN21 (D3DRENDERSTATETYPE)85
+#define D3DRENDERSTATE_STIPPLEPATTERN22 (D3DRENDERSTATETYPE)86
+#define D3DRENDERSTATE_STIPPLEPATTERN23 (D3DRENDERSTATETYPE)87
+#define D3DRENDERSTATE_STIPPLEPATTERN24 (D3DRENDERSTATETYPE)88
+#define D3DRENDERSTATE_STIPPLEPATTERN25 (D3DRENDERSTATETYPE)89
+#define D3DRENDERSTATE_STIPPLEPATTERN26 (D3DRENDERSTATETYPE)90
+#define D3DRENDERSTATE_STIPPLEPATTERN27 (D3DRENDERSTATETYPE)91
+#define D3DRENDERSTATE_STIPPLEPATTERN28 (D3DRENDERSTATETYPE)92
+#define D3DRENDERSTATE_STIPPLEPATTERN29 (D3DRENDERSTATETYPE)93
+#define D3DRENDERSTATE_STIPPLEPATTERN30 (D3DRENDERSTATETYPE)94
+#define D3DRENDERSTATE_STIPPLEPATTERN31 (D3DRENDERSTATETYPE)95
+
+//
+// retired renderstates - not supported for DX8 interfaces
+//
+#define D3DRENDERSTATE_COLORKEYENABLE (D3DRENDERSTATETYPE)41
+#define D3DRENDERSTATE_COLORKEYBLENDENABLE (D3DRENDERSTATETYPE)144
+
+//
+// retired renderstate names - the values are still used under new naming conventions
+//
+#define D3DRENDERSTATE_BLENDENABLE (D3DRENDERSTATETYPE)27
+#define D3DRENDERSTATE_FOGTABLESTART (D3DRENDERSTATETYPE)36
+#define D3DRENDERSTATE_FOGTABLEEND (D3DRENDERSTATETYPE)37
+#define D3DRENDERSTATE_FOGTABLEDENSITY (D3DRENDERSTATETYPE)38
+
+#endif //(DIRECT3D_VERSION < 0x0800)
+
+
+#if(DIRECT3D_VERSION < 0x0800)
+
+// Values for material source
+typedef enum _D3DMATERIALCOLORSOURCE
+{
+ D3DMCS_MATERIAL = 0, // Color from material is used
+ D3DMCS_COLOR1 = 1, // Diffuse vertex color is used
+ D3DMCS_COLOR2 = 2, // Specular vertex color is used
+ D3DMCS_FORCE_DWORD = 0x7fffffff, // force 32-bit size enum
+} D3DMATERIALCOLORSOURCE;
+
+
+#if(DIRECT3D_VERSION >= 0x0500)
+// For back-compatibility with legacy compilations
+#define D3DRENDERSTATE_BLENDENABLE D3DRENDERSTATE_ALPHABLENDENABLE
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+
+#if(DIRECT3D_VERSION >= 0x0600)
+
+// Bias to apply to the texture coordinate set to apply a wrap to.
+#define D3DRENDERSTATE_WRAPBIAS 128UL
+
+/* Flags to construct the WRAP render states */
+#define D3DWRAP_U 0x00000001L
+#define D3DWRAP_V 0x00000002L
+
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+#if(DIRECT3D_VERSION >= 0x0700)
+
+/* Flags to construct the WRAP render states for 1D thru 4D texture coordinates */
+#define D3DWRAPCOORD_0 0x00000001L // same as D3DWRAP_U
+#define D3DWRAPCOORD_1 0x00000002L // same as D3DWRAP_V
+#define D3DWRAPCOORD_2 0x00000004L
+#define D3DWRAPCOORD_3 0x00000008L
+
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+#endif //(DIRECT3D_VERSION < 0x0800)
+
+#define D3DRENDERSTATE_STIPPLEPATTERN(y) (D3DRENDERSTATE_STIPPLEPATTERN00 + (y))
+
+typedef struct _D3DSTATE {
+ union {
+#if(DIRECT3D_VERSION < 0x0800)
+ D3DTRANSFORMSTATETYPE dtstTransformStateType;
+#endif //(DIRECT3D_VERSION < 0x0800)
+ D3DLIGHTSTATETYPE dlstLightStateType;
+ D3DRENDERSTATETYPE drstRenderStateType;
+ };
+ union {
+ DWORD dwArg[1];
+ D3DVALUE dvArg[1];
+ };
+} D3DSTATE, *LPD3DSTATE;
+
+
+/*
+ * Operation used to load matrices
+ * hDstMat = hSrcMat
+ */
+typedef struct _D3DMATRIXLOAD {
+ D3DMATRIXHANDLE hDestMatrix; /* Destination matrix */
+ D3DMATRIXHANDLE hSrcMatrix; /* Source matrix */
+} D3DMATRIXLOAD, *LPD3DMATRIXLOAD;
+
+/*
+ * Operation used to multiply matrices
+ * hDstMat = hSrcMat1 * hSrcMat2
+ */
+typedef struct _D3DMATRIXMULTIPLY {
+ D3DMATRIXHANDLE hDestMatrix; /* Destination matrix */
+ D3DMATRIXHANDLE hSrcMatrix1; /* First source matrix */
+ D3DMATRIXHANDLE hSrcMatrix2; /* Second source matrix */
+} D3DMATRIXMULTIPLY, *LPD3DMATRIXMULTIPLY;
+
+/*
+ * Operation used to transform and light vertices.
+ */
+typedef struct _D3DPROCESSVERTICES {
+ DWORD dwFlags; /* Do we transform or light or just copy? */
+ WORD wStart; /* Index to first vertex in source */
+ WORD wDest; /* Index to first vertex in local buffer */
+ DWORD dwCount; /* Number of vertices to be processed */
+ DWORD dwReserved; /* Must be zero */
+} D3DPROCESSVERTICES, *LPD3DPROCESSVERTICES;
+
+#define D3DPROCESSVERTICES_TRANSFORMLIGHT 0x00000000L
+#define D3DPROCESSVERTICES_TRANSFORM 0x00000001L
+#define D3DPROCESSVERTICES_COPY 0x00000002L
+#define D3DPROCESSVERTICES_OPMASK 0x00000007L
+
+#define D3DPROCESSVERTICES_UPDATEEXTENTS 0x00000008L
+#define D3DPROCESSVERTICES_NOCOLOR 0x00000010L
+
+
+#if(DIRECT3D_VERSION >= 0x0600)
+
+
+#if(DIRECT3D_VERSION < 0x0800)
+
+/*
+ * State enumerants for per-stage texture processing.
+ */
+typedef enum _D3DTEXTURESTAGESTATETYPE
+{
+ D3DTSS_COLOROP = 1, /* D3DTEXTUREOP - per-stage blending controls for color channels */
+ D3DTSS_COLORARG1 = 2, /* D3DTA_* (texture arg) */
+ D3DTSS_COLORARG2 = 3, /* D3DTA_* (texture arg) */
+ D3DTSS_ALPHAOP = 4, /* D3DTEXTUREOP - per-stage blending controls for alpha channel */
+ D3DTSS_ALPHAARG1 = 5, /* D3DTA_* (texture arg) */
+ D3DTSS_ALPHAARG2 = 6, /* D3DTA_* (texture arg) */
+ D3DTSS_BUMPENVMAT00 = 7, /* D3DVALUE (bump mapping matrix) */
+ D3DTSS_BUMPENVMAT01 = 8, /* D3DVALUE (bump mapping matrix) */
+ D3DTSS_BUMPENVMAT10 = 9, /* D3DVALUE (bump mapping matrix) */
+ D3DTSS_BUMPENVMAT11 = 10, /* D3DVALUE (bump mapping matrix) */
+ D3DTSS_TEXCOORDINDEX = 11, /* identifies which set of texture coordinates index this texture */
+ D3DTSS_ADDRESS = 12, /* D3DTEXTUREADDRESS for both coordinates */
+ D3DTSS_ADDRESSU = 13, /* D3DTEXTUREADDRESS for U coordinate */
+ D3DTSS_ADDRESSV = 14, /* D3DTEXTUREADDRESS for V coordinate */
+ D3DTSS_BORDERCOLOR = 15, /* D3DCOLOR */
+ D3DTSS_MAGFILTER = 16, /* D3DTEXTUREMAGFILTER filter to use for magnification */
+ D3DTSS_MINFILTER = 17, /* D3DTEXTUREMINFILTER filter to use for minification */
+ D3DTSS_MIPFILTER = 18, /* D3DTEXTUREMIPFILTER filter to use between mipmaps during minification */
+ D3DTSS_MIPMAPLODBIAS = 19, /* D3DVALUE Mipmap LOD bias */
+ D3DTSS_MAXMIPLEVEL = 20, /* DWORD 0..(n-1) LOD index of largest map to use (0 == largest) */
+ D3DTSS_MAXANISOTROPY = 21, /* DWORD maximum anisotropy */
+ D3DTSS_BUMPENVLSCALE = 22, /* D3DVALUE scale for bump map luminance */
+ D3DTSS_BUMPENVLOFFSET = 23, /* D3DVALUE offset for bump map luminance */
+#if(DIRECT3D_VERSION >= 0x0700)
+ D3DTSS_TEXTURETRANSFORMFLAGS = 24, /* D3DTEXTURETRANSFORMFLAGS controls texture transform */
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+ D3DTSS_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
+} D3DTEXTURESTAGESTATETYPE;
+
+#if(DIRECT3D_VERSION >= 0x0700)
+// Values, used with D3DTSS_TEXCOORDINDEX, to specify that the vertex data(position
+// and normal in the camera space) should be taken as texture coordinates
+// Low 16 bits are used to specify texture coordinate index, to take the WRAP mode from
+//
+#define D3DTSS_TCI_PASSTHRU 0x00000000
+#define D3DTSS_TCI_CAMERASPACENORMAL 0x00010000
+#define D3DTSS_TCI_CAMERASPACEPOSITION 0x00020000
+#define D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR 0x00030000
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+/*
+ * Enumerations for COLOROP and ALPHAOP texture blending operations set in
+ * texture processing stage controls in D3DRENDERSTATE.
+ */
+typedef enum _D3DTEXTUREOP
+{
+// Control
+ D3DTOP_DISABLE = 1, // disables stage
+ D3DTOP_SELECTARG1 = 2, // the default
+ D3DTOP_SELECTARG2 = 3,
+
+// Modulate
+ D3DTOP_MODULATE = 4, // multiply args together
+ D3DTOP_MODULATE2X = 5, // multiply and 1 bit
+ D3DTOP_MODULATE4X = 6, // multiply and 2 bits
+
+// Add
+ D3DTOP_ADD = 7, // add arguments together
+ D3DTOP_ADDSIGNED = 8, // add with -0.5 bias
+ D3DTOP_ADDSIGNED2X = 9, // as above but left 1 bit
+ D3DTOP_SUBTRACT = 10, // Arg1 - Arg2, with no saturation
+ D3DTOP_ADDSMOOTH = 11, // add 2 args, subtract product
+ // Arg1 + Arg2 - Arg1*Arg2
+ // = Arg1 + (1-Arg1)*Arg2
+
+// Linear alpha blend: Arg1*(Alpha) + Arg2*(1-Alpha)
+ D3DTOP_BLENDDIFFUSEALPHA = 12, // iterated alpha
+ D3DTOP_BLENDTEXTUREALPHA = 13, // texture alpha
+ D3DTOP_BLENDFACTORALPHA = 14, // alpha from D3DRENDERSTATE_TEXTUREFACTOR
+ // Linear alpha blend with pre-multiplied arg1 input: Arg1 + Arg2*(1-Alpha)
+ D3DTOP_BLENDTEXTUREALPHAPM = 15, // texture alpha
+ D3DTOP_BLENDCURRENTALPHA = 16, // by alpha of current color
+
+// Specular mapping
+ D3DTOP_PREMODULATE = 17, // modulate with next texture before use
+ D3DTOP_MODULATEALPHA_ADDCOLOR = 18, // Arg1.RGB + Arg1.A*Arg2.RGB
+ // COLOROP only
+ D3DTOP_MODULATECOLOR_ADDALPHA = 19, // Arg1.RGB*Arg2.RGB + Arg1.A
+ // COLOROP only
+ D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20, // (1-Arg1.A)*Arg2.RGB + Arg1.RGB
+ // COLOROP only
+ D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21, // (1-Arg1.RGB)*Arg2.RGB + Arg1.A
+ // COLOROP only
+
+// Bump mapping
+ D3DTOP_BUMPENVMAP = 22, // per pixel env map perturbation
+ D3DTOP_BUMPENVMAPLUMINANCE = 23, // with luminance channel
+ // This can do either diffuse or specular bump mapping with correct input.
+ // Performs the function (Arg1.R*Arg2.R + Arg1.G*Arg2.G + Arg1.B*Arg2.B)
+ // where each component has been scaled and offset to make it signed.
+ // The result is replicated into all four (including alpha) channels.
+ // This is a valid COLOROP only.
+ D3DTOP_DOTPRODUCT3 = 24,
+
+ D3DTOP_FORCE_DWORD = 0x7fffffff,
+} D3DTEXTUREOP;
+
+/*
+ * Values for COLORARG1,2 and ALPHAARG1,2 texture blending operations
+ * set in texture processing stage controls in D3DRENDERSTATE.
+ */
+#define D3DTA_SELECTMASK 0x0000000f // mask for arg selector
+#define D3DTA_DIFFUSE 0x00000000 // select diffuse color
+#define D3DTA_CURRENT 0x00000001 // select result of previous stage
+#define D3DTA_TEXTURE 0x00000002 // select texture color
+#define D3DTA_TFACTOR 0x00000003 // select RENDERSTATE_TEXTUREFACTOR
+#if(DIRECT3D_VERSION >= 0x0700)
+#define D3DTA_SPECULAR 0x00000004 // select specular color
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+#define D3DTA_COMPLEMENT 0x00000010 // take 1.0 - x
+#define D3DTA_ALPHAREPLICATE 0x00000020 // replicate alpha to color components
+
+#endif //(DIRECT3D_VERSION < 0x0800)
+
+/*
+ * IDirect3DTexture2 State Filter Types
+ */
+typedef enum _D3DTEXTUREMAGFILTER
+{
+ D3DTFG_POINT = 1, // nearest
+ D3DTFG_LINEAR = 2, // linear interpolation
+ D3DTFG_FLATCUBIC = 3, // cubic
+ D3DTFG_GAUSSIANCUBIC = 4, // different cubic kernel
+ D3DTFG_ANISOTROPIC = 5, //
+#if(DIRECT3D_VERSION >= 0x0700)
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+ D3DTFG_FORCE_DWORD = 0x7fffffff, // force 32-bit size enum
+} D3DTEXTUREMAGFILTER;
+
+typedef enum _D3DTEXTUREMINFILTER
+{
+ D3DTFN_POINT = 1, // nearest
+ D3DTFN_LINEAR = 2, // linear interpolation
+ D3DTFN_ANISOTROPIC = 3, //
+ D3DTFN_FORCE_DWORD = 0x7fffffff, // force 32-bit size enum
+} D3DTEXTUREMINFILTER;
+
+typedef enum _D3DTEXTUREMIPFILTER
+{
+ D3DTFP_NONE = 1, // mipmapping disabled (use MAG filter)
+ D3DTFP_POINT = 2, // nearest
+ D3DTFP_LINEAR = 3, // linear interpolation
+ D3DTFP_FORCE_DWORD = 0x7fffffff, // force 32-bit size enum
+} D3DTEXTUREMIPFILTER;
+
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+/*
+ * Triangle flags
+ */
+
+/*
+ * Tri strip and fan flags.
+ * START loads all three vertices
+ * EVEN and ODD load just v3 with even or odd culling
+ * START_FLAT contains a count from 0 to 29 that allows the
+ * whole strip or fan to be culled in one hit.
+ * e.g. for a quad len = 1
+ */
+#define D3DTRIFLAG_START 0x00000000L
+#define D3DTRIFLAG_STARTFLAT(len) (len) /* 0 < len < 30 */
+#define D3DTRIFLAG_ODD 0x0000001eL
+#define D3DTRIFLAG_EVEN 0x0000001fL
+
+/*
+ * Triangle edge flags
+ * enable edges for wireframe or antialiasing
+ */
+#define D3DTRIFLAG_EDGEENABLE1 0x00000100L /* v0-v1 edge */
+#define D3DTRIFLAG_EDGEENABLE2 0x00000200L /* v1-v2 edge */
+#define D3DTRIFLAG_EDGEENABLE3 0x00000400L /* v2-v0 edge */
+#define D3DTRIFLAG_EDGEENABLETRIANGLE \
+ (D3DTRIFLAG_EDGEENABLE1 | D3DTRIFLAG_EDGEENABLE2 | D3DTRIFLAG_EDGEENABLE3)
+
+/*
+ * Primitive structures and related defines. Vertex offsets are to types
+ * D3DVERTEX, D3DLVERTEX, or D3DTLVERTEX.
+ */
+
+/*
+ * Triangle list primitive structure
+ */
+typedef struct _D3DTRIANGLE {
+ union {
+ WORD v1; /* Vertex indices */
+ WORD wV1;
+ };
+ union {
+ WORD v2;
+ WORD wV2;
+ };
+ union {
+ WORD v3;
+ WORD wV3;
+ };
+ WORD wFlags; /* Edge (and other) flags */
+} D3DTRIANGLE, *LPD3DTRIANGLE;
+
+/*
+ * Line list structure.
+ * The instruction count defines the number of line segments.
+ */
+typedef struct _D3DLINE {
+ union {
+ WORD v1; /* Vertex indices */
+ WORD wV1;
+ };
+ union {
+ WORD v2;
+ WORD wV2;
+ };
+} D3DLINE, *LPD3DLINE;
+
+/*
+ * Span structure
+ * Spans join a list of points with the same y value.
+ * If the y value changes, a new span is started.
+ */
+typedef struct _D3DSPAN {
+ WORD wCount; /* Number of spans */
+ WORD wFirst; /* Index to first vertex */
+} D3DSPAN, *LPD3DSPAN;
+
+/*
+ * Point structure
+ */
+typedef struct _D3DPOINT {
+ WORD wCount; /* number of points */
+ WORD wFirst; /* index to first vertex */
+} D3DPOINT, *LPD3DPOINT;
+
+
+/*
+ * Forward branch structure.
+ * Mask is logically anded with the driver status mask
+ * if the result equals 'value', the branch is taken.
+ */
+typedef struct _D3DBRANCH {
+ DWORD dwMask; /* Bitmask against D3D status */
+ DWORD dwValue;
+ BOOL bNegate; /* TRUE to negate comparison */
+ DWORD dwOffset; /* How far to branch forward (0 for exit)*/
+} D3DBRANCH, *LPD3DBRANCH;
+
+/*
+ * Status used for set status instruction.
+ * The D3D status is initialised on device creation
+ * and is modified by all execute calls.
+ */
+typedef struct _D3DSTATUS {
+ DWORD dwFlags; /* Do we set extents or status */
+ DWORD dwStatus; /* D3D status */
+ D3DRECT drExtent;
+} D3DSTATUS, *LPD3DSTATUS;
+
+#define D3DSETSTATUS_STATUS 0x00000001L
+#define D3DSETSTATUS_EXTENTS 0x00000002L
+#define D3DSETSTATUS_ALL (D3DSETSTATUS_STATUS | D3DSETSTATUS_EXTENTS)
+
+#if(DIRECT3D_VERSION >= 0x0500)
+typedef struct _D3DCLIPSTATUS {
+ DWORD dwFlags; /* Do we set 2d extents, 3D extents or status */
+ DWORD dwStatus; /* Clip status */
+ float minx, maxx; /* X extents */
+ float miny, maxy; /* Y extents */
+ float minz, maxz; /* Z extents */
+} D3DCLIPSTATUS, *LPD3DCLIPSTATUS;
+
+#define D3DCLIPSTATUS_STATUS 0x00000001L
+#define D3DCLIPSTATUS_EXTENTS2 0x00000002L
+#define D3DCLIPSTATUS_EXTENTS3 0x00000004L
+
+#endif /* DIRECT3D_VERSION >= 0x0500 */
+/*
+ * Statistics structure
+ */
+typedef struct _D3DSTATS {
+ DWORD dwSize;
+ DWORD dwTrianglesDrawn;
+ DWORD dwLinesDrawn;
+ DWORD dwPointsDrawn;
+ DWORD dwSpansDrawn;
+ DWORD dwVerticesProcessed;
+} D3DSTATS, *LPD3DSTATS;
+
+/*
+ * Execute options.
+ * When calling using D3DEXECUTE_UNCLIPPED all the primitives
+ * inside the buffer must be contained within the viewport.
+ */
+#define D3DEXECUTE_CLIPPED 0x00000001l
+#define D3DEXECUTE_UNCLIPPED 0x00000002l
+
+typedef struct _D3DEXECUTEDATA {
+ DWORD dwSize;
+ DWORD dwVertexOffset;
+ DWORD dwVertexCount;
+ DWORD dwInstructionOffset;
+ DWORD dwInstructionLength;
+ DWORD dwHVertexOffset;
+ D3DSTATUS dsStatus; /* Status after execute */
+} D3DEXECUTEDATA, *LPD3DEXECUTEDATA;
+
+/*
+ * Palette flags.
+ * This are or'ed with the peFlags in the PALETTEENTRYs passed to DirectDraw.
+ */
+#define D3DPAL_FREE 0x00 /* Renderer may use this entry freely */
+#define D3DPAL_READONLY 0x40 /* Renderer may not set this entry */
+#define D3DPAL_RESERVED 0x80 /* Renderer may not use this entry */
+
+
+#if(DIRECT3D_VERSION >= 0x0600)
+
+typedef struct _D3DVERTEXBUFFERDESC {
+ DWORD dwSize;
+ DWORD dwCaps;
+ DWORD dwFVF;
+ DWORD dwNumVertices;
+} D3DVERTEXBUFFERDESC, *LPD3DVERTEXBUFFERDESC;
+
+#define D3DVBCAPS_SYSTEMMEMORY 0x00000800l
+#define D3DVBCAPS_WRITEONLY 0x00010000l
+#define D3DVBCAPS_OPTIMIZED 0x80000000l
+#define D3DVBCAPS_DONOTCLIP 0x00000001l
+
+/* Vertex Operations for ProcessVertices */
+#define D3DVOP_LIGHT (1 << 10)
+#define D3DVOP_TRANSFORM (1 << 0)
+#define D3DVOP_CLIP (1 << 2)
+#define D3DVOP_EXTENTS (1 << 3)
+
+
+#if(DIRECT3D_VERSION < 0x0800)
+
+/* The maximum number of vertices user can pass to any d3d
+ drawing function or to create vertex buffer with
+*/
+#define D3DMAXNUMVERTICES ((1<<16) - 1)
+/* The maximum number of primitives user can pass to any d3d
+ drawing function.
+*/
+#define D3DMAXNUMPRIMITIVES ((1<<16) - 1)
+
+#if(DIRECT3D_VERSION >= 0x0700)
+
+/* Bits for dwFlags in ProcessVertices call */
+#define D3DPV_DONOTCOPYDATA (1 << 0)
+
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+#endif //(DIRECT3D_VERSION < 0x0800)
+
+//-------------------------------------------------------------------
+
+#if(DIRECT3D_VERSION < 0x0800)
+
+// Flexible vertex format bits
+//
+#define D3DFVF_RESERVED0 0x001
+#define D3DFVF_POSITION_MASK 0x00E
+#define D3DFVF_XYZ 0x002
+#define D3DFVF_XYZRHW 0x004
+#if(DIRECT3D_VERSION >= 0x0700)
+#define D3DFVF_XYZB1 0x006
+#define D3DFVF_XYZB2 0x008
+#define D3DFVF_XYZB3 0x00a
+#define D3DFVF_XYZB4 0x00c
+#define D3DFVF_XYZB5 0x00e
+
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+#define D3DFVF_NORMAL 0x010
+#define D3DFVF_RESERVED1 0x020
+#define D3DFVF_DIFFUSE 0x040
+#define D3DFVF_SPECULAR 0x080
+
+#define D3DFVF_TEXCOUNT_MASK 0xf00
+#define D3DFVF_TEXCOUNT_SHIFT 8
+#define D3DFVF_TEX0 0x000
+#define D3DFVF_TEX1 0x100
+#define D3DFVF_TEX2 0x200
+#define D3DFVF_TEX3 0x300
+#define D3DFVF_TEX4 0x400
+#define D3DFVF_TEX5 0x500
+#define D3DFVF_TEX6 0x600
+#define D3DFVF_TEX7 0x700
+#define D3DFVF_TEX8 0x800
+
+#define D3DFVF_RESERVED2 0xf000 // 4 reserved bits
+
+#else
+#define D3DFVF_RESERVED1 0x020
+#endif //(DIRECT3D_VERSION < 0x0800)
+
+#define D3DFVF_VERTEX ( D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1 )
+#define D3DFVF_LVERTEX ( D3DFVF_XYZ | D3DFVF_RESERVED1 | D3DFVF_DIFFUSE | \
+ D3DFVF_SPECULAR | D3DFVF_TEX1 )
+#define D3DFVF_TLVERTEX ( D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | \
+ D3DFVF_TEX1 )
+
+
+typedef struct _D3DDP_PTRSTRIDE
+{
+ LPVOID lpvData;
+ DWORD dwStride;
+} D3DDP_PTRSTRIDE;
+
+#define D3DDP_MAXTEXCOORD 8
+
+typedef struct _D3DDRAWPRIMITIVESTRIDEDDATA
+{
+ D3DDP_PTRSTRIDE position;
+ D3DDP_PTRSTRIDE normal;
+ D3DDP_PTRSTRIDE diffuse;
+ D3DDP_PTRSTRIDE specular;
+ D3DDP_PTRSTRIDE textureCoords[D3DDP_MAXTEXCOORD];
+} D3DDRAWPRIMITIVESTRIDEDDATA, *LPD3DDRAWPRIMITIVESTRIDEDDATA;
+//---------------------------------------------------------------------
+// ComputeSphereVisibility return values
+//
+#define D3DVIS_INSIDE_FRUSTUM 0
+#define D3DVIS_INTERSECT_FRUSTUM 1
+#define D3DVIS_OUTSIDE_FRUSTUM 2
+#define D3DVIS_INSIDE_LEFT 0
+#define D3DVIS_INTERSECT_LEFT (1 << 2)
+#define D3DVIS_OUTSIDE_LEFT (2 << 2)
+#define D3DVIS_INSIDE_RIGHT 0
+#define D3DVIS_INTERSECT_RIGHT (1 << 4)
+#define D3DVIS_OUTSIDE_RIGHT (2 << 4)
+#define D3DVIS_INSIDE_TOP 0
+#define D3DVIS_INTERSECT_TOP (1 << 6)
+#define D3DVIS_OUTSIDE_TOP (2 << 6)
+#define D3DVIS_INSIDE_BOTTOM 0
+#define D3DVIS_INTERSECT_BOTTOM (1 << 8)
+#define D3DVIS_OUTSIDE_BOTTOM (2 << 8)
+#define D3DVIS_INSIDE_NEAR 0
+#define D3DVIS_INTERSECT_NEAR (1 << 10)
+#define D3DVIS_OUTSIDE_NEAR (2 << 10)
+#define D3DVIS_INSIDE_FAR 0
+#define D3DVIS_INTERSECT_FAR (1 << 12)
+#define D3DVIS_OUTSIDE_FAR (2 << 12)
+
+#define D3DVIS_MASK_FRUSTUM (3 << 0)
+#define D3DVIS_MASK_LEFT (3 << 2)
+#define D3DVIS_MASK_RIGHT (3 << 4)
+#define D3DVIS_MASK_TOP (3 << 6)
+#define D3DVIS_MASK_BOTTOM (3 << 8)
+#define D3DVIS_MASK_NEAR (3 << 10)
+#define D3DVIS_MASK_FAR (3 << 12)
+
+#endif /* DIRECT3D_VERSION >= 0x0600 */
+
+#if(DIRECT3D_VERSION < 0x0800)
+
+#if(DIRECT3D_VERSION >= 0x0700)
+
+// To be used with GetInfo()
+#define D3DDEVINFOID_TEXTUREMANAGER 1
+#define D3DDEVINFOID_D3DTEXTUREMANAGER 2
+#define D3DDEVINFOID_TEXTURING 3
+
+typedef enum _D3DSTATEBLOCKTYPE
+{
+ D3DSBT_ALL = 1, // capture all state
+ D3DSBT_PIXELSTATE = 2, // capture pixel state
+ D3DSBT_VERTEXSTATE = 3, // capture vertex state
+ D3DSBT_FORCE_DWORD = 0xffffffff
+} D3DSTATEBLOCKTYPE;
+
+// The D3DVERTEXBLENDFLAGS type is used with D3DRENDERSTATE_VERTEXBLEND state.
+//
+typedef enum _D3DVERTEXBLENDFLAGS
+{
+ D3DVBLEND_DISABLE = 0, // Disable vertex blending
+ D3DVBLEND_1WEIGHT = 1, // blend between 2 matrices
+ D3DVBLEND_2WEIGHTS = 2, // blend between 3 matrices
+ D3DVBLEND_3WEIGHTS = 3, // blend between 4 matrices
+} D3DVERTEXBLENDFLAGS;
+
+typedef enum _D3DTEXTURETRANSFORMFLAGS {
+ D3DTTFF_DISABLE = 0, // texture coordinates are passed directly
+ D3DTTFF_COUNT1 = 1, // rasterizer should expect 1-D texture coords
+ D3DTTFF_COUNT2 = 2, // rasterizer should expect 2-D texture coords
+ D3DTTFF_COUNT3 = 3, // rasterizer should expect 3-D texture coords
+ D3DTTFF_COUNT4 = 4, // rasterizer should expect 4-D texture coords
+ D3DTTFF_PROJECTED = 256, // texcoords to be divided by COUNTth element
+ D3DTTFF_FORCE_DWORD = 0x7fffffff,
+} D3DTEXTURETRANSFORMFLAGS;
+
+// Macros to set texture coordinate format bits in the FVF id
+
+#define D3DFVF_TEXTUREFORMAT2 0 // Two floating point values
+#define D3DFVF_TEXTUREFORMAT1 3 // One floating point value
+#define D3DFVF_TEXTUREFORMAT3 1 // Three floating point values
+#define D3DFVF_TEXTUREFORMAT4 2 // Four floating point values
+
+#define D3DFVF_TEXCOORDSIZE3(CoordIndex) (D3DFVF_TEXTUREFORMAT3 << (CoordIndex*2 + 16))
+#define D3DFVF_TEXCOORDSIZE2(CoordIndex) (D3DFVF_TEXTUREFORMAT2)
+#define D3DFVF_TEXCOORDSIZE4(CoordIndex) (D3DFVF_TEXTUREFORMAT4 << (CoordIndex*2 + 16))
+#define D3DFVF_TEXCOORDSIZE1(CoordIndex) (D3DFVF_TEXTUREFORMAT1 << (CoordIndex*2 + 16))
+
+
+#endif /* DIRECT3D_VERSION >= 0x0700 */
+
+#else
+//
+// legacy vertex blend names
+//
+typedef enum _D3DVERTEXBLENDFLAGS D3DVERTEXBLENDFLAGS;
+#define D3DVBLEND_DISABLE (D3DVERTEXBLENDFLAGS)0
+#define D3DVBLEND_1WEIGHT (D3DVERTEXBLENDFLAGS)1
+#define D3DVBLEND_2WEIGHTS (D3DVERTEXBLENDFLAGS)2
+#define D3DVBLEND_3WEIGHTS (D3DVERTEXBLENDFLAGS)3
+
+#endif //(DIRECT3D_VERSION < 0x0800)
+
+#pragma pack()
+#pragma warning(default:4201)
+
+#endif /* _D3DTYPES_H_ */
+
diff --git a/include/dx/dxtrans.h b/include/dx/dxtrans.h
new file mode 100644
index 000000000..504877ab5
--- /dev/null
+++ b/include/dx/dxtrans.h
@@ -0,0 +1,5362 @@
+
+#pragma warning( disable: 4049 ) /* more than 64k source lines */
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 6.00.0357 */
+/* Compiler settings for dxtrans.idl:
+ Oicf, W1, Zp8, env=Win32 (32b run)
+ protocol : dce , ms_ext, c_ext
+ error checks: allocation ref bounds_check enum stub_data
+ VC __declspec() decoration level:
+ __declspec(uuid()), __declspec(selectany), __declspec(novtable)
+ DECLSPEC_UUID(), MIDL_INTERFACE()
+*/
+//@@MIDL_FILE_HEADING( )
+
+
+/* verify that the <rpcndr.h> version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 440
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of <rpcndr.h>
+#endif // __RPCNDR_H_VERSION__
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __dxtrans_h__
+#define __dxtrans_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IDXBaseObject_FWD_DEFINED__
+#define __IDXBaseObject_FWD_DEFINED__
+typedef interface IDXBaseObject IDXBaseObject;
+#endif /* __IDXBaseObject_FWD_DEFINED__ */
+
+
+#ifndef __IDXTransformFactory_FWD_DEFINED__
+#define __IDXTransformFactory_FWD_DEFINED__
+typedef interface IDXTransformFactory IDXTransformFactory;
+#endif /* __IDXTransformFactory_FWD_DEFINED__ */
+
+
+#ifndef __IDXTransform_FWD_DEFINED__
+#define __IDXTransform_FWD_DEFINED__
+typedef interface IDXTransform IDXTransform;
+#endif /* __IDXTransform_FWD_DEFINED__ */
+
+
+#ifndef __IDXSurfacePick_FWD_DEFINED__
+#define __IDXSurfacePick_FWD_DEFINED__
+typedef interface IDXSurfacePick IDXSurfacePick;
+#endif /* __IDXSurfacePick_FWD_DEFINED__ */
+
+
+#ifndef __IDXTBindHost_FWD_DEFINED__
+#define __IDXTBindHost_FWD_DEFINED__
+typedef interface IDXTBindHost IDXTBindHost;
+#endif /* __IDXTBindHost_FWD_DEFINED__ */
+
+
+#ifndef __IDXTaskManager_FWD_DEFINED__
+#define __IDXTaskManager_FWD_DEFINED__
+typedef interface IDXTaskManager IDXTaskManager;
+#endif /* __IDXTaskManager_FWD_DEFINED__ */
+
+
+#ifndef __IDXSurfaceFactory_FWD_DEFINED__
+#define __IDXSurfaceFactory_FWD_DEFINED__
+typedef interface IDXSurfaceFactory IDXSurfaceFactory;
+#endif /* __IDXSurfaceFactory_FWD_DEFINED__ */
+
+
+#ifndef __IDXSurfaceModifier_FWD_DEFINED__
+#define __IDXSurfaceModifier_FWD_DEFINED__
+typedef interface IDXSurfaceModifier IDXSurfaceModifier;
+#endif /* __IDXSurfaceModifier_FWD_DEFINED__ */
+
+
+#ifndef __IDXSurface_FWD_DEFINED__
+#define __IDXSurface_FWD_DEFINED__
+typedef interface IDXSurface IDXSurface;
+#endif /* __IDXSurface_FWD_DEFINED__ */
+
+
+#ifndef __IDXSurfaceInit_FWD_DEFINED__
+#define __IDXSurfaceInit_FWD_DEFINED__
+typedef interface IDXSurfaceInit IDXSurfaceInit;
+#endif /* __IDXSurfaceInit_FWD_DEFINED__ */
+
+
+#ifndef __IDXARGBSurfaceInit_FWD_DEFINED__
+#define __IDXARGBSurfaceInit_FWD_DEFINED__
+typedef interface IDXARGBSurfaceInit IDXARGBSurfaceInit;
+#endif /* __IDXARGBSurfaceInit_FWD_DEFINED__ */
+
+
+#ifndef __IDXARGBReadPtr_FWD_DEFINED__
+#define __IDXARGBReadPtr_FWD_DEFINED__
+typedef interface IDXARGBReadPtr IDXARGBReadPtr;
+#endif /* __IDXARGBReadPtr_FWD_DEFINED__ */
+
+
+#ifndef __IDXARGBReadWritePtr_FWD_DEFINED__
+#define __IDXARGBReadWritePtr_FWD_DEFINED__
+typedef interface IDXARGBReadWritePtr IDXARGBReadWritePtr;
+#endif /* __IDXARGBReadWritePtr_FWD_DEFINED__ */
+
+
+#ifndef __IDXDCLock_FWD_DEFINED__
+#define __IDXDCLock_FWD_DEFINED__
+typedef interface IDXDCLock IDXDCLock;
+#endif /* __IDXDCLock_FWD_DEFINED__ */
+
+
+#ifndef __IDXTScaleOutput_FWD_DEFINED__
+#define __IDXTScaleOutput_FWD_DEFINED__
+typedef interface IDXTScaleOutput IDXTScaleOutput;
+#endif /* __IDXTScaleOutput_FWD_DEFINED__ */
+
+
+#ifndef __IDXGradient_FWD_DEFINED__
+#define __IDXGradient_FWD_DEFINED__
+typedef interface IDXGradient IDXGradient;
+#endif /* __IDXGradient_FWD_DEFINED__ */
+
+
+#ifndef __IDXTScale_FWD_DEFINED__
+#define __IDXTScale_FWD_DEFINED__
+typedef interface IDXTScale IDXTScale;
+#endif /* __IDXTScale_FWD_DEFINED__ */
+
+
+#ifndef __IDXEffect_FWD_DEFINED__
+#define __IDXEffect_FWD_DEFINED__
+typedef interface IDXEffect IDXEffect;
+#endif /* __IDXEffect_FWD_DEFINED__ */
+
+
+#ifndef __IDXLookupTable_FWD_DEFINED__
+#define __IDXLookupTable_FWD_DEFINED__
+typedef interface IDXLookupTable IDXLookupTable;
+#endif /* __IDXLookupTable_FWD_DEFINED__ */
+
+
+#ifndef __IDXRawSurface_FWD_DEFINED__
+#define __IDXRawSurface_FWD_DEFINED__
+typedef interface IDXRawSurface IDXRawSurface;
+#endif /* __IDXRawSurface_FWD_DEFINED__ */
+
+
+#ifndef __IHTMLDXTransform_FWD_DEFINED__
+#define __IHTMLDXTransform_FWD_DEFINED__
+typedef interface IHTMLDXTransform IHTMLDXTransform;
+#endif /* __IHTMLDXTransform_FWD_DEFINED__ */
+
+
+#ifndef __ICSSFilterDispatch_FWD_DEFINED__
+#define __ICSSFilterDispatch_FWD_DEFINED__
+typedef interface ICSSFilterDispatch ICSSFilterDispatch;
+#endif /* __ICSSFilterDispatch_FWD_DEFINED__ */
+
+
+#ifndef __DXTransformFactory_FWD_DEFINED__
+#define __DXTransformFactory_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class DXTransformFactory DXTransformFactory;
+#else
+typedef struct DXTransformFactory DXTransformFactory;
+#endif /* __cplusplus */
+
+#endif /* __DXTransformFactory_FWD_DEFINED__ */
+
+
+#ifndef __DXTaskManager_FWD_DEFINED__
+#define __DXTaskManager_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class DXTaskManager DXTaskManager;
+#else
+typedef struct DXTaskManager DXTaskManager;
+#endif /* __cplusplus */
+
+#endif /* __DXTaskManager_FWD_DEFINED__ */
+
+
+#ifndef __DXTScale_FWD_DEFINED__
+#define __DXTScale_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class DXTScale DXTScale;
+#else
+typedef struct DXTScale DXTScale;
+#endif /* __cplusplus */
+
+#endif /* __DXTScale_FWD_DEFINED__ */
+
+
+#ifndef __DXSurface_FWD_DEFINED__
+#define __DXSurface_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class DXSurface DXSurface;
+#else
+typedef struct DXSurface DXSurface;
+#endif /* __cplusplus */
+
+#endif /* __DXSurface_FWD_DEFINED__ */
+
+
+#ifndef __DXSurfaceModifier_FWD_DEFINED__
+#define __DXSurfaceModifier_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class DXSurfaceModifier DXSurfaceModifier;
+#else
+typedef struct DXSurfaceModifier DXSurfaceModifier;
+#endif /* __cplusplus */
+
+#endif /* __DXSurfaceModifier_FWD_DEFINED__ */
+
+
+#ifndef __DXGradient_FWD_DEFINED__
+#define __DXGradient_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class DXGradient DXGradient;
+#else
+typedef struct DXGradient DXGradient;
+#endif /* __cplusplus */
+
+#endif /* __DXGradient_FWD_DEFINED__ */
+
+
+#ifndef __DXTFilter_FWD_DEFINED__
+#define __DXTFilter_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class DXTFilter DXTFilter;
+#else
+typedef struct DXTFilter DXTFilter;
+#endif /* __cplusplus */
+
+#endif /* __DXTFilter_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+#include "comcat.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+void * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void * );
+
+/* interface __MIDL_itf_dxtrans_0000 */
+/* [local] */
+
+#include <servprov.h>
+#include <ddraw.h>
+#include <d3d.h>
+#include <d3drm.h>
+#include <urlmon.h>
+#if 0
+// Bogus definition used to make MIDL compiler happy
+typedef void DDSURFACEDESC;
+
+typedef void D3DRMBOX;
+
+typedef void D3DVECTOR;
+
+typedef void D3DRMMATRIX4D;
+
+typedef void *LPSECURITY_ATTRIBUTES;
+
+#endif
+#ifdef _DXTRANSIMPL
+ #define _DXTRANS_IMPL_EXT _declspec(dllexport)
+#else
+ #define _DXTRANS_IMPL_EXT _declspec(dllimport)
+#endif
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//
+// All GUIDs for DXTransform are declared in DXTGUID.C in the SDK include directory
+//
+EXTERN_C const GUID DDPF_RGB1;
+EXTERN_C const GUID DDPF_RGB2;
+EXTERN_C const GUID DDPF_RGB4;
+EXTERN_C const GUID DDPF_RGB8;
+EXTERN_C const GUID DDPF_RGB332;
+EXTERN_C const GUID DDPF_ARGB4444;
+EXTERN_C const GUID DDPF_RGB565;
+EXTERN_C const GUID DDPF_BGR565;
+EXTERN_C const GUID DDPF_RGB555;
+EXTERN_C const GUID DDPF_ARGB1555;
+EXTERN_C const GUID DDPF_RGB24;
+EXTERN_C const GUID DDPF_BGR24;
+EXTERN_C const GUID DDPF_RGB32;
+EXTERN_C const GUID DDPF_BGR32;
+EXTERN_C const GUID DDPF_ABGR32;
+EXTERN_C const GUID DDPF_ARGB32;
+EXTERN_C const GUID DDPF_PMARGB32;
+EXTERN_C const GUID DDPF_A1;
+EXTERN_C const GUID DDPF_A2;
+EXTERN_C const GUID DDPF_A4;
+EXTERN_C const GUID DDPF_A8;
+EXTERN_C const GUID DDPF_Z8;
+EXTERN_C const GUID DDPF_Z16;
+EXTERN_C const GUID DDPF_Z24;
+EXTERN_C const GUID DDPF_Z32;
+//
+// Component categories
+//
+EXTERN_C const GUID CATID_DXImageTransform;
+EXTERN_C const GUID CATID_DX3DTransform;
+EXTERN_C const GUID CATID_DXAuthoringTransform;
+EXTERN_C const GUID CATID_DXSurface;
+//
+// Service IDs
+//
+EXTERN_C const GUID SID_SDirectDraw;
+EXTERN_C const GUID SID_SDirect3DRM;
+#define SID_SDXTaskManager CLSID_DXTaskManager
+#define SID_SDXSurfaceFactory IID_IDXSurfaceFactory
+#define SID_SDXTransformFactory IID_IDXTransformFactory
+//
+// DXTransforms Core Type Library Version Info
+//
+#define DXTRANS_TLB_MAJOR_VER 1
+#define DXTRANS_TLB_MINOR_VER 1
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0000_v0_0_s_ifspec;
+
+#ifndef __IDXBaseObject_INTERFACE_DEFINED__
+#define __IDXBaseObject_INTERFACE_DEFINED__
+
+/* interface IDXBaseObject */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXBaseObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("17B59B2B-9CC8-11d1-9053-00C04FD9189D")
+ IDXBaseObject : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetGenerationId(
+ /* [out] */ ULONG *pID) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IncrementGenerationId(
+ /* [in] */ BOOL bRefresh) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetObjectSize(
+ /* [out] */ ULONG *pcbSize) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXBaseObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXBaseObject * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXBaseObject * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXBaseObject * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetGenerationId )(
+ IDXBaseObject * This,
+ /* [out] */ ULONG *pID);
+
+ HRESULT ( STDMETHODCALLTYPE *IncrementGenerationId )(
+ IDXBaseObject * This,
+ /* [in] */ BOOL bRefresh);
+
+ HRESULT ( STDMETHODCALLTYPE *GetObjectSize )(
+ IDXBaseObject * This,
+ /* [out] */ ULONG *pcbSize);
+
+ END_INTERFACE
+ } IDXBaseObjectVtbl;
+
+ interface IDXBaseObject
+ {
+ CONST_VTBL struct IDXBaseObjectVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXBaseObject_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXBaseObject_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXBaseObject_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXBaseObject_GetGenerationId(This,pID) \
+ (This)->lpVtbl -> GetGenerationId(This,pID)
+
+#define IDXBaseObject_IncrementGenerationId(This,bRefresh) \
+ (This)->lpVtbl -> IncrementGenerationId(This,bRefresh)
+
+#define IDXBaseObject_GetObjectSize(This,pcbSize) \
+ (This)->lpVtbl -> GetObjectSize(This,pcbSize)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDXBaseObject_GetGenerationId_Proxy(
+ IDXBaseObject * This,
+ /* [out] */ ULONG *pID);
+
+
+void __RPC_STUB IDXBaseObject_GetGenerationId_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXBaseObject_IncrementGenerationId_Proxy(
+ IDXBaseObject * This,
+ /* [in] */ BOOL bRefresh);
+
+
+void __RPC_STUB IDXBaseObject_IncrementGenerationId_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXBaseObject_GetObjectSize_Proxy(
+ IDXBaseObject * This,
+ /* [out] */ ULONG *pcbSize);
+
+
+void __RPC_STUB IDXBaseObject_GetObjectSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXBaseObject_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_dxtrans_0260 */
+/* [local] */
+
+typedef
+enum DXBNDID
+ { DXB_X = 0,
+ DXB_Y = 1,
+ DXB_Z = 2,
+ DXB_T = 3
+ } DXBNDID;
+
+typedef
+enum DXBNDTYPE
+ { DXBT_DISCRETE = 0,
+ DXBT_DISCRETE64 = DXBT_DISCRETE + 1,
+ DXBT_CONTINUOUS = DXBT_DISCRETE64 + 1,
+ DXBT_CONTINUOUS64 = DXBT_CONTINUOUS + 1
+ } DXBNDTYPE;
+
+typedef struct DXDBND
+ {
+ long Min;
+ long Max;
+ } DXDBND;
+
+typedef DXDBND DXDBNDS[ 4 ];
+
+typedef struct DXDBND64
+ {
+ LONGLONG Min;
+ LONGLONG Max;
+ } DXDBND64;
+
+typedef DXDBND64 DXDBNDS64[ 4 ];
+
+typedef struct DXCBND
+ {
+ float Min;
+ float Max;
+ } DXCBND;
+
+typedef DXCBND DXCBNDS[ 4 ];
+
+typedef struct DXCBND64
+ {
+ double Min;
+ double Max;
+ } DXCBND64;
+
+typedef DXCBND64 DXCBNDS64[ 4 ];
+
+typedef struct DXBNDS
+ {
+ DXBNDTYPE eType;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL___MIDL_itf_dxtrans_0260_0001
+ {
+ /* [case()] */ DXDBND D[ 4 ];
+ /* [case()] */ DXDBND64 LD[ 4 ];
+ /* [case()] */ DXCBND C[ 4 ];
+ /* [case()] */ DXCBND64 LC[ 4 ];
+ } u;
+ } DXBNDS;
+
+typedef long DXDVEC[ 4 ];
+
+typedef LONGLONG DXDVEC64[ 4 ];
+
+typedef float DXCVEC[ 4 ];
+
+typedef double DXCVEC64[ 4 ];
+
+typedef struct DXVEC
+ {
+ DXBNDTYPE eType;
+ /* [switch_is] */ /* [switch_type] */ union __MIDL___MIDL_itf_dxtrans_0260_0002
+ {
+ /* [case()] */ long D[ 4 ];
+ /* [case()] */ LONGLONG LD[ 4 ];
+ /* [case()] */ float C[ 4 ];
+ /* [case()] */ double LC[ 4 ];
+ } u;
+ } DXVEC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0260_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0260_v0_0_s_ifspec;
+
+#ifndef __IDXTransformFactory_INTERFACE_DEFINED__
+#define __IDXTransformFactory_INTERFACE_DEFINED__
+
+/* interface IDXTransformFactory */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXTransformFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6A950B2B-A971-11d1-81C8-0000F87557DB")
+ IDXTransformFactory : public IServiceProvider
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetService(
+ /* [in] */ REFGUID guidService,
+ /* [in] */ IUnknown *pUnkService,
+ /* [in] */ BOOL bWeakReference) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateTransform(
+ /* [size_is][in] */ IUnknown **punkInputs,
+ /* [in] */ ULONG ulNumInputs,
+ /* [size_is][in] */ IUnknown **punkOutputs,
+ /* [in] */ ULONG ulNumOutputs,
+ /* [in] */ IPropertyBag *pInitProps,
+ /* [in] */ IErrorLog *pErrLog,
+ /* [in] */ REFCLSID TransCLSID,
+ /* [in] */ REFIID TransIID,
+ /* [iid_is][out] */ void **ppTransform) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InitializeTransform(
+ /* [in] */ IDXTransform *pTransform,
+ /* [size_is][in] */ IUnknown **punkInputs,
+ /* [in] */ ULONG ulNumInputs,
+ /* [size_is][in] */ IUnknown **punkOutputs,
+ /* [in] */ ULONG ulNumOutputs,
+ /* [in] */ IPropertyBag *pInitProps,
+ /* [in] */ IErrorLog *pErrLog) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXTransformFactoryVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXTransformFactory * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXTransformFactory * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXTransformFactory * This);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *QueryService )(
+ IDXTransformFactory * This,
+ /* [in] */ REFGUID guidService,
+ /* [in] */ REFIID riid,
+ /* [out] */ void **ppvObject);
+
+ HRESULT ( STDMETHODCALLTYPE *SetService )(
+ IDXTransformFactory * This,
+ /* [in] */ REFGUID guidService,
+ /* [in] */ IUnknown *pUnkService,
+ /* [in] */ BOOL bWeakReference);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateTransform )(
+ IDXTransformFactory * This,
+ /* [size_is][in] */ IUnknown **punkInputs,
+ /* [in] */ ULONG ulNumInputs,
+ /* [size_is][in] */ IUnknown **punkOutputs,
+ /* [in] */ ULONG ulNumOutputs,
+ /* [in] */ IPropertyBag *pInitProps,
+ /* [in] */ IErrorLog *pErrLog,
+ /* [in] */ REFCLSID TransCLSID,
+ /* [in] */ REFIID TransIID,
+ /* [iid_is][out] */ void **ppTransform);
+
+ HRESULT ( STDMETHODCALLTYPE *InitializeTransform )(
+ IDXTransformFactory * This,
+ /* [in] */ IDXTransform *pTransform,
+ /* [size_is][in] */ IUnknown **punkInputs,
+ /* [in] */ ULONG ulNumInputs,
+ /* [size_is][in] */ IUnknown **punkOutputs,
+ /* [in] */ ULONG ulNumOutputs,
+ /* [in] */ IPropertyBag *pInitProps,
+ /* [in] */ IErrorLog *pErrLog);
+
+ END_INTERFACE
+ } IDXTransformFactoryVtbl;
+
+ interface IDXTransformFactory
+ {
+ CONST_VTBL struct IDXTransformFactoryVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXTransformFactory_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXTransformFactory_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXTransformFactory_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXTransformFactory_QueryService(This,guidService,riid,ppvObject) \
+ (This)->lpVtbl -> QueryService(This,guidService,riid,ppvObject)
+
+
+#define IDXTransformFactory_SetService(This,guidService,pUnkService,bWeakReference) \
+ (This)->lpVtbl -> SetService(This,guidService,pUnkService,bWeakReference)
+
+#define IDXTransformFactory_CreateTransform(This,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,pInitProps,pErrLog,TransCLSID,TransIID,ppTransform) \
+ (This)->lpVtbl -> CreateTransform(This,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,pInitProps,pErrLog,TransCLSID,TransIID,ppTransform)
+
+#define IDXTransformFactory_InitializeTransform(This,pTransform,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,pInitProps,pErrLog) \
+ (This)->lpVtbl -> InitializeTransform(This,pTransform,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,pInitProps,pErrLog)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDXTransformFactory_SetService_Proxy(
+ IDXTransformFactory * This,
+ /* [in] */ REFGUID guidService,
+ /* [in] */ IUnknown *pUnkService,
+ /* [in] */ BOOL bWeakReference);
+
+
+void __RPC_STUB IDXTransformFactory_SetService_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTransformFactory_CreateTransform_Proxy(
+ IDXTransformFactory * This,
+ /* [size_is][in] */ IUnknown **punkInputs,
+ /* [in] */ ULONG ulNumInputs,
+ /* [size_is][in] */ IUnknown **punkOutputs,
+ /* [in] */ ULONG ulNumOutputs,
+ /* [in] */ IPropertyBag *pInitProps,
+ /* [in] */ IErrorLog *pErrLog,
+ /* [in] */ REFCLSID TransCLSID,
+ /* [in] */ REFIID TransIID,
+ /* [iid_is][out] */ void **ppTransform);
+
+
+void __RPC_STUB IDXTransformFactory_CreateTransform_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTransformFactory_InitializeTransform_Proxy(
+ IDXTransformFactory * This,
+ /* [in] */ IDXTransform *pTransform,
+ /* [size_is][in] */ IUnknown **punkInputs,
+ /* [in] */ ULONG ulNumInputs,
+ /* [size_is][in] */ IUnknown **punkOutputs,
+ /* [in] */ ULONG ulNumOutputs,
+ /* [in] */ IPropertyBag *pInitProps,
+ /* [in] */ IErrorLog *pErrLog);
+
+
+void __RPC_STUB IDXTransformFactory_InitializeTransform_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXTransformFactory_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_dxtrans_0261 */
+/* [local] */
+
+typedef
+enum DXTMISCFLAGS
+ { DXTMF_BLEND_WITH_OUTPUT = 1L << 0,
+ DXTMF_DITHER_OUTPUT = 1L << 1,
+ DXTMF_OPTION_MASK = 0xffff,
+ DXTMF_VALID_OPTIONS = DXTMF_BLEND_WITH_OUTPUT | DXTMF_DITHER_OUTPUT,
+ DXTMF_BLEND_SUPPORTED = 1L << 16,
+ DXTMF_DITHER_SUPPORTED = 1L << 17,
+ DXTMF_INPLACE_OPERATION = 1L << 24,
+ DXTMF_BOUNDS_SUPPORTED = 1L << 25,
+ DXTMF_PLACEMENT_SUPPORTED = 1L << 26,
+ DXTMF_QUALITY_SUPPORTED = 1L << 27,
+ DXTMF_OPAQUE_RESULT = 1L << 28
+ } DXTMISCFLAGS;
+
+typedef
+enum DXINOUTINFOFLAGS
+ { DXINOUTF_OPTIONAL = 1L << 0
+ } DXINOUTINFOFLAGS;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0261_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0261_v0_0_s_ifspec;
+
+#ifndef __IDXTransform_INTERFACE_DEFINED__
+#define __IDXTransform_INTERFACE_DEFINED__
+
+/* interface IDXTransform */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXTransform;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("30A5FB78-E11F-11d1-9064-00C04FD9189D")
+ IDXTransform : public IDXBaseObject
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Setup(
+ /* [size_is][in] */ IUnknown *const *punkInputs,
+ /* [in] */ ULONG ulNumInputs,
+ /* [size_is][in] */ IUnknown *const *punkOutputs,
+ /* [in] */ ULONG ulNumOutputs,
+ /* [in] */ DWORD dwFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Execute(
+ /* [in] */ const GUID *pRequestID,
+ /* [in] */ const DXBNDS *pClipBnds,
+ /* [in] */ const DXVEC *pPlacement) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE MapBoundsIn2Out(
+ /* [in] */ const DXBNDS *pInBounds,
+ /* [in] */ ULONG ulNumInBnds,
+ /* [in] */ ULONG ulOutIndex,
+ /* [out] */ DXBNDS *pOutBounds) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE MapBoundsOut2In(
+ /* [in] */ ULONG ulOutIndex,
+ /* [in] */ const DXBNDS *pOutBounds,
+ /* [in] */ ULONG ulInIndex,
+ /* [out] */ DXBNDS *pInBounds) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetMiscFlags(
+ /* [in] */ DWORD dwMiscFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMiscFlags(
+ /* [out] */ DWORD *pdwMiscFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetInOutInfo(
+ /* [in] */ BOOL bIsOutput,
+ /* [in] */ ULONG ulIndex,
+ /* [out] */ DWORD *pdwFlags,
+ /* [size_is][out] */ GUID *pIDs,
+ /* [out][in] */ ULONG *pcIDs,
+ /* [out] */ IUnknown **ppUnkCurrentObject) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetQuality(
+ /* [in] */ float fQuality) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetQuality(
+ /* [out] */ float *fQuality) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXTransformVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXTransform * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXTransform * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXTransform * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetGenerationId )(
+ IDXTransform * This,
+ /* [out] */ ULONG *pID);
+
+ HRESULT ( STDMETHODCALLTYPE *IncrementGenerationId )(
+ IDXTransform * This,
+ /* [in] */ BOOL bRefresh);
+
+ HRESULT ( STDMETHODCALLTYPE *GetObjectSize )(
+ IDXTransform * This,
+ /* [out] */ ULONG *pcbSize);
+
+ HRESULT ( STDMETHODCALLTYPE *Setup )(
+ IDXTransform * This,
+ /* [size_is][in] */ IUnknown *const *punkInputs,
+ /* [in] */ ULONG ulNumInputs,
+ /* [size_is][in] */ IUnknown *const *punkOutputs,
+ /* [in] */ ULONG ulNumOutputs,
+ /* [in] */ DWORD dwFlags);
+
+ HRESULT ( STDMETHODCALLTYPE *Execute )(
+ IDXTransform * This,
+ /* [in] */ const GUID *pRequestID,
+ /* [in] */ const DXBNDS *pClipBnds,
+ /* [in] */ const DXVEC *pPlacement);
+
+ HRESULT ( STDMETHODCALLTYPE *MapBoundsIn2Out )(
+ IDXTransform * This,
+ /* [in] */ const DXBNDS *pInBounds,
+ /* [in] */ ULONG ulNumInBnds,
+ /* [in] */ ULONG ulOutIndex,
+ /* [out] */ DXBNDS *pOutBounds);
+
+ HRESULT ( STDMETHODCALLTYPE *MapBoundsOut2In )(
+ IDXTransform * This,
+ /* [in] */ ULONG ulOutIndex,
+ /* [in] */ const DXBNDS *pOutBounds,
+ /* [in] */ ULONG ulInIndex,
+ /* [out] */ DXBNDS *pInBounds);
+
+ HRESULT ( STDMETHODCALLTYPE *SetMiscFlags )(
+ IDXTransform * This,
+ /* [in] */ DWORD dwMiscFlags);
+
+ HRESULT ( STDMETHODCALLTYPE *GetMiscFlags )(
+ IDXTransform * This,
+ /* [out] */ DWORD *pdwMiscFlags);
+
+ HRESULT ( STDMETHODCALLTYPE *GetInOutInfo )(
+ IDXTransform * This,
+ /* [in] */ BOOL bIsOutput,
+ /* [in] */ ULONG ulIndex,
+ /* [out] */ DWORD *pdwFlags,
+ /* [size_is][out] */ GUID *pIDs,
+ /* [out][in] */ ULONG *pcIDs,
+ /* [out] */ IUnknown **ppUnkCurrentObject);
+
+ HRESULT ( STDMETHODCALLTYPE *SetQuality )(
+ IDXTransform * This,
+ /* [in] */ float fQuality);
+
+ HRESULT ( STDMETHODCALLTYPE *GetQuality )(
+ IDXTransform * This,
+ /* [out] */ float *fQuality);
+
+ END_INTERFACE
+ } IDXTransformVtbl;
+
+ interface IDXTransform
+ {
+ CONST_VTBL struct IDXTransformVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXTransform_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXTransform_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXTransform_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXTransform_GetGenerationId(This,pID) \
+ (This)->lpVtbl -> GetGenerationId(This,pID)
+
+#define IDXTransform_IncrementGenerationId(This,bRefresh) \
+ (This)->lpVtbl -> IncrementGenerationId(This,bRefresh)
+
+#define IDXTransform_GetObjectSize(This,pcbSize) \
+ (This)->lpVtbl -> GetObjectSize(This,pcbSize)
+
+
+#define IDXTransform_Setup(This,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,dwFlags) \
+ (This)->lpVtbl -> Setup(This,punkInputs,ulNumInputs,punkOutputs,ulNumOutputs,dwFlags)
+
+#define IDXTransform_Execute(This,pRequestID,pClipBnds,pPlacement) \
+ (This)->lpVtbl -> Execute(This,pRequestID,pClipBnds,pPlacement)
+
+#define IDXTransform_MapBoundsIn2Out(This,pInBounds,ulNumInBnds,ulOutIndex,pOutBounds) \
+ (This)->lpVtbl -> MapBoundsIn2Out(This,pInBounds,ulNumInBnds,ulOutIndex,pOutBounds)
+
+#define IDXTransform_MapBoundsOut2In(This,ulOutIndex,pOutBounds,ulInIndex,pInBounds) \
+ (This)->lpVtbl -> MapBoundsOut2In(This,ulOutIndex,pOutBounds,ulInIndex,pInBounds)
+
+#define IDXTransform_SetMiscFlags(This,dwMiscFlags) \
+ (This)->lpVtbl -> SetMiscFlags(This,dwMiscFlags)
+
+#define IDXTransform_GetMiscFlags(This,pdwMiscFlags) \
+ (This)->lpVtbl -> GetMiscFlags(This,pdwMiscFlags)
+
+#define IDXTransform_GetInOutInfo(This,bIsOutput,ulIndex,pdwFlags,pIDs,pcIDs,ppUnkCurrentObject) \
+ (This)->lpVtbl -> GetInOutInfo(This,bIsOutput,ulIndex,pdwFlags,pIDs,pcIDs,ppUnkCurrentObject)
+
+#define IDXTransform_SetQuality(This,fQuality) \
+ (This)->lpVtbl -> SetQuality(This,fQuality)
+
+#define IDXTransform_GetQuality(This,fQuality) \
+ (This)->lpVtbl -> GetQuality(This,fQuality)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDXTransform_Setup_Proxy(
+ IDXTransform * This,
+ /* [size_is][in] */ IUnknown *const *punkInputs,
+ /* [in] */ ULONG ulNumInputs,
+ /* [size_is][in] */ IUnknown *const *punkOutputs,
+ /* [in] */ ULONG ulNumOutputs,
+ /* [in] */ DWORD dwFlags);
+
+
+void __RPC_STUB IDXTransform_Setup_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTransform_Execute_Proxy(
+ IDXTransform * This,
+ /* [in] */ const GUID *pRequestID,
+ /* [in] */ const DXBNDS *pClipBnds,
+ /* [in] */ const DXVEC *pPlacement);
+
+
+void __RPC_STUB IDXTransform_Execute_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTransform_MapBoundsIn2Out_Proxy(
+ IDXTransform * This,
+ /* [in] */ const DXBNDS *pInBounds,
+ /* [in] */ ULONG ulNumInBnds,
+ /* [in] */ ULONG ulOutIndex,
+ /* [out] */ DXBNDS *pOutBounds);
+
+
+void __RPC_STUB IDXTransform_MapBoundsIn2Out_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTransform_MapBoundsOut2In_Proxy(
+ IDXTransform * This,
+ /* [in] */ ULONG ulOutIndex,
+ /* [in] */ const DXBNDS *pOutBounds,
+ /* [in] */ ULONG ulInIndex,
+ /* [out] */ DXBNDS *pInBounds);
+
+
+void __RPC_STUB IDXTransform_MapBoundsOut2In_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTransform_SetMiscFlags_Proxy(
+ IDXTransform * This,
+ /* [in] */ DWORD dwMiscFlags);
+
+
+void __RPC_STUB IDXTransform_SetMiscFlags_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTransform_GetMiscFlags_Proxy(
+ IDXTransform * This,
+ /* [out] */ DWORD *pdwMiscFlags);
+
+
+void __RPC_STUB IDXTransform_GetMiscFlags_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTransform_GetInOutInfo_Proxy(
+ IDXTransform * This,
+ /* [in] */ BOOL bIsOutput,
+ /* [in] */ ULONG ulIndex,
+ /* [out] */ DWORD *pdwFlags,
+ /* [size_is][out] */ GUID *pIDs,
+ /* [out][in] */ ULONG *pcIDs,
+ /* [out] */ IUnknown **ppUnkCurrentObject);
+
+
+void __RPC_STUB IDXTransform_GetInOutInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTransform_SetQuality_Proxy(
+ IDXTransform * This,
+ /* [in] */ float fQuality);
+
+
+void __RPC_STUB IDXTransform_SetQuality_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTransform_GetQuality_Proxy(
+ IDXTransform * This,
+ /* [out] */ float *fQuality);
+
+
+void __RPC_STUB IDXTransform_GetQuality_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXTransform_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDXSurfacePick_INTERFACE_DEFINED__
+#define __IDXSurfacePick_INTERFACE_DEFINED__
+
+/* interface IDXSurfacePick */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXSurfacePick;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("30A5FB79-E11F-11d1-9064-00C04FD9189D")
+ IDXSurfacePick : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE PointPick(
+ /* [in] */ const DXVEC *pPoint,
+ /* [out] */ ULONG *pulInputSurfaceIndex,
+ /* [out] */ DXVEC *pInputPoint) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXSurfacePickVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXSurfacePick * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXSurfacePick * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXSurfacePick * This);
+
+ HRESULT ( STDMETHODCALLTYPE *PointPick )(
+ IDXSurfacePick * This,
+ /* [in] */ const DXVEC *pPoint,
+ /* [out] */ ULONG *pulInputSurfaceIndex,
+ /* [out] */ DXVEC *pInputPoint);
+
+ END_INTERFACE
+ } IDXSurfacePickVtbl;
+
+ interface IDXSurfacePick
+ {
+ CONST_VTBL struct IDXSurfacePickVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXSurfacePick_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXSurfacePick_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXSurfacePick_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXSurfacePick_PointPick(This,pPoint,pulInputSurfaceIndex,pInputPoint) \
+ (This)->lpVtbl -> PointPick(This,pPoint,pulInputSurfaceIndex,pInputPoint)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfacePick_PointPick_Proxy(
+ IDXSurfacePick * This,
+ /* [in] */ const DXVEC *pPoint,
+ /* [out] */ ULONG *pulInputSurfaceIndex,
+ /* [out] */ DXVEC *pInputPoint);
+
+
+void __RPC_STUB IDXSurfacePick_PointPick_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXSurfacePick_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDXTBindHost_INTERFACE_DEFINED__
+#define __IDXTBindHost_INTERFACE_DEFINED__
+
+/* interface IDXTBindHost */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXTBindHost;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("D26BCE55-E9DC-11d1-9066-00C04FD9189D")
+ IDXTBindHost : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetBindHost(
+ /* [in] */ IBindHost *pBindHost) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXTBindHostVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXTBindHost * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXTBindHost * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXTBindHost * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetBindHost )(
+ IDXTBindHost * This,
+ /* [in] */ IBindHost *pBindHost);
+
+ END_INTERFACE
+ } IDXTBindHostVtbl;
+
+ interface IDXTBindHost
+ {
+ CONST_VTBL struct IDXTBindHostVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXTBindHost_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXTBindHost_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXTBindHost_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXTBindHost_SetBindHost(This,pBindHost) \
+ (This)->lpVtbl -> SetBindHost(This,pBindHost)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDXTBindHost_SetBindHost_Proxy(
+ IDXTBindHost * This,
+ /* [in] */ IBindHost *pBindHost);
+
+
+void __RPC_STUB IDXTBindHost_SetBindHost_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXTBindHost_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_dxtrans_0264 */
+/* [local] */
+
+typedef void __stdcall __stdcall DXTASKPROC(
+ void *pTaskData,
+ BOOL *pbContinueProcessing);
+
+typedef DXTASKPROC *PFNDXTASKPROC;
+
+typedef void __stdcall __stdcall DXAPCPROC(
+ DWORD dwData);
+
+typedef DXAPCPROC *PFNDXAPCPROC;
+
+#ifdef __cplusplus
+typedef struct DXTMTASKINFO
+{
+ PFNDXTASKPROC pfnTaskProc; // Pointer to function to execute
+ PVOID pTaskData; // Pointer to argument data
+ PFNDXAPCPROC pfnCompletionAPC; // Pointer to completion APC proc
+ DWORD dwCompletionData; // Pointer to APC proc data
+ const GUID* pRequestID; // Used to identify groups of tasks
+} DXTMTASKINFO;
+#else
+typedef struct DXTMTASKINFO
+ {
+ PVOID pfnTaskProc;
+ PVOID pTaskData;
+ PVOID pfnCompletionAPC;
+ DWORD dwCompletionData;
+ const GUID *pRequestID;
+ } DXTMTASKINFO;
+
+#endif
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0264_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0264_v0_0_s_ifspec;
+
+#ifndef __IDXTaskManager_INTERFACE_DEFINED__
+#define __IDXTaskManager_INTERFACE_DEFINED__
+
+/* interface IDXTaskManager */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXTaskManager;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("254DBBC1-F922-11d0-883A-3C8B00C10000")
+ IDXTaskManager : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE QueryNumProcessors(
+ /* [out] */ ULONG *pulNumProc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetThreadPoolSize(
+ /* [in] */ ULONG ulNumThreads) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetThreadPoolSize(
+ /* [out] */ ULONG *pulNumThreads) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetConcurrencyLimit(
+ /* [in] */ ULONG ulNumThreads) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetConcurrencyLimit(
+ /* [out] */ ULONG *pulNumThreads) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ScheduleTasks(
+ /* [in] */ DXTMTASKINFO TaskInfo[ ],
+ /* [in] */ HANDLE Events[ ],
+ /* [out] */ DWORD TaskIDs[ ],
+ /* [in] */ ULONG ulNumTasks,
+ /* [in] */ ULONG ulWaitPeriod) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE TerminateTasks(
+ /* [in] */ DWORD TaskIDs[ ],
+ /* [in] */ ULONG ulCount,
+ /* [in] */ ULONG ulTimeOut) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE TerminateRequest(
+ /* [in] */ REFIID RequestID,
+ /* [in] */ ULONG ulTimeOut) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXTaskManagerVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXTaskManager * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXTaskManager * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXTaskManager * This);
+
+ HRESULT ( STDMETHODCALLTYPE *QueryNumProcessors )(
+ IDXTaskManager * This,
+ /* [out] */ ULONG *pulNumProc);
+
+ HRESULT ( STDMETHODCALLTYPE *SetThreadPoolSize )(
+ IDXTaskManager * This,
+ /* [in] */ ULONG ulNumThreads);
+
+ HRESULT ( STDMETHODCALLTYPE *GetThreadPoolSize )(
+ IDXTaskManager * This,
+ /* [out] */ ULONG *pulNumThreads);
+
+ HRESULT ( STDMETHODCALLTYPE *SetConcurrencyLimit )(
+ IDXTaskManager * This,
+ /* [in] */ ULONG ulNumThreads);
+
+ HRESULT ( STDMETHODCALLTYPE *GetConcurrencyLimit )(
+ IDXTaskManager * This,
+ /* [out] */ ULONG *pulNumThreads);
+
+ HRESULT ( STDMETHODCALLTYPE *ScheduleTasks )(
+ IDXTaskManager * This,
+ /* [in] */ DXTMTASKINFO TaskInfo[ ],
+ /* [in] */ HANDLE Events[ ],
+ /* [out] */ DWORD TaskIDs[ ],
+ /* [in] */ ULONG ulNumTasks,
+ /* [in] */ ULONG ulWaitPeriod);
+
+ HRESULT ( STDMETHODCALLTYPE *TerminateTasks )(
+ IDXTaskManager * This,
+ /* [in] */ DWORD TaskIDs[ ],
+ /* [in] */ ULONG ulCount,
+ /* [in] */ ULONG ulTimeOut);
+
+ HRESULT ( STDMETHODCALLTYPE *TerminateRequest )(
+ IDXTaskManager * This,
+ /* [in] */ REFIID RequestID,
+ /* [in] */ ULONG ulTimeOut);
+
+ END_INTERFACE
+ } IDXTaskManagerVtbl;
+
+ interface IDXTaskManager
+ {
+ CONST_VTBL struct IDXTaskManagerVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXTaskManager_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXTaskManager_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXTaskManager_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXTaskManager_QueryNumProcessors(This,pulNumProc) \
+ (This)->lpVtbl -> QueryNumProcessors(This,pulNumProc)
+
+#define IDXTaskManager_SetThreadPoolSize(This,ulNumThreads) \
+ (This)->lpVtbl -> SetThreadPoolSize(This,ulNumThreads)
+
+#define IDXTaskManager_GetThreadPoolSize(This,pulNumThreads) \
+ (This)->lpVtbl -> GetThreadPoolSize(This,pulNumThreads)
+
+#define IDXTaskManager_SetConcurrencyLimit(This,ulNumThreads) \
+ (This)->lpVtbl -> SetConcurrencyLimit(This,ulNumThreads)
+
+#define IDXTaskManager_GetConcurrencyLimit(This,pulNumThreads) \
+ (This)->lpVtbl -> GetConcurrencyLimit(This,pulNumThreads)
+
+#define IDXTaskManager_ScheduleTasks(This,TaskInfo,Events,TaskIDs,ulNumTasks,ulWaitPeriod) \
+ (This)->lpVtbl -> ScheduleTasks(This,TaskInfo,Events,TaskIDs,ulNumTasks,ulWaitPeriod)
+
+#define IDXTaskManager_TerminateTasks(This,TaskIDs,ulCount,ulTimeOut) \
+ (This)->lpVtbl -> TerminateTasks(This,TaskIDs,ulCount,ulTimeOut)
+
+#define IDXTaskManager_TerminateRequest(This,RequestID,ulTimeOut) \
+ (This)->lpVtbl -> TerminateRequest(This,RequestID,ulTimeOut)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDXTaskManager_QueryNumProcessors_Proxy(
+ IDXTaskManager * This,
+ /* [out] */ ULONG *pulNumProc);
+
+
+void __RPC_STUB IDXTaskManager_QueryNumProcessors_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTaskManager_SetThreadPoolSize_Proxy(
+ IDXTaskManager * This,
+ /* [in] */ ULONG ulNumThreads);
+
+
+void __RPC_STUB IDXTaskManager_SetThreadPoolSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTaskManager_GetThreadPoolSize_Proxy(
+ IDXTaskManager * This,
+ /* [out] */ ULONG *pulNumThreads);
+
+
+void __RPC_STUB IDXTaskManager_GetThreadPoolSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTaskManager_SetConcurrencyLimit_Proxy(
+ IDXTaskManager * This,
+ /* [in] */ ULONG ulNumThreads);
+
+
+void __RPC_STUB IDXTaskManager_SetConcurrencyLimit_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTaskManager_GetConcurrencyLimit_Proxy(
+ IDXTaskManager * This,
+ /* [out] */ ULONG *pulNumThreads);
+
+
+void __RPC_STUB IDXTaskManager_GetConcurrencyLimit_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTaskManager_ScheduleTasks_Proxy(
+ IDXTaskManager * This,
+ /* [in] */ DXTMTASKINFO TaskInfo[ ],
+ /* [in] */ HANDLE Events[ ],
+ /* [out] */ DWORD TaskIDs[ ],
+ /* [in] */ ULONG ulNumTasks,
+ /* [in] */ ULONG ulWaitPeriod);
+
+
+void __RPC_STUB IDXTaskManager_ScheduleTasks_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTaskManager_TerminateTasks_Proxy(
+ IDXTaskManager * This,
+ /* [in] */ DWORD TaskIDs[ ],
+ /* [in] */ ULONG ulCount,
+ /* [in] */ ULONG ulTimeOut);
+
+
+void __RPC_STUB IDXTaskManager_TerminateTasks_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTaskManager_TerminateRequest_Proxy(
+ IDXTaskManager * This,
+ /* [in] */ REFIID RequestID,
+ /* [in] */ ULONG ulTimeOut);
+
+
+void __RPC_STUB IDXTaskManager_TerminateRequest_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXTaskManager_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_dxtrans_0265 */
+/* [local] */
+
+#ifdef __cplusplus
+/////////////////////////////////////////////////////
+
+class DXBASESAMPLE;
+class DXSAMPLE;
+class DXPMSAMPLE;
+
+/////////////////////////////////////////////////////
+
+class DXBASESAMPLE
+{
+public:
+ BYTE Blue;
+ BYTE Green;
+ BYTE Red;
+ BYTE Alpha;
+ DXBASESAMPLE() {}
+ DXBASESAMPLE(const BYTE alpha, const BYTE red, const BYTE green, const BYTE blue) :
+ Alpha(alpha),
+ Red(red),
+ Green(green),
+ Blue(blue) {}
+ DXBASESAMPLE(const DWORD val) { *this = (*(DXBASESAMPLE *)&val); }
+ operator DWORD () const {return *((DWORD *)this); }
+ DWORD operator=(const DWORD val) { return *this = *((DXBASESAMPLE *)&val); }
+}; // DXBASESAMPLE
+
+/////////////////////////////////////////////////////
+
+class DXSAMPLE : public DXBASESAMPLE
+{
+public:
+ DXSAMPLE() {}
+ DXSAMPLE(const BYTE alpha, const BYTE red, const BYTE green, const BYTE blue) :
+ DXBASESAMPLE(alpha, red, green, blue) {}
+ DXSAMPLE(const DWORD val) { *this = (*(DXSAMPLE *)&val); }
+ operator DWORD () const {return *((DWORD *)this); }
+ DWORD operator=(const DWORD val) { return *this = *((DXSAMPLE *)&val); }
+ operator DXPMSAMPLE() const;
+}; // DXSAMPLE
+
+/////////////////////////////////////////////////////
+
+class DXPMSAMPLE : public DXBASESAMPLE
+{
+public:
+ DXPMSAMPLE() {}
+ DXPMSAMPLE(const BYTE alpha, const BYTE red, const BYTE green, const BYTE blue) :
+ DXBASESAMPLE(alpha, red, green, blue) {}
+ DXPMSAMPLE(const DWORD val) { *this = (*(DXPMSAMPLE *)&val); }
+ operator DWORD () const {return *((DWORD *)this); }
+ DWORD operator=(const DWORD val) { return *this = *((DXPMSAMPLE *)&val); }
+ operator DXSAMPLE() const;
+}; // DXPMSAMPLE
+
+//
+// The following cast operators are to prevent a direct assignment of a DXSAMPLE to a DXPMSAMPLE
+//
+inline DXSAMPLE::operator DXPMSAMPLE() const { return *((DXPMSAMPLE *)this); }
+inline DXPMSAMPLE::operator DXSAMPLE() const { return *((DXSAMPLE *)this); }
+#else // !__cplusplus
+typedef struct DXBASESAMPLE
+ {
+ BYTE Blue;
+ BYTE Green;
+ BYTE Red;
+ BYTE Alpha;
+ } DXBASESAMPLE;
+
+typedef struct DXSAMPLE
+ {
+ BYTE Blue;
+ BYTE Green;
+ BYTE Red;
+ BYTE Alpha;
+ } DXSAMPLE;
+
+typedef struct DXPMSAMPLE
+ {
+ BYTE Blue;
+ BYTE Green;
+ BYTE Red;
+ BYTE Alpha;
+ } DXPMSAMPLE;
+
+#endif // !__cplusplus
+typedef
+enum DXRUNTYPE
+ { DXRUNTYPE_CLEAR = 0,
+ DXRUNTYPE_OPAQUE = 1,
+ DXRUNTYPE_TRANS = 2,
+ DXRUNTYPE_UNKNOWN = 3
+ } DXRUNTYPE;
+
+#define DX_MAX_RUN_INFO_COUNT ( 128 )
+
+// Ignore the definition used by MIDL for TLB generation
+#if 0
+typedef struct DXRUNINFO
+ {
+ ULONG Bitfields;
+ } DXRUNINFO;
+
+#endif // 0
+typedef struct DXRUNINFO
+{
+ ULONG Type : 2; // Type
+ ULONG Count : 30; // Number of samples in run
+} DXRUNINFO;
+typedef
+enum DXSFCREATE
+ { DXSF_FORMAT_IS_CLSID = 1L << 0,
+ DXSF_NO_LAZY_DDRAW_LOCK = 1L << 1
+ } DXSFCREATE;
+
+typedef
+enum DXBLTOPTIONS
+ { DXBOF_DO_OVER = 1L << 0,
+ DXBOF_DITHER = 1L << 1
+ } DXBLTOPTIONS;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0265_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0265_v0_0_s_ifspec;
+
+#ifndef __IDXSurfaceFactory_INTERFACE_DEFINED__
+#define __IDXSurfaceFactory_INTERFACE_DEFINED__
+
+/* interface IDXSurfaceFactory */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXSurfaceFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("144946F5-C4D4-11d1-81D1-0000F87557DB")
+ IDXSurfaceFactory : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateSurface(
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ const DXBNDS *pBounds,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ IUnknown *punkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppDXSurface) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateFromDDSurface(
+ /* [in] */ IUnknown *pDDrawSurface,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ IUnknown *punkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppDXSurface) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LoadImage(
+ /* [in] */ const LPWSTR pszFileName,
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppDXSurface) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LoadImageFromStream(
+ /* [in] */ IStream *pStream,
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppDXSurface) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CopySurfaceToNewFormat(
+ /* [in] */ IDXSurface *pSrc,
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc,
+ /* [in] */ const GUID *pDestFormatID,
+ /* [out] */ IDXSurface **ppNewSurface) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateD3DRMTexture(
+ /* [in] */ IDXSurface *pSrc,
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ IUnknown *pD3DRM3,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppTexture3) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE BitBlt(
+ /* [in] */ IDXSurface *pDest,
+ /* [in] */ const DXVEC *pPlacement,
+ /* [in] */ IDXSurface *pSrc,
+ /* [in] */ const DXBNDS *pClipBounds,
+ /* [in] */ DWORD dwFlags) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXSurfaceFactoryVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXSurfaceFactory * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXSurfaceFactory * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXSurfaceFactory * This);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateSurface )(
+ IDXSurfaceFactory * This,
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ const DXBNDS *pBounds,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ IUnknown *punkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppDXSurface);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateFromDDSurface )(
+ IDXSurfaceFactory * This,
+ /* [in] */ IUnknown *pDDrawSurface,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ IUnknown *punkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppDXSurface);
+
+ HRESULT ( STDMETHODCALLTYPE *LoadImage )(
+ IDXSurfaceFactory * This,
+ /* [in] */ const LPWSTR pszFileName,
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppDXSurface);
+
+ HRESULT ( STDMETHODCALLTYPE *LoadImageFromStream )(
+ IDXSurfaceFactory * This,
+ /* [in] */ IStream *pStream,
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppDXSurface);
+
+ HRESULT ( STDMETHODCALLTYPE *CopySurfaceToNewFormat )(
+ IDXSurfaceFactory * This,
+ /* [in] */ IDXSurface *pSrc,
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc,
+ /* [in] */ const GUID *pDestFormatID,
+ /* [out] */ IDXSurface **ppNewSurface);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateD3DRMTexture )(
+ IDXSurfaceFactory * This,
+ /* [in] */ IDXSurface *pSrc,
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ IUnknown *pD3DRM3,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppTexture3);
+
+ HRESULT ( STDMETHODCALLTYPE *BitBlt )(
+ IDXSurfaceFactory * This,
+ /* [in] */ IDXSurface *pDest,
+ /* [in] */ const DXVEC *pPlacement,
+ /* [in] */ IDXSurface *pSrc,
+ /* [in] */ const DXBNDS *pClipBounds,
+ /* [in] */ DWORD dwFlags);
+
+ END_INTERFACE
+ } IDXSurfaceFactoryVtbl;
+
+ interface IDXSurfaceFactory
+ {
+ CONST_VTBL struct IDXSurfaceFactoryVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXSurfaceFactory_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXSurfaceFactory_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXSurfaceFactory_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXSurfaceFactory_CreateSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags,punkOuter,riid,ppDXSurface) \
+ (This)->lpVtbl -> CreateSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags,punkOuter,riid,ppDXSurface)
+
+#define IDXSurfaceFactory_CreateFromDDSurface(This,pDDrawSurface,pFormatID,dwFlags,punkOuter,riid,ppDXSurface) \
+ (This)->lpVtbl -> CreateFromDDSurface(This,pDDrawSurface,pFormatID,dwFlags,punkOuter,riid,ppDXSurface)
+
+#define IDXSurfaceFactory_LoadImage(This,pszFileName,pDirectDraw,pDDSurfaceDesc,pFormatID,riid,ppDXSurface) \
+ (This)->lpVtbl -> LoadImage(This,pszFileName,pDirectDraw,pDDSurfaceDesc,pFormatID,riid,ppDXSurface)
+
+#define IDXSurfaceFactory_LoadImageFromStream(This,pStream,pDirectDraw,pDDSurfaceDesc,pFormatID,riid,ppDXSurface) \
+ (This)->lpVtbl -> LoadImageFromStream(This,pStream,pDirectDraw,pDDSurfaceDesc,pFormatID,riid,ppDXSurface)
+
+#define IDXSurfaceFactory_CopySurfaceToNewFormat(This,pSrc,pDirectDraw,pDDSurfaceDesc,pDestFormatID,ppNewSurface) \
+ (This)->lpVtbl -> CopySurfaceToNewFormat(This,pSrc,pDirectDraw,pDDSurfaceDesc,pDestFormatID,ppNewSurface)
+
+#define IDXSurfaceFactory_CreateD3DRMTexture(This,pSrc,pDirectDraw,pD3DRM3,riid,ppTexture3) \
+ (This)->lpVtbl -> CreateD3DRMTexture(This,pSrc,pDirectDraw,pD3DRM3,riid,ppTexture3)
+
+#define IDXSurfaceFactory_BitBlt(This,pDest,pPlacement,pSrc,pClipBounds,dwFlags) \
+ (This)->lpVtbl -> BitBlt(This,pDest,pPlacement,pSrc,pClipBounds,dwFlags)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_CreateSurface_Proxy(
+ IDXSurfaceFactory * This,
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ const DXBNDS *pBounds,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ IUnknown *punkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppDXSurface);
+
+
+void __RPC_STUB IDXSurfaceFactory_CreateSurface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_CreateFromDDSurface_Proxy(
+ IDXSurfaceFactory * This,
+ /* [in] */ IUnknown *pDDrawSurface,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ IUnknown *punkOuter,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppDXSurface);
+
+
+void __RPC_STUB IDXSurfaceFactory_CreateFromDDSurface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_LoadImage_Proxy(
+ IDXSurfaceFactory * This,
+ /* [in] */ const LPWSTR pszFileName,
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppDXSurface);
+
+
+void __RPC_STUB IDXSurfaceFactory_LoadImage_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_LoadImageFromStream_Proxy(
+ IDXSurfaceFactory * This,
+ /* [in] */ IStream *pStream,
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppDXSurface);
+
+
+void __RPC_STUB IDXSurfaceFactory_LoadImageFromStream_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_CopySurfaceToNewFormat_Proxy(
+ IDXSurfaceFactory * This,
+ /* [in] */ IDXSurface *pSrc,
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc,
+ /* [in] */ const GUID *pDestFormatID,
+ /* [out] */ IDXSurface **ppNewSurface);
+
+
+void __RPC_STUB IDXSurfaceFactory_CopySurfaceToNewFormat_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_CreateD3DRMTexture_Proxy(
+ IDXSurfaceFactory * This,
+ /* [in] */ IDXSurface *pSrc,
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ IUnknown *pD3DRM3,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppTexture3);
+
+
+void __RPC_STUB IDXSurfaceFactory_CreateD3DRMTexture_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceFactory_BitBlt_Proxy(
+ IDXSurfaceFactory * This,
+ /* [in] */ IDXSurface *pDest,
+ /* [in] */ const DXVEC *pPlacement,
+ /* [in] */ IDXSurface *pSrc,
+ /* [in] */ const DXBNDS *pClipBounds,
+ /* [in] */ DWORD dwFlags);
+
+
+void __RPC_STUB IDXSurfaceFactory_BitBlt_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXSurfaceFactory_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_dxtrans_0266 */
+/* [local] */
+
+typedef
+enum DXSURFMODCOMPOP
+ { DXSURFMOD_COMP_OVER = 0,
+ DXSURFMOD_COMP_ALPHA_MASK = 1,
+ DXSURFMOD_COMP_MAX_VALID = 1
+ } DXSURFMODCOMPOP;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0266_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0266_v0_0_s_ifspec;
+
+#ifndef __IDXSurfaceModifier_INTERFACE_DEFINED__
+#define __IDXSurfaceModifier_INTERFACE_DEFINED__
+
+/* interface IDXSurfaceModifier */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXSurfaceModifier;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9EA3B637-C37D-11d1-905E-00C04FD9189D")
+ IDXSurfaceModifier : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetFillColor(
+ /* [in] */ DXSAMPLE Color) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFillColor(
+ /* [out] */ DXSAMPLE *pColor) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetBounds(
+ /* [in] */ const DXBNDS *pBounds) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetBackground(
+ /* [in] */ IDXSurface *pSurface) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetBackground(
+ /* [out] */ IDXSurface **ppSurface) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetCompositeOperation(
+ /* [in] */ DXSURFMODCOMPOP CompOp) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCompositeOperation(
+ /* [out] */ DXSURFMODCOMPOP *pCompOp) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetForeground(
+ /* [in] */ IDXSurface *pSurface,
+ /* [in] */ BOOL bTile,
+ /* [in] */ const POINT *pOrigin) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetForeground(
+ /* [out] */ IDXSurface **ppSurface,
+ /* [out] */ BOOL *pbTile,
+ /* [out] */ POINT *pOrigin) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetOpacity(
+ /* [in] */ float Opacity) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetOpacity(
+ /* [out] */ float *pOpacity) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetLookup(
+ /* [in] */ IDXLookupTable *pLookupTable) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetLookup(
+ /* [out] */ IDXLookupTable **ppLookupTable) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXSurfaceModifierVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXSurfaceModifier * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXSurfaceModifier * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXSurfaceModifier * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetFillColor )(
+ IDXSurfaceModifier * This,
+ /* [in] */ DXSAMPLE Color);
+
+ HRESULT ( STDMETHODCALLTYPE *GetFillColor )(
+ IDXSurfaceModifier * This,
+ /* [out] */ DXSAMPLE *pColor);
+
+ HRESULT ( STDMETHODCALLTYPE *SetBounds )(
+ IDXSurfaceModifier * This,
+ /* [in] */ const DXBNDS *pBounds);
+
+ HRESULT ( STDMETHODCALLTYPE *SetBackground )(
+ IDXSurfaceModifier * This,
+ /* [in] */ IDXSurface *pSurface);
+
+ HRESULT ( STDMETHODCALLTYPE *GetBackground )(
+ IDXSurfaceModifier * This,
+ /* [out] */ IDXSurface **ppSurface);
+
+ HRESULT ( STDMETHODCALLTYPE *SetCompositeOperation )(
+ IDXSurfaceModifier * This,
+ /* [in] */ DXSURFMODCOMPOP CompOp);
+
+ HRESULT ( STDMETHODCALLTYPE *GetCompositeOperation )(
+ IDXSurfaceModifier * This,
+ /* [out] */ DXSURFMODCOMPOP *pCompOp);
+
+ HRESULT ( STDMETHODCALLTYPE *SetForeground )(
+ IDXSurfaceModifier * This,
+ /* [in] */ IDXSurface *pSurface,
+ /* [in] */ BOOL bTile,
+ /* [in] */ const POINT *pOrigin);
+
+ HRESULT ( STDMETHODCALLTYPE *GetForeground )(
+ IDXSurfaceModifier * This,
+ /* [out] */ IDXSurface **ppSurface,
+ /* [out] */ BOOL *pbTile,
+ /* [out] */ POINT *pOrigin);
+
+ HRESULT ( STDMETHODCALLTYPE *SetOpacity )(
+ IDXSurfaceModifier * This,
+ /* [in] */ float Opacity);
+
+ HRESULT ( STDMETHODCALLTYPE *GetOpacity )(
+ IDXSurfaceModifier * This,
+ /* [out] */ float *pOpacity);
+
+ HRESULT ( STDMETHODCALLTYPE *SetLookup )(
+ IDXSurfaceModifier * This,
+ /* [in] */ IDXLookupTable *pLookupTable);
+
+ HRESULT ( STDMETHODCALLTYPE *GetLookup )(
+ IDXSurfaceModifier * This,
+ /* [out] */ IDXLookupTable **ppLookupTable);
+
+ END_INTERFACE
+ } IDXSurfaceModifierVtbl;
+
+ interface IDXSurfaceModifier
+ {
+ CONST_VTBL struct IDXSurfaceModifierVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXSurfaceModifier_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXSurfaceModifier_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXSurfaceModifier_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXSurfaceModifier_SetFillColor(This,Color) \
+ (This)->lpVtbl -> SetFillColor(This,Color)
+
+#define IDXSurfaceModifier_GetFillColor(This,pColor) \
+ (This)->lpVtbl -> GetFillColor(This,pColor)
+
+#define IDXSurfaceModifier_SetBounds(This,pBounds) \
+ (This)->lpVtbl -> SetBounds(This,pBounds)
+
+#define IDXSurfaceModifier_SetBackground(This,pSurface) \
+ (This)->lpVtbl -> SetBackground(This,pSurface)
+
+#define IDXSurfaceModifier_GetBackground(This,ppSurface) \
+ (This)->lpVtbl -> GetBackground(This,ppSurface)
+
+#define IDXSurfaceModifier_SetCompositeOperation(This,CompOp) \
+ (This)->lpVtbl -> SetCompositeOperation(This,CompOp)
+
+#define IDXSurfaceModifier_GetCompositeOperation(This,pCompOp) \
+ (This)->lpVtbl -> GetCompositeOperation(This,pCompOp)
+
+#define IDXSurfaceModifier_SetForeground(This,pSurface,bTile,pOrigin) \
+ (This)->lpVtbl -> SetForeground(This,pSurface,bTile,pOrigin)
+
+#define IDXSurfaceModifier_GetForeground(This,ppSurface,pbTile,pOrigin) \
+ (This)->lpVtbl -> GetForeground(This,ppSurface,pbTile,pOrigin)
+
+#define IDXSurfaceModifier_SetOpacity(This,Opacity) \
+ (This)->lpVtbl -> SetOpacity(This,Opacity)
+
+#define IDXSurfaceModifier_GetOpacity(This,pOpacity) \
+ (This)->lpVtbl -> GetOpacity(This,pOpacity)
+
+#define IDXSurfaceModifier_SetLookup(This,pLookupTable) \
+ (This)->lpVtbl -> SetLookup(This,pLookupTable)
+
+#define IDXSurfaceModifier_GetLookup(This,ppLookupTable) \
+ (This)->lpVtbl -> GetLookup(This,ppLookupTable)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetFillColor_Proxy(
+ IDXSurfaceModifier * This,
+ /* [in] */ DXSAMPLE Color);
+
+
+void __RPC_STUB IDXSurfaceModifier_SetFillColor_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetFillColor_Proxy(
+ IDXSurfaceModifier * This,
+ /* [out] */ DXSAMPLE *pColor);
+
+
+void __RPC_STUB IDXSurfaceModifier_GetFillColor_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetBounds_Proxy(
+ IDXSurfaceModifier * This,
+ /* [in] */ const DXBNDS *pBounds);
+
+
+void __RPC_STUB IDXSurfaceModifier_SetBounds_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetBackground_Proxy(
+ IDXSurfaceModifier * This,
+ /* [in] */ IDXSurface *pSurface);
+
+
+void __RPC_STUB IDXSurfaceModifier_SetBackground_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetBackground_Proxy(
+ IDXSurfaceModifier * This,
+ /* [out] */ IDXSurface **ppSurface);
+
+
+void __RPC_STUB IDXSurfaceModifier_GetBackground_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetCompositeOperation_Proxy(
+ IDXSurfaceModifier * This,
+ /* [in] */ DXSURFMODCOMPOP CompOp);
+
+
+void __RPC_STUB IDXSurfaceModifier_SetCompositeOperation_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetCompositeOperation_Proxy(
+ IDXSurfaceModifier * This,
+ /* [out] */ DXSURFMODCOMPOP *pCompOp);
+
+
+void __RPC_STUB IDXSurfaceModifier_GetCompositeOperation_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetForeground_Proxy(
+ IDXSurfaceModifier * This,
+ /* [in] */ IDXSurface *pSurface,
+ /* [in] */ BOOL bTile,
+ /* [in] */ const POINT *pOrigin);
+
+
+void __RPC_STUB IDXSurfaceModifier_SetForeground_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetForeground_Proxy(
+ IDXSurfaceModifier * This,
+ /* [out] */ IDXSurface **ppSurface,
+ /* [out] */ BOOL *pbTile,
+ /* [out] */ POINT *pOrigin);
+
+
+void __RPC_STUB IDXSurfaceModifier_GetForeground_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetOpacity_Proxy(
+ IDXSurfaceModifier * This,
+ /* [in] */ float Opacity);
+
+
+void __RPC_STUB IDXSurfaceModifier_SetOpacity_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetOpacity_Proxy(
+ IDXSurfaceModifier * This,
+ /* [out] */ float *pOpacity);
+
+
+void __RPC_STUB IDXSurfaceModifier_GetOpacity_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_SetLookup_Proxy(
+ IDXSurfaceModifier * This,
+ /* [in] */ IDXLookupTable *pLookupTable);
+
+
+void __RPC_STUB IDXSurfaceModifier_SetLookup_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceModifier_GetLookup_Proxy(
+ IDXSurfaceModifier * This,
+ /* [out] */ IDXLookupTable **ppLookupTable);
+
+
+void __RPC_STUB IDXSurfaceModifier_GetLookup_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXSurfaceModifier_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_dxtrans_0267 */
+/* [local] */
+
+typedef
+enum DXSAMPLEFORMATENUM
+ { DXPF_FLAGSMASK = 0xffff0000,
+ DXPF_NONPREMULT = 0x10000,
+ DXPF_TRANSPARENCY = 0x20000,
+ DXPF_TRANSLUCENCY = 0x40000,
+ DXPF_2BITERROR = 0x200000,
+ DXPF_3BITERROR = 0x300000,
+ DXPF_4BITERROR = 0x400000,
+ DXPF_5BITERROR = 0x500000,
+ DXPF_ERRORMASK = 0x700000,
+ DXPF_NONSTANDARD = 0,
+ DXPF_PMARGB32 = 1 | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY,
+ DXPF_ARGB32 = 2 | DXPF_NONPREMULT | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY,
+ DXPF_ARGB4444 = 3 | DXPF_NONPREMULT | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY | DXPF_4BITERROR,
+ DXPF_A8 = 4 | DXPF_TRANSPARENCY | DXPF_TRANSLUCENCY,
+ DXPF_RGB32 = 5,
+ DXPF_RGB24 = 6,
+ DXPF_RGB565 = 7 | DXPF_3BITERROR,
+ DXPF_RGB555 = 8 | DXPF_3BITERROR,
+ DXPF_RGB8 = 9 | DXPF_5BITERROR,
+ DXPF_ARGB1555 = 10 | DXPF_TRANSPARENCY | DXPF_3BITERROR,
+ DXPF_RGB32_CK = DXPF_RGB32 | DXPF_TRANSPARENCY,
+ DXPF_RGB24_CK = DXPF_RGB24 | DXPF_TRANSPARENCY,
+ DXPF_RGB555_CK = DXPF_RGB555 | DXPF_TRANSPARENCY,
+ DXPF_RGB565_CK = DXPF_RGB565 | DXPF_TRANSPARENCY,
+ DXPF_RGB8_CK = DXPF_RGB8 | DXPF_TRANSPARENCY
+ } DXSAMPLEFORMATENUM;
+
+typedef
+enum DXLOCKSURF
+ { DXLOCKF_READ = 0,
+ DXLOCKF_READWRITE = 1 << 0,
+ DXLOCKF_EXISTINGINFOONLY = 1 << 1,
+ DXLOCKF_WANTRUNINFO = 1 << 2,
+ DXLOCKF_NONPREMULT = 1 << 16,
+ DXLOCKF_VALIDFLAGS = DXLOCKF_READWRITE | DXLOCKF_EXISTINGINFOONLY | DXLOCKF_WANTRUNINFO | DXLOCKF_NONPREMULT
+ } DXLOCKSURF;
+
+typedef
+enum DXSURFSTATUS
+ { DXSURF_TRANSIENT = 1 << 0,
+ DXSURF_READONLY = 1 << 1,
+ DXSURF_VALIDFLAGS = DXSURF_TRANSIENT | DXSURF_READONLY
+ } DXSURFSTATUS;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0267_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0267_v0_0_s_ifspec;
+
+#ifndef __IDXSurface_INTERFACE_DEFINED__
+#define __IDXSurface_INTERFACE_DEFINED__
+
+/* interface IDXSurface */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXSurface;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("B39FD73F-E139-11d1-9065-00C04FD9189D")
+ IDXSurface : public IDXBaseObject
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetPixelFormat(
+ /* [out] */ GUID *pFormatID,
+ /* [out] */ DXSAMPLEFORMATENUM *pSampleFormatEnum) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetBounds(
+ /* [out] */ DXBNDS *pBounds) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetStatusFlags(
+ /* [out] */ DWORD *pdwStatusFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetStatusFlags(
+ /* [in] */ DWORD dwStatusFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LockSurface(
+ /* [in] */ const DXBNDS *pBounds,
+ /* [in] */ ULONG ulTimeOut,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppPointer,
+ /* [out] */ ULONG *pulGenerationId) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDirectDrawSurface(
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppSurface) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetColorKey(
+ DXSAMPLE *pColorKey) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetColorKey(
+ DXSAMPLE ColorKey) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE LockSurfaceDC(
+ /* [in] */ const DXBNDS *pBounds,
+ /* [in] */ ULONG ulTimeOut,
+ /* [in] */ DWORD dwFlags,
+ /* [out] */ IDXDCLock **ppDCLock) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetAppData(
+ DWORD_PTR dwAppData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetAppData(
+ DWORD_PTR *pdwAppData) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXSurfaceVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXSurface * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXSurface * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXSurface * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetGenerationId )(
+ IDXSurface * This,
+ /* [out] */ ULONG *pID);
+
+ HRESULT ( STDMETHODCALLTYPE *IncrementGenerationId )(
+ IDXSurface * This,
+ /* [in] */ BOOL bRefresh);
+
+ HRESULT ( STDMETHODCALLTYPE *GetObjectSize )(
+ IDXSurface * This,
+ /* [out] */ ULONG *pcbSize);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPixelFormat )(
+ IDXSurface * This,
+ /* [out] */ GUID *pFormatID,
+ /* [out] */ DXSAMPLEFORMATENUM *pSampleFormatEnum);
+
+ HRESULT ( STDMETHODCALLTYPE *GetBounds )(
+ IDXSurface * This,
+ /* [out] */ DXBNDS *pBounds);
+
+ HRESULT ( STDMETHODCALLTYPE *GetStatusFlags )(
+ IDXSurface * This,
+ /* [out] */ DWORD *pdwStatusFlags);
+
+ HRESULT ( STDMETHODCALLTYPE *SetStatusFlags )(
+ IDXSurface * This,
+ /* [in] */ DWORD dwStatusFlags);
+
+ HRESULT ( STDMETHODCALLTYPE *LockSurface )(
+ IDXSurface * This,
+ /* [in] */ const DXBNDS *pBounds,
+ /* [in] */ ULONG ulTimeOut,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppPointer,
+ /* [out] */ ULONG *pulGenerationId);
+
+ HRESULT ( STDMETHODCALLTYPE *GetDirectDrawSurface )(
+ IDXSurface * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppSurface);
+
+ HRESULT ( STDMETHODCALLTYPE *GetColorKey )(
+ IDXSurface * This,
+ DXSAMPLE *pColorKey);
+
+ HRESULT ( STDMETHODCALLTYPE *SetColorKey )(
+ IDXSurface * This,
+ DXSAMPLE ColorKey);
+
+ HRESULT ( STDMETHODCALLTYPE *LockSurfaceDC )(
+ IDXSurface * This,
+ /* [in] */ const DXBNDS *pBounds,
+ /* [in] */ ULONG ulTimeOut,
+ /* [in] */ DWORD dwFlags,
+ /* [out] */ IDXDCLock **ppDCLock);
+
+ HRESULT ( STDMETHODCALLTYPE *SetAppData )(
+ IDXSurface * This,
+ DWORD_PTR dwAppData);
+
+ HRESULT ( STDMETHODCALLTYPE *GetAppData )(
+ IDXSurface * This,
+ DWORD_PTR *pdwAppData);
+
+ END_INTERFACE
+ } IDXSurfaceVtbl;
+
+ interface IDXSurface
+ {
+ CONST_VTBL struct IDXSurfaceVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXSurface_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXSurface_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXSurface_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXSurface_GetGenerationId(This,pID) \
+ (This)->lpVtbl -> GetGenerationId(This,pID)
+
+#define IDXSurface_IncrementGenerationId(This,bRefresh) \
+ (This)->lpVtbl -> IncrementGenerationId(This,bRefresh)
+
+#define IDXSurface_GetObjectSize(This,pcbSize) \
+ (This)->lpVtbl -> GetObjectSize(This,pcbSize)
+
+
+#define IDXSurface_GetPixelFormat(This,pFormatID,pSampleFormatEnum) \
+ (This)->lpVtbl -> GetPixelFormat(This,pFormatID,pSampleFormatEnum)
+
+#define IDXSurface_GetBounds(This,pBounds) \
+ (This)->lpVtbl -> GetBounds(This,pBounds)
+
+#define IDXSurface_GetStatusFlags(This,pdwStatusFlags) \
+ (This)->lpVtbl -> GetStatusFlags(This,pdwStatusFlags)
+
+#define IDXSurface_SetStatusFlags(This,dwStatusFlags) \
+ (This)->lpVtbl -> SetStatusFlags(This,dwStatusFlags)
+
+#define IDXSurface_LockSurface(This,pBounds,ulTimeOut,dwFlags,riid,ppPointer,pulGenerationId) \
+ (This)->lpVtbl -> LockSurface(This,pBounds,ulTimeOut,dwFlags,riid,ppPointer,pulGenerationId)
+
+#define IDXSurface_GetDirectDrawSurface(This,riid,ppSurface) \
+ (This)->lpVtbl -> GetDirectDrawSurface(This,riid,ppSurface)
+
+#define IDXSurface_GetColorKey(This,pColorKey) \
+ (This)->lpVtbl -> GetColorKey(This,pColorKey)
+
+#define IDXSurface_SetColorKey(This,ColorKey) \
+ (This)->lpVtbl -> SetColorKey(This,ColorKey)
+
+#define IDXSurface_LockSurfaceDC(This,pBounds,ulTimeOut,dwFlags,ppDCLock) \
+ (This)->lpVtbl -> LockSurfaceDC(This,pBounds,ulTimeOut,dwFlags,ppDCLock)
+
+#define IDXSurface_SetAppData(This,dwAppData) \
+ (This)->lpVtbl -> SetAppData(This,dwAppData)
+
+#define IDXSurface_GetAppData(This,pdwAppData) \
+ (This)->lpVtbl -> GetAppData(This,pdwAppData)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDXSurface_GetPixelFormat_Proxy(
+ IDXSurface * This,
+ /* [out] */ GUID *pFormatID,
+ /* [out] */ DXSAMPLEFORMATENUM *pSampleFormatEnum);
+
+
+void __RPC_STUB IDXSurface_GetPixelFormat_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurface_GetBounds_Proxy(
+ IDXSurface * This,
+ /* [out] */ DXBNDS *pBounds);
+
+
+void __RPC_STUB IDXSurface_GetBounds_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurface_GetStatusFlags_Proxy(
+ IDXSurface * This,
+ /* [out] */ DWORD *pdwStatusFlags);
+
+
+void __RPC_STUB IDXSurface_GetStatusFlags_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurface_SetStatusFlags_Proxy(
+ IDXSurface * This,
+ /* [in] */ DWORD dwStatusFlags);
+
+
+void __RPC_STUB IDXSurface_SetStatusFlags_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurface_LockSurface_Proxy(
+ IDXSurface * This,
+ /* [in] */ const DXBNDS *pBounds,
+ /* [in] */ ULONG ulTimeOut,
+ /* [in] */ DWORD dwFlags,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppPointer,
+ /* [out] */ ULONG *pulGenerationId);
+
+
+void __RPC_STUB IDXSurface_LockSurface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurface_GetDirectDrawSurface_Proxy(
+ IDXSurface * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppSurface);
+
+
+void __RPC_STUB IDXSurface_GetDirectDrawSurface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurface_GetColorKey_Proxy(
+ IDXSurface * This,
+ DXSAMPLE *pColorKey);
+
+
+void __RPC_STUB IDXSurface_GetColorKey_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurface_SetColorKey_Proxy(
+ IDXSurface * This,
+ DXSAMPLE ColorKey);
+
+
+void __RPC_STUB IDXSurface_SetColorKey_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurface_LockSurfaceDC_Proxy(
+ IDXSurface * This,
+ /* [in] */ const DXBNDS *pBounds,
+ /* [in] */ ULONG ulTimeOut,
+ /* [in] */ DWORD dwFlags,
+ /* [out] */ IDXDCLock **ppDCLock);
+
+
+void __RPC_STUB IDXSurface_LockSurfaceDC_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurface_SetAppData_Proxy(
+ IDXSurface * This,
+ DWORD_PTR dwAppData);
+
+
+void __RPC_STUB IDXSurface_SetAppData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXSurface_GetAppData_Proxy(
+ IDXSurface * This,
+ DWORD_PTR *pdwAppData);
+
+
+void __RPC_STUB IDXSurface_GetAppData_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXSurface_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDXSurfaceInit_INTERFACE_DEFINED__
+#define __IDXSurfaceInit_INTERFACE_DEFINED__
+
+/* interface IDXSurfaceInit */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXSurfaceInit;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9EA3B639-C37D-11d1-905E-00C04FD9189D")
+ IDXSurfaceInit : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE InitSurface(
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ const DXBNDS *pBounds,
+ /* [in] */ DWORD dwFlags) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXSurfaceInitVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXSurfaceInit * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXSurfaceInit * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXSurfaceInit * This);
+
+ HRESULT ( STDMETHODCALLTYPE *InitSurface )(
+ IDXSurfaceInit * This,
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ const DXBNDS *pBounds,
+ /* [in] */ DWORD dwFlags);
+
+ END_INTERFACE
+ } IDXSurfaceInitVtbl;
+
+ interface IDXSurfaceInit
+ {
+ CONST_VTBL struct IDXSurfaceInitVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXSurfaceInit_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXSurfaceInit_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXSurfaceInit_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXSurfaceInit_InitSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags) \
+ (This)->lpVtbl -> InitSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDXSurfaceInit_InitSurface_Proxy(
+ IDXSurfaceInit * This,
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ const DXBNDS *pBounds,
+ /* [in] */ DWORD dwFlags);
+
+
+void __RPC_STUB IDXSurfaceInit_InitSurface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXSurfaceInit_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDXARGBSurfaceInit_INTERFACE_DEFINED__
+#define __IDXARGBSurfaceInit_INTERFACE_DEFINED__
+
+/* interface IDXARGBSurfaceInit */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXARGBSurfaceInit;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9EA3B63A-C37D-11d1-905E-00C04FD9189D")
+ IDXARGBSurfaceInit : public IDXSurfaceInit
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE InitFromDDSurface(
+ /* [in] */ IUnknown *pDDrawSurface,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ DWORD dwFlags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE InitFromRawSurface(
+ /* [in] */ IDXRawSurface *pRawSurface) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXARGBSurfaceInitVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXARGBSurfaceInit * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXARGBSurfaceInit * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXARGBSurfaceInit * This);
+
+ HRESULT ( STDMETHODCALLTYPE *InitSurface )(
+ IDXARGBSurfaceInit * This,
+ /* [in] */ IUnknown *pDirectDraw,
+ /* [in] */ const DDSURFACEDESC *pDDSurfaceDesc,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ const DXBNDS *pBounds,
+ /* [in] */ DWORD dwFlags);
+
+ HRESULT ( STDMETHODCALLTYPE *InitFromDDSurface )(
+ IDXARGBSurfaceInit * This,
+ /* [in] */ IUnknown *pDDrawSurface,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ DWORD dwFlags);
+
+ HRESULT ( STDMETHODCALLTYPE *InitFromRawSurface )(
+ IDXARGBSurfaceInit * This,
+ /* [in] */ IDXRawSurface *pRawSurface);
+
+ END_INTERFACE
+ } IDXARGBSurfaceInitVtbl;
+
+ interface IDXARGBSurfaceInit
+ {
+ CONST_VTBL struct IDXARGBSurfaceInitVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXARGBSurfaceInit_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXARGBSurfaceInit_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXARGBSurfaceInit_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXARGBSurfaceInit_InitSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags) \
+ (This)->lpVtbl -> InitSurface(This,pDirectDraw,pDDSurfaceDesc,pFormatID,pBounds,dwFlags)
+
+
+#define IDXARGBSurfaceInit_InitFromDDSurface(This,pDDrawSurface,pFormatID,dwFlags) \
+ (This)->lpVtbl -> InitFromDDSurface(This,pDDrawSurface,pFormatID,dwFlags)
+
+#define IDXARGBSurfaceInit_InitFromRawSurface(This,pRawSurface) \
+ (This)->lpVtbl -> InitFromRawSurface(This,pRawSurface)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDXARGBSurfaceInit_InitFromDDSurface_Proxy(
+ IDXARGBSurfaceInit * This,
+ /* [in] */ IUnknown *pDDrawSurface,
+ /* [in] */ const GUID *pFormatID,
+ /* [in] */ DWORD dwFlags);
+
+
+void __RPC_STUB IDXARGBSurfaceInit_InitFromDDSurface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXARGBSurfaceInit_InitFromRawSurface_Proxy(
+ IDXARGBSurfaceInit * This,
+ /* [in] */ IDXRawSurface *pRawSurface);
+
+
+void __RPC_STUB IDXARGBSurfaceInit_InitFromRawSurface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXARGBSurfaceInit_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_dxtrans_0270 */
+/* [local] */
+
+typedef struct tagDXNATIVETYPEINFO
+ {
+ BYTE *pCurrentData;
+ BYTE *pFirstByte;
+ long lPitch;
+ DWORD dwColorKey;
+ } DXNATIVETYPEINFO;
+
+typedef struct tagDXPACKEDRECTDESC
+ {
+ DXBASESAMPLE *pSamples;
+ BOOL bPremult;
+ RECT rect;
+ long lRowPadding;
+ } DXPACKEDRECTDESC;
+
+typedef struct tagDXOVERSAMPLEDESC
+ {
+ POINT p;
+ DXPMSAMPLE Color;
+ } DXOVERSAMPLEDESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0270_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0270_v0_0_s_ifspec;
+
+#ifndef __IDXARGBReadPtr_INTERFACE_DEFINED__
+#define __IDXARGBReadPtr_INTERFACE_DEFINED__
+
+/* interface IDXARGBReadPtr */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXARGBReadPtr;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("EAAAC2D6-C290-11d1-905D-00C04FD9189D")
+ IDXARGBReadPtr : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetSurface(
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppSurface) = 0;
+
+ virtual DXSAMPLEFORMATENUM STDMETHODCALLTYPE GetNativeType(
+ /* [out] */ DXNATIVETYPEINFO *pInfo) = 0;
+
+ virtual void STDMETHODCALLTYPE Move(
+ /* [in] */ long cSamples) = 0;
+
+ virtual void STDMETHODCALLTYPE MoveToRow(
+ /* [in] */ ULONG y) = 0;
+
+ virtual void STDMETHODCALLTYPE MoveToXY(
+ /* [in] */ ULONG x,
+ /* [in] */ ULONG y) = 0;
+
+ virtual ULONG STDMETHODCALLTYPE MoveAndGetRunInfo(
+ /* [in] */ ULONG Row,
+ /* [out] */ const DXRUNINFO **ppInfo) = 0;
+
+ virtual DXSAMPLE *STDMETHODCALLTYPE Unpack(
+ /* [in] */ DXSAMPLE *pSamples,
+ /* [in] */ ULONG cSamples,
+ /* [in] */ BOOL bMove) = 0;
+
+ virtual DXPMSAMPLE *STDMETHODCALLTYPE UnpackPremult(
+ /* [in] */ DXPMSAMPLE *pSamples,
+ /* [in] */ ULONG cSamples,
+ /* [in] */ BOOL bMove) = 0;
+
+ virtual void STDMETHODCALLTYPE UnpackRect(
+ /* [in] */ const DXPACKEDRECTDESC *pRectDesc) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXARGBReadPtrVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXARGBReadPtr * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXARGBReadPtr * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXARGBReadPtr * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetSurface )(
+ IDXARGBReadPtr * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppSurface);
+
+ DXSAMPLEFORMATENUM ( STDMETHODCALLTYPE *GetNativeType )(
+ IDXARGBReadPtr * This,
+ /* [out] */ DXNATIVETYPEINFO *pInfo);
+
+ void ( STDMETHODCALLTYPE *Move )(
+ IDXARGBReadPtr * This,
+ /* [in] */ long cSamples);
+
+ void ( STDMETHODCALLTYPE *MoveToRow )(
+ IDXARGBReadPtr * This,
+ /* [in] */ ULONG y);
+
+ void ( STDMETHODCALLTYPE *MoveToXY )(
+ IDXARGBReadPtr * This,
+ /* [in] */ ULONG x,
+ /* [in] */ ULONG y);
+
+ ULONG ( STDMETHODCALLTYPE *MoveAndGetRunInfo )(
+ IDXARGBReadPtr * This,
+ /* [in] */ ULONG Row,
+ /* [out] */ const DXRUNINFO **ppInfo);
+
+ DXSAMPLE *( STDMETHODCALLTYPE *Unpack )(
+ IDXARGBReadPtr * This,
+ /* [in] */ DXSAMPLE *pSamples,
+ /* [in] */ ULONG cSamples,
+ /* [in] */ BOOL bMove);
+
+ DXPMSAMPLE *( STDMETHODCALLTYPE *UnpackPremult )(
+ IDXARGBReadPtr * This,
+ /* [in] */ DXPMSAMPLE *pSamples,
+ /* [in] */ ULONG cSamples,
+ /* [in] */ BOOL bMove);
+
+ void ( STDMETHODCALLTYPE *UnpackRect )(
+ IDXARGBReadPtr * This,
+ /* [in] */ const DXPACKEDRECTDESC *pRectDesc);
+
+ END_INTERFACE
+ } IDXARGBReadPtrVtbl;
+
+ interface IDXARGBReadPtr
+ {
+ CONST_VTBL struct IDXARGBReadPtrVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXARGBReadPtr_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXARGBReadPtr_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXARGBReadPtr_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXARGBReadPtr_GetSurface(This,riid,ppSurface) \
+ (This)->lpVtbl -> GetSurface(This,riid,ppSurface)
+
+#define IDXARGBReadPtr_GetNativeType(This,pInfo) \
+ (This)->lpVtbl -> GetNativeType(This,pInfo)
+
+#define IDXARGBReadPtr_Move(This,cSamples) \
+ (This)->lpVtbl -> Move(This,cSamples)
+
+#define IDXARGBReadPtr_MoveToRow(This,y) \
+ (This)->lpVtbl -> MoveToRow(This,y)
+
+#define IDXARGBReadPtr_MoveToXY(This,x,y) \
+ (This)->lpVtbl -> MoveToXY(This,x,y)
+
+#define IDXARGBReadPtr_MoveAndGetRunInfo(This,Row,ppInfo) \
+ (This)->lpVtbl -> MoveAndGetRunInfo(This,Row,ppInfo)
+
+#define IDXARGBReadPtr_Unpack(This,pSamples,cSamples,bMove) \
+ (This)->lpVtbl -> Unpack(This,pSamples,cSamples,bMove)
+
+#define IDXARGBReadPtr_UnpackPremult(This,pSamples,cSamples,bMove) \
+ (This)->lpVtbl -> UnpackPremult(This,pSamples,cSamples,bMove)
+
+#define IDXARGBReadPtr_UnpackRect(This,pRectDesc) \
+ (This)->lpVtbl -> UnpackRect(This,pRectDesc)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDXARGBReadPtr_GetSurface_Proxy(
+ IDXARGBReadPtr * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppSurface);
+
+
+void __RPC_STUB IDXARGBReadPtr_GetSurface_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+DXSAMPLEFORMATENUM STDMETHODCALLTYPE IDXARGBReadPtr_GetNativeType_Proxy(
+ IDXARGBReadPtr * This,
+ /* [out] */ DXNATIVETYPEINFO *pInfo);
+
+
+void __RPC_STUB IDXARGBReadPtr_GetNativeType_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IDXARGBReadPtr_Move_Proxy(
+ IDXARGBReadPtr * This,
+ /* [in] */ long cSamples);
+
+
+void __RPC_STUB IDXARGBReadPtr_Move_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IDXARGBReadPtr_MoveToRow_Proxy(
+ IDXARGBReadPtr * This,
+ /* [in] */ ULONG y);
+
+
+void __RPC_STUB IDXARGBReadPtr_MoveToRow_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IDXARGBReadPtr_MoveToXY_Proxy(
+ IDXARGBReadPtr * This,
+ /* [in] */ ULONG x,
+ /* [in] */ ULONG y);
+
+
+void __RPC_STUB IDXARGBReadPtr_MoveToXY_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+ULONG STDMETHODCALLTYPE IDXARGBReadPtr_MoveAndGetRunInfo_Proxy(
+ IDXARGBReadPtr * This,
+ /* [in] */ ULONG Row,
+ /* [out] */ const DXRUNINFO **ppInfo);
+
+
+void __RPC_STUB IDXARGBReadPtr_MoveAndGetRunInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+DXSAMPLE *STDMETHODCALLTYPE IDXARGBReadPtr_Unpack_Proxy(
+ IDXARGBReadPtr * This,
+ /* [in] */ DXSAMPLE *pSamples,
+ /* [in] */ ULONG cSamples,
+ /* [in] */ BOOL bMove);
+
+
+void __RPC_STUB IDXARGBReadPtr_Unpack_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+DXPMSAMPLE *STDMETHODCALLTYPE IDXARGBReadPtr_UnpackPremult_Proxy(
+ IDXARGBReadPtr * This,
+ /* [in] */ DXPMSAMPLE *pSamples,
+ /* [in] */ ULONG cSamples,
+ /* [in] */ BOOL bMove);
+
+
+void __RPC_STUB IDXARGBReadPtr_UnpackPremult_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IDXARGBReadPtr_UnpackRect_Proxy(
+ IDXARGBReadPtr * This,
+ /* [in] */ const DXPACKEDRECTDESC *pRectDesc);
+
+
+void __RPC_STUB IDXARGBReadPtr_UnpackRect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXARGBReadPtr_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDXARGBReadWritePtr_INTERFACE_DEFINED__
+#define __IDXARGBReadWritePtr_INTERFACE_DEFINED__
+
+/* interface IDXARGBReadWritePtr */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXARGBReadWritePtr;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("EAAAC2D7-C290-11d1-905D-00C04FD9189D")
+ IDXARGBReadWritePtr : public IDXARGBReadPtr
+ {
+ public:
+ virtual void STDMETHODCALLTYPE PackAndMove(
+ /* [in] */ const DXSAMPLE *pSamples,
+ /* [in] */ ULONG cSamples) = 0;
+
+ virtual void STDMETHODCALLTYPE PackPremultAndMove(
+ /* [in] */ const DXPMSAMPLE *pSamples,
+ /* [in] */ ULONG cSamples) = 0;
+
+ virtual void STDMETHODCALLTYPE PackRect(
+ /* [in] */ const DXPACKEDRECTDESC *pRectDesc) = 0;
+
+ virtual void STDMETHODCALLTYPE CopyAndMoveBoth(
+ /* [in] */ DXBASESAMPLE *pScratchBuffer,
+ /* [in] */ IDXARGBReadPtr *pSrc,
+ /* [in] */ ULONG cSamples,
+ /* [in] */ BOOL bIsOpaque) = 0;
+
+ virtual void STDMETHODCALLTYPE CopyRect(
+ /* [in] */ DXBASESAMPLE *pScratchBuffer,
+ /* [in] */ const RECT *pDestRect,
+ /* [in] */ IDXARGBReadPtr *pSrc,
+ /* [in] */ const POINT *pSrcOrigin,
+ /* [in] */ BOOL bIsOpaque) = 0;
+
+ virtual void STDMETHODCALLTYPE FillAndMove(
+ /* [in] */ DXBASESAMPLE *pScratchBuffer,
+ /* [in] */ DXPMSAMPLE SampVal,
+ /* [in] */ ULONG cSamples,
+ /* [in] */ BOOL bDoOver) = 0;
+
+ virtual void STDMETHODCALLTYPE FillRect(
+ /* [in] */ const RECT *pRect,
+ /* [in] */ DXPMSAMPLE SampVal,
+ /* [in] */ BOOL bDoOver) = 0;
+
+ virtual void STDMETHODCALLTYPE OverSample(
+ /* [in] */ const DXOVERSAMPLEDESC *pOverDesc) = 0;
+
+ virtual void STDMETHODCALLTYPE OverArrayAndMove(
+ /* [in] */ DXBASESAMPLE *pScratchBuffer,
+ /* [in] */ const DXPMSAMPLE *pSrc,
+ /* [in] */ ULONG cSamples) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXARGBReadWritePtrVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXARGBReadWritePtr * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXARGBReadWritePtr * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetSurface )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppSurface);
+
+ DXSAMPLEFORMATENUM ( STDMETHODCALLTYPE *GetNativeType )(
+ IDXARGBReadWritePtr * This,
+ /* [out] */ DXNATIVETYPEINFO *pInfo);
+
+ void ( STDMETHODCALLTYPE *Move )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ long cSamples);
+
+ void ( STDMETHODCALLTYPE *MoveToRow )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ ULONG y);
+
+ void ( STDMETHODCALLTYPE *MoveToXY )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ ULONG x,
+ /* [in] */ ULONG y);
+
+ ULONG ( STDMETHODCALLTYPE *MoveAndGetRunInfo )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ ULONG Row,
+ /* [out] */ const DXRUNINFO **ppInfo);
+
+ DXSAMPLE *( STDMETHODCALLTYPE *Unpack )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ DXSAMPLE *pSamples,
+ /* [in] */ ULONG cSamples,
+ /* [in] */ BOOL bMove);
+
+ DXPMSAMPLE *( STDMETHODCALLTYPE *UnpackPremult )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ DXPMSAMPLE *pSamples,
+ /* [in] */ ULONG cSamples,
+ /* [in] */ BOOL bMove);
+
+ void ( STDMETHODCALLTYPE *UnpackRect )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ const DXPACKEDRECTDESC *pRectDesc);
+
+ void ( STDMETHODCALLTYPE *PackAndMove )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ const DXSAMPLE *pSamples,
+ /* [in] */ ULONG cSamples);
+
+ void ( STDMETHODCALLTYPE *PackPremultAndMove )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ const DXPMSAMPLE *pSamples,
+ /* [in] */ ULONG cSamples);
+
+ void ( STDMETHODCALLTYPE *PackRect )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ const DXPACKEDRECTDESC *pRectDesc);
+
+ void ( STDMETHODCALLTYPE *CopyAndMoveBoth )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ DXBASESAMPLE *pScratchBuffer,
+ /* [in] */ IDXARGBReadPtr *pSrc,
+ /* [in] */ ULONG cSamples,
+ /* [in] */ BOOL bIsOpaque);
+
+ void ( STDMETHODCALLTYPE *CopyRect )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ DXBASESAMPLE *pScratchBuffer,
+ /* [in] */ const RECT *pDestRect,
+ /* [in] */ IDXARGBReadPtr *pSrc,
+ /* [in] */ const POINT *pSrcOrigin,
+ /* [in] */ BOOL bIsOpaque);
+
+ void ( STDMETHODCALLTYPE *FillAndMove )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ DXBASESAMPLE *pScratchBuffer,
+ /* [in] */ DXPMSAMPLE SampVal,
+ /* [in] */ ULONG cSamples,
+ /* [in] */ BOOL bDoOver);
+
+ void ( STDMETHODCALLTYPE *FillRect )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ const RECT *pRect,
+ /* [in] */ DXPMSAMPLE SampVal,
+ /* [in] */ BOOL bDoOver);
+
+ void ( STDMETHODCALLTYPE *OverSample )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ const DXOVERSAMPLEDESC *pOverDesc);
+
+ void ( STDMETHODCALLTYPE *OverArrayAndMove )(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ DXBASESAMPLE *pScratchBuffer,
+ /* [in] */ const DXPMSAMPLE *pSrc,
+ /* [in] */ ULONG cSamples);
+
+ END_INTERFACE
+ } IDXARGBReadWritePtrVtbl;
+
+ interface IDXARGBReadWritePtr
+ {
+ CONST_VTBL struct IDXARGBReadWritePtrVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXARGBReadWritePtr_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXARGBReadWritePtr_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXARGBReadWritePtr_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXARGBReadWritePtr_GetSurface(This,riid,ppSurface) \
+ (This)->lpVtbl -> GetSurface(This,riid,ppSurface)
+
+#define IDXARGBReadWritePtr_GetNativeType(This,pInfo) \
+ (This)->lpVtbl -> GetNativeType(This,pInfo)
+
+#define IDXARGBReadWritePtr_Move(This,cSamples) \
+ (This)->lpVtbl -> Move(This,cSamples)
+
+#define IDXARGBReadWritePtr_MoveToRow(This,y) \
+ (This)->lpVtbl -> MoveToRow(This,y)
+
+#define IDXARGBReadWritePtr_MoveToXY(This,x,y) \
+ (This)->lpVtbl -> MoveToXY(This,x,y)
+
+#define IDXARGBReadWritePtr_MoveAndGetRunInfo(This,Row,ppInfo) \
+ (This)->lpVtbl -> MoveAndGetRunInfo(This,Row,ppInfo)
+
+#define IDXARGBReadWritePtr_Unpack(This,pSamples,cSamples,bMove) \
+ (This)->lpVtbl -> Unpack(This,pSamples,cSamples,bMove)
+
+#define IDXARGBReadWritePtr_UnpackPremult(This,pSamples,cSamples,bMove) \
+ (This)->lpVtbl -> UnpackPremult(This,pSamples,cSamples,bMove)
+
+#define IDXARGBReadWritePtr_UnpackRect(This,pRectDesc) \
+ (This)->lpVtbl -> UnpackRect(This,pRectDesc)
+
+
+#define IDXARGBReadWritePtr_PackAndMove(This,pSamples,cSamples) \
+ (This)->lpVtbl -> PackAndMove(This,pSamples,cSamples)
+
+#define IDXARGBReadWritePtr_PackPremultAndMove(This,pSamples,cSamples) \
+ (This)->lpVtbl -> PackPremultAndMove(This,pSamples,cSamples)
+
+#define IDXARGBReadWritePtr_PackRect(This,pRectDesc) \
+ (This)->lpVtbl -> PackRect(This,pRectDesc)
+
+#define IDXARGBReadWritePtr_CopyAndMoveBoth(This,pScratchBuffer,pSrc,cSamples,bIsOpaque) \
+ (This)->lpVtbl -> CopyAndMoveBoth(This,pScratchBuffer,pSrc,cSamples,bIsOpaque)
+
+#define IDXARGBReadWritePtr_CopyRect(This,pScratchBuffer,pDestRect,pSrc,pSrcOrigin,bIsOpaque) \
+ (This)->lpVtbl -> CopyRect(This,pScratchBuffer,pDestRect,pSrc,pSrcOrigin,bIsOpaque)
+
+#define IDXARGBReadWritePtr_FillAndMove(This,pScratchBuffer,SampVal,cSamples,bDoOver) \
+ (This)->lpVtbl -> FillAndMove(This,pScratchBuffer,SampVal,cSamples,bDoOver)
+
+#define IDXARGBReadWritePtr_FillRect(This,pRect,SampVal,bDoOver) \
+ (This)->lpVtbl -> FillRect(This,pRect,SampVal,bDoOver)
+
+#define IDXARGBReadWritePtr_OverSample(This,pOverDesc) \
+ (This)->lpVtbl -> OverSample(This,pOverDesc)
+
+#define IDXARGBReadWritePtr_OverArrayAndMove(This,pScratchBuffer,pSrc,cSamples) \
+ (This)->lpVtbl -> OverArrayAndMove(This,pScratchBuffer,pSrc,cSamples)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+void STDMETHODCALLTYPE IDXARGBReadWritePtr_PackAndMove_Proxy(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ const DXSAMPLE *pSamples,
+ /* [in] */ ULONG cSamples);
+
+
+void __RPC_STUB IDXARGBReadWritePtr_PackAndMove_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IDXARGBReadWritePtr_PackPremultAndMove_Proxy(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ const DXPMSAMPLE *pSamples,
+ /* [in] */ ULONG cSamples);
+
+
+void __RPC_STUB IDXARGBReadWritePtr_PackPremultAndMove_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IDXARGBReadWritePtr_PackRect_Proxy(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ const DXPACKEDRECTDESC *pRectDesc);
+
+
+void __RPC_STUB IDXARGBReadWritePtr_PackRect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IDXARGBReadWritePtr_CopyAndMoveBoth_Proxy(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ DXBASESAMPLE *pScratchBuffer,
+ /* [in] */ IDXARGBReadPtr *pSrc,
+ /* [in] */ ULONG cSamples,
+ /* [in] */ BOOL bIsOpaque);
+
+
+void __RPC_STUB IDXARGBReadWritePtr_CopyAndMoveBoth_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IDXARGBReadWritePtr_CopyRect_Proxy(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ DXBASESAMPLE *pScratchBuffer,
+ /* [in] */ const RECT *pDestRect,
+ /* [in] */ IDXARGBReadPtr *pSrc,
+ /* [in] */ const POINT *pSrcOrigin,
+ /* [in] */ BOOL bIsOpaque);
+
+
+void __RPC_STUB IDXARGBReadWritePtr_CopyRect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IDXARGBReadWritePtr_FillAndMove_Proxy(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ DXBASESAMPLE *pScratchBuffer,
+ /* [in] */ DXPMSAMPLE SampVal,
+ /* [in] */ ULONG cSamples,
+ /* [in] */ BOOL bDoOver);
+
+
+void __RPC_STUB IDXARGBReadWritePtr_FillAndMove_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IDXARGBReadWritePtr_FillRect_Proxy(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ const RECT *pRect,
+ /* [in] */ DXPMSAMPLE SampVal,
+ /* [in] */ BOOL bDoOver);
+
+
+void __RPC_STUB IDXARGBReadWritePtr_FillRect_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IDXARGBReadWritePtr_OverSample_Proxy(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ const DXOVERSAMPLEDESC *pOverDesc);
+
+
+void __RPC_STUB IDXARGBReadWritePtr_OverSample_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+void STDMETHODCALLTYPE IDXARGBReadWritePtr_OverArrayAndMove_Proxy(
+ IDXARGBReadWritePtr * This,
+ /* [in] */ DXBASESAMPLE *pScratchBuffer,
+ /* [in] */ const DXPMSAMPLE *pSrc,
+ /* [in] */ ULONG cSamples);
+
+
+void __RPC_STUB IDXARGBReadWritePtr_OverArrayAndMove_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXARGBReadWritePtr_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDXDCLock_INTERFACE_DEFINED__
+#define __IDXDCLock_INTERFACE_DEFINED__
+
+/* interface IDXDCLock */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXDCLock;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("0F619456-CF39-11d1-905E-00C04FD9189D")
+ IDXDCLock : public IUnknown
+ {
+ public:
+ virtual HDC STDMETHODCALLTYPE GetDC( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXDCLockVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXDCLock * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXDCLock * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXDCLock * This);
+
+ HDC ( STDMETHODCALLTYPE *GetDC )(
+ IDXDCLock * This);
+
+ END_INTERFACE
+ } IDXDCLockVtbl;
+
+ interface IDXDCLock
+ {
+ CONST_VTBL struct IDXDCLockVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXDCLock_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXDCLock_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXDCLock_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXDCLock_GetDC(This) \
+ (This)->lpVtbl -> GetDC(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HDC STDMETHODCALLTYPE IDXDCLock_GetDC_Proxy(
+ IDXDCLock * This);
+
+
+void __RPC_STUB IDXDCLock_GetDC_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXDCLock_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDXTScaleOutput_INTERFACE_DEFINED__
+#define __IDXTScaleOutput_INTERFACE_DEFINED__
+
+/* interface IDXTScaleOutput */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXTScaleOutput;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("B2024B50-EE77-11d1-9066-00C04FD9189D")
+ IDXTScaleOutput : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetOutputSize(
+ /* [in] */ const SIZE OutSize,
+ /* [in] */ BOOL bMaintainAspect) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXTScaleOutputVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXTScaleOutput * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXTScaleOutput * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXTScaleOutput * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetOutputSize )(
+ IDXTScaleOutput * This,
+ /* [in] */ const SIZE OutSize,
+ /* [in] */ BOOL bMaintainAspect);
+
+ END_INTERFACE
+ } IDXTScaleOutputVtbl;
+
+ interface IDXTScaleOutput
+ {
+ CONST_VTBL struct IDXTScaleOutputVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXTScaleOutput_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXTScaleOutput_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXTScaleOutput_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXTScaleOutput_SetOutputSize(This,OutSize,bMaintainAspect) \
+ (This)->lpVtbl -> SetOutputSize(This,OutSize,bMaintainAspect)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDXTScaleOutput_SetOutputSize_Proxy(
+ IDXTScaleOutput * This,
+ /* [in] */ const SIZE OutSize,
+ /* [in] */ BOOL bMaintainAspect);
+
+
+void __RPC_STUB IDXTScaleOutput_SetOutputSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXTScaleOutput_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDXGradient_INTERFACE_DEFINED__
+#define __IDXGradient_INTERFACE_DEFINED__
+
+/* interface IDXGradient */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXGradient;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("B2024B51-EE77-11d1-9066-00C04FD9189D")
+ IDXGradient : public IDXTScaleOutput
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetGradient(
+ DXSAMPLE StartColor,
+ DXSAMPLE EndColor,
+ BOOL bHorizontal) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetOutputSize(
+ /* [out] */ SIZE *pOutSize) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXGradientVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXGradient * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXGradient * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXGradient * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetOutputSize )(
+ IDXGradient * This,
+ /* [in] */ const SIZE OutSize,
+ /* [in] */ BOOL bMaintainAspect);
+
+ HRESULT ( STDMETHODCALLTYPE *SetGradient )(
+ IDXGradient * This,
+ DXSAMPLE StartColor,
+ DXSAMPLE EndColor,
+ BOOL bHorizontal);
+
+ HRESULT ( STDMETHODCALLTYPE *GetOutputSize )(
+ IDXGradient * This,
+ /* [out] */ SIZE *pOutSize);
+
+ END_INTERFACE
+ } IDXGradientVtbl;
+
+ interface IDXGradient
+ {
+ CONST_VTBL struct IDXGradientVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXGradient_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXGradient_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXGradient_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXGradient_SetOutputSize(This,OutSize,bMaintainAspect) \
+ (This)->lpVtbl -> SetOutputSize(This,OutSize,bMaintainAspect)
+
+
+#define IDXGradient_SetGradient(This,StartColor,EndColor,bHorizontal) \
+ (This)->lpVtbl -> SetGradient(This,StartColor,EndColor,bHorizontal)
+
+#define IDXGradient_GetOutputSize(This,pOutSize) \
+ (This)->lpVtbl -> GetOutputSize(This,pOutSize)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDXGradient_SetGradient_Proxy(
+ IDXGradient * This,
+ DXSAMPLE StartColor,
+ DXSAMPLE EndColor,
+ BOOL bHorizontal);
+
+
+void __RPC_STUB IDXGradient_SetGradient_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXGradient_GetOutputSize_Proxy(
+ IDXGradient * This,
+ /* [out] */ SIZE *pOutSize);
+
+
+void __RPC_STUB IDXGradient_GetOutputSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXGradient_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDXTScale_INTERFACE_DEFINED__
+#define __IDXTScale_INTERFACE_DEFINED__
+
+/* interface IDXTScale */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXTScale;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("B39FD742-E139-11d1-9065-00C04FD9189D")
+ IDXTScale : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetScales(
+ /* [in] */ float Scales[ 2 ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetScales(
+ /* [out] */ float Scales[ 2 ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ScaleFitToSize(
+ /* [out][in] */ DXBNDS *pClipBounds,
+ /* [in] */ SIZE FitToSize,
+ /* [in] */ BOOL bMaintainAspect) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXTScaleVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXTScale * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXTScale * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXTScale * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetScales )(
+ IDXTScale * This,
+ /* [in] */ float Scales[ 2 ]);
+
+ HRESULT ( STDMETHODCALLTYPE *GetScales )(
+ IDXTScale * This,
+ /* [out] */ float Scales[ 2 ]);
+
+ HRESULT ( STDMETHODCALLTYPE *ScaleFitToSize )(
+ IDXTScale * This,
+ /* [out][in] */ DXBNDS *pClipBounds,
+ /* [in] */ SIZE FitToSize,
+ /* [in] */ BOOL bMaintainAspect);
+
+ END_INTERFACE
+ } IDXTScaleVtbl;
+
+ interface IDXTScale
+ {
+ CONST_VTBL struct IDXTScaleVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXTScale_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXTScale_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXTScale_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXTScale_SetScales(This,Scales) \
+ (This)->lpVtbl -> SetScales(This,Scales)
+
+#define IDXTScale_GetScales(This,Scales) \
+ (This)->lpVtbl -> GetScales(This,Scales)
+
+#define IDXTScale_ScaleFitToSize(This,pClipBounds,FitToSize,bMaintainAspect) \
+ (This)->lpVtbl -> ScaleFitToSize(This,pClipBounds,FitToSize,bMaintainAspect)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDXTScale_SetScales_Proxy(
+ IDXTScale * This,
+ /* [in] */ float Scales[ 2 ]);
+
+
+void __RPC_STUB IDXTScale_SetScales_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTScale_GetScales_Proxy(
+ IDXTScale * This,
+ /* [out] */ float Scales[ 2 ]);
+
+
+void __RPC_STUB IDXTScale_GetScales_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXTScale_ScaleFitToSize_Proxy(
+ IDXTScale * This,
+ /* [out][in] */ DXBNDS *pClipBounds,
+ /* [in] */ SIZE FitToSize,
+ /* [in] */ BOOL bMaintainAspect);
+
+
+void __RPC_STUB IDXTScale_ScaleFitToSize_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXTScale_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_dxtrans_0276 */
+/* [local] */
+
+typedef
+enum DISPIDDXEFFECT
+ { DISPID_DXECAPABILITIES = 10000,
+ DISPID_DXEPROGRESS = DISPID_DXECAPABILITIES + 1,
+ DISPID_DXESTEP = DISPID_DXEPROGRESS + 1,
+ DISPID_DXEDURATION = DISPID_DXESTEP + 1,
+ DISPID_DXE_NEXT_ID = DISPID_DXEDURATION + 1
+ } DISPIDDXBOUNDEDEFFECT;
+
+typedef
+enum DXEFFECTTYPE
+ { DXTET_PERIODIC = 1 << 0,
+ DXTET_MORPH = 1 << 1
+ } DXEFFECTTYPE;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0276_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0276_v0_0_s_ifspec;
+
+#ifndef __IDXEffect_INTERFACE_DEFINED__
+#define __IDXEffect_INTERFACE_DEFINED__
+
+/* interface IDXEffect */
+/* [dual][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXEffect;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("E31FB81B-1335-11d1-8189-0000F87557DB")
+ IDXEffect : public IDispatch
+ {
+ public:
+ virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Capabilities(
+ /* [retval][out] */ long *pVal) = 0;
+
+ virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Progress(
+ /* [retval][out] */ float *pVal) = 0;
+
+ virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_Progress(
+ /* [in] */ float newVal) = 0;
+
+ virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_StepResolution(
+ /* [retval][out] */ float *pVal) = 0;
+
+ virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Duration(
+ /* [retval][out] */ float *pVal) = 0;
+
+ virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_Duration(
+ /* [in] */ float newVal) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXEffectVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXEffect * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXEffect * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXEffect * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+ IDXEffect * This,
+ /* [out] */ UINT *pctinfo);
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+ IDXEffect * This,
+ /* [in] */ UINT iTInfo,
+ /* [in] */ LCID lcid,
+ /* [out] */ ITypeInfo **ppTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+ IDXEffect * This,
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ LPOLESTR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [in] */ LCID lcid,
+ /* [size_is][out] */ DISPID *rgDispId);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+ IDXEffect * This,
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS *pDispParams,
+ /* [out] */ VARIANT *pVarResult,
+ /* [out] */ EXCEPINFO *pExcepInfo,
+ /* [out] */ UINT *puArgErr);
+
+ /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Capabilities )(
+ IDXEffect * This,
+ /* [retval][out] */ long *pVal);
+
+ /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Progress )(
+ IDXEffect * This,
+ /* [retval][out] */ float *pVal);
+
+ /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Progress )(
+ IDXEffect * This,
+ /* [in] */ float newVal);
+
+ /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_StepResolution )(
+ IDXEffect * This,
+ /* [retval][out] */ float *pVal);
+
+ /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Duration )(
+ IDXEffect * This,
+ /* [retval][out] */ float *pVal);
+
+ /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Duration )(
+ IDXEffect * This,
+ /* [in] */ float newVal);
+
+ END_INTERFACE
+ } IDXEffectVtbl;
+
+ interface IDXEffect
+ {
+ CONST_VTBL struct IDXEffectVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXEffect_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXEffect_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXEffect_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXEffect_GetTypeInfoCount(This,pctinfo) \
+ (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define IDXEffect_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+ (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define IDXEffect_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+ (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+
+#define IDXEffect_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+ (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+
+
+#define IDXEffect_get_Capabilities(This,pVal) \
+ (This)->lpVtbl -> get_Capabilities(This,pVal)
+
+#define IDXEffect_get_Progress(This,pVal) \
+ (This)->lpVtbl -> get_Progress(This,pVal)
+
+#define IDXEffect_put_Progress(This,newVal) \
+ (This)->lpVtbl -> put_Progress(This,newVal)
+
+#define IDXEffect_get_StepResolution(This,pVal) \
+ (This)->lpVtbl -> get_StepResolution(This,pVal)
+
+#define IDXEffect_get_Duration(This,pVal) \
+ (This)->lpVtbl -> get_Duration(This,pVal)
+
+#define IDXEffect_put_Duration(This,newVal) \
+ (This)->lpVtbl -> put_Duration(This,newVal)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [id][propget] */ HRESULT STDMETHODCALLTYPE IDXEffect_get_Capabilities_Proxy(
+ IDXEffect * This,
+ /* [retval][out] */ long *pVal);
+
+
+void __RPC_STUB IDXEffect_get_Capabilities_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [id][propget] */ HRESULT STDMETHODCALLTYPE IDXEffect_get_Progress_Proxy(
+ IDXEffect * This,
+ /* [retval][out] */ float *pVal);
+
+
+void __RPC_STUB IDXEffect_get_Progress_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [id][propput] */ HRESULT STDMETHODCALLTYPE IDXEffect_put_Progress_Proxy(
+ IDXEffect * This,
+ /* [in] */ float newVal);
+
+
+void __RPC_STUB IDXEffect_put_Progress_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [id][propget] */ HRESULT STDMETHODCALLTYPE IDXEffect_get_StepResolution_Proxy(
+ IDXEffect * This,
+ /* [retval][out] */ float *pVal);
+
+
+void __RPC_STUB IDXEffect_get_StepResolution_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [id][propget] */ HRESULT STDMETHODCALLTYPE IDXEffect_get_Duration_Proxy(
+ IDXEffect * This,
+ /* [retval][out] */ float *pVal);
+
+
+void __RPC_STUB IDXEffect_get_Duration_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [id][propput] */ HRESULT STDMETHODCALLTYPE IDXEffect_put_Duration_Proxy(
+ IDXEffect * This,
+ /* [in] */ float newVal);
+
+
+void __RPC_STUB IDXEffect_put_Duration_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXEffect_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDXLookupTable_INTERFACE_DEFINED__
+#define __IDXLookupTable_INTERFACE_DEFINED__
+
+/* interface IDXLookupTable */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXLookupTable;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("01BAFC7F-9E63-11d1-9053-00C04FD9189D")
+ IDXLookupTable : public IDXBaseObject
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetTables(
+ /* [out] */ BYTE RedLUT[ 256 ],
+ /* [out] */ BYTE GreenLUT[ 256 ],
+ /* [out] */ BYTE BlueLUT[ 256 ],
+ /* [out] */ BYTE AlphaLUT[ 256 ]) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE IsChannelIdentity(
+ /* [out] */ DXBASESAMPLE *pSampleBools) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetIndexValues(
+ /* [in] */ ULONG Index,
+ /* [out] */ DXBASESAMPLE *pSample) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ApplyTables(
+ /* [out][in] */ DXSAMPLE *pSamples,
+ /* [in] */ ULONG cSamples) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXLookupTableVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXLookupTable * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXLookupTable * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXLookupTable * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetGenerationId )(
+ IDXLookupTable * This,
+ /* [out] */ ULONG *pID);
+
+ HRESULT ( STDMETHODCALLTYPE *IncrementGenerationId )(
+ IDXLookupTable * This,
+ /* [in] */ BOOL bRefresh);
+
+ HRESULT ( STDMETHODCALLTYPE *GetObjectSize )(
+ IDXLookupTable * This,
+ /* [out] */ ULONG *pcbSize);
+
+ HRESULT ( STDMETHODCALLTYPE *GetTables )(
+ IDXLookupTable * This,
+ /* [out] */ BYTE RedLUT[ 256 ],
+ /* [out] */ BYTE GreenLUT[ 256 ],
+ /* [out] */ BYTE BlueLUT[ 256 ],
+ /* [out] */ BYTE AlphaLUT[ 256 ]);
+
+ HRESULT ( STDMETHODCALLTYPE *IsChannelIdentity )(
+ IDXLookupTable * This,
+ /* [out] */ DXBASESAMPLE *pSampleBools);
+
+ HRESULT ( STDMETHODCALLTYPE *GetIndexValues )(
+ IDXLookupTable * This,
+ /* [in] */ ULONG Index,
+ /* [out] */ DXBASESAMPLE *pSample);
+
+ HRESULT ( STDMETHODCALLTYPE *ApplyTables )(
+ IDXLookupTable * This,
+ /* [out][in] */ DXSAMPLE *pSamples,
+ /* [in] */ ULONG cSamples);
+
+ END_INTERFACE
+ } IDXLookupTableVtbl;
+
+ interface IDXLookupTable
+ {
+ CONST_VTBL struct IDXLookupTableVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXLookupTable_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXLookupTable_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXLookupTable_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXLookupTable_GetGenerationId(This,pID) \
+ (This)->lpVtbl -> GetGenerationId(This,pID)
+
+#define IDXLookupTable_IncrementGenerationId(This,bRefresh) \
+ (This)->lpVtbl -> IncrementGenerationId(This,bRefresh)
+
+#define IDXLookupTable_GetObjectSize(This,pcbSize) \
+ (This)->lpVtbl -> GetObjectSize(This,pcbSize)
+
+
+#define IDXLookupTable_GetTables(This,RedLUT,GreenLUT,BlueLUT,AlphaLUT) \
+ (This)->lpVtbl -> GetTables(This,RedLUT,GreenLUT,BlueLUT,AlphaLUT)
+
+#define IDXLookupTable_IsChannelIdentity(This,pSampleBools) \
+ (This)->lpVtbl -> IsChannelIdentity(This,pSampleBools)
+
+#define IDXLookupTable_GetIndexValues(This,Index,pSample) \
+ (This)->lpVtbl -> GetIndexValues(This,Index,pSample)
+
+#define IDXLookupTable_ApplyTables(This,pSamples,cSamples) \
+ (This)->lpVtbl -> ApplyTables(This,pSamples,cSamples)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDXLookupTable_GetTables_Proxy(
+ IDXLookupTable * This,
+ /* [out] */ BYTE RedLUT[ 256 ],
+ /* [out] */ BYTE GreenLUT[ 256 ],
+ /* [out] */ BYTE BlueLUT[ 256 ],
+ /* [out] */ BYTE AlphaLUT[ 256 ]);
+
+
+void __RPC_STUB IDXLookupTable_GetTables_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXLookupTable_IsChannelIdentity_Proxy(
+ IDXLookupTable * This,
+ /* [out] */ DXBASESAMPLE *pSampleBools);
+
+
+void __RPC_STUB IDXLookupTable_IsChannelIdentity_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXLookupTable_GetIndexValues_Proxy(
+ IDXLookupTable * This,
+ /* [in] */ ULONG Index,
+ /* [out] */ DXBASESAMPLE *pSample);
+
+
+void __RPC_STUB IDXLookupTable_GetIndexValues_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+HRESULT STDMETHODCALLTYPE IDXLookupTable_ApplyTables_Proxy(
+ IDXLookupTable * This,
+ /* [out][in] */ DXSAMPLE *pSamples,
+ /* [in] */ ULONG cSamples);
+
+
+void __RPC_STUB IDXLookupTable_ApplyTables_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXLookupTable_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_dxtrans_0278 */
+/* [local] */
+
+typedef struct DXRAWSURFACEINFO
+ {
+ BYTE *pFirstByte;
+ long lPitch;
+ ULONG Width;
+ ULONG Height;
+ const GUID *pPixelFormat;
+ HDC hdc;
+ DWORD dwColorKey;
+ DXBASESAMPLE *pPalette;
+ } DXRAWSURFACEINFO;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0278_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0278_v0_0_s_ifspec;
+
+#ifndef __IDXRawSurface_INTERFACE_DEFINED__
+#define __IDXRawSurface_INTERFACE_DEFINED__
+
+/* interface IDXRawSurface */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXRawSurface;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("09756C8A-D96A-11d1-9062-00C04FD9189D")
+ IDXRawSurface : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetSurfaceInfo(
+ DXRAWSURFACEINFO *pSurfaceInfo) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXRawSurfaceVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXRawSurface * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXRawSurface * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXRawSurface * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetSurfaceInfo )(
+ IDXRawSurface * This,
+ DXRAWSURFACEINFO *pSurfaceInfo);
+
+ END_INTERFACE
+ } IDXRawSurfaceVtbl;
+
+ interface IDXRawSurface
+ {
+ CONST_VTBL struct IDXRawSurfaceVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXRawSurface_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IDXRawSurface_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IDXRawSurface_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IDXRawSurface_GetSurfaceInfo(This,pSurfaceInfo) \
+ (This)->lpVtbl -> GetSurfaceInfo(This,pSurfaceInfo)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IDXRawSurface_GetSurfaceInfo_Proxy(
+ IDXRawSurface * This,
+ DXRAWSURFACEINFO *pSurfaceInfo);
+
+
+void __RPC_STUB IDXRawSurface_GetSurfaceInfo_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IDXRawSurface_INTERFACE_DEFINED__ */
+
+
+#ifndef __IHTMLDXTransform_INTERFACE_DEFINED__
+#define __IHTMLDXTransform_INTERFACE_DEFINED__
+
+/* interface IHTMLDXTransform */
+/* [local][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_IHTMLDXTransform;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("30E2AB7D-4FDD-4159-B7EA-DC722BF4ADE5")
+ IHTMLDXTransform : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetHostUrl(
+ BSTR bstrHostUrl) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IHTMLDXTransformVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IHTMLDXTransform * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IHTMLDXTransform * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IHTMLDXTransform * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetHostUrl )(
+ IHTMLDXTransform * This,
+ BSTR bstrHostUrl);
+
+ END_INTERFACE
+ } IHTMLDXTransformVtbl;
+
+ interface IHTMLDXTransform
+ {
+ CONST_VTBL struct IHTMLDXTransformVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IHTMLDXTransform_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define IHTMLDXTransform_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define IHTMLDXTransform_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define IHTMLDXTransform_SetHostUrl(This,bstrHostUrl) \
+ (This)->lpVtbl -> SetHostUrl(This,bstrHostUrl)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+HRESULT STDMETHODCALLTYPE IHTMLDXTransform_SetHostUrl_Proxy(
+ IHTMLDXTransform * This,
+ BSTR bstrHostUrl);
+
+
+void __RPC_STUB IHTMLDXTransform_SetHostUrl_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __IHTMLDXTransform_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_dxtrans_0280 */
+/* [local] */
+
+typedef
+enum DXTFILTER_STATUS
+ { DXTFILTER_STATUS_Stopped = 0,
+ DXTFILTER_STATUS_Applied = DXTFILTER_STATUS_Stopped + 1,
+ DXTFILTER_STATUS_Playing = DXTFILTER_STATUS_Applied + 1,
+ DXTFILTER_STATUS_MAX = DXTFILTER_STATUS_Playing + 1
+ } DXTFILTER_STATUS;
+
+typedef
+enum DXTFILTER_DISPID
+ { DISPID_DXTFilter_Percent = 1,
+ DISPID_DXTFilter_Duration = DISPID_DXTFilter_Percent + 1,
+ DISPID_DXTFilter_Enabled = DISPID_DXTFilter_Duration + 1,
+ DISPID_DXTFilter_Status = DISPID_DXTFilter_Enabled + 1,
+ DISPID_DXTFilter_Apply = DISPID_DXTFilter_Status + 1,
+ DISPID_DXTFilter_Play = DISPID_DXTFilter_Apply + 1,
+ DISPID_DXTFilter_Stop = DISPID_DXTFilter_Play + 1,
+ DISPID_DXTFilter_MAX = DISPID_DXTFilter_Stop + 1
+ } DXTFILTER_DISPID;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0280_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxtrans_0280_v0_0_s_ifspec;
+
+#ifndef __ICSSFilterDispatch_INTERFACE_DEFINED__
+#define __ICSSFilterDispatch_INTERFACE_DEFINED__
+
+/* interface ICSSFilterDispatch */
+/* [dual][unique][helpstring][uuid][object] */
+
+
+EXTERN_C const IID IID_ICSSFilterDispatch;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9519152B-9484-4A6C-B6A7-4F25E92D6C6B")
+ ICSSFilterDispatch : public IDispatch
+ {
+ public:
+ virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Percent(
+ /* [retval][out] */ float *pVal) = 0;
+
+ virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_Percent(
+ /* [in] */ float newVal) = 0;
+
+ virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Duration(
+ /* [retval][out] */ float *pVal) = 0;
+
+ virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_Duration(
+ /* [in] */ float newVal) = 0;
+
+ virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Enabled(
+ /* [retval][out] */ VARIANT_BOOL *pfVal) = 0;
+
+ virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_Enabled(
+ /* [in] */ VARIANT_BOOL fVal) = 0;
+
+ virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_Status(
+ /* [retval][out] */ DXTFILTER_STATUS *peVal) = 0;
+
+ virtual /* [id] */ HRESULT STDMETHODCALLTYPE Apply( void) = 0;
+
+ virtual /* [id] */ HRESULT STDMETHODCALLTYPE Play(
+ /* [optional][in] */ VARIANT varDuration) = 0;
+
+ virtual /* [id] */ HRESULT STDMETHODCALLTYPE Stop( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ICSSFilterDispatchVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ICSSFilterDispatch * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ICSSFilterDispatch * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ICSSFilterDispatch * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+ ICSSFilterDispatch * This,
+ /* [out] */ UINT *pctinfo);
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+ ICSSFilterDispatch * This,
+ /* [in] */ UINT iTInfo,
+ /* [in] */ LCID lcid,
+ /* [out] */ ITypeInfo **ppTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+ ICSSFilterDispatch * This,
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ LPOLESTR *rgszNames,
+ /* [in] */ UINT cNames,
+ /* [in] */ LCID lcid,
+ /* [size_is][out] */ DISPID *rgDispId);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+ ICSSFilterDispatch * This,
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS *pDispParams,
+ /* [out] */ VARIANT *pVarResult,
+ /* [out] */ EXCEPINFO *pExcepInfo,
+ /* [out] */ UINT *puArgErr);
+
+ /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Percent )(
+ ICSSFilterDispatch * This,
+ /* [retval][out] */ float *pVal);
+
+ /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Percent )(
+ ICSSFilterDispatch * This,
+ /* [in] */ float newVal);
+
+ /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Duration )(
+ ICSSFilterDispatch * This,
+ /* [retval][out] */ float *pVal);
+
+ /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Duration )(
+ ICSSFilterDispatch * This,
+ /* [in] */ float newVal);
+
+ /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Enabled )(
+ ICSSFilterDispatch * This,
+ /* [retval][out] */ VARIANT_BOOL *pfVal);
+
+ /* [id][propput] */ HRESULT ( STDMETHODCALLTYPE *put_Enabled )(
+ ICSSFilterDispatch * This,
+ /* [in] */ VARIANT_BOOL fVal);
+
+ /* [id][propget] */ HRESULT ( STDMETHODCALLTYPE *get_Status )(
+ ICSSFilterDispatch * This,
+ /* [retval][out] */ DXTFILTER_STATUS *peVal);
+
+ /* [id] */ HRESULT ( STDMETHODCALLTYPE *Apply )(
+ ICSSFilterDispatch * This);
+
+ /* [id] */ HRESULT ( STDMETHODCALLTYPE *Play )(
+ ICSSFilterDispatch * This,
+ /* [optional][in] */ VARIANT varDuration);
+
+ /* [id] */ HRESULT ( STDMETHODCALLTYPE *Stop )(
+ ICSSFilterDispatch * This);
+
+ END_INTERFACE
+ } ICSSFilterDispatchVtbl;
+
+ interface ICSSFilterDispatch
+ {
+ CONST_VTBL struct ICSSFilterDispatchVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICSSFilterDispatch_QueryInterface(This,riid,ppvObject) \
+ (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ICSSFilterDispatch_AddRef(This) \
+ (This)->lpVtbl -> AddRef(This)
+
+#define ICSSFilterDispatch_Release(This) \
+ (This)->lpVtbl -> Release(This)
+
+
+#define ICSSFilterDispatch_GetTypeInfoCount(This,pctinfo) \
+ (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)
+
+#define ICSSFilterDispatch_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+ (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+
+#define ICSSFilterDispatch_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+ (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+
+#define ICSSFilterDispatch_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+ (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+
+
+#define ICSSFilterDispatch_get_Percent(This,pVal) \
+ (This)->lpVtbl -> get_Percent(This,pVal)
+
+#define ICSSFilterDispatch_put_Percent(This,newVal) \
+ (This)->lpVtbl -> put_Percent(This,newVal)
+
+#define ICSSFilterDispatch_get_Duration(This,pVal) \
+ (This)->lpVtbl -> get_Duration(This,pVal)
+
+#define ICSSFilterDispatch_put_Duration(This,newVal) \
+ (This)->lpVtbl -> put_Duration(This,newVal)
+
+#define ICSSFilterDispatch_get_Enabled(This,pfVal) \
+ (This)->lpVtbl -> get_Enabled(This,pfVal)
+
+#define ICSSFilterDispatch_put_Enabled(This,fVal) \
+ (This)->lpVtbl -> put_Enabled(This,fVal)
+
+#define ICSSFilterDispatch_get_Status(This,peVal) \
+ (This)->lpVtbl -> get_Status(This,peVal)
+
+#define ICSSFilterDispatch_Apply(This) \
+ (This)->lpVtbl -> Apply(This)
+
+#define ICSSFilterDispatch_Play(This,varDuration) \
+ (This)->lpVtbl -> Play(This,varDuration)
+
+#define ICSSFilterDispatch_Stop(This) \
+ (This)->lpVtbl -> Stop(This)
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+/* [id][propget] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_get_Percent_Proxy(
+ ICSSFilterDispatch * This,
+ /* [retval][out] */ float *pVal);
+
+
+void __RPC_STUB ICSSFilterDispatch_get_Percent_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [id][propput] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_put_Percent_Proxy(
+ ICSSFilterDispatch * This,
+ /* [in] */ float newVal);
+
+
+void __RPC_STUB ICSSFilterDispatch_put_Percent_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [id][propget] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_get_Duration_Proxy(
+ ICSSFilterDispatch * This,
+ /* [retval][out] */ float *pVal);
+
+
+void __RPC_STUB ICSSFilterDispatch_get_Duration_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [id][propput] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_put_Duration_Proxy(
+ ICSSFilterDispatch * This,
+ /* [in] */ float newVal);
+
+
+void __RPC_STUB ICSSFilterDispatch_put_Duration_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [id][propget] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_get_Enabled_Proxy(
+ ICSSFilterDispatch * This,
+ /* [retval][out] */ VARIANT_BOOL *pfVal);
+
+
+void __RPC_STUB ICSSFilterDispatch_get_Enabled_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [id][propput] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_put_Enabled_Proxy(
+ ICSSFilterDispatch * This,
+ /* [in] */ VARIANT_BOOL fVal);
+
+
+void __RPC_STUB ICSSFilterDispatch_put_Enabled_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [id][propget] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_get_Status_Proxy(
+ ICSSFilterDispatch * This,
+ /* [retval][out] */ DXTFILTER_STATUS *peVal);
+
+
+void __RPC_STUB ICSSFilterDispatch_get_Status_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [id] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_Apply_Proxy(
+ ICSSFilterDispatch * This);
+
+
+void __RPC_STUB ICSSFilterDispatch_Apply_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [id] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_Play_Proxy(
+ ICSSFilterDispatch * This,
+ /* [optional][in] */ VARIANT varDuration);
+
+
+void __RPC_STUB ICSSFilterDispatch_Play_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+/* [id] */ HRESULT STDMETHODCALLTYPE ICSSFilterDispatch_Stop_Proxy(
+ ICSSFilterDispatch * This);
+
+
+void __RPC_STUB ICSSFilterDispatch_Stop_Stub(
+ IRpcStubBuffer *This,
+ IRpcChannelBuffer *_pRpcChannelBuffer,
+ PRPC_MESSAGE _pRpcMessage,
+ DWORD *_pdwStubPhase);
+
+
+
+#endif /* __ICSSFilterDispatch_INTERFACE_DEFINED__ */
+
+
+
+#ifndef __DXTRANSLib_LIBRARY_DEFINED__
+#define __DXTRANSLib_LIBRARY_DEFINED__
+
+/* library DXTRANSLib */
+/* [helpstring][version][uuid] */
+
+
+EXTERN_C const IID LIBID_DXTRANSLib;
+
+EXTERN_C const CLSID CLSID_DXTransformFactory;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("D1FE6762-FC48-11D0-883A-3C8B00C10000")
+DXTransformFactory;
+#endif
+
+EXTERN_C const CLSID CLSID_DXTaskManager;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("4CB26C03-FF93-11d0-817E-0000F87557DB")
+DXTaskManager;
+#endif
+
+EXTERN_C const CLSID CLSID_DXTScale;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("555278E2-05DB-11D1-883A-3C8B00C10000")
+DXTScale;
+#endif
+
+EXTERN_C const CLSID CLSID_DXSurface;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("0E890F83-5F79-11D1-9043-00C04FD9189D")
+DXSurface;
+#endif
+
+EXTERN_C const CLSID CLSID_DXSurfaceModifier;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("3E669F1D-9C23-11d1-9053-00C04FD9189D")
+DXSurfaceModifier;
+#endif
+
+EXTERN_C const CLSID CLSID_DXGradient;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("C6365470-F667-11d1-9067-00C04FD9189D")
+DXGradient;
+#endif
+
+EXTERN_C const CLSID CLSID_DXTFilter;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("385A91BC-1E8A-4e4a-A7A6-F4FC1E6CA1BD")
+DXTFilter;
+#endif
+#endif /* __DXTRANSLib_LIBRARY_DEFINED__ */
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long __RPC_USER VARIANT_UserSize( unsigned long *, unsigned long , VARIANT * );
+unsigned char * __RPC_USER VARIANT_UserMarshal( unsigned long *, unsigned char *, VARIANT * );
+unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * );
+void __RPC_USER VARIANT_UserFree( unsigned long *, VARIANT * );
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+