diff --git a/src/PseuWoW.vcproj b/src/PseuWoW.vcproj
index d016692..0facc1b 100644
--- a/src/PseuWoW.vcproj
+++ b/src/PseuWoW.vcproj
@@ -210,34 +210,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/dep/include/DXSDK/include/D3D10.h b/src/dep/include/DXSDK/include/D3D10.h
new file mode 100644
index 0000000..845489a
--- /dev/null
+++ b/src/dep/include/DXSDK/include/D3D10.h
@@ -0,0 +1,6566 @@
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 7.00.0485 */
+/* Compiler settings for d3d10.idl:
+ Oicf, W1, Zp8, env=Win32 (32b run)
+ protocol : dce , ms_ext, c_ext, robust
+ 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( )
+
+#pragma warning( disable: 4049 ) /* more than 64k source lines */
+
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCSAL_H_VERSION__
+#define __REQUIRED_RPCSAL_H_VERSION__ 100
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of
+#endif // __RPCNDR_H_VERSION__
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __d3d10_h__
+#define __d3d10_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+/* Forward Declarations */
+
+#ifndef __ID3D10DeviceChild_FWD_DEFINED__
+#define __ID3D10DeviceChild_FWD_DEFINED__
+typedef interface ID3D10DeviceChild ID3D10DeviceChild;
+#endif /* __ID3D10DeviceChild_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10DepthStencilState_FWD_DEFINED__
+#define __ID3D10DepthStencilState_FWD_DEFINED__
+typedef interface ID3D10DepthStencilState ID3D10DepthStencilState;
+#endif /* __ID3D10DepthStencilState_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10BlendState_FWD_DEFINED__
+#define __ID3D10BlendState_FWD_DEFINED__
+typedef interface ID3D10BlendState ID3D10BlendState;
+#endif /* __ID3D10BlendState_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10RasterizerState_FWD_DEFINED__
+#define __ID3D10RasterizerState_FWD_DEFINED__
+typedef interface ID3D10RasterizerState ID3D10RasterizerState;
+#endif /* __ID3D10RasterizerState_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10Resource_FWD_DEFINED__
+#define __ID3D10Resource_FWD_DEFINED__
+typedef interface ID3D10Resource ID3D10Resource;
+#endif /* __ID3D10Resource_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10Buffer_FWD_DEFINED__
+#define __ID3D10Buffer_FWD_DEFINED__
+typedef interface ID3D10Buffer ID3D10Buffer;
+#endif /* __ID3D10Buffer_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10Texture1D_FWD_DEFINED__
+#define __ID3D10Texture1D_FWD_DEFINED__
+typedef interface ID3D10Texture1D ID3D10Texture1D;
+#endif /* __ID3D10Texture1D_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10Texture2D_FWD_DEFINED__
+#define __ID3D10Texture2D_FWD_DEFINED__
+typedef interface ID3D10Texture2D ID3D10Texture2D;
+#endif /* __ID3D10Texture2D_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10Texture3D_FWD_DEFINED__
+#define __ID3D10Texture3D_FWD_DEFINED__
+typedef interface ID3D10Texture3D ID3D10Texture3D;
+#endif /* __ID3D10Texture3D_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10TextureCube_FWD_DEFINED__
+#define __ID3D10TextureCube_FWD_DEFINED__
+typedef interface ID3D10TextureCube ID3D10TextureCube;
+#endif /* __ID3D10TextureCube_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10View_FWD_DEFINED__
+#define __ID3D10View_FWD_DEFINED__
+typedef interface ID3D10View ID3D10View;
+#endif /* __ID3D10View_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10ShaderResourceView_FWD_DEFINED__
+#define __ID3D10ShaderResourceView_FWD_DEFINED__
+typedef interface ID3D10ShaderResourceView ID3D10ShaderResourceView;
+#endif /* __ID3D10ShaderResourceView_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10RenderTargetView_FWD_DEFINED__
+#define __ID3D10RenderTargetView_FWD_DEFINED__
+typedef interface ID3D10RenderTargetView ID3D10RenderTargetView;
+#endif /* __ID3D10RenderTargetView_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10DepthStencilView_FWD_DEFINED__
+#define __ID3D10DepthStencilView_FWD_DEFINED__
+typedef interface ID3D10DepthStencilView ID3D10DepthStencilView;
+#endif /* __ID3D10DepthStencilView_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10VertexShader_FWD_DEFINED__
+#define __ID3D10VertexShader_FWD_DEFINED__
+typedef interface ID3D10VertexShader ID3D10VertexShader;
+#endif /* __ID3D10VertexShader_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10GeometryShader_FWD_DEFINED__
+#define __ID3D10GeometryShader_FWD_DEFINED__
+typedef interface ID3D10GeometryShader ID3D10GeometryShader;
+#endif /* __ID3D10GeometryShader_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10PixelShader_FWD_DEFINED__
+#define __ID3D10PixelShader_FWD_DEFINED__
+typedef interface ID3D10PixelShader ID3D10PixelShader;
+#endif /* __ID3D10PixelShader_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10InputLayout_FWD_DEFINED__
+#define __ID3D10InputLayout_FWD_DEFINED__
+typedef interface ID3D10InputLayout ID3D10InputLayout;
+#endif /* __ID3D10InputLayout_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10SamplerState_FWD_DEFINED__
+#define __ID3D10SamplerState_FWD_DEFINED__
+typedef interface ID3D10SamplerState ID3D10SamplerState;
+#endif /* __ID3D10SamplerState_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10Asynchronous_FWD_DEFINED__
+#define __ID3D10Asynchronous_FWD_DEFINED__
+typedef interface ID3D10Asynchronous ID3D10Asynchronous;
+#endif /* __ID3D10Asynchronous_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10Query_FWD_DEFINED__
+#define __ID3D10Query_FWD_DEFINED__
+typedef interface ID3D10Query ID3D10Query;
+#endif /* __ID3D10Query_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10Predicate_FWD_DEFINED__
+#define __ID3D10Predicate_FWD_DEFINED__
+typedef interface ID3D10Predicate ID3D10Predicate;
+#endif /* __ID3D10Predicate_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10Counter_FWD_DEFINED__
+#define __ID3D10Counter_FWD_DEFINED__
+typedef interface ID3D10Counter ID3D10Counter;
+#endif /* __ID3D10Counter_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10Device_FWD_DEFINED__
+#define __ID3D10Device_FWD_DEFINED__
+typedef interface ID3D10Device ID3D10Device;
+#endif /* __ID3D10Device_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10StateMirror_FWD_DEFINED__
+#define __ID3D10StateMirror_FWD_DEFINED__
+typedef interface ID3D10StateMirror ID3D10StateMirror;
+#endif /* __ID3D10StateMirror_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10Multithread_FWD_DEFINED__
+#define __ID3D10Multithread_FWD_DEFINED__
+typedef interface ID3D10Multithread ID3D10Multithread;
+#endif /* __ID3D10Multithread_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+#include "dxgi.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+
+/* interface __MIDL_itf_d3d10_0000_0000 */
+/* [local] */
+
+#ifndef _D3D10_CONSTANTS
+#define _D3D10_CONSTANTS
+#define D3D10_16BIT_INDEX_STRIP_CUT_VALUE ( 0xffff )
+
+#define D3D10_32BIT_INDEX_STRIP_CUT_VALUE ( 0xffffffff )
+
+#define D3D10_8BIT_INDEX_STRIP_CUT_VALUE ( 0xff )
+
+#define D3D10_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT ( 9 )
+
+#define D3D10_CLIP_OR_CULL_DISTANCE_COUNT ( 8 )
+
+#define D3D10_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT ( 2 )
+
+#define D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS ( 4 )
+
+#define D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
+
+#define D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT ( 15 )
+
+#define D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
+
+#define D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
+
+#define D3D10_COMMONSHADER_CONSTANT_BUFFER_SLOT_COUNT ( 15 )
+
+#define D3D10_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT ( 64 )
+
+#define D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
+
+#define D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT ( 1 )
+
+#define D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
+
+#define D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
+
+#define D3D10_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS ( 1 )
+
+#define D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT ( 128 )
+
+#define D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST ( 1 )
+
+#define D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS ( 1 )
+
+#define D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT ( 128 )
+
+#define D3D10_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS ( 1 )
+
+#define D3D10_COMMONSHADER_SAMPLER_REGISTER_COUNT ( 16 )
+
+#define D3D10_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST ( 1 )
+
+#define D3D10_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS ( 1 )
+
+#define D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT ( 16 )
+
+#define D3D10_COMMONSHADER_SUBROUTINE_NESTING_LIMIT ( 32 )
+
+#define D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENTS ( 4 )
+
+#define D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D10_COMMONSHADER_TEMP_REGISTER_COUNT ( 4096 )
+
+#define D3D10_COMMONSHADER_TEMP_REGISTER_READS_PER_INST ( 3 )
+
+#define D3D10_COMMONSHADER_TEMP_REGISTER_READ_PORTS ( 3 )
+
+#define D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX ( 10 )
+
+#define D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN ( -10 )
+
+#define D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE ( -8 )
+
+#define D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE ( 7 )
+
+#define D3D10_DEFAULT_BLEND_FACTOR_ALPHA ( 1.0f )
+#define D3D10_DEFAULT_BLEND_FACTOR_BLUE ( 1.0f )
+#define D3D10_DEFAULT_BLEND_FACTOR_GREEN ( 1.0f )
+#define D3D10_DEFAULT_BLEND_FACTOR_RED ( 1.0f )
+#define D3D10_DEFAULT_BORDER_COLOR_COMPONENT ( 0.0f )
+#define D3D10_DEFAULT_DEPTH_BIAS ( 0 )
+
+#define D3D10_DEFAULT_DEPTH_BIAS_CLAMP ( 0.0f )
+#define D3D10_DEFAULT_MAX_ANISOTROPY ( 16.0f )
+#define D3D10_DEFAULT_MIP_LOD_BIAS ( 0.0f )
+#define D3D10_DEFAULT_RENDER_TARGET_ARRAY_INDEX ( 0 )
+
+#define D3D10_DEFAULT_SAMPLE_MASK ( 0xffffffff )
+
+#define D3D10_DEFAULT_SCISSOR_ENDX ( 0 )
+
+#define D3D10_DEFAULT_SCISSOR_ENDY ( 0 )
+
+#define D3D10_DEFAULT_SCISSOR_STARTX ( 0 )
+
+#define D3D10_DEFAULT_SCISSOR_STARTY ( 0 )
+
+#define D3D10_DEFAULT_SLOPE_SCALED_DEPTH_BIAS ( 0.0f )
+#define D3D10_DEFAULT_STENCIL_READ_MASK ( 0xff )
+
+#define D3D10_DEFAULT_STENCIL_REFERENCE ( 0 )
+
+#define D3D10_DEFAULT_STENCIL_WRITE_MASK ( 0xff )
+
+#define D3D10_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX ( 0 )
+
+#define D3D10_DEFAULT_VIEWPORT_HEIGHT ( 0.0f )
+#define D3D10_DEFAULT_VIEWPORT_MAX_DEPTH ( 0.0f )
+#define D3D10_DEFAULT_VIEWPORT_MIN_DEPTH ( 0.0f )
+#define D3D10_DEFAULT_VIEWPORT_TOPLEFTX ( 0.0f )
+#define D3D10_DEFAULT_VIEWPORT_TOPLEFTY ( 0.0f )
+#define D3D10_DEFAULT_VIEWPORT_WIDTH ( 0.0f )
+#define D3D10_FLOAT16_FUSED_TOLERANCE_IN_ULP ( 0.6 )
+#define D3D10_FLOAT32_DEPTH_BUFFER_EXPONENT_BIAS ( 23 )
+
+#define D3D10_FLOAT32_MAX ( 3.402823466e+38f )
+#define D3D10_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP ( 0.6f )
+#define D3D10_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR ( 2.4f )
+#define D3D10_FLOAT_TO_SRGB_EXPONENT_NUMERATOR ( 1.0f )
+#define D3D10_FLOAT_TO_SRGB_OFFSET ( 0.055f )
+#define D3D10_FLOAT_TO_SRGB_SCALE_1 ( 12.92f )
+#define D3D10_FLOAT_TO_SRGB_SCALE_2 ( 1.055f )
+#define D3D10_FLOAT_TO_SRGB_THRESHOLD ( 0.0031308f )
+#define D3D10_FTOI_INSTRUCTION_MAX_INPUT ( 2147483647.999f )
+#define D3D10_FTOI_INSTRUCTION_MIN_INPUT ( -2147483648.999f )
+#define D3D10_FTOU_INSTRUCTION_MAX_INPUT ( 4294967296.999f )
+#define D3D10_FTOU_INSTRUCTION_MIN_INPUT ( 0.0f )
+#define D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS ( 1 )
+
+#define D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D10_GS_INPUT_PRIM_CONST_REGISTER_COUNT ( 1 )
+
+#define D3D10_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D10_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS ( 1 )
+
+#define D3D10_GS_INPUT_REGISTER_COMPONENTS ( 4 )
+
+#define D3D10_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D10_GS_INPUT_REGISTER_COUNT ( 16 )
+
+#define D3D10_GS_INPUT_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D10_GS_INPUT_REGISTER_READ_PORTS ( 1 )
+
+#define D3D10_GS_INPUT_REGISTER_VERTICES ( 6 )
+
+#define D3D10_GS_OUTPUT_ELEMENTS ( 32 )
+
+#define D3D10_GS_OUTPUT_REGISTER_COMPONENTS ( 4 )
+
+#define D3D10_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D10_GS_OUTPUT_REGISTER_COUNT ( 32 )
+
+#define D3D10_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES ( 0 )
+
+#define D3D10_IA_DEFAULT_PRIMITIVE_TOPOLOGY ( 0 )
+
+#define D3D10_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES ( 0 )
+
+#define D3D10_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT ( 1 )
+
+#define D3D10_IA_INSTANCE_ID_BIT_COUNT ( 32 )
+
+#define D3D10_IA_INTEGER_ARITHMETIC_BIT_COUNT ( 32 )
+
+#define D3D10_IA_PRIMITIVE_ID_BIT_COUNT ( 32 )
+
+#define D3D10_IA_VERTEX_ID_BIT_COUNT ( 32 )
+
+#define D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT ( 16 )
+
+#define D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS ( 64 )
+
+#define D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT ( 16 )
+
+#define D3D10_INTEGER_DIVIDE_BY_ZERO_QUOTIENT ( 0xffffffff )
+
+#define D3D10_INTEGER_DIVIDE_BY_ZERO_REMAINDER ( 0xffffffff )
+
+#define D3D10_LINEAR_GAMMA ( 1.0f )
+#define D3D10_MAX_BORDER_COLOR_COMPONENT ( 1.0f )
+#define D3D10_MAX_DEPTH ( 1.0f )
+#define D3D10_MAX_MAXANISOTROPY ( 16 )
+
+#define D3D10_MAX_MULTISAMPLE_SAMPLE_COUNT ( 32 )
+
+#define D3D10_MAX_POSITION_VALUE ( 3.402823466e+34f )
+#define D3D10_MAX_TEXTURE_DIMENSION_2_TO_EXP ( 17 )
+
+#define D3D10_MIN_BORDER_COLOR_COMPONENT ( 0.0f )
+#define D3D10_MIN_DEPTH ( 0.0f )
+#define D3D10_MIN_MAXANISOTROPY ( 0 )
+
+#define D3D10_MIP_LOD_BIAS_MAX ( 15.99f )
+#define D3D10_MIP_LOD_BIAS_MIN ( -16.0f )
+#define D3D10_MIP_LOD_FRACTIONAL_BIT_COUNT ( 6 )
+
+#define D3D10_MIP_LOD_RANGE_BIT_COUNT ( 8 )
+
+#define D3D10_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f )
+#define D3D10_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT ( 0 )
+
+#define D3D10_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 13 )
+
+#define D3D10_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 15 )
+
+#define D3D10_PS_FRONTFACING_DEFAULT_VALUE ( 0xffffffff )
+
+#define D3D10_PS_FRONTFACING_FALSE_VALUE ( 0 )
+
+#define D3D10_PS_FRONTFACING_TRUE_VALUE ( 0xffffffff )
+
+#define D3D10_PS_INPUT_REGISTER_COMPONENTS ( 4 )
+
+#define D3D10_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D10_PS_INPUT_REGISTER_COUNT ( 32 )
+
+#define D3D10_PS_INPUT_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D10_PS_INPUT_REGISTER_READ_PORTS ( 1 )
+
+#define D3D10_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )
+#define D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS ( 1 )
+
+#define D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D10_PS_OUTPUT_DEPTH_REGISTER_COUNT ( 1 )
+
+#define D3D10_PS_OUTPUT_REGISTER_COMPONENTS ( 4 )
+
+#define D3D10_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D10_PS_OUTPUT_REGISTER_COUNT ( 8 )
+
+#define D3D10_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )
+#define D3D10_REQ_BLEND_OBJECT_COUNT_PER_CONTEXT ( 4096 )
+
+#define D3D10_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP ( 27 )
+
+#define D3D10_REQ_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
+
+#define D3D10_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_CONTEXT ( 4096 )
+
+#define D3D10_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 32 )
+
+#define D3D10_REQ_DRAW_VERTEX_COUNT_2_TO_EXP ( 32 )
+
+#define D3D10_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION ( 8192 )
+
+#define D3D10_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT ( 1024 )
+
+#define D3D10_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
+
+#define D3D10_REQ_MAXANISOTROPY ( 16 )
+
+#define D3D10_REQ_MIP_LEVELS ( 13 )
+
+#define D3D10_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES ( 2048 )
+
+#define D3D10_REQ_RASTERIZER_OBJECT_COUNT_PER_CONTEXT ( 4096 )
+
+#define D3D10_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH ( 8192 )
+
+#define D3D10_REQ_RESOURCE_SIZE_IN_MEGABYTES ( 128 )
+
+#define D3D10_REQ_RESOURCE_VIEW_COUNT_PER_CONTEXT_2_TO_EXP ( 20 )
+
+#define D3D10_REQ_SAMPLER_OBJECT_COUNT_PER_CONTEXT ( 4096 )
+
+#define D3D10_REQ_SHADER_INVOCATION_INSTRUCTION_COUNT ( 65536 )
+
+#define D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION ( 512 )
+
+#define D3D10_REQ_TEXTURE1D_U_DIMENSION ( 8192 )
+
+#define D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION ( 512 )
+
+#define D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION ( 8192 )
+
+#define D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION ( 2048 )
+
+#define D3D10_REQ_TEXTURECUBE_DIMENSION ( 8192 )
+
+#define D3D10_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL ( 0 )
+
+#define D3D10_SHADER_MAJOR_VERSION ( 4 )
+
+#define D3D10_SHADER_MINOR_VERSION ( 0 )
+
+#define D3D10_SHIFT_INSTRUCTION_PAD_VALUE ( 0 )
+
+#define D3D10_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT ( 5 )
+
+#define D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT ( 8 )
+
+#define D3D10_SO_BUFFER_MAX_STRIDE_IN_BYTES ( 2048 )
+
+#define D3D10_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES ( 256 )
+
+#define D3D10_SO_BUFFER_SLOT_COUNT ( 4 )
+
+#define D3D10_SO_DDI_REGISTER_INDEX_DENOTING_GAP ( 0xffffffff )
+
+#define D3D10_SO_MULTIPLE_BUFFER_ELEMENTS_PER_BUFFER ( 1 )
+
+#define D3D10_SO_SINGLE_BUFFER_COMPONENT_LIMIT ( 64 )
+
+#define D3D10_SRGB_GAMMA ( 2.2f )
+#define D3D10_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )
+#define D3D10_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )
+#define D3D10_SRGB_TO_FLOAT_EXPONENT ( 2.4f )
+#define D3D10_SRGB_TO_FLOAT_OFFSET ( 0.055f )
+#define D3D10_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )
+#define D3D10_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )
+#define D3D10_STANDARD_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D10_STANDARD_COMPONENT_BIT_COUNT_DOUBLED ( 64 )
+
+#define D3D10_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE ( 4 )
+
+#define D3D10_STANDARD_PIXEL_COMPONENT_COUNT ( 128 )
+
+#define D3D10_STANDARD_PIXEL_ELEMENT_COUNT ( 32 )
+
+#define D3D10_STANDARD_VECTOR_SIZE ( 4 )
+
+#define D3D10_STANDARD_VERTEX_ELEMENT_COUNT ( 16 )
+
+#define D3D10_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT ( 64 )
+
+#define D3D10_SUBPIXEL_FRACTIONAL_BIT_COUNT ( 8 )
+
+#define D3D10_SUBTEXEL_FRACTIONAL_BIT_COUNT ( 6 )
+
+#define D3D10_TEXEL_ADDRESS_RANGE_BIT_COUNT ( 18 )
+
+#define D3D10_UNBOUND_MEMORY_ACCESS_RESULT ( 0 )
+
+#define D3D10_VIEWPORT_AND_SCISSORRECT_MAX_INDEX ( 15 )
+
+#define D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE ( 16 )
+
+#define D3D10_VIEWPORT_BOUNDS_MAX ( 16383 )
+
+#define D3D10_VIEWPORT_BOUNDS_MIN ( -16384 )
+
+#define D3D10_VS_INPUT_REGISTER_COMPONENTS ( 4 )
+
+#define D3D10_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D10_VS_INPUT_REGISTER_COUNT ( 16 )
+
+#define D3D10_VS_INPUT_REGISTER_READS_PER_INST ( 2 )
+
+#define D3D10_VS_INPUT_REGISTER_READ_PORTS ( 1 )
+
+#define D3D10_VS_OUTPUT_REGISTER_COMPONENTS ( 4 )
+
+#define D3D10_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
+
+#define D3D10_VS_OUTPUT_REGISTER_COUNT ( 16 )
+
+#define D3D10_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT ( 10 )
+
+#define D3D10_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 25 )
+
+#define D3D10_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP ( 25 )
+
+#define D3D_MAJOR_VERSION ( 10 )
+
+#define D3D_MINOR_VERSION ( 0 )
+
+#define D3D_SPEC_DATE_DAY ( 8 )
+
+#define D3D_SPEC_DATE_MONTH ( 8 )
+
+#define D3D_SPEC_DATE_YEAR ( 2005 )
+
+#define D3D_SPEC_VERSION ( 1.03000002 )
+#define WGF_MAJOR_VERSION ( 2 )
+
+#define WGF_MINOR_VERSION ( 0 )
+
+#endif
+#define _FACD3D10 ( 0x879 )
+
+#define _FACD3D10DEBUG ( ( _FACD3D10 + 1 ) )
+
+#define MAKE_D3D10HRESULT( code ) MAKE_HRESULT( 1, _FACD3D10, code )
+#define D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS MAKE_D3D10HRESULT(1)
+#define D3D10_ERROR_FILE_NOT_FOUND MAKE_D3D10HRESULT(2)
+typedef
+enum D3D10_INPUT_CLASSIFICATION
+ { D3D10_INPUT_PER_VERTEX_DATA = 0,
+ D3D10_INPUT_PER_INSTANCE_DATA = 1
+ } D3D10_INPUT_CLASSIFICATION;
+
+typedef struct D3D10_INPUT_ELEMENT_DESC
+ {
+ LPCWSTR SemanticName;
+ UINT SemanticIndex;
+ DXGI_FORMAT Format;
+ UINT InputSlot;
+ UINT AlignedByteOffset;
+ D3D10_INPUT_CLASSIFICATION InputSlotClass;
+ UINT InstanceDataStepRate;
+ } D3D10_INPUT_ELEMENT_DESC;
+
+typedef
+enum D3D10_FILL_MODE
+ { D3D10_FILL_WIREFRAME = 2,
+ D3D10_FILL_SOLID = 3
+ } D3D10_FILL_MODE;
+
+typedef
+enum D3D10_PRIMITIVE_TOPOLOGY
+ { D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
+ D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
+ D3D10_PRIMITIVE_TOPOLOGY_LINELIST = 2,
+ D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
+ D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
+ D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
+ D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
+ D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
+ D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
+ D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13
+ } D3D10_PRIMITIVE_TOPOLOGY;
+
+typedef
+enum D3D10_PRIMITIVE
+ { D3D10_PRIMITIVE_UNDEFINED = 0,
+ D3D10_PRIMITIVE_POINT = 1,
+ D3D10_PRIMITIVE_LINE = 2,
+ D3D10_PRIMITIVE_TRIANGLE = 3,
+ D3D10_PRIMITIVE_LINE_ADJ = 6,
+ D3D10_PRIMITIVE_TRIANGLE_ADJ = 7
+ } D3D10_PRIMITIVE;
+
+typedef
+enum D3D10_CULL_MODE
+ { D3D10_CULL_NONE = 1,
+ D3D10_CULL_FRONT = 2,
+ D3D10_CULL_BACK = 3
+ } D3D10_CULL_MODE;
+
+typedef
+enum D3D10_FRONT_WINDING
+ { D3D10_FRONT_CW = 1,
+ D3D10_FRONT_CCW = 2
+ } D3D10_FRONT_WINDING;
+
+typedef struct D3D10_VERTEX_CACHE_DESC
+ {
+ UINT Pattern;
+ UINT OptMethod;
+ UINT CacheSize;
+ UINT MagicNumber;
+ } D3D10_VERTEX_CACHE_DESC;
+
+typedef struct D3D10_SO_DECLARATION_ENTRY
+ {
+ LPCWSTR SemanticName;
+ UINT SemanticIndex;
+ BYTE StartComponent;
+ BYTE ComponentCount;
+ BYTE OutputSlot;
+ } D3D10_SO_DECLARATION_ENTRY;
+
+typedef struct D3D10_VIEWPORT
+ {
+ FLOAT TopLeftX;
+ FLOAT TopLeftY;
+ FLOAT Width;
+ FLOAT Height;
+ FLOAT MinDepth;
+ FLOAT MaxDepth;
+ } D3D10_VIEWPORT;
+
+typedef
+enum D3D10_RESOURCE
+ { D3D10_RESOURCE_BUFFER = 1,
+ D3D10_RESOURCE_TEXTURE1D = 2,
+ D3D10_RESOURCE_TEXTURE2D = 3,
+ D3D10_RESOURCE_TEXTURE3D = 4,
+ D3D10_RESOURCE_TEXTURECUBE = 5
+ } D3D10_RESOURCE;
+
+typedef
+enum D3D10_USAGE
+ { D3D10_USAGE_DEFAULT = 0,
+ D3D10_USAGE_IMMUTABLE = 1,
+ D3D10_USAGE_DYNAMIC = 2,
+ D3D10_USAGE_STAGING = 3
+ } D3D10_USAGE;
+
+typedef
+enum D3D10_BIND_FLAG
+ { D3D10_BIND_VERTEX_BUFFER = 0x1L,
+ D3D10_BIND_INDEX_BUFFER = 0x2L,
+ D3D10_BIND_CONSTANT_BUFFER = 0x4L,
+ D3D10_BIND_SHADER_RESOURCE = 0x8L,
+ D3D10_BIND_STREAM_OUTPUT = 0x10L,
+ D3D10_BIND_RENDER_TARGET = 0x20L,
+ D3D10_BIND_DEPTH_STENCIL = 0x40L
+ } D3D10_BIND_FLAG;
+
+typedef
+enum D3D10_CPU_ACCESS_FLAG
+ { D3D10_CPU_ACCESS_WRITE = 0x10000L,
+ D3D10_CPU_ACCESS_READ = 0x20000L
+ } D3D10_CPU_ACCESS_FLAG;
+
+typedef
+enum D3D10_RESOURCE_MISC_FLAG
+ { D3D10_RESOURCE_MISC_GENERATE_MIPS = 0x1L,
+ D3D10_RESOURCE_MISC_COPY_DESTINATION = 0x2L
+ } D3D10_RESOURCE_MISC_FLAG;
+
+typedef
+enum D3D10_MAP
+ { D3D10_MAP_READ = 1,
+ D3D10_MAP_WRITE = 2,
+ D3D10_MAP_READ_WRITE = 3,
+ D3D10_MAP_WRITE_DISCARD = 4,
+ D3D10_MAP_WRITE_NO_OVERWRITE = 5
+ } D3D10_MAP;
+
+typedef
+enum D3D10_MAP_FLAG
+ { D3D10_MAP_FLAG_DO_NOT_WAIT = 0x100000L
+ } D3D10_MAP_FLAG;
+
+typedef
+enum D3D10_RAISE_FLAG
+ { D3D10_RAISE_FLAG_DRIVER_INTERNAL_ERROR = 0x1L
+ } D3D10_RAISE_FLAG;
+
+#define D3D10_BUFFEROFFSET_APPEND ( 0xffffffffL )
+
+typedef
+enum D3D10_CLEAR_FLAG
+ { D3D10_CLEAR_DEPTH = 0x1L,
+ D3D10_CLEAR_STENCIL = 0x2L
+ } D3D10_CLEAR_FLAG;
+
+typedef RECT D3D10_RECT;
+
+typedef struct D3D10_BOX
+ {
+ UINT left;
+ UINT top;
+ UINT front;
+ UINT right;
+ UINT bottom;
+ UINT back;
+ } D3D10_BOX;
+
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0000_v0_0_s_ifspec;
+
+#ifndef __ID3D10DeviceChild_INTERFACE_DEFINED__
+#define __ID3D10DeviceChild_INTERFACE_DEFINED__
+
+/* interface ID3D10DeviceChild */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10DeviceChild;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C00-342C-4106-A19F-4F2704F689F0")
+ ID3D10DeviceChild : public IUnknown
+ {
+ public:
+ virtual void STDMETHODCALLTYPE GetDevice(
+ /* [retval][out] */ ID3D10Device **ppDevice) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10DeviceChildVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10DeviceChild * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10DeviceChild * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10DeviceChild * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10DeviceChild * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10DeviceChild * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10DeviceChild * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10DeviceChild * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ END_INTERFACE
+ } ID3D10DeviceChildVtbl;
+
+ interface ID3D10DeviceChild
+ {
+ CONST_VTBL struct ID3D10DeviceChildVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10DeviceChild_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10DeviceChild_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10DeviceChild_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10DeviceChild_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10DeviceChild_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10DeviceChild_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10DeviceChild_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10DeviceChild_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0001 */
+/* [local] */
+
+typedef
+enum D3D10_COMPARISON_FUNC
+ { D3D10_COMPARISON_NEVER = 1,
+ D3D10_COMPARISON_LESS = 2,
+ D3D10_COMPARISON_EQUAL = 3,
+ D3D10_COMPARISON_LESS_EQUAL = 4,
+ D3D10_COMPARISON_GREATER = 5,
+ D3D10_COMPARISON_NOT_EQUAL = 6,
+ D3D10_COMPARISON_GREATER_EQUAL = 7,
+ D3D10_COMPARISON_ALWAYS = 8
+ } D3D10_COMPARISON_FUNC;
+
+typedef
+enum D3D10_DEPTH_WRITE_MASK
+ { D3D10_DEPTH_WRITE_MASK_ZERO = 0,
+ D3D10_DEPTH_WRITE_MASK_ALL = 1
+ } D3D10_DEPTH_WRITE_MASK;
+
+typedef
+enum D3D10_STENCIL_OP
+ { D3D10_STENCIL_OP_KEEP = 1,
+ D3D10_STENCIL_OP_ZERO = 2,
+ D3D10_STENCIL_OP_REPLACE = 3,
+ D3D10_STENCIL_OP_INCR_SAT = 4,
+ D3D10_STENCIL_OP_DECR_SAT = 5,
+ D3D10_STENCIL_OP_INVERT = 6,
+ D3D10_STENCIL_OP_INCR = 7,
+ D3D10_STENCIL_OP_DECR = 8
+ } D3D10_STENCIL_OP;
+
+typedef struct D3D10_DEPTH_STENCILOP_DESC
+ {
+ D3D10_STENCIL_OP StencilFailOp;
+ D3D10_STENCIL_OP StencilDepthFailOp;
+ D3D10_STENCIL_OP StencilPassOp;
+ D3D10_COMPARISON_FUNC StencilFunc;
+ } D3D10_DEPTH_STENCILOP_DESC;
+
+typedef struct D3D10_DEPTH_STENCIL_DESC
+ {
+ BOOL DepthEnable;
+ D3D10_DEPTH_WRITE_MASK DepthWriteMask;
+ D3D10_COMPARISON_FUNC DepthFunc;
+ BOOL StencilEnable;
+ UINT8 StencilReadMask;
+ UINT8 StencilWriteMask;
+ D3D10_DEPTH_STENCILOP_DESC FrontFace;
+ D3D10_DEPTH_STENCILOP_DESC BackFace;
+ } D3D10_DEPTH_STENCIL_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0001_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0001_v0_0_s_ifspec;
+
+#ifndef __ID3D10DepthStencilState_INTERFACE_DEFINED__
+#define __ID3D10DepthStencilState_INTERFACE_DEFINED__
+
+/* interface ID3D10DepthStencilState */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10DepthStencilState;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("2B4B1CC8-A4AD-41f8-8322-CA86FC3EC675")
+ ID3D10DepthStencilState : public ID3D10DeviceChild
+ {
+ public:
+ virtual void STDMETHODCALLTYPE GetDesc(
+ /* [retval][out] */ D3D10_DEPTH_STENCIL_DESC *pDesc) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10DepthStencilStateVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10DepthStencilState * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10DepthStencilState * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10DepthStencilState * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10DepthStencilState * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10DepthStencilState * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10DepthStencilState * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10DepthStencilState * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D10DepthStencilState * This,
+ /* [retval][out] */ D3D10_DEPTH_STENCIL_DESC *pDesc);
+
+ END_INTERFACE
+ } ID3D10DepthStencilStateVtbl;
+
+ interface ID3D10DepthStencilState
+ {
+ CONST_VTBL struct ID3D10DepthStencilStateVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10DepthStencilState_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10DepthStencilState_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10DepthStencilState_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10DepthStencilState_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10DepthStencilState_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10DepthStencilState_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10DepthStencilState_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10DepthStencilState_GetDesc(This,pDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pDesc) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10DepthStencilState_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0002 */
+/* [local] */
+
+typedef
+enum D3D10_BLEND
+ { D3D10_BLEND_ZERO = 1,
+ D3D10_BLEND_ONE = 2,
+ D3D10_BLEND_SRC_COLOR = 3,
+ D3D10_BLEND_INV_SRC_COLOR = 4,
+ D3D10_BLEND_SRC_ALPHA = 5,
+ D3D10_BLEND_INV_SRC_ALPHA = 6,
+ D3D10_BLEND_DEST_ALPHA = 7,
+ D3D10_BLEND_INV_DEST_ALPHA = 8,
+ D3D10_BLEND_DEST_COLOR = 9,
+ D3D10_BLEND_INV_DEST_COLOR = 10,
+ D3D10_BLEND_SRC_ALPHA_SAT = 11,
+ D3D10_BLEND_BLEND_FACTOR = 14,
+ D3D10_BLEND_INV_BLEND_FACTOR = 15,
+ D3D10_BLEND_SRC1_COLOR = 16,
+ D3D10_BLEND_INV_SRC1_COLOR = 17,
+ D3D10_BLEND_SRC1_ALPHA = 18,
+ D3D10_BLEND_INV_SRC1_ALPHA = 19
+ } D3D10_BLEND;
+
+typedef
+enum D3D10_BLEND_OP
+ { D3D10_BLEND_OP_ADD = 1,
+ D3D10_BLEND_OP_SUBTRACT = 2,
+ D3D10_BLEND_OP_REV_SUBTRACT = 3,
+ D3D10_BLEND_OP_MIN = 4,
+ D3D10_BLEND_OP_MAX = 5
+ } D3D10_BLEND_OP;
+
+typedef
+enum D3D10_COLOR_WRITE_ENABLE
+ { D3D10_COLOR_WRITE_ENABLE_RED = 1,
+ D3D10_COLOR_WRITE_ENABLE_GREEN = 2,
+ D3D10_COLOR_WRITE_ENABLE_BLUE = 4,
+ D3D10_COLOR_WRITE_ENABLE_ALPHA = 8,
+ D3D10_COLOR_WRITE_ENABLE_ALL = ( ( ( D3D10_COLOR_WRITE_ENABLE_RED | D3D10_COLOR_WRITE_ENABLE_GREEN ) | D3D10_COLOR_WRITE_ENABLE_BLUE ) | D3D10_COLOR_WRITE_ENABLE_ALPHA )
+ } D3D10_COLOR_WRITE_ENABLE;
+
+typedef struct D3D10_BLEND_DESC
+ {
+ BOOL AlphaToCoverageEnable;
+ BOOL BlendEnable[ 8 ];
+ D3D10_BLEND SrcBlend;
+ D3D10_BLEND DestBlend;
+ D3D10_BLEND_OP BlendOp;
+ D3D10_BLEND SrcBlendAlpha;
+ D3D10_BLEND DestBlendAlpha;
+ D3D10_BLEND_OP BlendOpAlpha;
+ UINT8 RenderTargetWriteMask[ 8 ];
+ } D3D10_BLEND_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0002_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0002_v0_0_s_ifspec;
+
+#ifndef __ID3D10BlendState_INTERFACE_DEFINED__
+#define __ID3D10BlendState_INTERFACE_DEFINED__
+
+/* interface ID3D10BlendState */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10BlendState;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("EDAD8D19-8A35-4d6d-8566-2EA276CDE161")
+ ID3D10BlendState : public ID3D10DeviceChild
+ {
+ public:
+ virtual void STDMETHODCALLTYPE GetDesc(
+ /* [retval][out] */ D3D10_BLEND_DESC *pDesc) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10BlendStateVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10BlendState * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10BlendState * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10BlendState * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10BlendState * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10BlendState * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10BlendState * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10BlendState * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D10BlendState * This,
+ /* [retval][out] */ D3D10_BLEND_DESC *pDesc);
+
+ END_INTERFACE
+ } ID3D10BlendStateVtbl;
+
+ interface ID3D10BlendState
+ {
+ CONST_VTBL struct ID3D10BlendStateVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10BlendState_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10BlendState_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10BlendState_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10BlendState_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10BlendState_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10BlendState_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10BlendState_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10BlendState_GetDesc(This,pDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pDesc) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10BlendState_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0003 */
+/* [local] */
+
+typedef struct D3D10_RASTERIZER_DESC
+ {
+ D3D10_FILL_MODE FillMode;
+ D3D10_CULL_MODE CullMode;
+ BOOL FrontCounterClockwise;
+ INT DepthBias;
+ FLOAT DepthBiasClamp;
+ FLOAT SlopeScaledDepthBias;
+ BOOL DepthClipEnable;
+ BOOL ScissorEnable;
+ BOOL MultisampleEnable;
+ BOOL AntialiasedLineEnable;
+ } D3D10_RASTERIZER_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0003_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0003_v0_0_s_ifspec;
+
+#ifndef __ID3D10RasterizerState_INTERFACE_DEFINED__
+#define __ID3D10RasterizerState_INTERFACE_DEFINED__
+
+/* interface ID3D10RasterizerState */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10RasterizerState;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("A2A07292-89AF-4345-BE2E-C53D9FBB6E9F")
+ ID3D10RasterizerState : public ID3D10DeviceChild
+ {
+ public:
+ virtual void STDMETHODCALLTYPE GetDesc(
+ /* [retval][out] */ D3D10_RASTERIZER_DESC *pDesc) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10RasterizerStateVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10RasterizerState * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10RasterizerState * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10RasterizerState * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10RasterizerState * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10RasterizerState * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10RasterizerState * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10RasterizerState * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D10RasterizerState * This,
+ /* [retval][out] */ D3D10_RASTERIZER_DESC *pDesc);
+
+ END_INTERFACE
+ } ID3D10RasterizerStateVtbl;
+
+ interface ID3D10RasterizerState
+ {
+ CONST_VTBL struct ID3D10RasterizerStateVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10RasterizerState_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10RasterizerState_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10RasterizerState_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10RasterizerState_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10RasterizerState_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10RasterizerState_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10RasterizerState_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10RasterizerState_GetDesc(This,pDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pDesc) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10RasterizerState_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0004 */
+/* [local] */
+
+#if !defined( D3D10_NO_HELPERS ) && defined( __cplusplus )
+inline UINT D3D10CalcSubresource( UINT MipSlice, UINT ArraySlice, UINT MipLevels )
+{ return MipSlice + ArraySlice * MipLevels; }
+#endif
+typedef struct D3D10_SUBRESOURCE_UP
+ {
+ const void *pSysMem;
+ SIZE_T SysMemPitch;
+ SIZE_T SysMemSlicePitch;
+ } D3D10_SUBRESOURCE_UP;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0004_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0004_v0_0_s_ifspec;
+
+#ifndef __ID3D10Resource_INTERFACE_DEFINED__
+#define __ID3D10Resource_INTERFACE_DEFINED__
+
+/* interface ID3D10Resource */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10Resource;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C01-342C-4106-A19F-4F2704F689F0")
+ ID3D10Resource : public ID3D10DeviceChild
+ {
+ public:
+ virtual void STDMETHODCALLTYPE CopySubresourceRegion(
+ /* [in] */ UINT DstSubresource,
+ /* [in] */ SIZE_T DstX,
+ /* [in] */ SIZE_T DstY,
+ /* [in] */ SIZE_T DstZ,
+ /* [in] */ ID3D10Resource *pSrcResource,
+ /* [in] */ UINT SrcSubresource,
+ /* [in] */ const D3D10_BOX *pSrcBox) = 0;
+
+ virtual void STDMETHODCALLTYPE CopyResource(
+ /* [in] */ ID3D10Resource *pSrcResource) = 0;
+
+ virtual void STDMETHODCALLTYPE UpdateSubresource(
+ /* [in] */ UINT DstSubresource,
+ /* [in] */ const D3D10_BOX *pDstBox,
+ /* [in] */ const void *pSrcData,
+ /* [in] */ SIZE_T SrcRowPitch,
+ /* [in] */ SIZE_T SrcDepthPitch) = 0;
+
+ virtual void STDMETHODCALLTYPE GetType(
+ /* [out] */ D3D10_RESOURCE *rType) = 0;
+
+ virtual void STDMETHODCALLTYPE SetEvictionPriority(
+ /* [in] */ UINT EvictionPriority) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetEvictionPriority( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10ResourceVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10Resource * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10Resource * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10Resource * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10Resource * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10Resource * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10Resource * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10Resource * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *CopySubresourceRegion )(
+ ID3D10Resource * This,
+ /* [in] */ UINT DstSubresource,
+ /* [in] */ SIZE_T DstX,
+ /* [in] */ SIZE_T DstY,
+ /* [in] */ SIZE_T DstZ,
+ /* [in] */ ID3D10Resource *pSrcResource,
+ /* [in] */ UINT SrcSubresource,
+ /* [in] */ const D3D10_BOX *pSrcBox);
+
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D10Resource * This,
+ /* [in] */ ID3D10Resource *pSrcResource);
+
+ void ( STDMETHODCALLTYPE *UpdateSubresource )(
+ ID3D10Resource * This,
+ /* [in] */ UINT DstSubresource,
+ /* [in] */ const D3D10_BOX *pDstBox,
+ /* [in] */ const void *pSrcData,
+ /* [in] */ SIZE_T SrcRowPitch,
+ /* [in] */ SIZE_T SrcDepthPitch);
+
+ void ( STDMETHODCALLTYPE *GetType )(
+ ID3D10Resource * This,
+ /* [out] */ D3D10_RESOURCE *rType);
+
+ void ( STDMETHODCALLTYPE *SetEvictionPriority )(
+ ID3D10Resource * This,
+ /* [in] */ UINT EvictionPriority);
+
+ UINT ( STDMETHODCALLTYPE *GetEvictionPriority )(
+ ID3D10Resource * This);
+
+ END_INTERFACE
+ } ID3D10ResourceVtbl;
+
+ interface ID3D10Resource
+ {
+ CONST_VTBL struct ID3D10ResourceVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10Resource_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10Resource_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10Resource_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10Resource_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10Resource_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10Resource_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10Resource_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10Resource_CopySubresourceRegion(This,DstSubresource,DstX,DstY,DstZ,pSrcResource,SrcSubresource,pSrcBox) \
+ ( (This)->lpVtbl -> CopySubresourceRegion(This,DstSubresource,DstX,DstY,DstZ,pSrcResource,SrcSubresource,pSrcBox) )
+
+#define ID3D10Resource_CopyResource(This,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pSrcResource) )
+
+#define ID3D10Resource_UpdateSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
+ ( (This)->lpVtbl -> UpdateSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
+
+#define ID3D10Resource_GetType(This,rType) \
+ ( (This)->lpVtbl -> GetType(This,rType) )
+
+#define ID3D10Resource_SetEvictionPriority(This,EvictionPriority) \
+ ( (This)->lpVtbl -> SetEvictionPriority(This,EvictionPriority) )
+
+#define ID3D10Resource_GetEvictionPriority(This) \
+ ( (This)->lpVtbl -> GetEvictionPriority(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10Resource_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0005 */
+/* [local] */
+
+typedef struct D3D10_BUFFER_DESC
+ {
+ SIZE_T ByteWidth;
+ D3D10_USAGE Usage;
+ UINT BindFlags;
+ UINT CPUAccessFlags;
+ UINT MiscFlags;
+ } D3D10_BUFFER_DESC;
+
+#if !defined( D3D10_NO_HELPERS ) && defined( __cplusplus )
+struct CD3D10_BUFFER_DESC : public D3D10_BUFFER_DESC
+{
+ CD3D10_BUFFER_DESC()
+ {}
+ explicit CD3D10_BUFFER_DESC( const D3D10_BUFFER_DESC& o ) :
+ D3D10_BUFFER_DESC( o )
+ {}
+ explicit CD3D10_BUFFER_DESC(
+ SIZE_T byteWidth,
+ UINT bindFlags,
+ D3D10_USAGE usage = D3D10_USAGE_DEFAULT,
+ UINT cpuaccessFlags = 0,
+ UINT miscFlags = 0 )
+ {
+ ByteWidth = byteWidth;
+ Usage = usage;
+ BindFlags = bindFlags;
+ CPUAccessFlags = cpuaccessFlags ;
+ MiscFlags = miscFlags;
+ }
+ ~CD3D10_BUFFER_DESC() {}
+ operator const D3D10_BUFFER_DESC&() const { return *this; }
+};
+#endif
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0005_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0005_v0_0_s_ifspec;
+
+#ifndef __ID3D10Buffer_INTERFACE_DEFINED__
+#define __ID3D10Buffer_INTERFACE_DEFINED__
+
+/* interface ID3D10Buffer */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10Buffer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C02-342C-4106-A19F-4F2704F689F0")
+ ID3D10Buffer : public ID3D10Resource
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Map(
+ /* [in] */ D3D10_MAP MapType,
+ /* [in] */ UINT Flags,
+ /* [out] */ void **ppData) = 0;
+
+ virtual void STDMETHODCALLTYPE Unmap( void) = 0;
+
+ virtual void STDMETHODCALLTYPE GetDesc(
+ /* [retval][out] */ D3D10_BUFFER_DESC *pDesc) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10BufferVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10Buffer * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10Buffer * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10Buffer * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10Buffer * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10Buffer * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10Buffer * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10Buffer * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *CopySubresourceRegion )(
+ ID3D10Buffer * This,
+ /* [in] */ UINT DstSubresource,
+ /* [in] */ SIZE_T DstX,
+ /* [in] */ SIZE_T DstY,
+ /* [in] */ SIZE_T DstZ,
+ /* [in] */ ID3D10Resource *pSrcResource,
+ /* [in] */ UINT SrcSubresource,
+ /* [in] */ const D3D10_BOX *pSrcBox);
+
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D10Buffer * This,
+ /* [in] */ ID3D10Resource *pSrcResource);
+
+ void ( STDMETHODCALLTYPE *UpdateSubresource )(
+ ID3D10Buffer * This,
+ /* [in] */ UINT DstSubresource,
+ /* [in] */ const D3D10_BOX *pDstBox,
+ /* [in] */ const void *pSrcData,
+ /* [in] */ SIZE_T SrcRowPitch,
+ /* [in] */ SIZE_T SrcDepthPitch);
+
+ void ( STDMETHODCALLTYPE *GetType )(
+ ID3D10Buffer * This,
+ /* [out] */ D3D10_RESOURCE *rType);
+
+ void ( STDMETHODCALLTYPE *SetEvictionPriority )(
+ ID3D10Buffer * This,
+ /* [in] */ UINT EvictionPriority);
+
+ UINT ( STDMETHODCALLTYPE *GetEvictionPriority )(
+ ID3D10Buffer * This);
+
+ HRESULT ( STDMETHODCALLTYPE *Map )(
+ ID3D10Buffer * This,
+ /* [in] */ D3D10_MAP MapType,
+ /* [in] */ UINT Flags,
+ /* [out] */ void **ppData);
+
+ void ( STDMETHODCALLTYPE *Unmap )(
+ ID3D10Buffer * This);
+
+ void ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D10Buffer * This,
+ /* [retval][out] */ D3D10_BUFFER_DESC *pDesc);
+
+ END_INTERFACE
+ } ID3D10BufferVtbl;
+
+ interface ID3D10Buffer
+ {
+ CONST_VTBL struct ID3D10BufferVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10Buffer_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10Buffer_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10Buffer_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10Buffer_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10Buffer_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10Buffer_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10Buffer_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10Buffer_CopySubresourceRegion(This,DstSubresource,DstX,DstY,DstZ,pSrcResource,SrcSubresource,pSrcBox) \
+ ( (This)->lpVtbl -> CopySubresourceRegion(This,DstSubresource,DstX,DstY,DstZ,pSrcResource,SrcSubresource,pSrcBox) )
+
+#define ID3D10Buffer_CopyResource(This,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pSrcResource) )
+
+#define ID3D10Buffer_UpdateSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
+ ( (This)->lpVtbl -> UpdateSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
+
+#define ID3D10Buffer_GetType(This,rType) \
+ ( (This)->lpVtbl -> GetType(This,rType) )
+
+#define ID3D10Buffer_SetEvictionPriority(This,EvictionPriority) \
+ ( (This)->lpVtbl -> SetEvictionPriority(This,EvictionPriority) )
+
+#define ID3D10Buffer_GetEvictionPriority(This) \
+ ( (This)->lpVtbl -> GetEvictionPriority(This) )
+
+
+#define ID3D10Buffer_Map(This,MapType,Flags,ppData) \
+ ( (This)->lpVtbl -> Map(This,MapType,Flags,ppData) )
+
+#define ID3D10Buffer_Unmap(This) \
+ ( (This)->lpVtbl -> Unmap(This) )
+
+#define ID3D10Buffer_GetDesc(This,pDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pDesc) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10Buffer_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0006 */
+/* [local] */
+
+typedef struct D3D10_TEXTURE1D_DESC
+ {
+ SIZE_T Width;
+ UINT MipLevels;
+ UINT ArraySize;
+ DXGI_FORMAT Format;
+ DXGI_SAMPLE_DESC SampleDesc;
+ D3D10_USAGE Usage;
+ UINT BindFlags;
+ UINT CPUAccessFlags;
+ UINT MiscFlags;
+ } D3D10_TEXTURE1D_DESC;
+
+#if !defined( D3D10_NO_HELPERS ) && defined( __cplusplus )
+struct CD3D10_TEXTURE1D_DESC : public D3D10_TEXTURE1D_DESC
+{
+ CD3D10_TEXTURE1D_DESC()
+ {}
+ explicit CD3D10_TEXTURE1D_DESC( const D3D10_TEXTURE1D_DESC& o ) :
+ D3D10_TEXTURE1D_DESC( o )
+ {}
+ explicit CD3D10_TEXTURE1D_DESC(
+ DXGI_FORMAT format,
+ SIZE_T width,
+ UINT arraySize = 1,
+ UINT mipLevels = 0,
+ UINT bindFlags = D3D10_BIND_SHADER_RESOURCE,
+ D3D10_USAGE usage = D3D10_USAGE_DEFAULT,
+ UINT cpuaccessFlags= 0,
+ UINT sampleCount = 1,
+ UINT sampleQuality = 0,
+ UINT miscFlags = 0 )
+ {
+ Width = width;
+ MipLevels = mipLevels;
+ ArraySize = arraySize;
+ Format = format;
+ SampleDesc.Count = sampleCount;
+ SampleDesc.Quality = sampleQuality;
+ Usage = usage;
+ BindFlags = bindFlags;
+ CPUAccessFlags = cpuaccessFlags;
+ MiscFlags = miscFlags;
+ }
+ ~CD3D10_TEXTURE1D_DESC() {}
+ operator const D3D10_TEXTURE1D_DESC&() const { return *this; }
+};
+#endif
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0006_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0006_v0_0_s_ifspec;
+
+#ifndef __ID3D10Texture1D_INTERFACE_DEFINED__
+#define __ID3D10Texture1D_INTERFACE_DEFINED__
+
+/* interface ID3D10Texture1D */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10Texture1D;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C03-342C-4106-A19F-4F2704F689F0")
+ ID3D10Texture1D : public ID3D10Resource
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Map(
+ /* [in] */ UINT Subresource,
+ /* [in] */ D3D10_MAP MapType,
+ /* [in] */ UINT Flags,
+ /* [out] */ void **ppData) = 0;
+
+ virtual void STDMETHODCALLTYPE Unmap(
+ /* [in] */ UINT Subresource) = 0;
+
+ virtual void STDMETHODCALLTYPE GetDesc(
+ /* [retval][out] */ D3D10_TEXTURE1D_DESC *pDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetMultisampleResolveFormat(
+ /* [in] */ DXGI_FORMAT Format) = 0;
+
+ virtual DXGI_FORMAT STDMETHODCALLTYPE GetMultisampleResolveFormat( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10Texture1DVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10Texture1D * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10Texture1D * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10Texture1D * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10Texture1D * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10Texture1D * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10Texture1D * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10Texture1D * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *CopySubresourceRegion )(
+ ID3D10Texture1D * This,
+ /* [in] */ UINT DstSubresource,
+ /* [in] */ SIZE_T DstX,
+ /* [in] */ SIZE_T DstY,
+ /* [in] */ SIZE_T DstZ,
+ /* [in] */ ID3D10Resource *pSrcResource,
+ /* [in] */ UINT SrcSubresource,
+ /* [in] */ const D3D10_BOX *pSrcBox);
+
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D10Texture1D * This,
+ /* [in] */ ID3D10Resource *pSrcResource);
+
+ void ( STDMETHODCALLTYPE *UpdateSubresource )(
+ ID3D10Texture1D * This,
+ /* [in] */ UINT DstSubresource,
+ /* [in] */ const D3D10_BOX *pDstBox,
+ /* [in] */ const void *pSrcData,
+ /* [in] */ SIZE_T SrcRowPitch,
+ /* [in] */ SIZE_T SrcDepthPitch);
+
+ void ( STDMETHODCALLTYPE *GetType )(
+ ID3D10Texture1D * This,
+ /* [out] */ D3D10_RESOURCE *rType);
+
+ void ( STDMETHODCALLTYPE *SetEvictionPriority )(
+ ID3D10Texture1D * This,
+ /* [in] */ UINT EvictionPriority);
+
+ UINT ( STDMETHODCALLTYPE *GetEvictionPriority )(
+ ID3D10Texture1D * This);
+
+ HRESULT ( STDMETHODCALLTYPE *Map )(
+ ID3D10Texture1D * This,
+ /* [in] */ UINT Subresource,
+ /* [in] */ D3D10_MAP MapType,
+ /* [in] */ UINT Flags,
+ /* [out] */ void **ppData);
+
+ void ( STDMETHODCALLTYPE *Unmap )(
+ ID3D10Texture1D * This,
+ /* [in] */ UINT Subresource);
+
+ void ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D10Texture1D * This,
+ /* [retval][out] */ D3D10_TEXTURE1D_DESC *pDesc);
+
+ HRESULT ( STDMETHODCALLTYPE *SetMultisampleResolveFormat )(
+ ID3D10Texture1D * This,
+ /* [in] */ DXGI_FORMAT Format);
+
+ DXGI_FORMAT ( STDMETHODCALLTYPE *GetMultisampleResolveFormat )(
+ ID3D10Texture1D * This);
+
+ END_INTERFACE
+ } ID3D10Texture1DVtbl;
+
+ interface ID3D10Texture1D
+ {
+ CONST_VTBL struct ID3D10Texture1DVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10Texture1D_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10Texture1D_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10Texture1D_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10Texture1D_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10Texture1D_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10Texture1D_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10Texture1D_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10Texture1D_CopySubresourceRegion(This,DstSubresource,DstX,DstY,DstZ,pSrcResource,SrcSubresource,pSrcBox) \
+ ( (This)->lpVtbl -> CopySubresourceRegion(This,DstSubresource,DstX,DstY,DstZ,pSrcResource,SrcSubresource,pSrcBox) )
+
+#define ID3D10Texture1D_CopyResource(This,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pSrcResource) )
+
+#define ID3D10Texture1D_UpdateSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
+ ( (This)->lpVtbl -> UpdateSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
+
+#define ID3D10Texture1D_GetType(This,rType) \
+ ( (This)->lpVtbl -> GetType(This,rType) )
+
+#define ID3D10Texture1D_SetEvictionPriority(This,EvictionPriority) \
+ ( (This)->lpVtbl -> SetEvictionPriority(This,EvictionPriority) )
+
+#define ID3D10Texture1D_GetEvictionPriority(This) \
+ ( (This)->lpVtbl -> GetEvictionPriority(This) )
+
+
+#define ID3D10Texture1D_Map(This,Subresource,MapType,Flags,ppData) \
+ ( (This)->lpVtbl -> Map(This,Subresource,MapType,Flags,ppData) )
+
+#define ID3D10Texture1D_Unmap(This,Subresource) \
+ ( (This)->lpVtbl -> Unmap(This,Subresource) )
+
+#define ID3D10Texture1D_GetDesc(This,pDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pDesc) )
+
+#define ID3D10Texture1D_SetMultisampleResolveFormat(This,Format) \
+ ( (This)->lpVtbl -> SetMultisampleResolveFormat(This,Format) )
+
+#define ID3D10Texture1D_GetMultisampleResolveFormat(This) \
+ ( (This)->lpVtbl -> GetMultisampleResolveFormat(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10Texture1D_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0007 */
+/* [local] */
+
+typedef struct D3D10_TEXTURE2D_DESC
+ {
+ SIZE_T Width;
+ SIZE_T Height;
+ UINT MipLevels;
+ UINT ArraySize;
+ DXGI_FORMAT Format;
+ DXGI_SAMPLE_DESC SampleDesc;
+ D3D10_USAGE Usage;
+ UINT BindFlags;
+ UINT CPUAccessFlags;
+ UINT MiscFlags;
+ } D3D10_TEXTURE2D_DESC;
+
+#if !defined( D3D10_NO_HELPERS ) && defined( __cplusplus )
+struct CD3D10_TEXTURE2D_DESC : public D3D10_TEXTURE2D_DESC
+{
+ CD3D10_TEXTURE2D_DESC()
+ {}
+ explicit CD3D10_TEXTURE2D_DESC( const D3D10_TEXTURE2D_DESC& o ) :
+ D3D10_TEXTURE2D_DESC( o )
+ {}
+ explicit CD3D10_TEXTURE2D_DESC(
+ DXGI_FORMAT format,
+ SIZE_T width,
+ SIZE_T height,
+ UINT arraySize = 1,
+ UINT mipLevels = 0,
+ UINT bindFlags = D3D10_BIND_SHADER_RESOURCE,
+ D3D10_USAGE usage = D3D10_USAGE_DEFAULT,
+ UINT cpuaccessFlags = 0,
+ UINT sampleCount = 1,
+ UINT sampleQuality = 0,
+ UINT miscFlags = 0 )
+ {
+ Width = width;
+ Height = height;
+ MipLevels = mipLevels;
+ ArraySize = arraySize;
+ Format = format;
+ SampleDesc.Count = sampleCount;
+ SampleDesc.Quality = sampleQuality;
+ Usage = usage;
+ BindFlags = bindFlags;
+ CPUAccessFlags = cpuaccessFlags;
+ MiscFlags = miscFlags;
+ }
+ ~CD3D10_TEXTURE2D_DESC() {}
+ operator const D3D10_TEXTURE2D_DESC&() const { return *this; }
+};
+#endif
+typedef struct D3D10_MAPPED_TEXTURE2D
+ {
+ void *pData;
+ SIZE_T RowPitch;
+ } D3D10_MAPPED_TEXTURE2D;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0007_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0007_v0_0_s_ifspec;
+
+#ifndef __ID3D10Texture2D_INTERFACE_DEFINED__
+#define __ID3D10Texture2D_INTERFACE_DEFINED__
+
+/* interface ID3D10Texture2D */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10Texture2D;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C04-342C-4106-A19F-4F2704F689F0")
+ ID3D10Texture2D : public ID3D10Resource
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Map(
+ /* [in] */ UINT Subresource,
+ /* [in] */ D3D10_MAP MapType,
+ /* [in] */ UINT Flags,
+ /* [out] */ D3D10_MAPPED_TEXTURE2D *pMappedTex2D) = 0;
+
+ virtual void STDMETHODCALLTYPE Unmap(
+ /* [in] */ UINT Subresource) = 0;
+
+ virtual void STDMETHODCALLTYPE GetDesc(
+ /* [retval][out] */ D3D10_TEXTURE2D_DESC *pDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetMultisampleResolveFormat(
+ /* [in] */ DXGI_FORMAT Format) = 0;
+
+ virtual DXGI_FORMAT STDMETHODCALLTYPE GetMultisampleResolveFormat( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10Texture2DVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10Texture2D * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10Texture2D * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10Texture2D * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10Texture2D * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10Texture2D * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10Texture2D * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10Texture2D * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *CopySubresourceRegion )(
+ ID3D10Texture2D * This,
+ /* [in] */ UINT DstSubresource,
+ /* [in] */ SIZE_T DstX,
+ /* [in] */ SIZE_T DstY,
+ /* [in] */ SIZE_T DstZ,
+ /* [in] */ ID3D10Resource *pSrcResource,
+ /* [in] */ UINT SrcSubresource,
+ /* [in] */ const D3D10_BOX *pSrcBox);
+
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D10Texture2D * This,
+ /* [in] */ ID3D10Resource *pSrcResource);
+
+ void ( STDMETHODCALLTYPE *UpdateSubresource )(
+ ID3D10Texture2D * This,
+ /* [in] */ UINT DstSubresource,
+ /* [in] */ const D3D10_BOX *pDstBox,
+ /* [in] */ const void *pSrcData,
+ /* [in] */ SIZE_T SrcRowPitch,
+ /* [in] */ SIZE_T SrcDepthPitch);
+
+ void ( STDMETHODCALLTYPE *GetType )(
+ ID3D10Texture2D * This,
+ /* [out] */ D3D10_RESOURCE *rType);
+
+ void ( STDMETHODCALLTYPE *SetEvictionPriority )(
+ ID3D10Texture2D * This,
+ /* [in] */ UINT EvictionPriority);
+
+ UINT ( STDMETHODCALLTYPE *GetEvictionPriority )(
+ ID3D10Texture2D * This);
+
+ HRESULT ( STDMETHODCALLTYPE *Map )(
+ ID3D10Texture2D * This,
+ /* [in] */ UINT Subresource,
+ /* [in] */ D3D10_MAP MapType,
+ /* [in] */ UINT Flags,
+ /* [out] */ D3D10_MAPPED_TEXTURE2D *pMappedTex2D);
+
+ void ( STDMETHODCALLTYPE *Unmap )(
+ ID3D10Texture2D * This,
+ /* [in] */ UINT Subresource);
+
+ void ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D10Texture2D * This,
+ /* [retval][out] */ D3D10_TEXTURE2D_DESC *pDesc);
+
+ HRESULT ( STDMETHODCALLTYPE *SetMultisampleResolveFormat )(
+ ID3D10Texture2D * This,
+ /* [in] */ DXGI_FORMAT Format);
+
+ DXGI_FORMAT ( STDMETHODCALLTYPE *GetMultisampleResolveFormat )(
+ ID3D10Texture2D * This);
+
+ END_INTERFACE
+ } ID3D10Texture2DVtbl;
+
+ interface ID3D10Texture2D
+ {
+ CONST_VTBL struct ID3D10Texture2DVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10Texture2D_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10Texture2D_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10Texture2D_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10Texture2D_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10Texture2D_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10Texture2D_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10Texture2D_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10Texture2D_CopySubresourceRegion(This,DstSubresource,DstX,DstY,DstZ,pSrcResource,SrcSubresource,pSrcBox) \
+ ( (This)->lpVtbl -> CopySubresourceRegion(This,DstSubresource,DstX,DstY,DstZ,pSrcResource,SrcSubresource,pSrcBox) )
+
+#define ID3D10Texture2D_CopyResource(This,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pSrcResource) )
+
+#define ID3D10Texture2D_UpdateSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
+ ( (This)->lpVtbl -> UpdateSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
+
+#define ID3D10Texture2D_GetType(This,rType) \
+ ( (This)->lpVtbl -> GetType(This,rType) )
+
+#define ID3D10Texture2D_SetEvictionPriority(This,EvictionPriority) \
+ ( (This)->lpVtbl -> SetEvictionPriority(This,EvictionPriority) )
+
+#define ID3D10Texture2D_GetEvictionPriority(This) \
+ ( (This)->lpVtbl -> GetEvictionPriority(This) )
+
+
+#define ID3D10Texture2D_Map(This,Subresource,MapType,Flags,pMappedTex2D) \
+ ( (This)->lpVtbl -> Map(This,Subresource,MapType,Flags,pMappedTex2D) )
+
+#define ID3D10Texture2D_Unmap(This,Subresource) \
+ ( (This)->lpVtbl -> Unmap(This,Subresource) )
+
+#define ID3D10Texture2D_GetDesc(This,pDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pDesc) )
+
+#define ID3D10Texture2D_SetMultisampleResolveFormat(This,Format) \
+ ( (This)->lpVtbl -> SetMultisampleResolveFormat(This,Format) )
+
+#define ID3D10Texture2D_GetMultisampleResolveFormat(This) \
+ ( (This)->lpVtbl -> GetMultisampleResolveFormat(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10Texture2D_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0008 */
+/* [local] */
+
+typedef struct D3D10_TEXTURE3D_DESC
+ {
+ SIZE_T Width;
+ SIZE_T Height;
+ SIZE_T Depth;
+ UINT MipLevels;
+ DXGI_FORMAT Format;
+ DXGI_SAMPLE_DESC SampleDesc;
+ D3D10_USAGE Usage;
+ UINT BindFlags;
+ UINT CPUAccessFlags;
+ UINT MiscFlags;
+ } D3D10_TEXTURE3D_DESC;
+
+#if !defined( D3D10_NO_HELPERS ) && defined( __cplusplus )
+struct CD3D10_TEXTURE3D_DESC : public D3D10_TEXTURE3D_DESC
+{
+ CD3D10_TEXTURE3D_DESC()
+ {}
+ explicit CD3D10_TEXTURE3D_DESC( const D3D10_TEXTURE3D_DESC& o ) :
+ D3D10_TEXTURE3D_DESC( o )
+ {}
+ explicit CD3D10_TEXTURE3D_DESC(
+ DXGI_FORMAT format,
+ SIZE_T width,
+ SIZE_T height,
+ SIZE_T depth,
+ UINT mipLevels = 0,
+ UINT bindFlags = D3D10_BIND_SHADER_RESOURCE,
+ D3D10_USAGE usage = D3D10_USAGE_DEFAULT,
+ UINT cpuaccessFlags = 0,
+ UINT sampleCount = 1,
+ UINT sampleQuality = 0,
+ UINT miscFlags = 0 )
+ {
+ Width = width;
+ Height = height;
+ Depth = depth;
+ MipLevels = mipLevels;
+ Format = format;
+ SampleDesc.Count = sampleCount;
+ SampleDesc.Quality = sampleQuality;
+ Usage = usage;
+ BindFlags = bindFlags;
+ CPUAccessFlags = cpuaccessFlags;
+ MiscFlags = miscFlags;
+ }
+ ~CD3D10_TEXTURE3D_DESC() {}
+ operator const D3D10_TEXTURE3D_DESC&() const { return *this; }
+};
+#endif
+typedef struct D3D10_MAPPED_TEXTURE3D
+ {
+ void *pData;
+ SIZE_T RowPitch;
+ SIZE_T DepthPitch;
+ } D3D10_MAPPED_TEXTURE3D;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0008_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0008_v0_0_s_ifspec;
+
+#ifndef __ID3D10Texture3D_INTERFACE_DEFINED__
+#define __ID3D10Texture3D_INTERFACE_DEFINED__
+
+/* interface ID3D10Texture3D */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10Texture3D;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C05-342C-4106-A19F-4F2704F689F0")
+ ID3D10Texture3D : public ID3D10Resource
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Map(
+ /* [in] */ UINT Subresource,
+ /* [in] */ D3D10_MAP MapType,
+ /* [in] */ UINT Flags,
+ /* [out] */ D3D10_MAPPED_TEXTURE3D *pMappedTex3D) = 0;
+
+ virtual void STDMETHODCALLTYPE Unmap(
+ /* [in] */ UINT Subresource) = 0;
+
+ virtual void STDMETHODCALLTYPE GetDesc(
+ /* [retval][out] */ D3D10_TEXTURE3D_DESC *pDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetMultisampleResolveFormat(
+ /* [in] */ DXGI_FORMAT Format) = 0;
+
+ virtual DXGI_FORMAT STDMETHODCALLTYPE GetMultisampleResolveFormat( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10Texture3DVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10Texture3D * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10Texture3D * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10Texture3D * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10Texture3D * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10Texture3D * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10Texture3D * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10Texture3D * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *CopySubresourceRegion )(
+ ID3D10Texture3D * This,
+ /* [in] */ UINT DstSubresource,
+ /* [in] */ SIZE_T DstX,
+ /* [in] */ SIZE_T DstY,
+ /* [in] */ SIZE_T DstZ,
+ /* [in] */ ID3D10Resource *pSrcResource,
+ /* [in] */ UINT SrcSubresource,
+ /* [in] */ const D3D10_BOX *pSrcBox);
+
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D10Texture3D * This,
+ /* [in] */ ID3D10Resource *pSrcResource);
+
+ void ( STDMETHODCALLTYPE *UpdateSubresource )(
+ ID3D10Texture3D * This,
+ /* [in] */ UINT DstSubresource,
+ /* [in] */ const D3D10_BOX *pDstBox,
+ /* [in] */ const void *pSrcData,
+ /* [in] */ SIZE_T SrcRowPitch,
+ /* [in] */ SIZE_T SrcDepthPitch);
+
+ void ( STDMETHODCALLTYPE *GetType )(
+ ID3D10Texture3D * This,
+ /* [out] */ D3D10_RESOURCE *rType);
+
+ void ( STDMETHODCALLTYPE *SetEvictionPriority )(
+ ID3D10Texture3D * This,
+ /* [in] */ UINT EvictionPriority);
+
+ UINT ( STDMETHODCALLTYPE *GetEvictionPriority )(
+ ID3D10Texture3D * This);
+
+ HRESULT ( STDMETHODCALLTYPE *Map )(
+ ID3D10Texture3D * This,
+ /* [in] */ UINT Subresource,
+ /* [in] */ D3D10_MAP MapType,
+ /* [in] */ UINT Flags,
+ /* [out] */ D3D10_MAPPED_TEXTURE3D *pMappedTex3D);
+
+ void ( STDMETHODCALLTYPE *Unmap )(
+ ID3D10Texture3D * This,
+ /* [in] */ UINT Subresource);
+
+ void ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D10Texture3D * This,
+ /* [retval][out] */ D3D10_TEXTURE3D_DESC *pDesc);
+
+ HRESULT ( STDMETHODCALLTYPE *SetMultisampleResolveFormat )(
+ ID3D10Texture3D * This,
+ /* [in] */ DXGI_FORMAT Format);
+
+ DXGI_FORMAT ( STDMETHODCALLTYPE *GetMultisampleResolveFormat )(
+ ID3D10Texture3D * This);
+
+ END_INTERFACE
+ } ID3D10Texture3DVtbl;
+
+ interface ID3D10Texture3D
+ {
+ CONST_VTBL struct ID3D10Texture3DVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10Texture3D_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10Texture3D_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10Texture3D_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10Texture3D_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10Texture3D_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10Texture3D_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10Texture3D_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10Texture3D_CopySubresourceRegion(This,DstSubresource,DstX,DstY,DstZ,pSrcResource,SrcSubresource,pSrcBox) \
+ ( (This)->lpVtbl -> CopySubresourceRegion(This,DstSubresource,DstX,DstY,DstZ,pSrcResource,SrcSubresource,pSrcBox) )
+
+#define ID3D10Texture3D_CopyResource(This,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pSrcResource) )
+
+#define ID3D10Texture3D_UpdateSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
+ ( (This)->lpVtbl -> UpdateSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
+
+#define ID3D10Texture3D_GetType(This,rType) \
+ ( (This)->lpVtbl -> GetType(This,rType) )
+
+#define ID3D10Texture3D_SetEvictionPriority(This,EvictionPriority) \
+ ( (This)->lpVtbl -> SetEvictionPriority(This,EvictionPriority) )
+
+#define ID3D10Texture3D_GetEvictionPriority(This) \
+ ( (This)->lpVtbl -> GetEvictionPriority(This) )
+
+
+#define ID3D10Texture3D_Map(This,Subresource,MapType,Flags,pMappedTex3D) \
+ ( (This)->lpVtbl -> Map(This,Subresource,MapType,Flags,pMappedTex3D) )
+
+#define ID3D10Texture3D_Unmap(This,Subresource) \
+ ( (This)->lpVtbl -> Unmap(This,Subresource) )
+
+#define ID3D10Texture3D_GetDesc(This,pDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pDesc) )
+
+#define ID3D10Texture3D_SetMultisampleResolveFormat(This,Format) \
+ ( (This)->lpVtbl -> SetMultisampleResolveFormat(This,Format) )
+
+#define ID3D10Texture3D_GetMultisampleResolveFormat(This) \
+ ( (This)->lpVtbl -> GetMultisampleResolveFormat(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10Texture3D_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0009 */
+/* [local] */
+
+typedef struct D3D10_TEXTURECUBE_DESC
+ {
+ SIZE_T EdgeWidth;
+ UINT MipLevels;
+ DXGI_FORMAT Format;
+ DXGI_SAMPLE_DESC SampleDesc;
+ D3D10_USAGE Usage;
+ UINT BindFlags;
+ UINT CPUAccessFlags;
+ UINT MiscFlags;
+ } D3D10_TEXTURECUBE_DESC;
+
+#if !defined( D3D10_NO_HELPERS ) && defined( __cplusplus )
+struct CD3D10_TEXTURECUBE_DESC : public D3D10_TEXTURECUBE_DESC
+{
+ CD3D10_TEXTURECUBE_DESC()
+ {}
+ explicit CD3D10_TEXTURECUBE_DESC( const D3D10_TEXTURECUBE_DESC& o ) :
+ D3D10_TEXTURECUBE_DESC( o )
+ {}
+ explicit CD3D10_TEXTURECUBE_DESC(
+ DXGI_FORMAT format,
+ SIZE_T edgeWidth,
+ UINT mipLevels = 0,
+ UINT bindFlags = D3D10_BIND_SHADER_RESOURCE,
+ D3D10_USAGE usage = D3D10_USAGE_DEFAULT,
+ UINT cpuaccessFlags = 0,
+ UINT sampleCount = 1,
+ UINT sampleQuality = 0,
+ UINT miscFlags = 0 )
+ {
+ EdgeWidth = edgeWidth;
+ MipLevels = mipLevels;
+ Format = format;
+ SampleDesc.Count = sampleCount;
+ SampleDesc.Quality = sampleQuality;
+ Usage = usage;
+ BindFlags = bindFlags;
+ CPUAccessFlags = cpuaccessFlags;
+ MiscFlags = miscFlags;
+ }
+ ~CD3D10_TEXTURECUBE_DESC() {}
+ operator const D3D10_TEXTURECUBE_DESC&() const { return *this; }
+};
+#endif
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0009_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0009_v0_0_s_ifspec;
+
+#ifndef __ID3D10TextureCube_INTERFACE_DEFINED__
+#define __ID3D10TextureCube_INTERFACE_DEFINED__
+
+/* interface ID3D10TextureCube */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10TextureCube;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C06-342C-4106-A19F-4F2704F689F0")
+ ID3D10TextureCube : public ID3D10Resource
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Map(
+ /* [in] */ UINT Subresource,
+ /* [in] */ D3D10_MAP MapType,
+ /* [in] */ UINT Flags,
+ /* [out] */ D3D10_MAPPED_TEXTURE2D *pMappedFace) = 0;
+
+ virtual void STDMETHODCALLTYPE Unmap(
+ /* [in] */ UINT Subresource) = 0;
+
+ virtual void STDMETHODCALLTYPE GetDesc(
+ /* [retval][out] */ D3D10_TEXTURECUBE_DESC *pDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetMultisampleResolveFormat(
+ /* [in] */ DXGI_FORMAT Format) = 0;
+
+ virtual DXGI_FORMAT STDMETHODCALLTYPE GetMultisampleResolveFormat( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10TextureCubeVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10TextureCube * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10TextureCube * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10TextureCube * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10TextureCube * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10TextureCube * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10TextureCube * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10TextureCube * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *CopySubresourceRegion )(
+ ID3D10TextureCube * This,
+ /* [in] */ UINT DstSubresource,
+ /* [in] */ SIZE_T DstX,
+ /* [in] */ SIZE_T DstY,
+ /* [in] */ SIZE_T DstZ,
+ /* [in] */ ID3D10Resource *pSrcResource,
+ /* [in] */ UINT SrcSubresource,
+ /* [in] */ const D3D10_BOX *pSrcBox);
+
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D10TextureCube * This,
+ /* [in] */ ID3D10Resource *pSrcResource);
+
+ void ( STDMETHODCALLTYPE *UpdateSubresource )(
+ ID3D10TextureCube * This,
+ /* [in] */ UINT DstSubresource,
+ /* [in] */ const D3D10_BOX *pDstBox,
+ /* [in] */ const void *pSrcData,
+ /* [in] */ SIZE_T SrcRowPitch,
+ /* [in] */ SIZE_T SrcDepthPitch);
+
+ void ( STDMETHODCALLTYPE *GetType )(
+ ID3D10TextureCube * This,
+ /* [out] */ D3D10_RESOURCE *rType);
+
+ void ( STDMETHODCALLTYPE *SetEvictionPriority )(
+ ID3D10TextureCube * This,
+ /* [in] */ UINT EvictionPriority);
+
+ UINT ( STDMETHODCALLTYPE *GetEvictionPriority )(
+ ID3D10TextureCube * This);
+
+ HRESULT ( STDMETHODCALLTYPE *Map )(
+ ID3D10TextureCube * This,
+ /* [in] */ UINT Subresource,
+ /* [in] */ D3D10_MAP MapType,
+ /* [in] */ UINT Flags,
+ /* [out] */ D3D10_MAPPED_TEXTURE2D *pMappedFace);
+
+ void ( STDMETHODCALLTYPE *Unmap )(
+ ID3D10TextureCube * This,
+ /* [in] */ UINT Subresource);
+
+ void ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D10TextureCube * This,
+ /* [retval][out] */ D3D10_TEXTURECUBE_DESC *pDesc);
+
+ HRESULT ( STDMETHODCALLTYPE *SetMultisampleResolveFormat )(
+ ID3D10TextureCube * This,
+ /* [in] */ DXGI_FORMAT Format);
+
+ DXGI_FORMAT ( STDMETHODCALLTYPE *GetMultisampleResolveFormat )(
+ ID3D10TextureCube * This);
+
+ END_INTERFACE
+ } ID3D10TextureCubeVtbl;
+
+ interface ID3D10TextureCube
+ {
+ CONST_VTBL struct ID3D10TextureCubeVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10TextureCube_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10TextureCube_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10TextureCube_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10TextureCube_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10TextureCube_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10TextureCube_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10TextureCube_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10TextureCube_CopySubresourceRegion(This,DstSubresource,DstX,DstY,DstZ,pSrcResource,SrcSubresource,pSrcBox) \
+ ( (This)->lpVtbl -> CopySubresourceRegion(This,DstSubresource,DstX,DstY,DstZ,pSrcResource,SrcSubresource,pSrcBox) )
+
+#define ID3D10TextureCube_CopyResource(This,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pSrcResource) )
+
+#define ID3D10TextureCube_UpdateSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
+ ( (This)->lpVtbl -> UpdateSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
+
+#define ID3D10TextureCube_GetType(This,rType) \
+ ( (This)->lpVtbl -> GetType(This,rType) )
+
+#define ID3D10TextureCube_SetEvictionPriority(This,EvictionPriority) \
+ ( (This)->lpVtbl -> SetEvictionPriority(This,EvictionPriority) )
+
+#define ID3D10TextureCube_GetEvictionPriority(This) \
+ ( (This)->lpVtbl -> GetEvictionPriority(This) )
+
+
+#define ID3D10TextureCube_Map(This,Subresource,MapType,Flags,pMappedFace) \
+ ( (This)->lpVtbl -> Map(This,Subresource,MapType,Flags,pMappedFace) )
+
+#define ID3D10TextureCube_Unmap(This,Subresource) \
+ ( (This)->lpVtbl -> Unmap(This,Subresource) )
+
+#define ID3D10TextureCube_GetDesc(This,pDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pDesc) )
+
+#define ID3D10TextureCube_SetMultisampleResolveFormat(This,Format) \
+ ( (This)->lpVtbl -> SetMultisampleResolveFormat(This,Format) )
+
+#define ID3D10TextureCube_GetMultisampleResolveFormat(This) \
+ ( (This)->lpVtbl -> GetMultisampleResolveFormat(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10TextureCube_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0010 */
+/* [local] */
+
+typedef
+enum D3D10_TEXTURECUBE_FACE
+ { D3D10_TEXTURECUBE_FACE_POSITIVE_X = 0,
+ D3D10_TEXTURECUBE_FACE_NEGATIVE_X = 1,
+ D3D10_TEXTURECUBE_FACE_POSITIVE_Y = 2,
+ D3D10_TEXTURECUBE_FACE_NEGATIVE_Y = 3,
+ D3D10_TEXTURECUBE_FACE_POSITIVE_Z = 4,
+ D3D10_TEXTURECUBE_FACE_NEGATIVE_Z = 5
+ } D3D10_TEXTURECUBE_FACE;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0010_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0010_v0_0_s_ifspec;
+
+#ifndef __ID3D10View_INTERFACE_DEFINED__
+#define __ID3D10View_INTERFACE_DEFINED__
+
+/* interface ID3D10View */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10View;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("C902B03F-60A7-49BA-9936-2A3AB37A7E33")
+ ID3D10View : public ID3D10DeviceChild
+ {
+ public:
+ virtual void STDMETHODCALLTYPE GetResource(
+ /* [retval][out] */ ID3D10Resource **ppResource) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10ViewVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10View * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10View * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10View * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10View * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10View * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10View * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10View * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *GetResource )(
+ ID3D10View * This,
+ /* [retval][out] */ ID3D10Resource **ppResource);
+
+ END_INTERFACE
+ } ID3D10ViewVtbl;
+
+ interface ID3D10View
+ {
+ CONST_VTBL struct ID3D10ViewVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10View_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10View_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10View_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10View_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10View_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10View_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10View_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10View_GetResource(This,ppResource) \
+ ( (This)->lpVtbl -> GetResource(This,ppResource) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10View_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0011 */
+/* [local] */
+
+typedef struct D3D10_BUFFER_SRV
+ {
+ SIZE_T ElementOffset;
+ SIZE_T ElementWidth;
+ } D3D10_BUFFER_SRV;
+
+typedef struct D3D10_TEX1D_SRV
+ {
+ UINT MostDetailedMip;
+ UINT MipLevels;
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ } D3D10_TEX1D_SRV;
+
+typedef struct D3D10_TEX2D_SRV
+ {
+ UINT MostDetailedMip;
+ UINT MipLevels;
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ } D3D10_TEX2D_SRV;
+
+typedef struct D3D10_TEX3D_SRV
+ {
+ UINT MostDetailedMip;
+ UINT MipLevels;
+ } D3D10_TEX3D_SRV;
+
+typedef struct D3D10_TEXCUBE_SRV
+ {
+ UINT MostDetailedMip;
+ UINT MipLevels;
+ } D3D10_TEXCUBE_SRV;
+
+typedef struct D3D10_SHADER_RESOURCE_VIEW_DESC
+ {
+ DXGI_FORMAT Format;
+ D3D10_RESOURCE ResourceType;
+ union
+ {
+ D3D10_BUFFER_SRV Buffer;
+ D3D10_TEX1D_SRV Texture1D;
+ D3D10_TEX2D_SRV Texture2D;
+ D3D10_TEX3D_SRV Texture3D;
+ D3D10_TEXCUBE_SRV TextureCube;
+ } ;
+ } D3D10_SHADER_RESOURCE_VIEW_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0011_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0011_v0_0_s_ifspec;
+
+#ifndef __ID3D10ShaderResourceView_INTERFACE_DEFINED__
+#define __ID3D10ShaderResourceView_INTERFACE_DEFINED__
+
+/* interface ID3D10ShaderResourceView */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10ShaderResourceView;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C07-342C-4106-A19F-4F2704F689F0")
+ ID3D10ShaderResourceView : public ID3D10View
+ {
+ public:
+ virtual void STDMETHODCALLTYPE GetDesc(
+ /* [retval][out] */ D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10ShaderResourceViewVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10ShaderResourceView * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10ShaderResourceView * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10ShaderResourceView * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10ShaderResourceView * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10ShaderResourceView * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10ShaderResourceView * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10ShaderResourceView * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *GetResource )(
+ ID3D10ShaderResourceView * This,
+ /* [retval][out] */ ID3D10Resource **ppResource);
+
+ void ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D10ShaderResourceView * This,
+ /* [retval][out] */ D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc);
+
+ END_INTERFACE
+ } ID3D10ShaderResourceViewVtbl;
+
+ interface ID3D10ShaderResourceView
+ {
+ CONST_VTBL struct ID3D10ShaderResourceViewVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10ShaderResourceView_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10ShaderResourceView_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10ShaderResourceView_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10ShaderResourceView_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10ShaderResourceView_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10ShaderResourceView_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10ShaderResourceView_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10ShaderResourceView_GetResource(This,ppResource) \
+ ( (This)->lpVtbl -> GetResource(This,ppResource) )
+
+
+#define ID3D10ShaderResourceView_GetDesc(This,pDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pDesc) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10ShaderResourceView_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0012 */
+/* [local] */
+
+typedef struct D3D10_BUFFER_RTV
+ {
+ SIZE_T ElementOffset;
+ SIZE_T ElementWidth;
+ } D3D10_BUFFER_RTV;
+
+typedef struct D3D10_TEX1D_RTV
+ {
+ UINT MipSlice;
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ } D3D10_TEX1D_RTV;
+
+typedef struct D3D10_TEX2D_RTV
+ {
+ UINT MipSlice;
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ } D3D10_TEX2D_RTV;
+
+typedef struct D3D10_TEX3D_RTV
+ {
+ UINT MipSlice;
+ UINT FirstWSlice;
+ UINT WSize;
+ } D3D10_TEX3D_RTV;
+
+typedef struct D3D10_TEXCUBE_RTV
+ {
+ UINT MipSlice;
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ } D3D10_TEXCUBE_RTV;
+
+typedef struct D3D10_RENDER_TARGET_VIEW_DESC
+ {
+ DXGI_FORMAT Format;
+ D3D10_RESOURCE ResourceType;
+ union
+ {
+ D3D10_BUFFER_RTV Buffer;
+ D3D10_TEX1D_RTV Texture1D;
+ D3D10_TEX2D_RTV Texture2D;
+ D3D10_TEX3D_RTV Texture3D;
+ D3D10_TEXCUBE_RTV TextureCube;
+ } ;
+ } D3D10_RENDER_TARGET_VIEW_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0012_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0012_v0_0_s_ifspec;
+
+#ifndef __ID3D10RenderTargetView_INTERFACE_DEFINED__
+#define __ID3D10RenderTargetView_INTERFACE_DEFINED__
+
+/* interface ID3D10RenderTargetView */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10RenderTargetView;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C08-342C-4106-A19F-4F2704F689F0")
+ ID3D10RenderTargetView : public ID3D10View
+ {
+ public:
+ virtual void STDMETHODCALLTYPE GetDesc(
+ /* [retval][out] */ D3D10_RENDER_TARGET_VIEW_DESC *pDesc) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10RenderTargetViewVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10RenderTargetView * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10RenderTargetView * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10RenderTargetView * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10RenderTargetView * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10RenderTargetView * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10RenderTargetView * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10RenderTargetView * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *GetResource )(
+ ID3D10RenderTargetView * This,
+ /* [retval][out] */ ID3D10Resource **ppResource);
+
+ void ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D10RenderTargetView * This,
+ /* [retval][out] */ D3D10_RENDER_TARGET_VIEW_DESC *pDesc);
+
+ END_INTERFACE
+ } ID3D10RenderTargetViewVtbl;
+
+ interface ID3D10RenderTargetView
+ {
+ CONST_VTBL struct ID3D10RenderTargetViewVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10RenderTargetView_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10RenderTargetView_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10RenderTargetView_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10RenderTargetView_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10RenderTargetView_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10RenderTargetView_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10RenderTargetView_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10RenderTargetView_GetResource(This,ppResource) \
+ ( (This)->lpVtbl -> GetResource(This,ppResource) )
+
+
+#define ID3D10RenderTargetView_GetDesc(This,pDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pDesc) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10RenderTargetView_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0013 */
+/* [local] */
+
+typedef struct D3D10_TEX1D_DSV
+ {
+ UINT MipSlice;
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ } D3D10_TEX1D_DSV;
+
+typedef struct D3D10_TEX2D_DSV
+ {
+ UINT MipSlice;
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ } D3D10_TEX2D_DSV;
+
+typedef struct D3D10_TEXCUBE_DSV
+ {
+ UINT MipSlice;
+ UINT FirstArraySlice;
+ UINT ArraySize;
+ } D3D10_TEXCUBE_DSV;
+
+typedef struct D3D10_DEPTH_STENCIL_VIEW_DESC
+ {
+ DXGI_FORMAT Format;
+ D3D10_RESOURCE ResourceType;
+ union
+ {
+ D3D10_TEX1D_DSV Texture1D;
+ D3D10_TEX2D_DSV Texture2D;
+ D3D10_TEXCUBE_DSV TextureCube;
+ } ;
+ } D3D10_DEPTH_STENCIL_VIEW_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0013_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0013_v0_0_s_ifspec;
+
+#ifndef __ID3D10DepthStencilView_INTERFACE_DEFINED__
+#define __ID3D10DepthStencilView_INTERFACE_DEFINED__
+
+/* interface ID3D10DepthStencilView */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10DepthStencilView;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C09-342C-4106-A19F-4F2704F689F0")
+ ID3D10DepthStencilView : public ID3D10View
+ {
+ public:
+ virtual void STDMETHODCALLTYPE GetDesc(
+ /* [retval][out] */ D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10DepthStencilViewVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10DepthStencilView * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10DepthStencilView * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10DepthStencilView * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10DepthStencilView * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10DepthStencilView * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10DepthStencilView * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10DepthStencilView * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *GetResource )(
+ ID3D10DepthStencilView * This,
+ /* [retval][out] */ ID3D10Resource **ppResource);
+
+ void ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D10DepthStencilView * This,
+ /* [retval][out] */ D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc);
+
+ END_INTERFACE
+ } ID3D10DepthStencilViewVtbl;
+
+ interface ID3D10DepthStencilView
+ {
+ CONST_VTBL struct ID3D10DepthStencilViewVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10DepthStencilView_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10DepthStencilView_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10DepthStencilView_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10DepthStencilView_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10DepthStencilView_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10DepthStencilView_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10DepthStencilView_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10DepthStencilView_GetResource(This,ppResource) \
+ ( (This)->lpVtbl -> GetResource(This,ppResource) )
+
+
+#define ID3D10DepthStencilView_GetDesc(This,pDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pDesc) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10DepthStencilView_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0014 */
+/* [local] */
+
+typedef struct D3D10_VERTEX_SHADER_DESC
+ {
+ const BYTE *pFunction;
+ UINT SizeInBytes;
+ } D3D10_VERTEX_SHADER_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0014_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0014_v0_0_s_ifspec;
+
+#ifndef __ID3D10VertexShader_INTERFACE_DEFINED__
+#define __ID3D10VertexShader_INTERFACE_DEFINED__
+
+/* interface ID3D10VertexShader */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10VertexShader;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C0A-342C-4106-A19F-4F2704F689F0")
+ ID3D10VertexShader : public ID3D10DeviceChild
+ {
+ public:
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10VertexShaderVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10VertexShader * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10VertexShader * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10VertexShader * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10VertexShader * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10VertexShader * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10VertexShader * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10VertexShader * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ END_INTERFACE
+ } ID3D10VertexShaderVtbl;
+
+ interface ID3D10VertexShader
+ {
+ CONST_VTBL struct ID3D10VertexShaderVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10VertexShader_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10VertexShader_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10VertexShader_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10VertexShader_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10VertexShader_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10VertexShader_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10VertexShader_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10VertexShader_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0015 */
+/* [local] */
+
+typedef struct D3D10_GEOMETRY_SHADER_DESC
+ {
+ const BYTE *pFunction;
+ UINT SizeInBytes;
+ const D3D10_SO_DECLARATION_ENTRY *pDeclaration;
+ SIZE_T NumElements;
+ UINT StreamStride;
+ } D3D10_GEOMETRY_SHADER_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0015_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0015_v0_0_s_ifspec;
+
+#ifndef __ID3D10GeometryShader_INTERFACE_DEFINED__
+#define __ID3D10GeometryShader_INTERFACE_DEFINED__
+
+/* interface ID3D10GeometryShader */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10GeometryShader;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6316BE88-54CD-4040-AB44-20461BC81F68")
+ ID3D10GeometryShader : public ID3D10DeviceChild
+ {
+ public:
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10GeometryShaderVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10GeometryShader * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10GeometryShader * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10GeometryShader * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10GeometryShader * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10GeometryShader * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10GeometryShader * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10GeometryShader * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ END_INTERFACE
+ } ID3D10GeometryShaderVtbl;
+
+ interface ID3D10GeometryShader
+ {
+ CONST_VTBL struct ID3D10GeometryShaderVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10GeometryShader_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10GeometryShader_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10GeometryShader_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10GeometryShader_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10GeometryShader_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10GeometryShader_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10GeometryShader_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10GeometryShader_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0016 */
+/* [local] */
+
+typedef struct D3D10_PIXEL_SHADER_DESC
+ {
+ const BYTE *pFunction;
+ UINT SizeInBytes;
+ } D3D10_PIXEL_SHADER_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0016_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0016_v0_0_s_ifspec;
+
+#ifndef __ID3D10PixelShader_INTERFACE_DEFINED__
+#define __ID3D10PixelShader_INTERFACE_DEFINED__
+
+/* interface ID3D10PixelShader */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10PixelShader;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("4968B601-9D00-4cde-8346-8E7F675819B6")
+ ID3D10PixelShader : public ID3D10DeviceChild
+ {
+ public:
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10PixelShaderVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10PixelShader * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10PixelShader * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10PixelShader * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10PixelShader * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10PixelShader * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10PixelShader * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10PixelShader * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ END_INTERFACE
+ } ID3D10PixelShaderVtbl;
+
+ interface ID3D10PixelShader
+ {
+ CONST_VTBL struct ID3D10PixelShaderVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10PixelShader_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10PixelShader_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10PixelShader_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10PixelShader_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10PixelShader_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10PixelShader_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10PixelShader_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10PixelShader_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0017 */
+/* [local] */
+
+typedef struct D3D10_INPUT_LAYOUT_DESC
+ {
+ D3D10_INPUT_ELEMENT_DESC *pDeclaration;
+ SIZE_T NumElements;
+ const void *pShaderBytecodeWithInputSignature;
+ } D3D10_INPUT_LAYOUT_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0017_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0017_v0_0_s_ifspec;
+
+#ifndef __ID3D10InputLayout_INTERFACE_DEFINED__
+#define __ID3D10InputLayout_INTERFACE_DEFINED__
+
+/* interface ID3D10InputLayout */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10InputLayout;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C0B-342C-4106-A19F-4F2704F689F0")
+ ID3D10InputLayout : public ID3D10DeviceChild
+ {
+ public:
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10InputLayoutVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10InputLayout * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10InputLayout * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10InputLayout * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10InputLayout * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10InputLayout * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10InputLayout * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10InputLayout * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ END_INTERFACE
+ } ID3D10InputLayoutVtbl;
+
+ interface ID3D10InputLayout
+ {
+ CONST_VTBL struct ID3D10InputLayoutVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10InputLayout_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10InputLayout_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10InputLayout_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10InputLayout_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10InputLayout_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10InputLayout_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10InputLayout_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10InputLayout_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0018 */
+/* [local] */
+
+typedef
+enum D3D10_FILTER
+ { D3D10_FILTER_MIN_MAG_MIP_POINT = 0,
+ D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
+ D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
+ D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
+ D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
+ D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
+ D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
+ D3D10_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
+ D3D10_FILTER_ANISOTROPIC = 0x55,
+ D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
+ D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
+ D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
+ D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
+ D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
+ D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
+ D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
+ D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
+ D3D10_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
+ D3D10_FILTER_TEXT_1BIT = 0x80000000
+ } D3D10_FILTER;
+
+typedef
+enum D3D10_FILTER_TYPE
+ { D3D10_FILTER_TYPE_POINT = 0,
+ D3D10_FILTER_TYPE_LINEAR = 1
+ } D3D10_FILTER_TYPE;
+
+#define D3D10_FILTER_TYPE_MASK ( 0x3 )
+
+#define D3D10_MIN_FILTER_SHIFT ( 4 )
+
+#define D3D10_MAG_FILTER_SHIFT ( 2 )
+
+#define D3D10_MIP_FILTER_SHIFT ( 0 )
+
+#define D3D10_COMPARISON_FILTERING_BIT ( 0x80 )
+
+#define D3D10_ANISOTROPIC_FILTERING_BIT ( 0x40 )
+
+#define D3D10_TEXT_1BIT_BIT ( 0x80000000 )
+
+#define D3D10_ENCODE_BASIC_FILTER( min, mag, mip, bComparison ) \
+ ( D3D10_FILTER ) ( \
+ ( ( bComparison ) ? D3D10_COMPARISON_FILTERING_BIT : 0 ) | \
+ ( ( min & D3D10_FILTER_TYPE_MASK ) << D3D10_MIN_FILTER_SHIFT ) | \
+ ( ( mag & D3D10_FILTER_TYPE_MASK ) << D3D10_MAG_FILTER_SHIFT ) | \
+ ( ( mip & D3D10_FILTER_TYPE_MASK ) << D3D10_MIP_FILTER_SHIFT ) )
+#define D3D10_ENCODE_ANISOTROPIC_FILTER( bComparison ) \
+ ( D3D10_FILTER ) ( \
+ D3D10_ANISOTROPIC_FILTERING_BIT | \
+ D3D10_ENCODE_BASIC_FILTER( D3D10_FILTER_TYPE_LINEAR, \
+ D3D10_FILTER_TYPE_LINEAR, \
+ D3D10_FILTER_TYPE_LINEAR, \
+ bComparison ) )
+#define D3D10_DECODE_MIN_FILTER( d3d10Filter ) \
+ (D3D10_FILTER_TYPE) \
+ ( ( d3d10Filter >> D3D10_MIN_FILTER_SHIFT ) & D3D10_FILTER_TYPE_MASK )
+#define D3D10_DECODE_MAG_FILTER( d3d10Filter ) \
+ (D3D10_FILTER_TYPE) \
+ ( ( d3d10Filter >> D3D10_MAG_FILTER_SHIFT ) & D3D10_FILTER_TYPE_MASK )
+#define D3D10_DECODE_MIP_FILTER( d3d10Filter ) \
+ (D3D10_FILTER_TYPE) \
+ ( ( d3d10Filter >> D3D10_MIP_FILTER_SHIFT ) & D3D10_FILTER_TYPE_MASK )
+#define D3D10_DECODE_IS_COMPARISON_FILTER( d3d10Filter ) \
+ ( d3d10Filter & D3D10_COMPARISON_FILTERING_BIT )
+#define D3D10_DECODE_IS_ANISOTROPIC_FILTER( d3d10Filter ) \
+ ( ( d3d10Filter & D3D10_ANISOTROPIC_FILTERING_BIT ) && \
+ ( D3D10_FILTER_TYPE_LINEAR == D3D10_DECODE_MIN_FILTER( d3d10Filter ) ) && \
+ ( D3D10_FILTER_TYPE_LINEAR == D3D10_DECODE_MAG_FILTER( d3d10Filter ) ) && \
+ ( D3D10_FILTER_TYPE_LINEAR == D3D10_DECODE_MIP_FILTER( d3d10Filter ) ) )
+#define D3D10_DECODE_IS_TEXT_1BIT_FILTER( d3d10Filter ) \
+ ( d3d10Filter == D3D10_TEXT_1BIT_BIT )
+typedef
+enum D3D10_TEXTURE_ADDRESS_MODE
+ { D3D10_TEXTURE_ADDRESS_WRAP = 1,
+ D3D10_TEXTURE_ADDRESS_MIRROR = 2,
+ D3D10_TEXTURE_ADDRESS_CLAMP = 3,
+ D3D10_TEXTURE_ADDRESS_BORDER = 4,
+ D3D10_TEXTURE_ADDRESS_MIRROR_ONCE = 5
+ } D3D10_TEXTURE_ADDRESS_MODE;
+
+typedef struct D3D10_SAMPLER_DESC
+ {
+ D3D10_FILTER Filter;
+ D3D10_TEXTURE_ADDRESS_MODE AddressU;
+ D3D10_TEXTURE_ADDRESS_MODE AddressV;
+ D3D10_TEXTURE_ADDRESS_MODE AddressW;
+ FLOAT MipLODBias;
+ UINT MaxAnisotropy;
+ D3D10_COMPARISON_FUNC ComparisonFunc;
+ FLOAT BorderColor[ 4 ];
+ FLOAT MinLOD;
+ FLOAT MaxLOD;
+ } D3D10_SAMPLER_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0018_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0018_v0_0_s_ifspec;
+
+#ifndef __ID3D10SamplerState_INTERFACE_DEFINED__
+#define __ID3D10SamplerState_INTERFACE_DEFINED__
+
+/* interface ID3D10SamplerState */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10SamplerState;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C0C-342C-4106-A19F-4F2704F689F0")
+ ID3D10SamplerState : public ID3D10DeviceChild
+ {
+ public:
+ virtual void STDMETHODCALLTYPE GetDesc(
+ /* [retval][out] */ D3D10_SAMPLER_DESC *pDesc) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10SamplerStateVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10SamplerState * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10SamplerState * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10SamplerState * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10SamplerState * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10SamplerState * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10SamplerState * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10SamplerState * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D10SamplerState * This,
+ /* [retval][out] */ D3D10_SAMPLER_DESC *pDesc);
+
+ END_INTERFACE
+ } ID3D10SamplerStateVtbl;
+
+ interface ID3D10SamplerState
+ {
+ CONST_VTBL struct ID3D10SamplerStateVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10SamplerState_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10SamplerState_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10SamplerState_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10SamplerState_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10SamplerState_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10SamplerState_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10SamplerState_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10SamplerState_GetDesc(This,pDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pDesc) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10SamplerState_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0019 */
+/* [local] */
+
+typedef
+enum D3D10_FORMAT_SUPPORT
+ { D3D10_FORMAT_SUPPORT_BUFFER = 0x1,
+ D3D10_FORMAT_SUPPORT_IA_VERTEX_BUFFER = 0x2,
+ D3D10_FORMAT_SUPPORT_IA_INDEX_BUFFER = 0x4,
+ D3D10_FORMAT_SUPPORT_SO_BUFFER = 0x8,
+ D3D10_FORMAT_SUPPORT_TEXTURE1D = 0x10,
+ D3D10_FORMAT_SUPPORT_TEXTURE2D = 0x20,
+ D3D10_FORMAT_SUPPORT_TEXTURE3D = 0x40,
+ D3D10_FORMAT_SUPPORT_TEXTURECUBE = 0x80,
+ D3D10_FORMAT_SUPPORT_SHADER_LOAD = 0x100,
+ D3D10_FORMAT_SUPPORT_SHADER_SAMPLE = 0x200,
+ D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON = 0x400,
+ D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT = 0x800,
+ D3D10_FORMAT_SUPPORT_MIP = 0x1000,
+ D3D10_FORMAT_SUPPORT_MIP_AUTOGEN = 0x2000,
+ D3D10_FORMAT_SUPPORT_RENDER_TARGET = 0x4000,
+ D3D10_FORMAT_SUPPORT_BLENDABLE = 0x8000,
+ D3D10_FORMAT_SUPPORT_DEPTH_STENCIL = 0x10000,
+ D3D10_FORMAT_SUPPORT_CPU_LOCKABLE = 0x20000,
+ D3D10_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE = 0x40000,
+ D3D10_FORMAT_SUPPORT_DISPLAY = 0x80000,
+ D3D10_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT = 0x100000
+ } D3D10_FORMAT_SUPPORT;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0019_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0019_v0_0_s_ifspec;
+
+#ifndef __ID3D10Asynchronous_INTERFACE_DEFINED__
+#define __ID3D10Asynchronous_INTERFACE_DEFINED__
+
+/* interface ID3D10Asynchronous */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10Asynchronous;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C0D-342C-4106-A19F-4F2704F689F0")
+ ID3D10Asynchronous : public ID3D10DeviceChild
+ {
+ public:
+ virtual void STDMETHODCALLTYPE Begin( void) = 0;
+
+ virtual void STDMETHODCALLTYPE End( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetData(
+ /* [size_is][out] */ void *pData,
+ /* [in] */ SIZE_T DataSize,
+ /* [in] */ UINT Flags) = 0;
+
+ virtual SIZE_T STDMETHODCALLTYPE GetDataSize( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10AsynchronousVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10Asynchronous * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10Asynchronous * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10Asynchronous * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10Asynchronous * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10Asynchronous * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10Asynchronous * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10Asynchronous * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *Begin )(
+ ID3D10Asynchronous * This);
+
+ void ( STDMETHODCALLTYPE *End )(
+ ID3D10Asynchronous * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetData )(
+ ID3D10Asynchronous * This,
+ /* [size_is][out] */ void *pData,
+ /* [in] */ SIZE_T DataSize,
+ /* [in] */ UINT Flags);
+
+ SIZE_T ( STDMETHODCALLTYPE *GetDataSize )(
+ ID3D10Asynchronous * This);
+
+ END_INTERFACE
+ } ID3D10AsynchronousVtbl;
+
+ interface ID3D10Asynchronous
+ {
+ CONST_VTBL struct ID3D10AsynchronousVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10Asynchronous_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10Asynchronous_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10Asynchronous_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10Asynchronous_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10Asynchronous_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10Asynchronous_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10Asynchronous_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10Asynchronous_Begin(This) \
+ ( (This)->lpVtbl -> Begin(This) )
+
+#define ID3D10Asynchronous_End(This) \
+ ( (This)->lpVtbl -> End(This) )
+
+#define ID3D10Asynchronous_GetData(This,pData,DataSize,Flags) \
+ ( (This)->lpVtbl -> GetData(This,pData,DataSize,Flags) )
+
+#define ID3D10Asynchronous_GetDataSize(This) \
+ ( (This)->lpVtbl -> GetDataSize(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10Asynchronous_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0020 */
+/* [local] */
+
+#define D3D10_GETDATA_DONOTFLUSH ( 1 )
+
+typedef
+enum D3D10_QUERY
+ { D3D10_QUERY_EVENT = 0,
+ D3D10_QUERY_OCCLUSION = ( D3D10_QUERY_EVENT + 1 ) ,
+ D3D10_QUERY_TIMESTAMP = ( D3D10_QUERY_OCCLUSION + 1 ) ,
+ D3D10_QUERY_TIMESTAMP_DISJOINT = ( D3D10_QUERY_TIMESTAMP + 1 ) ,
+ D3D10_QUERY_PIPELINE_STATISTICS = ( D3D10_QUERY_TIMESTAMP_DISJOINT + 1 ) ,
+ D3D10_QUERY_OCCLUSION_PREDICATE = ( D3D10_QUERY_PIPELINE_STATISTICS + 1 ) ,
+ D3D10_QUERY_SO_STATISTICS = ( D3D10_QUERY_OCCLUSION_PREDICATE + 1 ) ,
+ D3D10_QUERY_SO_OVERFLOW_PREDICATE = ( D3D10_QUERY_SO_STATISTICS + 1 )
+ } D3D10_QUERY;
+
+#define D3D10_QUERY_MISCFLAG_PREDICATEHINT ( 0x1 )
+
+typedef struct D3D10_QUERY_DESC
+ {
+ D3D10_QUERY Query;
+ UINT MiscFlags;
+ } D3D10_QUERY_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0020_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0020_v0_0_s_ifspec;
+
+#ifndef __ID3D10Query_INTERFACE_DEFINED__
+#define __ID3D10Query_INTERFACE_DEFINED__
+
+/* interface ID3D10Query */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10Query;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C0E-342C-4106-A19F-4F2704F689F0")
+ ID3D10Query : public ID3D10Asynchronous
+ {
+ public:
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10QueryVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10Query * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10Query * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10Query * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10Query * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10Query * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10Query * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10Query * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *Begin )(
+ ID3D10Query * This);
+
+ void ( STDMETHODCALLTYPE *End )(
+ ID3D10Query * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetData )(
+ ID3D10Query * This,
+ /* [size_is][out] */ void *pData,
+ /* [in] */ SIZE_T DataSize,
+ /* [in] */ UINT Flags);
+
+ SIZE_T ( STDMETHODCALLTYPE *GetDataSize )(
+ ID3D10Query * This);
+
+ END_INTERFACE
+ } ID3D10QueryVtbl;
+
+ interface ID3D10Query
+ {
+ CONST_VTBL struct ID3D10QueryVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10Query_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10Query_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10Query_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10Query_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10Query_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10Query_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10Query_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10Query_Begin(This) \
+ ( (This)->lpVtbl -> Begin(This) )
+
+#define ID3D10Query_End(This) \
+ ( (This)->lpVtbl -> End(This) )
+
+#define ID3D10Query_GetData(This,pData,DataSize,Flags) \
+ ( (This)->lpVtbl -> GetData(This,pData,DataSize,Flags) )
+
+#define ID3D10Query_GetDataSize(This) \
+ ( (This)->lpVtbl -> GetDataSize(This) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10Query_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D10Predicate_INTERFACE_DEFINED__
+#define __ID3D10Predicate_INTERFACE_DEFINED__
+
+/* interface ID3D10Predicate */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10Predicate;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C10-342C-4106-A19F-4F2704F689F0")
+ ID3D10Predicate : public ID3D10Query
+ {
+ public:
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10PredicateVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10Predicate * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10Predicate * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10Predicate * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10Predicate * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10Predicate * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10Predicate * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10Predicate * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *Begin )(
+ ID3D10Predicate * This);
+
+ void ( STDMETHODCALLTYPE *End )(
+ ID3D10Predicate * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetData )(
+ ID3D10Predicate * This,
+ /* [size_is][out] */ void *pData,
+ /* [in] */ SIZE_T DataSize,
+ /* [in] */ UINT Flags);
+
+ SIZE_T ( STDMETHODCALLTYPE *GetDataSize )(
+ ID3D10Predicate * This);
+
+ END_INTERFACE
+ } ID3D10PredicateVtbl;
+
+ interface ID3D10Predicate
+ {
+ CONST_VTBL struct ID3D10PredicateVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10Predicate_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10Predicate_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10Predicate_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10Predicate_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10Predicate_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10Predicate_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10Predicate_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10Predicate_Begin(This) \
+ ( (This)->lpVtbl -> Begin(This) )
+
+#define ID3D10Predicate_End(This) \
+ ( (This)->lpVtbl -> End(This) )
+
+#define ID3D10Predicate_GetData(This,pData,DataSize,Flags) \
+ ( (This)->lpVtbl -> GetData(This,pData,DataSize,Flags) )
+
+#define ID3D10Predicate_GetDataSize(This) \
+ ( (This)->lpVtbl -> GetDataSize(This) )
+
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10Predicate_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0022 */
+/* [local] */
+
+typedef struct D3D10_QUERY_DATA_TIMESTAMP_DISJOINT
+ {
+ UINT64 Frequency;
+ BOOL Disjoint;
+ } D3D10_QUERY_DATA_TIMESTAMP_DISJOINT;
+
+typedef struct D3D10_QUERY_DATA_PIPELINE_STATISTICS
+ {
+ UINT64 IAVertices;
+ UINT64 IAPrimitives;
+ UINT64 VSInvocations;
+ UINT64 GSInvocations;
+ UINT64 GSPrimitives;
+ UINT64 CInvocations;
+ UINT64 CPrimitives;
+ UINT64 PSInvocations;
+ } D3D10_QUERY_DATA_PIPELINE_STATISTICS;
+
+typedef struct D3D10_QUERY_DATA_SO_STATISTICS
+ {
+ UINT64 NumPrimitivesWritten;
+ UINT64 PrimitivesStorageNeeded;
+ } D3D10_QUERY_DATA_SO_STATISTICS;
+
+typedef
+enum D3D10_COUNTER
+ { D3D10_COUNTER_GPU_IDLE = 0,
+ D3D10_COUNTER_VERTEX_PROCESSING = ( D3D10_COUNTER_GPU_IDLE + 1 ) ,
+ D3D10_COUNTER_GEOMETRY_PROCESSING = ( D3D10_COUNTER_VERTEX_PROCESSING + 1 ) ,
+ D3D10_COUNTER_PIXEL_PROCESSING = ( D3D10_COUNTER_GEOMETRY_PROCESSING + 1 ) ,
+ D3D10_COUNTER_OTHER_GPU_PROCESSING = ( D3D10_COUNTER_PIXEL_PROCESSING + 1 ) ,
+ D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION = ( D3D10_COUNTER_OTHER_GPU_PROCESSING + 1 ) ,
+ D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION = ( D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION + 1 ) ,
+ D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION = ( D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION + 1 ) ,
+ D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION = ( D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION + 1 ) ,
+ D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION = ( D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION + 1 ) ,
+ D3D10_COUNTER_VS_MEMORY_LIMITED = ( D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION + 1 ) ,
+ D3D10_COUNTER_VS_COMPUTATION_LIMITED = ( D3D10_COUNTER_VS_MEMORY_LIMITED + 1 ) ,
+ D3D10_COUNTER_GS_MEMORY_LIMITED = ( D3D10_COUNTER_VS_COMPUTATION_LIMITED + 1 ) ,
+ D3D10_COUNTER_GS_COMPUTATION_LIMITED = ( D3D10_COUNTER_GS_MEMORY_LIMITED + 1 ) ,
+ D3D10_COUNTER_PS_MEMORY_LIMITED = ( D3D10_COUNTER_GS_COMPUTATION_LIMITED + 1 ) ,
+ D3D10_COUNTER_PS_COMPUTATION_LIMITED = ( D3D10_COUNTER_PS_MEMORY_LIMITED + 1 ) ,
+ D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE = ( D3D10_COUNTER_PS_COMPUTATION_LIMITED + 1 ) ,
+ D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE = ( D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE + 1 ) ,
+ D3D10_COUNTER_DEVICE_DEPENDENT_0 = 0x40000000
+ } D3D10_COUNTER;
+
+typedef
+enum D3D10_COUNTER_TYPE
+ { D3D10_COUNTER_TYPE_FLOAT32 = 0,
+ D3D10_COUNTER_TYPE_UINT16 = ( D3D10_COUNTER_TYPE_FLOAT32 + 1 ) ,
+ D3D10_COUNTER_TYPE_UINT32 = ( D3D10_COUNTER_TYPE_UINT16 + 1 ) ,
+ D3D10_COUNTER_TYPE_UINT64 = ( D3D10_COUNTER_TYPE_UINT32 + 1 )
+ } D3D10_COUNTER_TYPE;
+
+typedef struct D3D10_COUNTER_DESC
+ {
+ D3D10_COUNTER Counter;
+ UINT MiscFlags;
+ } D3D10_COUNTER_DESC;
+
+typedef struct D3D10_COUNTER_INFO
+ {
+ D3D10_COUNTER LastDeviceDependentCounter;
+ UINT NumSimultaneousCounters;
+ UINT8 NumDetectableParallelUnits;
+ } D3D10_COUNTER_INFO;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0022_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0022_v0_0_s_ifspec;
+
+#ifndef __ID3D10Counter_INTERFACE_DEFINED__
+#define __ID3D10Counter_INTERFACE_DEFINED__
+
+/* interface ID3D10Counter */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10Counter;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C11-342C-4106-A19F-4F2704F689F0")
+ ID3D10Counter : public ID3D10Asynchronous
+ {
+ public:
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10CounterVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10Counter * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10Counter * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10Counter * This);
+
+ void ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D10Counter * This,
+ /* [retval][out] */ ID3D10Device **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10Counter * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10Counter * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10Counter * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *Begin )(
+ ID3D10Counter * This);
+
+ void ( STDMETHODCALLTYPE *End )(
+ ID3D10Counter * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetData )(
+ ID3D10Counter * This,
+ /* [size_is][out] */ void *pData,
+ /* [in] */ SIZE_T DataSize,
+ /* [in] */ UINT Flags);
+
+ SIZE_T ( STDMETHODCALLTYPE *GetDataSize )(
+ ID3D10Counter * This);
+
+ END_INTERFACE
+ } ID3D10CounterVtbl;
+
+ interface ID3D10Counter
+ {
+ CONST_VTBL struct ID3D10CounterVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10Counter_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10Counter_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10Counter_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10Counter_GetDevice(This,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,ppDevice) )
+
+#define ID3D10Counter_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10Counter_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10Counter_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+
+#define ID3D10Counter_Begin(This) \
+ ( (This)->lpVtbl -> Begin(This) )
+
+#define ID3D10Counter_End(This) \
+ ( (This)->lpVtbl -> End(This) )
+
+#define ID3D10Counter_GetData(This,pData,DataSize,Flags) \
+ ( (This)->lpVtbl -> GetData(This,pData,DataSize,Flags) )
+
+#define ID3D10Counter_GetDataSize(This) \
+ ( (This)->lpVtbl -> GetDataSize(This) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10Counter_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D10Device_INTERFACE_DEFINED__
+#define __ID3D10Device_INTERFACE_DEFINED__
+
+/* interface ID3D10Device */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10Device;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4C0F-342C-4106-A19F-4F2704F689F0")
+ ID3D10Device : public IUnknown
+ {
+ public:
+ virtual void STDMETHODCALLTYPE VSSetConstantBuffers(
+ /* [in] */ UINT StartConstantSlot,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][in] */ ID3D10Buffer *const *ppConstantBuffers) = 0;
+
+ virtual void STDMETHODCALLTYPE PSSetShaderResources(
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumViews,
+ /* [size_is][in] */ ID3D10ShaderResourceView *const *ppShaderResourceViews) = 0;
+
+ virtual void STDMETHODCALLTYPE PSSetShader(
+ /* [in] */ ID3D10PixelShader *pPixelShader) = 0;
+
+ virtual void STDMETHODCALLTYPE PSSetSamplers(
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumSamplers,
+ /* [size_is][in] */ ID3D10SamplerState *const *ppSamplers) = 0;
+
+ virtual void STDMETHODCALLTYPE VSSetShader(
+ /* [in] */ ID3D10VertexShader *pVertexShader) = 0;
+
+ virtual void STDMETHODCALLTYPE DrawIndexed(
+ /* [in] */ UINT IndexCount,
+ /* [in] */ UINT StartIndexLocation,
+ /* [in] */ INT BaseVertexLocation) = 0;
+
+ virtual void STDMETHODCALLTYPE Draw(
+ /* [in] */ UINT VertexCount,
+ /* [in] */ UINT StartVertexLocation) = 0;
+
+ virtual void STDMETHODCALLTYPE PSSetConstantBuffers(
+ /* [in] */ UINT StartConstantSlot,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][in] */ ID3D10Buffer *const *ppConstantBuffers) = 0;
+
+ virtual void STDMETHODCALLTYPE IASetInputLayout(
+ /* [in] */ ID3D10InputLayout *pInputLayout) = 0;
+
+ virtual void STDMETHODCALLTYPE IASetVertexBuffers(
+ /* [in] */ UINT StartSlot,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][in] */ ID3D10Buffer *const *ppVertexBuffers,
+ /* [size_is][in] */ const UINT *pStrides,
+ /* [size_is][in] */ const UINT *pOffsets) = 0;
+
+ virtual void STDMETHODCALLTYPE IASetIndexBuffer(
+ /* [in] */ ID3D10Buffer *pIndexBuffer,
+ /* [in] */ DXGI_FORMAT Format,
+ /* [in] */ UINT Offset) = 0;
+
+ virtual void STDMETHODCALLTYPE DrawIndexedInstanced(
+ /* [in] */ UINT IndexCountPerInstance,
+ /* [in] */ UINT InstanceCount,
+ /* [in] */ UINT StartIndexLocation,
+ /* [in] */ INT BaseVertexLocation,
+ /* [in] */ UINT StartInstanceLocation) = 0;
+
+ virtual void STDMETHODCALLTYPE DrawInstanced(
+ /* [in] */ UINT VertexCountPerInstance,
+ /* [in] */ UINT InstanceCount,
+ /* [in] */ UINT StartVertexLocation,
+ /* [in] */ UINT StartInstanceLocation) = 0;
+
+ virtual void STDMETHODCALLTYPE GSSetConstantBuffers(
+ /* [in] */ UINT StartConstantSlot,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][in] */ ID3D10Buffer *const *ppConstantBuffers) = 0;
+
+ virtual void STDMETHODCALLTYPE GSSetShader(
+ /* [in] */ ID3D10GeometryShader *pShader) = 0;
+
+ virtual void STDMETHODCALLTYPE IASetPrimitiveTopology(
+ /* [in] */ D3D10_PRIMITIVE_TOPOLOGY Topology) = 0;
+
+ virtual void STDMETHODCALLTYPE VSSetShaderResources(
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumViews,
+ /* [size_is][in] */ ID3D10ShaderResourceView *const *ppShaderResourceViews) = 0;
+
+ virtual void STDMETHODCALLTYPE VSSetSamplers(
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumSamplers,
+ /* [size_is][in] */ ID3D10SamplerState *const *ppSamplers) = 0;
+
+ virtual void STDMETHODCALLTYPE SetPredication(
+ /* [in] */ ID3D10Predicate *pPredicate,
+ /* [in] */ BOOL PredicateValue) = 0;
+
+ virtual void STDMETHODCALLTYPE GSSetShaderResources(
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumViews,
+ /* [size_is][in] */ ID3D10ShaderResourceView *const *ppShaderResourceViews) = 0;
+
+ virtual void STDMETHODCALLTYPE GSSetSamplers(
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumSamplers,
+ /* [size_is][in] */ ID3D10SamplerState *const *ppSamplers) = 0;
+
+ virtual void STDMETHODCALLTYPE OMSetRenderTargets(
+ /* [in] */ UINT NumViews,
+ /* [size_is][in] */ ID3D10RenderTargetView *const *ppRenderTargetViews,
+ /* [in] */ ID3D10DepthStencilView *pDepthStencilView) = 0;
+
+ virtual void STDMETHODCALLTYPE OMSetBlendState(
+ /* [in] */ ID3D10BlendState *pBlendState,
+ /* [in] */ const FLOAT BlendFactor[ 4 ],
+ /* [in] */ UINT SampleMask) = 0;
+
+ virtual void STDMETHODCALLTYPE OMSetDepthStencilState(
+ /* [in] */ ID3D10DepthStencilState *pDepthStencilState,
+ /* [in] */ UINT StencilRef) = 0;
+
+ virtual void STDMETHODCALLTYPE SOSetTargets(
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][in] */ ID3D10Buffer *const *ppSOTargets,
+ /* [size_is][in] */ const UINT *pOffsets) = 0;
+
+ virtual void STDMETHODCALLTYPE DrawAuto( void) = 0;
+
+ virtual void STDMETHODCALLTYPE RSSetState(
+ /* [in] */ ID3D10RasterizerState *pRasterizerState) = 0;
+
+ virtual void STDMETHODCALLTYPE RSSetViewports(
+ /* [in] */ UINT NumViewports,
+ /* [size_is][in] */ const D3D10_VIEWPORT *pViewports) = 0;
+
+ virtual void STDMETHODCALLTYPE RSSetScissorRects(
+ /* [in] */ UINT NumRects,
+ /* [size_is][in] */ const D3D10_RECT *pRects) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearRenderTargetView(
+ /* [in] */ ID3D10RenderTargetView *pRenderTargetView,
+ /* [in] */ const FLOAT ColorRGBA[ 4 ]) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearDepthStencilView(
+ /* [in] */ ID3D10DepthStencilView *pDepthStencilView,
+ /* [in] */ UINT Flags,
+ /* [in] */ FLOAT Depth,
+ /* [in] */ UINT8 Stencil) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GenerateMips(
+ /* [in] */ ID3D10ShaderResourceView *pShaderResourceView) = 0;
+
+ virtual void STDMETHODCALLTYPE VSGetConstantBuffers(
+ /* [in] */ UINT StartConstantSlot,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][out] */ ID3D10Buffer **ppConstantBuffers) = 0;
+
+ virtual void STDMETHODCALLTYPE PSGetShaderResources(
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumViews,
+ /* [size_is][out] */ ID3D10ShaderResourceView **ppShaderResourceViews) = 0;
+
+ virtual void STDMETHODCALLTYPE PSGetShader(
+ /* [out][in] */ ID3D10PixelShader **ppPixelShader) = 0;
+
+ virtual void STDMETHODCALLTYPE PSGetSamplers(
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumSamplers,
+ /* [size_is][out] */ ID3D10SamplerState **ppSamplers) = 0;
+
+ virtual void STDMETHODCALLTYPE VSGetShader(
+ /* [out][in] */ ID3D10VertexShader **ppVertexShader) = 0;
+
+ virtual void STDMETHODCALLTYPE PSGetConstantBuffers(
+ /* [in] */ UINT StartConstantSlot,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][out] */ ID3D10Buffer **ppConstantBuffers) = 0;
+
+ virtual void STDMETHODCALLTYPE IAGetInputLayout(
+ /* [out][in] */ ID3D10InputLayout **ppInputLayout) = 0;
+
+ virtual void STDMETHODCALLTYPE IAGetVertexBuffers(
+ /* [in] */ UINT StartSlot,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][out] */ ID3D10Buffer **ppVertexBuffers,
+ /* [size_is][out] */ UINT *pStrides,
+ /* [size_is][out] */ UINT *pOffsets) = 0;
+
+ virtual void STDMETHODCALLTYPE IAGetIndexBuffer(
+ /* [out] */ ID3D10Buffer **pIndexBuffer,
+ /* [out] */ DXGI_FORMAT *Format,
+ /* [out] */ UINT *Offset) = 0;
+
+ virtual void STDMETHODCALLTYPE GSGetConstantBuffers(
+ /* [in] */ UINT StartConstantSlot,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][out] */ ID3D10Buffer **ppConstantBuffers) = 0;
+
+ virtual void STDMETHODCALLTYPE GSGetShader(
+ /* [out] */ ID3D10GeometryShader **ppGeometryShader) = 0;
+
+ virtual void STDMETHODCALLTYPE IAGetPrimitiveTopology(
+ /* [out] */ D3D10_PRIMITIVE_TOPOLOGY *pTopology) = 0;
+
+ virtual void STDMETHODCALLTYPE VSGetShaderResources(
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumViews,
+ /* [size_is][out] */ ID3D10ShaderResourceView **ppShaderResourceViews) = 0;
+
+ virtual void STDMETHODCALLTYPE VSGetSamplers(
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumSamplers,
+ /* [size_is][out] */ ID3D10SamplerState **ppSamplers) = 0;
+
+ virtual void STDMETHODCALLTYPE GetPredication(
+ /* [out] */ ID3D10Predicate **ppPredicate,
+ /* [out] */ BOOL *pPredicateValue) = 0;
+
+ virtual void STDMETHODCALLTYPE GSGetShaderResources(
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumViews,
+ /* [size_is][out] */ ID3D10ShaderResourceView **ppShaderResourceViews) = 0;
+
+ virtual void STDMETHODCALLTYPE GSGetSamplers(
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumSamplers,
+ /* [size_is][out] */ ID3D10SamplerState **ppSamplers) = 0;
+
+ virtual void STDMETHODCALLTYPE OMGetRenderTargets(
+ /* [in] */ UINT NumViews,
+ /* [size_is][out] */ ID3D10RenderTargetView **ppRenderTargetViews,
+ /* [out] */ ID3D10DepthStencilView **ppDepthStencilView) = 0;
+
+ virtual void STDMETHODCALLTYPE OMGetBlendState(
+ /* [out] */ ID3D10BlendState **ppBlendState,
+ /* [out] */ FLOAT BlendFactor[ 4 ],
+ /* [out] */ UINT *pSampleMask) = 0;
+
+ virtual void STDMETHODCALLTYPE OMGetDepthStencilState(
+ /* [out] */ ID3D10DepthStencilState **ppDepthStencilState,
+ /* [out] */ UINT *pStencilRef) = 0;
+
+ virtual void STDMETHODCALLTYPE SOGetTargets(
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][out] */ ID3D10Buffer **ppSOTargets,
+ /* [size_is][out] */ UINT *pOffsets) = 0;
+
+ virtual void STDMETHODCALLTYPE RSGetState(
+ /* [out] */ ID3D10RasterizerState **ppRasterizerState) = 0;
+
+ virtual void STDMETHODCALLTYPE RSGetViewports(
+ /* [out][in] */ UINT *NumViewports,
+ /* [size_is][out] */ D3D10_VIEWPORT *pViewports) = 0;
+
+ virtual void STDMETHODCALLTYPE RSGetScissorRects(
+ /* [out][in] */ UINT *NumRects,
+ /* [size_is][out] */ D3D10_RECT *pRects) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetExceptionMode(
+ UINT RaiseFlags) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetExceptionMode( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData) = 0;
+
+ virtual void STDMETHODCALLTYPE Enter( void) = 0;
+
+ virtual void STDMETHODCALLTYPE Leave( void) = 0;
+
+ virtual void STDMETHODCALLTYPE Flush( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateBuffer(
+ /* [in] */ const D3D10_BUFFER_DESC *pDesc,
+ /* [in] */ const D3D10_SUBRESOURCE_UP *pInitialData,
+ /* [out] */ ID3D10Buffer **ppBuffer) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateTexture1D(
+ /* [in] */ const D3D10_TEXTURE1D_DESC *pDesc,
+ /* [in] */ const D3D10_SUBRESOURCE_UP *pInitialData,
+ /* [out] */ ID3D10Texture1D **ppTexture1D) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateTexture2D(
+ /* [in] */ const D3D10_TEXTURE2D_DESC *pDesc,
+ /* [in] */ const D3D10_SUBRESOURCE_UP *pInitialData,
+ /* [out] */ ID3D10Texture2D **ppTexture2D) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateTexture3D(
+ /* [in] */ const D3D10_TEXTURE3D_DESC *pDesc,
+ /* [in] */ const D3D10_SUBRESOURCE_UP *pInitialData,
+ /* [out] */ ID3D10Texture3D **ppTexture3D) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateTextureCube(
+ /* [in] */ const D3D10_TEXTURECUBE_DESC *pDesc,
+ /* [in] */ const D3D10_SUBRESOURCE_UP *pInitialData,
+ /* [out] */ ID3D10TextureCube **ppTextureCube) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateShaderResourceView(
+ /* [in] */ ID3D10Resource *pResource,
+ /* [in] */ const D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ /* [out] */ ID3D10ShaderResourceView **ppSRView) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateRenderTargetView(
+ /* [in] */ ID3D10Resource *pResource,
+ /* [in] */ const D3D10_RENDER_TARGET_VIEW_DESC *pDesc,
+ /* [out] */ ID3D10RenderTargetView **ppRTView) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateDepthStencilView(
+ /* [in] */ ID3D10Resource *pResource,
+ /* [in] */ const D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ /* [out] */ ID3D10DepthStencilView **ppDepthStencilView) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateInputLayout(
+ /* [size_is][in] */ const D3D10_INPUT_ELEMENT_DESC *pInputElementDescs,
+ /* [in] */ UINT NumElements,
+ /* [in] */ const void *pShaderBytecodeWithInputSignature,
+ /* [out] */ ID3D10InputLayout **ppInputLayout) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateVertexShader(
+ /* [in] */ const void *pShaderBytecode,
+ /* [out] */ ID3D10VertexShader **ppVertexShader) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateGeometryShader(
+ /* [in] */ const void *pShaderBytecode,
+ /* [out] */ ID3D10GeometryShader **ppGeometryShader) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateGeometryShaderWithStreamOutput(
+ /* [in] */ const void *pShaderBytecode,
+ /* [size_is][in] */ const D3D10_SO_DECLARATION_ENTRY *pSODeclaration,
+ /* [in] */ UINT NumEntries,
+ /* [in] */ UINT OutputStreamStride,
+ /* [out] */ ID3D10GeometryShader **ppGeometryShader) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreatePixelShader(
+ /* [in] */ const void *pShaderBytecode,
+ /* [out] */ ID3D10PixelShader **ppPixelShader) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateBlendState(
+ /* [in] */ const D3D10_BLEND_DESC *pBlendStateDesc,
+ /* [out] */ ID3D10BlendState **ppBlendState) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateDepthStencilState(
+ /* [in] */ const D3D10_DEPTH_STENCIL_DESC *pDepthStencilDesc,
+ /* [out] */ ID3D10DepthStencilState **ppDepthStencilState) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateRasterizerState(
+ /* [in] */ const D3D10_RASTERIZER_DESC *pRasterizerDesc,
+ /* [out] */ ID3D10RasterizerState **ppRasterizerState) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateSamplerState(
+ /* [in] */ const D3D10_SAMPLER_DESC *pSamplerDesc,
+ /* [out] */ ID3D10SamplerState **ppSamplerState) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateQuery(
+ /* [in] */ const D3D10_QUERY_DESC *pQueryDesc,
+ /* [out] */ ID3D10Query **ppQuery) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreatePredicate(
+ /* [in] */ const D3D10_QUERY_DESC *pPredicateDesc,
+ /* [out] */ ID3D10Predicate **ppPredicate) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateCounter(
+ /* [in] */ const D3D10_COUNTER_DESC *pCounterDesc,
+ /* [out] */ ID3D10Counter **ppCounter) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CheckFormatSupport(
+ /* [in] */ DXGI_FORMAT Format,
+ /* [retval][out] */ UINT *pFormatSupport) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CheckMultisampleQualityLevels(
+ /* [in] */ UINT SampleCount,
+ /* [retval][out] */ UINT *pNumQualityLevels) = 0;
+
+ virtual void STDMETHODCALLTYPE CheckVertexCache(
+ /* [out] */ D3D10_VERTEX_CACHE_DESC *pVertexCacheDesc) = 0;
+
+ virtual void STDMETHODCALLTYPE CheckCounterInfo(
+ /* [retval][out] */ D3D10_COUNTER_INFO *pCounterInfo) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CheckCounter(
+ /* */
+ __in const D3D10_COUNTER_DESC *pDesc,
+ /* */
+ __out D3D10_COUNTER_TYPE *pType,
+ /* */
+ __out UINT *pActiveCounters,
+ /* */
+ __out_ecount_opt(*pNameLength) LPWSTR wszName,
+ /* */
+ __inout_opt SIZE_T *pNameLength,
+ /* */
+ __out_ecount_opt(*pUnitsLength) LPWSTR wszUnits,
+ /* */
+ __inout_opt SIZE_T *pUnitsLength,
+ /* */
+ __out_ecount_opt(*pDescriptionLength) LPWSTR wszDescription,
+ /* */
+ __inout_opt SIZE_T *pDescriptionLength) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetCreationFlags( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10DeviceVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10Device * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10Device * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10Device * This);
+
+ void ( STDMETHODCALLTYPE *VSSetConstantBuffers )(
+ ID3D10Device * This,
+ /* [in] */ UINT StartConstantSlot,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][in] */ ID3D10Buffer *const *ppConstantBuffers);
+
+ void ( STDMETHODCALLTYPE *PSSetShaderResources )(
+ ID3D10Device * This,
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumViews,
+ /* [size_is][in] */ ID3D10ShaderResourceView *const *ppShaderResourceViews);
+
+ void ( STDMETHODCALLTYPE *PSSetShader )(
+ ID3D10Device * This,
+ /* [in] */ ID3D10PixelShader *pPixelShader);
+
+ void ( STDMETHODCALLTYPE *PSSetSamplers )(
+ ID3D10Device * This,
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumSamplers,
+ /* [size_is][in] */ ID3D10SamplerState *const *ppSamplers);
+
+ void ( STDMETHODCALLTYPE *VSSetShader )(
+ ID3D10Device * This,
+ /* [in] */ ID3D10VertexShader *pVertexShader);
+
+ void ( STDMETHODCALLTYPE *DrawIndexed )(
+ ID3D10Device * This,
+ /* [in] */ UINT IndexCount,
+ /* [in] */ UINT StartIndexLocation,
+ /* [in] */ INT BaseVertexLocation);
+
+ void ( STDMETHODCALLTYPE *Draw )(
+ ID3D10Device * This,
+ /* [in] */ UINT VertexCount,
+ /* [in] */ UINT StartVertexLocation);
+
+ void ( STDMETHODCALLTYPE *PSSetConstantBuffers )(
+ ID3D10Device * This,
+ /* [in] */ UINT StartConstantSlot,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][in] */ ID3D10Buffer *const *ppConstantBuffers);
+
+ void ( STDMETHODCALLTYPE *IASetInputLayout )(
+ ID3D10Device * This,
+ /* [in] */ ID3D10InputLayout *pInputLayout);
+
+ void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
+ ID3D10Device * This,
+ /* [in] */ UINT StartSlot,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][in] */ ID3D10Buffer *const *ppVertexBuffers,
+ /* [size_is][in] */ const UINT *pStrides,
+ /* [size_is][in] */ const UINT *pOffsets);
+
+ void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
+ ID3D10Device * This,
+ /* [in] */ ID3D10Buffer *pIndexBuffer,
+ /* [in] */ DXGI_FORMAT Format,
+ /* [in] */ UINT Offset);
+
+ void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
+ ID3D10Device * This,
+ /* [in] */ UINT IndexCountPerInstance,
+ /* [in] */ UINT InstanceCount,
+ /* [in] */ UINT StartIndexLocation,
+ /* [in] */ INT BaseVertexLocation,
+ /* [in] */ UINT StartInstanceLocation);
+
+ void ( STDMETHODCALLTYPE *DrawInstanced )(
+ ID3D10Device * This,
+ /* [in] */ UINT VertexCountPerInstance,
+ /* [in] */ UINT InstanceCount,
+ /* [in] */ UINT StartVertexLocation,
+ /* [in] */ UINT StartInstanceLocation);
+
+ void ( STDMETHODCALLTYPE *GSSetConstantBuffers )(
+ ID3D10Device * This,
+ /* [in] */ UINT StartConstantSlot,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][in] */ ID3D10Buffer *const *ppConstantBuffers);
+
+ void ( STDMETHODCALLTYPE *GSSetShader )(
+ ID3D10Device * This,
+ /* [in] */ ID3D10GeometryShader *pShader);
+
+ void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
+ ID3D10Device * This,
+ /* [in] */ D3D10_PRIMITIVE_TOPOLOGY Topology);
+
+ void ( STDMETHODCALLTYPE *VSSetShaderResources )(
+ ID3D10Device * This,
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumViews,
+ /* [size_is][in] */ ID3D10ShaderResourceView *const *ppShaderResourceViews);
+
+ void ( STDMETHODCALLTYPE *VSSetSamplers )(
+ ID3D10Device * This,
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumSamplers,
+ /* [size_is][in] */ ID3D10SamplerState *const *ppSamplers);
+
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D10Device * This,
+ /* [in] */ ID3D10Predicate *pPredicate,
+ /* [in] */ BOOL PredicateValue);
+
+ void ( STDMETHODCALLTYPE *GSSetShaderResources )(
+ ID3D10Device * This,
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumViews,
+ /* [size_is][in] */ ID3D10ShaderResourceView *const *ppShaderResourceViews);
+
+ void ( STDMETHODCALLTYPE *GSSetSamplers )(
+ ID3D10Device * This,
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumSamplers,
+ /* [size_is][in] */ ID3D10SamplerState *const *ppSamplers);
+
+ void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
+ ID3D10Device * This,
+ /* [in] */ UINT NumViews,
+ /* [size_is][in] */ ID3D10RenderTargetView *const *ppRenderTargetViews,
+ /* [in] */ ID3D10DepthStencilView *pDepthStencilView);
+
+ void ( STDMETHODCALLTYPE *OMSetBlendState )(
+ ID3D10Device * This,
+ /* [in] */ ID3D10BlendState *pBlendState,
+ /* [in] */ const FLOAT BlendFactor[ 4 ],
+ /* [in] */ UINT SampleMask);
+
+ void ( STDMETHODCALLTYPE *OMSetDepthStencilState )(
+ ID3D10Device * This,
+ /* [in] */ ID3D10DepthStencilState *pDepthStencilState,
+ /* [in] */ UINT StencilRef);
+
+ void ( STDMETHODCALLTYPE *SOSetTargets )(
+ ID3D10Device * This,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][in] */ ID3D10Buffer *const *ppSOTargets,
+ /* [size_is][in] */ const UINT *pOffsets);
+
+ void ( STDMETHODCALLTYPE *DrawAuto )(
+ ID3D10Device * This);
+
+ void ( STDMETHODCALLTYPE *RSSetState )(
+ ID3D10Device * This,
+ /* [in] */ ID3D10RasterizerState *pRasterizerState);
+
+ void ( STDMETHODCALLTYPE *RSSetViewports )(
+ ID3D10Device * This,
+ /* [in] */ UINT NumViewports,
+ /* [size_is][in] */ const D3D10_VIEWPORT *pViewports);
+
+ void ( STDMETHODCALLTYPE *RSSetScissorRects )(
+ ID3D10Device * This,
+ /* [in] */ UINT NumRects,
+ /* [size_is][in] */ const D3D10_RECT *pRects);
+
+ void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
+ ID3D10Device * This,
+ /* [in] */ ID3D10RenderTargetView *pRenderTargetView,
+ /* [in] */ const FLOAT ColorRGBA[ 4 ]);
+
+ void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
+ ID3D10Device * This,
+ /* [in] */ ID3D10DepthStencilView *pDepthStencilView,
+ /* [in] */ UINT Flags,
+ /* [in] */ FLOAT Depth,
+ /* [in] */ UINT8 Stencil);
+
+ HRESULT ( STDMETHODCALLTYPE *GenerateMips )(
+ ID3D10Device * This,
+ /* [in] */ ID3D10ShaderResourceView *pShaderResourceView);
+
+ void ( STDMETHODCALLTYPE *VSGetConstantBuffers )(
+ ID3D10Device * This,
+ /* [in] */ UINT StartConstantSlot,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][out] */ ID3D10Buffer **ppConstantBuffers);
+
+ void ( STDMETHODCALLTYPE *PSGetShaderResources )(
+ ID3D10Device * This,
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumViews,
+ /* [size_is][out] */ ID3D10ShaderResourceView **ppShaderResourceViews);
+
+ void ( STDMETHODCALLTYPE *PSGetShader )(
+ ID3D10Device * This,
+ /* [out][in] */ ID3D10PixelShader **ppPixelShader);
+
+ void ( STDMETHODCALLTYPE *PSGetSamplers )(
+ ID3D10Device * This,
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumSamplers,
+ /* [size_is][out] */ ID3D10SamplerState **ppSamplers);
+
+ void ( STDMETHODCALLTYPE *VSGetShader )(
+ ID3D10Device * This,
+ /* [out][in] */ ID3D10VertexShader **ppVertexShader);
+
+ void ( STDMETHODCALLTYPE *PSGetConstantBuffers )(
+ ID3D10Device * This,
+ /* [in] */ UINT StartConstantSlot,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][out] */ ID3D10Buffer **ppConstantBuffers);
+
+ void ( STDMETHODCALLTYPE *IAGetInputLayout )(
+ ID3D10Device * This,
+ /* [out][in] */ ID3D10InputLayout **ppInputLayout);
+
+ void ( STDMETHODCALLTYPE *IAGetVertexBuffers )(
+ ID3D10Device * This,
+ /* [in] */ UINT StartSlot,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][out] */ ID3D10Buffer **ppVertexBuffers,
+ /* [size_is][out] */ UINT *pStrides,
+ /* [size_is][out] */ UINT *pOffsets);
+
+ void ( STDMETHODCALLTYPE *IAGetIndexBuffer )(
+ ID3D10Device * This,
+ /* [out] */ ID3D10Buffer **pIndexBuffer,
+ /* [out] */ DXGI_FORMAT *Format,
+ /* [out] */ UINT *Offset);
+
+ void ( STDMETHODCALLTYPE *GSGetConstantBuffers )(
+ ID3D10Device * This,
+ /* [in] */ UINT StartConstantSlot,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][out] */ ID3D10Buffer **ppConstantBuffers);
+
+ void ( STDMETHODCALLTYPE *GSGetShader )(
+ ID3D10Device * This,
+ /* [out] */ ID3D10GeometryShader **ppGeometryShader);
+
+ void ( STDMETHODCALLTYPE *IAGetPrimitiveTopology )(
+ ID3D10Device * This,
+ /* [out] */ D3D10_PRIMITIVE_TOPOLOGY *pTopology);
+
+ void ( STDMETHODCALLTYPE *VSGetShaderResources )(
+ ID3D10Device * This,
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumViews,
+ /* [size_is][out] */ ID3D10ShaderResourceView **ppShaderResourceViews);
+
+ void ( STDMETHODCALLTYPE *VSGetSamplers )(
+ ID3D10Device * This,
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumSamplers,
+ /* [size_is][out] */ ID3D10SamplerState **ppSamplers);
+
+ void ( STDMETHODCALLTYPE *GetPredication )(
+ ID3D10Device * This,
+ /* [out] */ ID3D10Predicate **ppPredicate,
+ /* [out] */ BOOL *pPredicateValue);
+
+ void ( STDMETHODCALLTYPE *GSGetShaderResources )(
+ ID3D10Device * This,
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumViews,
+ /* [size_is][out] */ ID3D10ShaderResourceView **ppShaderResourceViews);
+
+ void ( STDMETHODCALLTYPE *GSGetSamplers )(
+ ID3D10Device * This,
+ /* [in] */ UINT Offset,
+ /* [in] */ UINT NumSamplers,
+ /* [size_is][out] */ ID3D10SamplerState **ppSamplers);
+
+ void ( STDMETHODCALLTYPE *OMGetRenderTargets )(
+ ID3D10Device * This,
+ /* [in] */ UINT NumViews,
+ /* [size_is][out] */ ID3D10RenderTargetView **ppRenderTargetViews,
+ /* [out] */ ID3D10DepthStencilView **ppDepthStencilView);
+
+ void ( STDMETHODCALLTYPE *OMGetBlendState )(
+ ID3D10Device * This,
+ /* [out] */ ID3D10BlendState **ppBlendState,
+ /* [out] */ FLOAT BlendFactor[ 4 ],
+ /* [out] */ UINT *pSampleMask);
+
+ void ( STDMETHODCALLTYPE *OMGetDepthStencilState )(
+ ID3D10Device * This,
+ /* [out] */ ID3D10DepthStencilState **ppDepthStencilState,
+ /* [out] */ UINT *pStencilRef);
+
+ void ( STDMETHODCALLTYPE *SOGetTargets )(
+ ID3D10Device * This,
+ /* [in] */ UINT NumBuffers,
+ /* [size_is][out] */ ID3D10Buffer **ppSOTargets,
+ /* [size_is][out] */ UINT *pOffsets);
+
+ void ( STDMETHODCALLTYPE *RSGetState )(
+ ID3D10Device * This,
+ /* [out] */ ID3D10RasterizerState **ppRasterizerState);
+
+ void ( STDMETHODCALLTYPE *RSGetViewports )(
+ ID3D10Device * This,
+ /* [out][in] */ UINT *NumViewports,
+ /* [size_is][out] */ D3D10_VIEWPORT *pViewports);
+
+ void ( STDMETHODCALLTYPE *RSGetScissorRects )(
+ ID3D10Device * This,
+ /* [out][in] */ UINT *NumRects,
+ /* [size_is][out] */ D3D10_RECT *pRects);
+
+ HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
+ ID3D10Device * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetExceptionMode )(
+ ID3D10Device * This,
+ UINT RaiseFlags);
+
+ UINT ( STDMETHODCALLTYPE *GetExceptionMode )(
+ ID3D10Device * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D10Device * This,
+ /* [in] */ REFGUID guid,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [size_is][out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D10Device * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ SIZE_T DataSize,
+ /* [size_is][in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D10Device * This,
+ /* [in] */ REFGUID guid,
+ /* [in] */ const IUnknown *pData);
+
+ void ( STDMETHODCALLTYPE *Enter )(
+ ID3D10Device * This);
+
+ void ( STDMETHODCALLTYPE *Leave )(
+ ID3D10Device * This);
+
+ void ( STDMETHODCALLTYPE *Flush )(
+ ID3D10Device * This);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateBuffer )(
+ ID3D10Device * This,
+ /* [in] */ const D3D10_BUFFER_DESC *pDesc,
+ /* [in] */ const D3D10_SUBRESOURCE_UP *pInitialData,
+ /* [out] */ ID3D10Buffer **ppBuffer);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateTexture1D )(
+ ID3D10Device * This,
+ /* [in] */ const D3D10_TEXTURE1D_DESC *pDesc,
+ /* [in] */ const D3D10_SUBRESOURCE_UP *pInitialData,
+ /* [out] */ ID3D10Texture1D **ppTexture1D);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateTexture2D )(
+ ID3D10Device * This,
+ /* [in] */ const D3D10_TEXTURE2D_DESC *pDesc,
+ /* [in] */ const D3D10_SUBRESOURCE_UP *pInitialData,
+ /* [out] */ ID3D10Texture2D **ppTexture2D);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateTexture3D )(
+ ID3D10Device * This,
+ /* [in] */ const D3D10_TEXTURE3D_DESC *pDesc,
+ /* [in] */ const D3D10_SUBRESOURCE_UP *pInitialData,
+ /* [out] */ ID3D10Texture3D **ppTexture3D);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateTextureCube )(
+ ID3D10Device * This,
+ /* [in] */ const D3D10_TEXTURECUBE_DESC *pDesc,
+ /* [in] */ const D3D10_SUBRESOURCE_UP *pInitialData,
+ /* [out] */ ID3D10TextureCube **ppTextureCube);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateShaderResourceView )(
+ ID3D10Device * This,
+ /* [in] */ ID3D10Resource *pResource,
+ /* [in] */ const D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ /* [out] */ ID3D10ShaderResourceView **ppSRView);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateRenderTargetView )(
+ ID3D10Device * This,
+ /* [in] */ ID3D10Resource *pResource,
+ /* [in] */ const D3D10_RENDER_TARGET_VIEW_DESC *pDesc,
+ /* [out] */ ID3D10RenderTargetView **ppRTView);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateDepthStencilView )(
+ ID3D10Device * This,
+ /* [in] */ ID3D10Resource *pResource,
+ /* [in] */ const D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ /* [out] */ ID3D10DepthStencilView **ppDepthStencilView);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateInputLayout )(
+ ID3D10Device * This,
+ /* [size_is][in] */ const D3D10_INPUT_ELEMENT_DESC *pInputElementDescs,
+ /* [in] */ UINT NumElements,
+ /* [in] */ const void *pShaderBytecodeWithInputSignature,
+ /* [out] */ ID3D10InputLayout **ppInputLayout);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateVertexShader )(
+ ID3D10Device * This,
+ /* [in] */ const void *pShaderBytecode,
+ /* [out] */ ID3D10VertexShader **ppVertexShader);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateGeometryShader )(
+ ID3D10Device * This,
+ /* [in] */ const void *pShaderBytecode,
+ /* [out] */ ID3D10GeometryShader **ppGeometryShader);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateGeometryShaderWithStreamOutput )(
+ ID3D10Device * This,
+ /* [in] */ const void *pShaderBytecode,
+ /* [size_is][in] */ const D3D10_SO_DECLARATION_ENTRY *pSODeclaration,
+ /* [in] */ UINT NumEntries,
+ /* [in] */ UINT OutputStreamStride,
+ /* [out] */ ID3D10GeometryShader **ppGeometryShader);
+
+ HRESULT ( STDMETHODCALLTYPE *CreatePixelShader )(
+ ID3D10Device * This,
+ /* [in] */ const void *pShaderBytecode,
+ /* [out] */ ID3D10PixelShader **ppPixelShader);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateBlendState )(
+ ID3D10Device * This,
+ /* [in] */ const D3D10_BLEND_DESC *pBlendStateDesc,
+ /* [out] */ ID3D10BlendState **ppBlendState);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateDepthStencilState )(
+ ID3D10Device * This,
+ /* [in] */ const D3D10_DEPTH_STENCIL_DESC *pDepthStencilDesc,
+ /* [out] */ ID3D10DepthStencilState **ppDepthStencilState);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateRasterizerState )(
+ ID3D10Device * This,
+ /* [in] */ const D3D10_RASTERIZER_DESC *pRasterizerDesc,
+ /* [out] */ ID3D10RasterizerState **ppRasterizerState);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateSamplerState )(
+ ID3D10Device * This,
+ /* [in] */ const D3D10_SAMPLER_DESC *pSamplerDesc,
+ /* [out] */ ID3D10SamplerState **ppSamplerState);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateQuery )(
+ ID3D10Device * This,
+ /* [in] */ const D3D10_QUERY_DESC *pQueryDesc,
+ /* [out] */ ID3D10Query **ppQuery);
+
+ HRESULT ( STDMETHODCALLTYPE *CreatePredicate )(
+ ID3D10Device * This,
+ /* [in] */ const D3D10_QUERY_DESC *pPredicateDesc,
+ /* [out] */ ID3D10Predicate **ppPredicate);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateCounter )(
+ ID3D10Device * This,
+ /* [in] */ const D3D10_COUNTER_DESC *pCounterDesc,
+ /* [out] */ ID3D10Counter **ppCounter);
+
+ HRESULT ( STDMETHODCALLTYPE *CheckFormatSupport )(
+ ID3D10Device * This,
+ /* [in] */ DXGI_FORMAT Format,
+ /* [retval][out] */ UINT *pFormatSupport);
+
+ HRESULT ( STDMETHODCALLTYPE *CheckMultisampleQualityLevels )(
+ ID3D10Device * This,
+ /* [in] */ UINT SampleCount,
+ /* [retval][out] */ UINT *pNumQualityLevels);
+
+ void ( STDMETHODCALLTYPE *CheckVertexCache )(
+ ID3D10Device * This,
+ /* [out] */ D3D10_VERTEX_CACHE_DESC *pVertexCacheDesc);
+
+ void ( STDMETHODCALLTYPE *CheckCounterInfo )(
+ ID3D10Device * This,
+ /* [retval][out] */ D3D10_COUNTER_INFO *pCounterInfo);
+
+ HRESULT ( STDMETHODCALLTYPE *CheckCounter )(
+ ID3D10Device * This,
+ /* */
+ __in const D3D10_COUNTER_DESC *pDesc,
+ /* */
+ __out D3D10_COUNTER_TYPE *pType,
+ /* */
+ __out UINT *pActiveCounters,
+ /* */
+ __out_ecount_opt(*pNameLength) LPWSTR wszName,
+ /* */
+ __inout_opt SIZE_T *pNameLength,
+ /* */
+ __out_ecount_opt(*pUnitsLength) LPWSTR wszUnits,
+ /* */
+ __inout_opt SIZE_T *pUnitsLength,
+ /* */
+ __out_ecount_opt(*pDescriptionLength) LPWSTR wszDescription,
+ /* */
+ __inout_opt SIZE_T *pDescriptionLength);
+
+ UINT ( STDMETHODCALLTYPE *GetCreationFlags )(
+ ID3D10Device * This);
+
+ END_INTERFACE
+ } ID3D10DeviceVtbl;
+
+ interface ID3D10Device
+ {
+ CONST_VTBL struct ID3D10DeviceVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10Device_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10Device_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10Device_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10Device_VSSetConstantBuffers(This,StartConstantSlot,NumBuffers,ppConstantBuffers) \
+ ( (This)->lpVtbl -> VSSetConstantBuffers(This,StartConstantSlot,NumBuffers,ppConstantBuffers) )
+
+#define ID3D10Device_PSSetShaderResources(This,Offset,NumViews,ppShaderResourceViews) \
+ ( (This)->lpVtbl -> PSSetShaderResources(This,Offset,NumViews,ppShaderResourceViews) )
+
+#define ID3D10Device_PSSetShader(This,pPixelShader) \
+ ( (This)->lpVtbl -> PSSetShader(This,pPixelShader) )
+
+#define ID3D10Device_PSSetSamplers(This,Offset,NumSamplers,ppSamplers) \
+ ( (This)->lpVtbl -> PSSetSamplers(This,Offset,NumSamplers,ppSamplers) )
+
+#define ID3D10Device_VSSetShader(This,pVertexShader) \
+ ( (This)->lpVtbl -> VSSetShader(This,pVertexShader) )
+
+#define ID3D10Device_DrawIndexed(This,IndexCount,StartIndexLocation,BaseVertexLocation) \
+ ( (This)->lpVtbl -> DrawIndexed(This,IndexCount,StartIndexLocation,BaseVertexLocation) )
+
+#define ID3D10Device_Draw(This,VertexCount,StartVertexLocation) \
+ ( (This)->lpVtbl -> Draw(This,VertexCount,StartVertexLocation) )
+
+#define ID3D10Device_PSSetConstantBuffers(This,StartConstantSlot,NumBuffers,ppConstantBuffers) \
+ ( (This)->lpVtbl -> PSSetConstantBuffers(This,StartConstantSlot,NumBuffers,ppConstantBuffers) )
+
+#define ID3D10Device_IASetInputLayout(This,pInputLayout) \
+ ( (This)->lpVtbl -> IASetInputLayout(This,pInputLayout) )
+
+#define ID3D10Device_IASetVertexBuffers(This,StartSlot,NumBuffers,ppVertexBuffers,pStrides,pOffsets) \
+ ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumBuffers,ppVertexBuffers,pStrides,pOffsets) )
+
+#define ID3D10Device_IASetIndexBuffer(This,pIndexBuffer,Format,Offset) \
+ ( (This)->lpVtbl -> IASetIndexBuffer(This,pIndexBuffer,Format,Offset) )
+
+#define ID3D10Device_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
+
+#define ID3D10Device_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
+
+#define ID3D10Device_GSSetConstantBuffers(This,StartConstantSlot,NumBuffers,ppConstantBuffers) \
+ ( (This)->lpVtbl -> GSSetConstantBuffers(This,StartConstantSlot,NumBuffers,ppConstantBuffers) )
+
+#define ID3D10Device_GSSetShader(This,pShader) \
+ ( (This)->lpVtbl -> GSSetShader(This,pShader) )
+
+#define ID3D10Device_IASetPrimitiveTopology(This,Topology) \
+ ( (This)->lpVtbl -> IASetPrimitiveTopology(This,Topology) )
+
+#define ID3D10Device_VSSetShaderResources(This,Offset,NumViews,ppShaderResourceViews) \
+ ( (This)->lpVtbl -> VSSetShaderResources(This,Offset,NumViews,ppShaderResourceViews) )
+
+#define ID3D10Device_VSSetSamplers(This,Offset,NumSamplers,ppSamplers) \
+ ( (This)->lpVtbl -> VSSetSamplers(This,Offset,NumSamplers,ppSamplers) )
+
+#define ID3D10Device_SetPredication(This,pPredicate,PredicateValue) \
+ ( (This)->lpVtbl -> SetPredication(This,pPredicate,PredicateValue) )
+
+#define ID3D10Device_GSSetShaderResources(This,Offset,NumViews,ppShaderResourceViews) \
+ ( (This)->lpVtbl -> GSSetShaderResources(This,Offset,NumViews,ppShaderResourceViews) )
+
+#define ID3D10Device_GSSetSamplers(This,Offset,NumSamplers,ppSamplers) \
+ ( (This)->lpVtbl -> GSSetSamplers(This,Offset,NumSamplers,ppSamplers) )
+
+#define ID3D10Device_OMSetRenderTargets(This,NumViews,ppRenderTargetViews,pDepthStencilView) \
+ ( (This)->lpVtbl -> OMSetRenderTargets(This,NumViews,ppRenderTargetViews,pDepthStencilView) )
+
+#define ID3D10Device_OMSetBlendState(This,pBlendState,BlendFactor,SampleMask) \
+ ( (This)->lpVtbl -> OMSetBlendState(This,pBlendState,BlendFactor,SampleMask) )
+
+#define ID3D10Device_OMSetDepthStencilState(This,pDepthStencilState,StencilRef) \
+ ( (This)->lpVtbl -> OMSetDepthStencilState(This,pDepthStencilState,StencilRef) )
+
+#define ID3D10Device_SOSetTargets(This,NumBuffers,ppSOTargets,pOffsets) \
+ ( (This)->lpVtbl -> SOSetTargets(This,NumBuffers,ppSOTargets,pOffsets) )
+
+#define ID3D10Device_DrawAuto(This) \
+ ( (This)->lpVtbl -> DrawAuto(This) )
+
+#define ID3D10Device_RSSetState(This,pRasterizerState) \
+ ( (This)->lpVtbl -> RSSetState(This,pRasterizerState) )
+
+#define ID3D10Device_RSSetViewports(This,NumViewports,pViewports) \
+ ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
+
+#define ID3D10Device_RSSetScissorRects(This,NumRects,pRects) \
+ ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
+
+#define ID3D10Device_ClearRenderTargetView(This,pRenderTargetView,ColorRGBA) \
+ ( (This)->lpVtbl -> ClearRenderTargetView(This,pRenderTargetView,ColorRGBA) )
+
+#define ID3D10Device_ClearDepthStencilView(This,pDepthStencilView,Flags,Depth,Stencil) \
+ ( (This)->lpVtbl -> ClearDepthStencilView(This,pDepthStencilView,Flags,Depth,Stencil) )
+
+#define ID3D10Device_GenerateMips(This,pShaderResourceView) \
+ ( (This)->lpVtbl -> GenerateMips(This,pShaderResourceView) )
+
+#define ID3D10Device_VSGetConstantBuffers(This,StartConstantSlot,NumBuffers,ppConstantBuffers) \
+ ( (This)->lpVtbl -> VSGetConstantBuffers(This,StartConstantSlot,NumBuffers,ppConstantBuffers) )
+
+#define ID3D10Device_PSGetShaderResources(This,Offset,NumViews,ppShaderResourceViews) \
+ ( (This)->lpVtbl -> PSGetShaderResources(This,Offset,NumViews,ppShaderResourceViews) )
+
+#define ID3D10Device_PSGetShader(This,ppPixelShader) \
+ ( (This)->lpVtbl -> PSGetShader(This,ppPixelShader) )
+
+#define ID3D10Device_PSGetSamplers(This,Offset,NumSamplers,ppSamplers) \
+ ( (This)->lpVtbl -> PSGetSamplers(This,Offset,NumSamplers,ppSamplers) )
+
+#define ID3D10Device_VSGetShader(This,ppVertexShader) \
+ ( (This)->lpVtbl -> VSGetShader(This,ppVertexShader) )
+
+#define ID3D10Device_PSGetConstantBuffers(This,StartConstantSlot,NumBuffers,ppConstantBuffers) \
+ ( (This)->lpVtbl -> PSGetConstantBuffers(This,StartConstantSlot,NumBuffers,ppConstantBuffers) )
+
+#define ID3D10Device_IAGetInputLayout(This,ppInputLayout) \
+ ( (This)->lpVtbl -> IAGetInputLayout(This,ppInputLayout) )
+
+#define ID3D10Device_IAGetVertexBuffers(This,StartSlot,NumBuffers,ppVertexBuffers,pStrides,pOffsets) \
+ ( (This)->lpVtbl -> IAGetVertexBuffers(This,StartSlot,NumBuffers,ppVertexBuffers,pStrides,pOffsets) )
+
+#define ID3D10Device_IAGetIndexBuffer(This,pIndexBuffer,Format,Offset) \
+ ( (This)->lpVtbl -> IAGetIndexBuffer(This,pIndexBuffer,Format,Offset) )
+
+#define ID3D10Device_GSGetConstantBuffers(This,StartConstantSlot,NumBuffers,ppConstantBuffers) \
+ ( (This)->lpVtbl -> GSGetConstantBuffers(This,StartConstantSlot,NumBuffers,ppConstantBuffers) )
+
+#define ID3D10Device_GSGetShader(This,ppGeometryShader) \
+ ( (This)->lpVtbl -> GSGetShader(This,ppGeometryShader) )
+
+#define ID3D10Device_IAGetPrimitiveTopology(This,pTopology) \
+ ( (This)->lpVtbl -> IAGetPrimitiveTopology(This,pTopology) )
+
+#define ID3D10Device_VSGetShaderResources(This,Offset,NumViews,ppShaderResourceViews) \
+ ( (This)->lpVtbl -> VSGetShaderResources(This,Offset,NumViews,ppShaderResourceViews) )
+
+#define ID3D10Device_VSGetSamplers(This,Offset,NumSamplers,ppSamplers) \
+ ( (This)->lpVtbl -> VSGetSamplers(This,Offset,NumSamplers,ppSamplers) )
+
+#define ID3D10Device_GetPredication(This,ppPredicate,pPredicateValue) \
+ ( (This)->lpVtbl -> GetPredication(This,ppPredicate,pPredicateValue) )
+
+#define ID3D10Device_GSGetShaderResources(This,Offset,NumViews,ppShaderResourceViews) \
+ ( (This)->lpVtbl -> GSGetShaderResources(This,Offset,NumViews,ppShaderResourceViews) )
+
+#define ID3D10Device_GSGetSamplers(This,Offset,NumSamplers,ppSamplers) \
+ ( (This)->lpVtbl -> GSGetSamplers(This,Offset,NumSamplers,ppSamplers) )
+
+#define ID3D10Device_OMGetRenderTargets(This,NumViews,ppRenderTargetViews,ppDepthStencilView) \
+ ( (This)->lpVtbl -> OMGetRenderTargets(This,NumViews,ppRenderTargetViews,ppDepthStencilView) )
+
+#define ID3D10Device_OMGetBlendState(This,ppBlendState,BlendFactor,pSampleMask) \
+ ( (This)->lpVtbl -> OMGetBlendState(This,ppBlendState,BlendFactor,pSampleMask) )
+
+#define ID3D10Device_OMGetDepthStencilState(This,ppDepthStencilState,pStencilRef) \
+ ( (This)->lpVtbl -> OMGetDepthStencilState(This,ppDepthStencilState,pStencilRef) )
+
+#define ID3D10Device_SOGetTargets(This,NumBuffers,ppSOTargets,pOffsets) \
+ ( (This)->lpVtbl -> SOGetTargets(This,NumBuffers,ppSOTargets,pOffsets) )
+
+#define ID3D10Device_RSGetState(This,ppRasterizerState) \
+ ( (This)->lpVtbl -> RSGetState(This,ppRasterizerState) )
+
+#define ID3D10Device_RSGetViewports(This,NumViewports,pViewports) \
+ ( (This)->lpVtbl -> RSGetViewports(This,NumViewports,pViewports) )
+
+#define ID3D10Device_RSGetScissorRects(This,NumRects,pRects) \
+ ( (This)->lpVtbl -> RSGetScissorRects(This,NumRects,pRects) )
+
+#define ID3D10Device_GetDeviceRemovedReason(This) \
+ ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
+
+#define ID3D10Device_SetExceptionMode(This,RaiseFlags) \
+ ( (This)->lpVtbl -> SetExceptionMode(This,RaiseFlags) )
+
+#define ID3D10Device_GetExceptionMode(This) \
+ ( (This)->lpVtbl -> GetExceptionMode(This) )
+
+#define ID3D10Device_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D10Device_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D10Device_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D10Device_Enter(This) \
+ ( (This)->lpVtbl -> Enter(This) )
+
+#define ID3D10Device_Leave(This) \
+ ( (This)->lpVtbl -> Leave(This) )
+
+#define ID3D10Device_Flush(This) \
+ ( (This)->lpVtbl -> Flush(This) )
+
+#define ID3D10Device_CreateBuffer(This,pDesc,pInitialData,ppBuffer) \
+ ( (This)->lpVtbl -> CreateBuffer(This,pDesc,pInitialData,ppBuffer) )
+
+#define ID3D10Device_CreateTexture1D(This,pDesc,pInitialData,ppTexture1D) \
+ ( (This)->lpVtbl -> CreateTexture1D(This,pDesc,pInitialData,ppTexture1D) )
+
+#define ID3D10Device_CreateTexture2D(This,pDesc,pInitialData,ppTexture2D) \
+ ( (This)->lpVtbl -> CreateTexture2D(This,pDesc,pInitialData,ppTexture2D) )
+
+#define ID3D10Device_CreateTexture3D(This,pDesc,pInitialData,ppTexture3D) \
+ ( (This)->lpVtbl -> CreateTexture3D(This,pDesc,pInitialData,ppTexture3D) )
+
+#define ID3D10Device_CreateTextureCube(This,pDesc,pInitialData,ppTextureCube) \
+ ( (This)->lpVtbl -> CreateTextureCube(This,pDesc,pInitialData,ppTextureCube) )
+
+#define ID3D10Device_CreateShaderResourceView(This,pResource,pDesc,ppSRView) \
+ ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,ppSRView) )
+
+#define ID3D10Device_CreateRenderTargetView(This,pResource,pDesc,ppRTView) \
+ ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,ppRTView) )
+
+#define ID3D10Device_CreateDepthStencilView(This,pResource,pDesc,ppDepthStencilView) \
+ ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,ppDepthStencilView) )
+
+#define ID3D10Device_CreateInputLayout(This,pInputElementDescs,NumElements,pShaderBytecodeWithInputSignature,ppInputLayout) \
+ ( (This)->lpVtbl -> CreateInputLayout(This,pInputElementDescs,NumElements,pShaderBytecodeWithInputSignature,ppInputLayout) )
+
+#define ID3D10Device_CreateVertexShader(This,pShaderBytecode,ppVertexShader) \
+ ( (This)->lpVtbl -> CreateVertexShader(This,pShaderBytecode,ppVertexShader) )
+
+#define ID3D10Device_CreateGeometryShader(This,pShaderBytecode,ppGeometryShader) \
+ ( (This)->lpVtbl -> CreateGeometryShader(This,pShaderBytecode,ppGeometryShader) )
+
+#define ID3D10Device_CreateGeometryShaderWithStreamOutput(This,pShaderBytecode,pSODeclaration,NumEntries,OutputStreamStride,ppGeometryShader) \
+ ( (This)->lpVtbl -> CreateGeometryShaderWithStreamOutput(This,pShaderBytecode,pSODeclaration,NumEntries,OutputStreamStride,ppGeometryShader) )
+
+#define ID3D10Device_CreatePixelShader(This,pShaderBytecode,ppPixelShader) \
+ ( (This)->lpVtbl -> CreatePixelShader(This,pShaderBytecode,ppPixelShader) )
+
+#define ID3D10Device_CreateBlendState(This,pBlendStateDesc,ppBlendState) \
+ ( (This)->lpVtbl -> CreateBlendState(This,pBlendStateDesc,ppBlendState) )
+
+#define ID3D10Device_CreateDepthStencilState(This,pDepthStencilDesc,ppDepthStencilState) \
+ ( (This)->lpVtbl -> CreateDepthStencilState(This,pDepthStencilDesc,ppDepthStencilState) )
+
+#define ID3D10Device_CreateRasterizerState(This,pRasterizerDesc,ppRasterizerState) \
+ ( (This)->lpVtbl -> CreateRasterizerState(This,pRasterizerDesc,ppRasterizerState) )
+
+#define ID3D10Device_CreateSamplerState(This,pSamplerDesc,ppSamplerState) \
+ ( (This)->lpVtbl -> CreateSamplerState(This,pSamplerDesc,ppSamplerState) )
+
+#define ID3D10Device_CreateQuery(This,pQueryDesc,ppQuery) \
+ ( (This)->lpVtbl -> CreateQuery(This,pQueryDesc,ppQuery) )
+
+#define ID3D10Device_CreatePredicate(This,pPredicateDesc,ppPredicate) \
+ ( (This)->lpVtbl -> CreatePredicate(This,pPredicateDesc,ppPredicate) )
+
+#define ID3D10Device_CreateCounter(This,pCounterDesc,ppCounter) \
+ ( (This)->lpVtbl -> CreateCounter(This,pCounterDesc,ppCounter) )
+
+#define ID3D10Device_CheckFormatSupport(This,Format,pFormatSupport) \
+ ( (This)->lpVtbl -> CheckFormatSupport(This,Format,pFormatSupport) )
+
+#define ID3D10Device_CheckMultisampleQualityLevels(This,SampleCount,pNumQualityLevels) \
+ ( (This)->lpVtbl -> CheckMultisampleQualityLevels(This,SampleCount,pNumQualityLevels) )
+
+#define ID3D10Device_CheckVertexCache(This,pVertexCacheDesc) \
+ ( (This)->lpVtbl -> CheckVertexCache(This,pVertexCacheDesc) )
+
+#define ID3D10Device_CheckCounterInfo(This,pCounterInfo) \
+ ( (This)->lpVtbl -> CheckCounterInfo(This,pCounterInfo) )
+
+#define ID3D10Device_CheckCounter(This,pDesc,pType,pActiveCounters,wszName,pNameLength,wszUnits,pUnitsLength,wszDescription,pDescriptionLength) \
+ ( (This)->lpVtbl -> CheckCounter(This,pDesc,pType,pActiveCounters,wszName,pNameLength,wszUnits,pUnitsLength,wszDescription,pDescriptionLength) )
+
+#define ID3D10Device_GetCreationFlags(This) \
+ ( (This)->lpVtbl -> GetCreationFlags(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10Device_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D10StateMirror_INTERFACE_DEFINED__
+#define __ID3D10StateMirror_INTERFACE_DEFINED__
+
+/* interface ID3D10StateMirror */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10StateMirror;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4D0F-342C-4106-A19F-4F2704F689F0")
+ ID3D10StateMirror : public IUnknown
+ {
+ public:
+ virtual void STDMETHODCALLTYPE GetBufferDesc(
+ /* [in] */ ID3D10Buffer *pBuffer,
+ /* [retval][out] */ D3D10_BUFFER_DESC *pDesc) = 0;
+
+ virtual void STDMETHODCALLTYPE GetTexture1DDesc(
+ /* [in] */ ID3D10Texture1D *pTexture1D,
+ /* [retval][out] */ D3D10_TEXTURE1D_DESC *pDesc) = 0;
+
+ virtual void STDMETHODCALLTYPE GetTexture2DDesc(
+ /* [in] */ ID3D10Texture2D *pTexture2D,
+ /* [retval][out] */ D3D10_TEXTURE2D_DESC *pDesc) = 0;
+
+ virtual void STDMETHODCALLTYPE GetTexture3DDesc(
+ /* [in] */ ID3D10Texture3D *pTexture3D,
+ /* [retval][out] */ D3D10_TEXTURE3D_DESC *pDesc) = 0;
+
+ virtual void STDMETHODCALLTYPE GetTextureCubeDesc(
+ /* [in] */ ID3D10TextureCube *pTextureCube,
+ /* [retval][out] */ D3D10_TEXTURECUBE_DESC *pDesc) = 0;
+
+ virtual void STDMETHODCALLTYPE GetShaderResourceViewDesc(
+ /* [in] */ ID3D10ShaderResourceView *pShaderResourceView,
+ /* [retval][out] */ D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc) = 0;
+
+ virtual void STDMETHODCALLTYPE GetRenderTargetViewDesc(
+ /* [in] */ ID3D10RenderTargetView *pRenderTargetView,
+ /* [retval][out] */ D3D10_RENDER_TARGET_VIEW_DESC *pDesc) = 0;
+
+ virtual void STDMETHODCALLTYPE GetDepthStencilViewDesc(
+ /* [in] */ ID3D10DepthStencilView *pDepthStencilView,
+ /* [retval][out] */ D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetVertexShaderDesc(
+ /* [in] */ ID3D10VertexShader *pShader,
+ /* [out][in] */ D3D10_VERTEX_SHADER_DESC *pDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetGeometryShaderDesc(
+ /* [in] */ ID3D10GeometryShader *pShader,
+ /* [out][in] */ D3D10_GEOMETRY_SHADER_DESC *pDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPixelShaderDesc(
+ /* [in] */ ID3D10PixelShader *pShader,
+ /* [out][in] */ D3D10_PIXEL_SHADER_DESC *pDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetInputLayoutDesc(
+ /* [in] */ ID3D10InputLayout *pInputLayout,
+ /* [out][in] */ D3D10_INPUT_LAYOUT_DESC *pDesc) = 0;
+
+ virtual SIZE_T STDMETHODCALLTYPE GetInputLayoutDeclarationElements(
+ /* [in] */ ID3D10InputLayout *pInputLayout) = 0;
+
+ virtual void STDMETHODCALLTYPE GetSamplerDesc(
+ /* [in] */ ID3D10SamplerState *pSampler,
+ /* [retval][out] */ D3D10_SAMPLER_DESC *pDesc) = 0;
+
+ virtual void STDMETHODCALLTYPE GetBlendStateDesc(
+ /* [in] */ ID3D10BlendState *pBlendState,
+ /* [retval][out] */ D3D10_BLEND_DESC *pDesc) = 0;
+
+ virtual void STDMETHODCALLTYPE GetDepthStencilStateDesc(
+ /* [in] */ ID3D10DepthStencilState *pDepthStencilState,
+ /* [retval][out] */ D3D10_DEPTH_STENCIL_DESC *pDesc) = 0;
+
+ virtual void STDMETHODCALLTYPE GetRasterizerStateDesc(
+ /* [in] */ ID3D10RasterizerState *pRasterizerState,
+ /* [retval][out] */ D3D10_RASTERIZER_DESC *pDesc) = 0;
+
+ virtual void STDMETHODCALLTYPE GetQueryDesc(
+ /* [in] */ ID3D10Query *pQuery,
+ /* [retval][out] */ D3D10_QUERY_DESC *pDesc) = 0;
+
+ virtual void STDMETHODCALLTYPE GetCounterDesc(
+ /* [in] */ ID3D10Counter *pCounter,
+ /* [retval][out] */ D3D10_COUNTER_DESC *pDesc) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10StateMirrorVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10StateMirror * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10StateMirror * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10StateMirror * This);
+
+ void ( STDMETHODCALLTYPE *GetBufferDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10Buffer *pBuffer,
+ /* [retval][out] */ D3D10_BUFFER_DESC *pDesc);
+
+ void ( STDMETHODCALLTYPE *GetTexture1DDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10Texture1D *pTexture1D,
+ /* [retval][out] */ D3D10_TEXTURE1D_DESC *pDesc);
+
+ void ( STDMETHODCALLTYPE *GetTexture2DDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10Texture2D *pTexture2D,
+ /* [retval][out] */ D3D10_TEXTURE2D_DESC *pDesc);
+
+ void ( STDMETHODCALLTYPE *GetTexture3DDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10Texture3D *pTexture3D,
+ /* [retval][out] */ D3D10_TEXTURE3D_DESC *pDesc);
+
+ void ( STDMETHODCALLTYPE *GetTextureCubeDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10TextureCube *pTextureCube,
+ /* [retval][out] */ D3D10_TEXTURECUBE_DESC *pDesc);
+
+ void ( STDMETHODCALLTYPE *GetShaderResourceViewDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10ShaderResourceView *pShaderResourceView,
+ /* [retval][out] */ D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc);
+
+ void ( STDMETHODCALLTYPE *GetRenderTargetViewDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10RenderTargetView *pRenderTargetView,
+ /* [retval][out] */ D3D10_RENDER_TARGET_VIEW_DESC *pDesc);
+
+ void ( STDMETHODCALLTYPE *GetDepthStencilViewDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10DepthStencilView *pDepthStencilView,
+ /* [retval][out] */ D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc);
+
+ HRESULT ( STDMETHODCALLTYPE *GetVertexShaderDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10VertexShader *pShader,
+ /* [out][in] */ D3D10_VERTEX_SHADER_DESC *pDesc);
+
+ HRESULT ( STDMETHODCALLTYPE *GetGeometryShaderDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10GeometryShader *pShader,
+ /* [out][in] */ D3D10_GEOMETRY_SHADER_DESC *pDesc);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPixelShaderDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10PixelShader *pShader,
+ /* [out][in] */ D3D10_PIXEL_SHADER_DESC *pDesc);
+
+ HRESULT ( STDMETHODCALLTYPE *GetInputLayoutDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10InputLayout *pInputLayout,
+ /* [out][in] */ D3D10_INPUT_LAYOUT_DESC *pDesc);
+
+ SIZE_T ( STDMETHODCALLTYPE *GetInputLayoutDeclarationElements )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10InputLayout *pInputLayout);
+
+ void ( STDMETHODCALLTYPE *GetSamplerDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10SamplerState *pSampler,
+ /* [retval][out] */ D3D10_SAMPLER_DESC *pDesc);
+
+ void ( STDMETHODCALLTYPE *GetBlendStateDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10BlendState *pBlendState,
+ /* [retval][out] */ D3D10_BLEND_DESC *pDesc);
+
+ void ( STDMETHODCALLTYPE *GetDepthStencilStateDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10DepthStencilState *pDepthStencilState,
+ /* [retval][out] */ D3D10_DEPTH_STENCIL_DESC *pDesc);
+
+ void ( STDMETHODCALLTYPE *GetRasterizerStateDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10RasterizerState *pRasterizerState,
+ /* [retval][out] */ D3D10_RASTERIZER_DESC *pDesc);
+
+ void ( STDMETHODCALLTYPE *GetQueryDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10Query *pQuery,
+ /* [retval][out] */ D3D10_QUERY_DESC *pDesc);
+
+ void ( STDMETHODCALLTYPE *GetCounterDesc )(
+ ID3D10StateMirror * This,
+ /* [in] */ ID3D10Counter *pCounter,
+ /* [retval][out] */ D3D10_COUNTER_DESC *pDesc);
+
+ END_INTERFACE
+ } ID3D10StateMirrorVtbl;
+
+ interface ID3D10StateMirror
+ {
+ CONST_VTBL struct ID3D10StateMirrorVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10StateMirror_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10StateMirror_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10StateMirror_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10StateMirror_GetBufferDesc(This,pBuffer,pDesc) \
+ ( (This)->lpVtbl -> GetBufferDesc(This,pBuffer,pDesc) )
+
+#define ID3D10StateMirror_GetTexture1DDesc(This,pTexture1D,pDesc) \
+ ( (This)->lpVtbl -> GetTexture1DDesc(This,pTexture1D,pDesc) )
+
+#define ID3D10StateMirror_GetTexture2DDesc(This,pTexture2D,pDesc) \
+ ( (This)->lpVtbl -> GetTexture2DDesc(This,pTexture2D,pDesc) )
+
+#define ID3D10StateMirror_GetTexture3DDesc(This,pTexture3D,pDesc) \
+ ( (This)->lpVtbl -> GetTexture3DDesc(This,pTexture3D,pDesc) )
+
+#define ID3D10StateMirror_GetTextureCubeDesc(This,pTextureCube,pDesc) \
+ ( (This)->lpVtbl -> GetTextureCubeDesc(This,pTextureCube,pDesc) )
+
+#define ID3D10StateMirror_GetShaderResourceViewDesc(This,pShaderResourceView,pDesc) \
+ ( (This)->lpVtbl -> GetShaderResourceViewDesc(This,pShaderResourceView,pDesc) )
+
+#define ID3D10StateMirror_GetRenderTargetViewDesc(This,pRenderTargetView,pDesc) \
+ ( (This)->lpVtbl -> GetRenderTargetViewDesc(This,pRenderTargetView,pDesc) )
+
+#define ID3D10StateMirror_GetDepthStencilViewDesc(This,pDepthStencilView,pDesc) \
+ ( (This)->lpVtbl -> GetDepthStencilViewDesc(This,pDepthStencilView,pDesc) )
+
+#define ID3D10StateMirror_GetVertexShaderDesc(This,pShader,pDesc) \
+ ( (This)->lpVtbl -> GetVertexShaderDesc(This,pShader,pDesc) )
+
+#define ID3D10StateMirror_GetGeometryShaderDesc(This,pShader,pDesc) \
+ ( (This)->lpVtbl -> GetGeometryShaderDesc(This,pShader,pDesc) )
+
+#define ID3D10StateMirror_GetPixelShaderDesc(This,pShader,pDesc) \
+ ( (This)->lpVtbl -> GetPixelShaderDesc(This,pShader,pDesc) )
+
+#define ID3D10StateMirror_GetInputLayoutDesc(This,pInputLayout,pDesc) \
+ ( (This)->lpVtbl -> GetInputLayoutDesc(This,pInputLayout,pDesc) )
+
+#define ID3D10StateMirror_GetInputLayoutDeclarationElements(This,pInputLayout) \
+ ( (This)->lpVtbl -> GetInputLayoutDeclarationElements(This,pInputLayout) )
+
+#define ID3D10StateMirror_GetSamplerDesc(This,pSampler,pDesc) \
+ ( (This)->lpVtbl -> GetSamplerDesc(This,pSampler,pDesc) )
+
+#define ID3D10StateMirror_GetBlendStateDesc(This,pBlendState,pDesc) \
+ ( (This)->lpVtbl -> GetBlendStateDesc(This,pBlendState,pDesc) )
+
+#define ID3D10StateMirror_GetDepthStencilStateDesc(This,pDepthStencilState,pDesc) \
+ ( (This)->lpVtbl -> GetDepthStencilStateDesc(This,pDepthStencilState,pDesc) )
+
+#define ID3D10StateMirror_GetRasterizerStateDesc(This,pRasterizerState,pDesc) \
+ ( (This)->lpVtbl -> GetRasterizerStateDesc(This,pRasterizerState,pDesc) )
+
+#define ID3D10StateMirror_GetQueryDesc(This,pQuery,pDesc) \
+ ( (This)->lpVtbl -> GetQueryDesc(This,pQuery,pDesc) )
+
+#define ID3D10StateMirror_GetCounterDesc(This,pCounter,pDesc) \
+ ( (This)->lpVtbl -> GetCounterDesc(This,pCounter,pDesc) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10StateMirror_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D10Multithread_INTERFACE_DEFINED__
+#define __ID3D10Multithread_INTERFACE_DEFINED__
+
+/* interface ID3D10Multithread */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10Multithread;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4E00-342C-4106-A19F-4F2704F689F0")
+ ID3D10Multithread : public IUnknown
+ {
+ public:
+ virtual BOOL STDMETHODCALLTYPE SetMultithreadProtected(
+ /* [in] */ BOOL bMTProtect) = 0;
+
+ virtual BOOL STDMETHODCALLTYPE GetMultithreadProtected( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10MultithreadVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10Multithread * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10Multithread * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10Multithread * This);
+
+ BOOL ( STDMETHODCALLTYPE *SetMultithreadProtected )(
+ ID3D10Multithread * This,
+ /* [in] */ BOOL bMTProtect);
+
+ BOOL ( STDMETHODCALLTYPE *GetMultithreadProtected )(
+ ID3D10Multithread * This);
+
+ END_INTERFACE
+ } ID3D10MultithreadVtbl;
+
+ interface ID3D10Multithread
+ {
+ CONST_VTBL struct ID3D10MultithreadVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10Multithread_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10Multithread_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10Multithread_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10Multithread_SetMultithreadProtected(This,bMTProtect) \
+ ( (This)->lpVtbl -> SetMultithreadProtected(This,bMTProtect) )
+
+#define ID3D10Multithread_GetMultithreadProtected(This) \
+ ( (This)->lpVtbl -> GetMultithreadProtected(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10Multithread_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10_0000_0026 */
+/* [local] */
+
+typedef
+enum D3D10_CREATE_DEVICE_FLAG
+ { D3D10_CREATE_DEVICE_SINGLETHREADED = 0x1,
+ D3D10_CREATE_DEVICE_MIRROR_STATE = 0x2,
+ D3D10_CREATE_DEVICE_DEBUG = 0x4
+ } D3D10_CREATE_DEVICE_FLAG;
+
+
+#define D3D10_SDK_VERSION ( 20 )
+
+#if !defined( D3D10_IGNORE_SDK_LAYERS )
+#include "d3d10sdklayers.h"
+#endif
+#include "d3d10misc.h"
+#include "d3d10shader.h"
+#include "d3d10effect.h"
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0026_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10_0000_0026_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/src/dep/include/DXSDK/include/D3D10effect.h b/src/dep/include/DXSDK/include/D3D10effect.h
new file mode 100644
index 0000000..d7cb088
--- /dev/null
+++ b/src/dep/include/DXSDK/include/D3D10effect.h
@@ -0,0 +1,1318 @@
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//
+// File: D3D10Effect.h
+// Content: D3D10 Stateblock/Effect Types & APIs
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef __D3D10EFFECT_H__
+#define __D3D10EFFECT_H__
+
+#include "d3d10.h"
+
+//////////////////////////////////////////////////////////////////////////////
+// File contents:
+//
+// 1) Stateblock enums, structs, interfaces, flat APIs
+// 2) Effect enums, structs, interfaces, flat APIs
+//////////////////////////////////////////////////////////////////////////////
+
+//----------------------------------------------------------------------------
+// D3D10_DEVICE_STATE_TYPES:
+//
+// Used in ID3D10StateBlockMask function calls
+//
+//----------------------------------------------------------------------------
+
+typedef enum _D3D10_DEVICE_STATE_TYPES
+{
+ D3D10_DST_VS = 1, // Single-value state
+ D3D10_DST_VS_SAMPLERS, // Count: D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
+ D3D10_DST_VS_SHADER_RESOURCES, // Count: D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
+ D3D10_DST_VS_CONSTANT_BUFFERS, // Count: D3D10_COMMONSHADER_CONSTANT_BUFFER_SLOT_COUNT
+
+ D3D10_DST_GS, // Single-value state
+ D3D10_DST_GS_SAMPLERS, // Count: D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
+ D3D10_DST_GS_SHADER_RESOURCES, // Count: D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
+ D3D10_DST_GS_CONSTANT_BUFFERS, // Count: D3D10_COMMONSHADER_CONSTANT_BUFFER_SLOT_COUNT
+
+ D3D10_DST_PS, // Single-value state
+ D3D10_DST_PS_SAMPLERS, // Count: D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
+ D3D10_DST_PS_SHADER_RESOURCES, // Count: D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
+ D3D10_DST_PS_CONSTANT_BUFFERS, // Count: D3D10_COMMONSHADER_CONSTANT_BUFFER_SLOT_COUNT
+
+ D3D10_DST_IA_VERTEX_BUFFERS, // Count: D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT
+ D3D10_DST_IA_INDEX_BUFFER, // Single-value state
+ D3D10_DST_IA_INPUT_LAYOUT, // Single-value state
+ D3D10_DST_IA_PRIMITIVE_TOPOLOGY, // Single-value state
+
+ D3D10_DST_OM_RENDER_TARGETS, // Single-value state (atomical gets/sets)
+ D3D10_DST_OM_DEPTH_STENCIL_STATE, // Single-value state
+ D3D10_DST_OM_BLEND_STATE, // Single-value state
+
+ D3D10_DST_RS_VIEWPORTS, // Single-value state (atomical gets/sets)
+ D3D10_DST_RS_SCISSOR_RECTS, // Single-value state (atomical gets/sets)
+ D3D10_DST_RS_RASTERIZER_STATE, // Single-value state
+
+ D3D10_DST_SO_BUFFERS, // Single-value state (atomical gets/sets)
+
+ D3D10_DST_PREDICATION, // Single-value state
+} D3D10_DEVICE_STATE_TYPES;
+
+//----------------------------------------------------------------------------
+// D3D10_DEVICE_STATE_TYPES:
+//
+// Used in ID3D10StateBlockMask function calls
+//
+//----------------------------------------------------------------------------
+
+#ifndef D3D10_BYTES_FROM_BITS
+#define D3D10_BYTES_FROM_BITS(x) (((x) + 7) / 8)
+#endif // D3D10_BYTES_FROM_BITS
+
+typedef struct _D3D10_STATE_BLOCK_MASK
+{
+ BYTE VS;
+ BYTE VSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)];
+ BYTE VSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
+ BYTE VSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_SLOT_COUNT)];
+
+ BYTE GS;
+ BYTE GSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)];
+ BYTE GSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
+ BYTE GSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_SLOT_COUNT)];
+
+ BYTE PS;
+ BYTE PSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)];
+ BYTE PSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
+ BYTE PSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_SLOT_COUNT)];
+
+ BYTE IAVertexBuffers[D3D10_BYTES_FROM_BITS(D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT)];
+ BYTE IAIndexBuffer;
+ BYTE IAInputLayout;
+ BYTE IAPrimitiveTopology;
+
+ BYTE OMRenderTargets;
+ BYTE OMDepthStencilState;
+ BYTE OMBlendState;
+
+ BYTE RSViewports;
+ BYTE RSScissorRects;
+ BYTE RSRasterizerState;
+
+ BYTE SOBuffers;
+
+ BYTE Predication;
+} D3D10_STATE_BLOCK_MASK;
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10StateBlock //////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3D10StateBlock ID3D10StateBlock;
+typedef interface ID3D10StateBlock *LPD3D10STATEBLOCK;
+
+// {0803425A-57F5-4dd6-9465-A87570834A08}
+DEFINE_GUID(IID_ID3D10StateBlock,
+0x803425a, 0x57f5, 0x4dd6, 0x94, 0x65, 0xa8, 0x75, 0x70, 0x83, 0x4a, 0x8);
+
+#undef INTERFACE
+#define INTERFACE ID3D10StateBlock
+
+DECLARE_INTERFACE_(ID3D10StateBlock, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ STDMETHOD(Capture)(THIS) PURE;
+ STDMETHOD(Apply)(THIS) PURE;
+ STDMETHOD(GetDevice)(THIS_ ID3D10Device **ppDevice) PURE;
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+//----------------------------------------------------------------------------
+// D3D10_STATE_BLOCK_MASK and manipulation functions
+// -------------------------------------------------
+//
+// These functions exist to facilitate working with the D3D10_STATE_BLOCK_MASK
+// structure.
+//
+// D3D10_STATE_BLOCK_MASK *pResult or *pMask
+// The state block mask to operate on
+//
+// D3D10_STATE_BLOCK_MASK *pA, *pB
+// The source state block masks for the binary union/intersect/difference
+// operations.
+//
+// D3D10_DEVICE_STATE_TYPES StateType
+// The specific state type to enable/disable/query
+//
+// UINT RangeStart, RangeLength, Entry
+// The specific bit or range of bits for a given state type to operate on.
+// Consult the comments for D3D10_DEVICE_STATE_TYPES and
+// D3D10_STATE_BLOCK_MASK for information on the valid bit ranges for
+// each state.
+//
+//----------------------------------------------------------------------------
+
+HRESULT D3D10StateBlockMaskUnion(D3D10_STATE_BLOCK_MASK *pA, D3D10_STATE_BLOCK_MASK *pB, D3D10_STATE_BLOCK_MASK *pResult);
+HRESULT D3D10StateBlockMaskIntersect(D3D10_STATE_BLOCK_MASK *pA, D3D10_STATE_BLOCK_MASK *pB, D3D10_STATE_BLOCK_MASK *pResult);
+HRESULT D3D10StateBlockMaskDifference(D3D10_STATE_BLOCK_MASK *pA, D3D10_STATE_BLOCK_MASK *pB, D3D10_STATE_BLOCK_MASK *pResult);
+HRESULT D3D10StateBlockMaskEnableCapture(D3D10_STATE_BLOCK_MASK *pMask, D3D10_DEVICE_STATE_TYPES StateType, UINT RangeStart, UINT RangeLength);
+HRESULT D3D10StateBlockMaskDisableCapture(D3D10_STATE_BLOCK_MASK *pMask, D3D10_DEVICE_STATE_TYPES StateType, UINT RangeStart, UINT RangeLength);
+HRESULT D3D10StateBlockMaskEnableAll(D3D10_STATE_BLOCK_MASK *pMask);
+HRESULT D3D10StateBlockMaskDisableAll(D3D10_STATE_BLOCK_MASK *pMask);
+BOOL D3D10StateBlockMaskGetSetting(D3D10_STATE_BLOCK_MASK *pMask, D3D10_DEVICE_STATE_TYPES StateType, UINT Entry);
+
+//----------------------------------------------------------------------------
+// D3D10CreateStateBlock
+// ---------------------
+//
+// Creates a state block object based on the mask settings specified
+// in a D3D10_STATE_BLOCK_MASK structure.
+//
+// ID3D10Device *pDevice
+// The device interface to associate with this state block
+//
+// D3D10_STATE_BLOCK_MASK *pStateBlockMask
+// A bit mask whose settings are used to generate a state block
+// object.
+//
+// ID3D10StateBlock **ppStateBlock
+// The resulting state block object. This object will save/restore
+// only those pieces of state that were set in the state block
+// bit mask
+//----------------------------------------------------------------------------
+
+HRESULT D3D10CreateStateBlock(ID3D10Device *pDevice, D3D10_STATE_BLOCK_MASK *pStateBlockMask, ID3D10StateBlock **ppStateBlock);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+//----------------------------------------------------------------------------
+// D3D10_COMPILE & D3D10_EFFECT flags:
+// -------------------------------------
+//
+// These flags are passed in when creating an effect, and affect
+// either compilation behavior or runtime effect behavior
+//
+// D3D10_COMPILE_CHILD_EFFECT
+// Compile this .fx file to a child effect. Child effects have no initializers
+// for any shared values as these are initialied in the master effect (pool).
+//
+// D3D10_COMPILE_DISABLE_PERFORMANCE_MODE
+// By default, performance mode is enabled. Performance mode disallows
+// mutable state objects by preventing non-literal expressions from appearing in
+// state object definitions. Specifying this flag will disable the mode and allow
+// for mutable state objects.
+//
+// D3D10_EFFECT_SINGLE_THREADED
+// Do not attempt to synchronize with other threads loading effects into the
+// same pool.
+//
+//----------------------------------------------------------------------------
+
+#define D3D10_COMPILE_CHILD_EFFECT (1 << 0)
+#define D3D10_COMPILE_DISABLE_PERFORMANCE_MODE (1 << 1)
+#define D3D10_EFFECT_SINGLE_THREADED (1 << 3)
+
+
+//----------------------------------------------------------------------------
+// D3D10_EFFECT_VARIABLE flags:
+// ----------------------------
+//
+// These flags describe an effect variable (global or annotation),
+// and are returned in D3D10_EFFECT_VARIABLE_DESC::Flags.
+//
+// D3D10_EFFECT_VARIABLE_POOLED
+// Indicates that the this variable or constant buffer resides
+// in an effect pool. If this flag is not set, then the variable resides
+// in a standalone effect (if ID3D10Effect::GetPool returns NULL)
+// or a child effect (if ID3D10Effect::GetPool returns non-NULL)
+//
+// D3D10_EFFECT_VARIABLE_ANNOTATION
+// Indicates that this is an annotation on a technique, pass, or global
+// variable. Otherwise, this is a global variable. Annotations cannot
+// be shared.
+//----------------------------------------------------------------------------
+
+#define D3D10_EFFECT_VARIABLE_POOLED (1 << 0)
+#define D3D10_EFFECT_VARIABLE_ANNOTATION (1 << 1)
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10EffectType //////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+//----------------------------------------------------------------------------
+// D3D10_EFFECT_TYPE_DESC:
+//
+// Retrieved by ID3D10EffectType::GetDesc()
+//----------------------------------------------------------------------------
+
+typedef struct _D3D10_EFFECT_TYPE_DESC
+{
+ LPCSTR TypeName; // Name of the type
+ // (e.g. "float4" or "MyStruct")
+
+ D3D10_SHADER_VARIABLE_CLASS Class; // (e.g. scalar, vector, object, etc.)
+ D3D10_SHADER_VARIABLE_TYPE Type; // (e.g. float, texture, vertexshader, etc.)
+
+ UINT Elements; // Number of elements in this type
+ // (0 if not an array)
+ UINT Members; // Number of members
+ // (0 if not a structure)
+ UINT Rows; // Number of rows in this type
+ // (0 if not a numeric primitive)
+ UINT Columns; // Number of columns in this type
+ // (0 if not a numeric primitive)
+
+ UINT PackedSize; // Number of bytes required to represent
+ // this data type, when tightly packed
+ UINT UnpackedSize; // Number of bytes occupied by this data
+ // type, when laid out in a constant buffer
+ UINT Stride; // Number of bytes to seek between elements,
+ // when laid out in a constant buffer
+} D3D10_EFFECT_TYPE_DESC;
+
+typedef interface ID3D10EffectType ID3D10EffectType;
+typedef interface ID3D10EffectType *LPD3D10EFFECTTYPE;
+
+// {4E9E1DDC-CD9D-4772-A837-00180B9B88FD}
+DEFINE_GUID(IID_ID3D10EffectType,
+0x4e9e1ddc, 0xcd9d, 0x4772, 0xa8, 0x37, 0x0, 0x18, 0xb, 0x9b, 0x88, 0xfd);
+
+#undef INTERFACE
+#define INTERFACE ID3D10EffectType
+
+DECLARE_INTERFACE(ID3D10EffectType)
+{
+ STDMETHOD_(BOOL, IsValid)(THIS) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_TYPE_DESC *pDesc) PURE;
+ STDMETHOD_(ID3D10EffectType*, GetMemberTypeByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectType*, GetMemberTypeByName)(THIS_ LPCSTR Name) PURE;
+ STDMETHOD_(ID3D10EffectType*, GetMemberTypeBySemantic)(THIS_ LPCSTR Semantic) PURE;
+ STDMETHOD_(LPCSTR, GetMemberName)(THIS_ UINT Index) PURE;
+ STDMETHOD_(LPCSTR, GetMemberSemantic)(THIS_ UINT Index) PURE;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10EffectVariable //////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+//----------------------------------------------------------------------------
+// D3D10_EFFECT_VARIABLE_DESC:
+//
+// Retrieved by ID3D10EffectVariable::GetDesc()
+//----------------------------------------------------------------------------
+
+typedef struct _D3D10_EFFECT_VARIABLE_DESC
+{
+ LPCSTR Name; // Name of this variable, annotation,
+ // or structure member
+ LPCSTR Semantic; // Semantic string of this variable
+ // or structure member (NULL for
+ // annotations or if not present)
+
+ UINT Flags; // D3D10_EFFECT_VARIABLE_* flags
+ UINT Annotations; // Number of annotations on this variable
+ // (always 0 for annotations)
+
+ UINT BufferOffset; // Offset into containing cbuffer or tbuffer
+ // (always 0 for annotations or variables
+ // not in constant buffers)
+} D3D10_EFFECT_VARIABLE_DESC;
+
+typedef interface ID3D10EffectVariable ID3D10EffectVariable;
+typedef interface ID3D10EffectVariable *LPD3D10EFFECTVARIABLE;
+
+// {AE897105-00E6-45bf-BB8E-281DD6DB8E1B}
+DEFINE_GUID(IID_ID3D10EffectVariable,
+0xae897105, 0xe6, 0x45bf, 0xbb, 0x8e, 0x28, 0x1d, 0xd6, 0xdb, 0x8e, 0x1b);
+
+#undef INTERFACE
+#define INTERFACE ID3D10EffectVariable
+
+// Forward defines
+typedef interface ID3D10EffectScalarVariable ID3D10EffectScalarVariable;
+typedef interface ID3D10EffectVectorVariable ID3D10EffectVectorVariable;
+typedef interface ID3D10EffectMatrixVariable ID3D10EffectMatrixVariable;
+typedef interface ID3D10EffectStringVariable ID3D10EffectStringVariable;
+typedef interface ID3D10EffectShaderResourceVariable ID3D10EffectShaderResourceVariable;
+typedef interface ID3D10EffectConstantBuffer ID3D10EffectConstantBuffer;
+typedef interface ID3D10EffectShaderVariable ID3D10EffectShaderVariable;
+typedef interface ID3D10EffectBlendVariable ID3D10EffectBlendVariable;
+typedef interface ID3D10EffectDepthStencilVariable ID3D10EffectDepthStencilVariable;
+typedef interface ID3D10EffectRasterizerVariable ID3D10EffectRasterizerVariable;
+typedef interface ID3D10EffectSamplerVariable ID3D10EffectSamplerVariable;
+
+DECLARE_INTERFACE(ID3D10EffectVariable)
+{
+ STDMETHOD_(BOOL, IsValid)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
+
+ STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
+
+ STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
+
+ STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10EffectScalarVariable ////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3D10EffectScalarVariable ID3D10EffectScalarVariable;
+typedef interface ID3D10EffectScalarVariable *LPD3D10EFFECTSCALARVARIABLE;
+
+// {00E48F7B-D2C8-49e8-A86C-022DEE53431F}
+DEFINE_GUID(IID_ID3D10EffectScalarVariable,
+0xe48f7b, 0xd2c8, 0x49e8, 0xa8, 0x6c, 0x2, 0x2d, 0xee, 0x53, 0x43, 0x1f);
+
+#undef INTERFACE
+#define INTERFACE ID3D10EffectScalarVariable
+
+DECLARE_INTERFACE_(ID3D10EffectScalarVariable, ID3D10EffectVariable)
+{
+ STDMETHOD_(BOOL, IsValid)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
+
+ STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
+
+ STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
+
+ STDMETHOD(SetRawValue)(THIS_ void *pData, UINT ByteOffset, UINT ByteCount) PURE;
+ STDMETHOD(GetRawValue)(THIS_ void *pData, UINT ByteOffset, UINT ByteCount) PURE;
+
+ STDMETHOD(SetFloat)(THIS_ float Value) PURE;
+ STDMETHOD(GetFloat)(THIS_ float *pValue) PURE;
+
+ STDMETHOD(SetFloatArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(GetFloatArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
+
+ STDMETHOD(SetInt)(THIS_ int Value) PURE;
+ STDMETHOD(GetInt)(THIS_ int *pValue) PURE;
+
+ STDMETHOD(SetIntArray)(THIS_ int *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(GetIntArray)(THIS_ int *pData, UINT Offset, UINT Count) PURE;
+
+ STDMETHOD(SetBool)(THIS_ BOOL Value) PURE;
+ STDMETHOD(GetBool)(THIS_ BOOL *pValue) PURE;
+
+ STDMETHOD(SetBoolArray)(THIS_ BOOL *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(GetBoolArray)(THIS_ BOOL *pData, UINT Offset, UINT Count) PURE;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10EffectVectorVariable ////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3D10EffectVectorVariable ID3D10EffectVectorVariable;
+typedef interface ID3D10EffectVectorVariable *LPD3D10EFFECTVECTORVARIABLE;
+
+// {62B98C44-1F82-4c67-BCD0-72CF8F217E81}
+DEFINE_GUID(IID_ID3D10EffectVectorVariable,
+0x62b98c44, 0x1f82, 0x4c67, 0xbc, 0xd0, 0x72, 0xcf, 0x8f, 0x21, 0x7e, 0x81);
+
+#undef INTERFACE
+#define INTERFACE ID3D10EffectVectorVariable
+
+DECLARE_INTERFACE_(ID3D10EffectVectorVariable, ID3D10EffectVariable)
+{
+ STDMETHOD_(BOOL, IsValid)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
+
+ STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
+
+ STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
+
+ STDMETHOD(SetRawValue)(THIS_ void *pData, UINT ByteOffset, UINT ByteCount) PURE;
+ STDMETHOD(GetRawValue)(THIS_ void *pData, UINT ByteOffset, UINT ByteCount) PURE;
+
+ STDMETHOD(SetBoolVector) (THIS_ BOOL *pData) PURE;
+ STDMETHOD(SetIntVector) (THIS_ int *pData) PURE;
+ STDMETHOD(SetFloatVector)(THIS_ float *pData) PURE;
+
+ STDMETHOD(GetBoolVector) (THIS_ BOOL *pData) PURE;
+ STDMETHOD(GetIntVector) (THIS_ int *pData) PURE;
+ STDMETHOD(GetFloatVector)(THIS_ float *pData) PURE;
+
+ STDMETHOD(SetBoolVectorArray) (THIS_ BOOL *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(SetIntVectorArray) (THIS_ int *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(SetFloatVectorArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
+
+ STDMETHOD(GetBoolVectorArray) (THIS_ BOOL *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(GetIntVectorArray) (THIS_ int *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(GetFloatVectorArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10EffectMatrixVariable ////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3D10EffectMatrixVariable ID3D10EffectMatrixVariable;
+typedef interface ID3D10EffectMatrixVariable *LPD3D10EFFECTMATRIXVARIABLE;
+
+// {50666C24-B82F-4eed-A172-5B6E7E8522E0}
+DEFINE_GUID(IID_ID3D10EffectMatrixVariable,
+0x50666c24, 0xb82f, 0x4eed, 0xa1, 0x72, 0x5b, 0x6e, 0x7e, 0x85, 0x22, 0xe0);
+
+#undef INTERFACE
+#define INTERFACE ID3D10EffectMatrixVariable
+
+DECLARE_INTERFACE_(ID3D10EffectMatrixVariable, ID3D10EffectVariable)
+{
+ STDMETHOD_(BOOL, IsValid)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
+
+ STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
+
+ STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
+
+ STDMETHOD(SetRawValue)(THIS_ void *pData, UINT ByteOffset, UINT ByteCount) PURE;
+ STDMETHOD(GetRawValue)(THIS_ void *pData, UINT ByteOffset, UINT ByteCount) PURE;
+
+ STDMETHOD(SetMatrix)(THIS_ float *pData) PURE;
+ STDMETHOD(GetMatrix)(THIS_ float *pData) PURE;
+
+ STDMETHOD(SetMatrixArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(GetMatrixArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
+
+ STDMETHOD(SetMatrixTranspose)(THIS_ float *pData) PURE;
+ STDMETHOD(GetMatrixTranspose)(THIS_ float *pData) PURE;
+
+ STDMETHOD(SetMatrixTransposeArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(GetMatrixTransposeArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10EffectStringVariable ////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3D10EffectStringVariable ID3D10EffectStringVariable;
+typedef interface ID3D10EffectStringVariable *LPD3D10EFFECTSTRINGVARIABLE;
+
+// {71417501-8DF9-4e0a-A78A-255F9756BAFF}
+DEFINE_GUID(IID_ID3D10EffectStringVariable,
+0x71417501, 0x8df9, 0x4e0a, 0xa7, 0x8a, 0x25, 0x5f, 0x97, 0x56, 0xba, 0xff);
+
+#undef INTERFACE
+#define INTERFACE ID3D10EffectStringVariable
+
+DECLARE_INTERFACE_(ID3D10EffectStringVariable, ID3D10EffectVariable)
+{
+ STDMETHOD_(BOOL, IsValid)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
+
+ STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
+
+ STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
+
+ STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+
+ STDMETHOD(GetString)(THIS_ LPCSTR *ppString) PURE;
+ STDMETHOD(GetStringArray)(THIS_ LPCSTR *ppStrings, UINT Offset, UINT Count) PURE;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10EffectShaderResourceVariable ////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3D10EffectShaderResourceVariable ID3D10EffectShaderResourceVariable;
+typedef interface ID3D10EffectShaderResourceVariable *LPD3D10EFFECTSHADERRESOURCEVARIABLE;
+
+// {C0A7157B-D872-4b1d-8073-EFC2ACD4B1FC}
+DEFINE_GUID(IID_ID3D10EffectShaderResourceVariable,
+0xc0a7157b, 0xd872, 0x4b1d, 0x80, 0x73, 0xef, 0xc2, 0xac, 0xd4, 0xb1, 0xfc);
+
+
+#undef INTERFACE
+#define INTERFACE ID3D10EffectShaderResourceVariable
+
+DECLARE_INTERFACE_(ID3D10EffectShaderResourceVariable, ID3D10EffectVariable)
+{
+ STDMETHOD_(BOOL, IsValid)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
+
+ STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
+
+ STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
+
+ STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+
+ STDMETHOD(SetResource)(THIS_ ID3D10ShaderResourceView *pResource) PURE;
+ STDMETHOD(GetResource)(THIS_ ID3D10ShaderResourceView **ppResource) PURE;
+
+ STDMETHOD(SetResourceArray)(THIS_ ID3D10ShaderResourceView **ppResources, UINT Offset, UINT Count) PURE;
+ STDMETHOD(GetResourceArray)(THIS_ ID3D10ShaderResourceView **ppResources, UINT Offset, UINT Count) PURE;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10EffectConstantBuffer ////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3D10EffectConstantBuffer ID3D10EffectConstantBuffer;
+typedef interface ID3D10EffectConstantBuffer *LPD3D10EFFECTCONSTANTBUFFER;
+
+// {56648F4D-CC8B-4444-A5AD-B5A3D76E91B3}
+DEFINE_GUID(IID_ID3D10EffectConstantBuffer,
+0x56648f4d, 0xcc8b, 0x4444, 0xa5, 0xad, 0xb5, 0xa3, 0xd7, 0x6e, 0x91, 0xb3);
+
+#undef INTERFACE
+#define INTERFACE ID3D10EffectConstantBuffer
+
+DECLARE_INTERFACE_(ID3D10EffectConstantBuffer, ID3D10EffectVariable)
+{
+ STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
+
+ STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
+
+ STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
+
+ STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+
+ STDMETHOD(SetConstantBuffer)(THIS_ ID3D10Buffer *pConstantBuffer) PURE;
+ STDMETHOD(GetConstantBuffer)(THIS_ ID3D10Buffer **ppConstantBuffer) PURE;
+
+ STDMETHOD(SetTextureBuffer)(THIS_ ID3D10ShaderResourceView *pTextureBuffer) PURE;
+ STDMETHOD(GetTextureBuffer)(THIS_ ID3D10ShaderResourceView **ppTextureBuffer) PURE;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10EffectShaderVariable ////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+//----------------------------------------------------------------------------
+// D3D10_EFFECT_SHADER_DESC:
+//
+// Retrieved by ID3D10EffectShaderVariable::GetShaderDesc()
+//----------------------------------------------------------------------------
+
+typedef struct _D3D10_EFFECT_SHADER_DESC
+{
+ CONST BYTE *pInputSignature; // Passed into CreateInputLayout,
+ // valid on VS and GS only
+
+ BOOL IsInline; // Is this an anonymous shader variable
+ // resulting from an inline shader assignment?
+
+
+ // -- The following fields are not valid after Optimize() --
+ CONST BYTE *pBytecode; // Shader bytecode
+ UINT BytecodeLength;
+
+ LPCSTR SODecl; // Stream out declaration string (for GS with SO)
+
+ UINT NumInputSignatureEntries; // Number of entries in the input signature
+ UINT NumOutputSignatureEntries; // Number of entries in the output signature
+} D3D10_EFFECT_SHADER_DESC;
+
+
+typedef interface ID3D10EffectShaderVariable ID3D10EffectShaderVariable;
+typedef interface ID3D10EffectShaderVariable *LPD3D10EFFECTSHADERVARIABLE;
+
+// {80849279-C799-4797-8C33-0407A07D9E06}
+DEFINE_GUID(IID_ID3D10EffectShaderVariable,
+0x80849279, 0xc799, 0x4797, 0x8c, 0x33, 0x4, 0x7, 0xa0, 0x7d, 0x9e, 0x6);
+
+#undef INTERFACE
+#define INTERFACE ID3D10EffectShaderVariable
+
+DECLARE_INTERFACE_(ID3D10EffectShaderVariable, ID3D10EffectVariable)
+{
+ STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
+
+ STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
+
+ STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
+
+ STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+
+ STDMETHOD(GetShaderDesc)(THIS_ UINT ShaderIndex, D3D10_EFFECT_SHADER_DESC *pDesc) PURE;
+
+ STDMETHOD(GetVertexShader)(THIS_ UINT ShaderIndex, ID3D10VertexShader **ppVS) PURE;
+ STDMETHOD(GetGeometryShader)(THIS_ UINT ShaderIndex, ID3D10GeometryShader **ppGS) PURE;
+ STDMETHOD(GetPixelShader)(THIS_ UINT ShaderIndex, ID3D10PixelShader **ppPS) PURE;
+
+ STDMETHOD(GetInputSignatureElementDesc)(THIS_ UINT ShaderIndex, UINT Element, D3D10_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
+ STDMETHOD(GetOutputSignatureElementDesc)(THIS_ UINT ShaderIndex, UINT Element, D3D10_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10EffectBlendVariable /////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3D10EffectBlendVariable ID3D10EffectBlendVariable;
+typedef interface ID3D10EffectBlendVariable *LPD3D10EFFECTBLENDVARIABLE;
+
+// {1FCD2294-DF6D-4eae-86B3-0E9160CFB07B}
+DEFINE_GUID(IID_ID3D10EffectBlendVariable,
+0x1fcd2294, 0xdf6d, 0x4eae, 0x86, 0xb3, 0xe, 0x91, 0x60, 0xcf, 0xb0, 0x7b);
+
+#undef INTERFACE
+#define INTERFACE ID3D10EffectBlendVariable
+
+DECLARE_INTERFACE_(ID3D10EffectBlendVariable, ID3D10EffectVariable)
+{
+ STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
+
+ STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
+
+ STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
+
+ STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+
+ STDMETHOD(GetBlendState)(THIS_ UINT Index, ID3D10BlendState **ppBlendState) PURE;
+ STDMETHOD(GetBackingStore)(THIS_ UINT Index, D3D10_BLEND_DESC *pBlendDesc) PURE;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10EffectDepthStencilVariable //////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3D10EffectDepthStencilVariable ID3D10EffectDepthStencilVariable;
+typedef interface ID3D10EffectDepthStencilVariable *LPD3D10EFFECTDEPTHSTENCILVARIABLE;
+
+// {AF482368-330A-46a5-9A5C-01C71AF24C8D}
+DEFINE_GUID(IID_ID3D10EffectDepthStencilVariable,
+0xaf482368, 0x330a, 0x46a5, 0x9a, 0x5c, 0x1, 0xc7, 0x1a, 0xf2, 0x4c, 0x8d);
+
+#undef INTERFACE
+#define INTERFACE ID3D10EffectDepthStencilVariable
+
+DECLARE_INTERFACE_(ID3D10EffectDepthStencilVariable, ID3D10EffectVariable)
+{
+ STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
+
+ STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
+
+ STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
+
+ STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+
+ STDMETHOD(GetDepthStencilState)(THIS_ UINT Index, ID3D10DepthStencilState **ppDepthStencilState) PURE;
+ STDMETHOD(GetBackingStore)(THIS_ UINT Index, D3D10_DEPTH_STENCIL_DESC *pDepthStencilDesc) PURE;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10EffectRasterizerVariable ////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3D10EffectRasterizerVariable ID3D10EffectRasterizerVariable;
+typedef interface ID3D10EffectRasterizerVariable *LPD3D10EFFECTRASTERIZERVARIABLE;
+
+// {21AF9F0E-4D94-4ea9-9785-2CB76B8C0B34}
+DEFINE_GUID(IID_ID3D10EffectRasterizerVariable,
+0x21af9f0e, 0x4d94, 0x4ea9, 0x97, 0x85, 0x2c, 0xb7, 0x6b, 0x8c, 0xb, 0x34);
+
+#undef INTERFACE
+#define INTERFACE ID3D10EffectRasterizerVariable
+
+DECLARE_INTERFACE_(ID3D10EffectRasterizerVariable, ID3D10EffectVariable)
+{
+ STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
+
+ STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
+
+ STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
+
+ STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+
+ STDMETHOD(GetRasterizerState)(THIS_ UINT Index, ID3D10RasterizerState **ppRasterizerState) PURE;
+ STDMETHOD(GetBackingStore)(THIS_ UINT Index, D3D10_RASTERIZER_DESC *pRasterizerDesc) PURE;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10EffectSamplerVariable ///////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3D10EffectSamplerVariable ID3D10EffectSamplerVariable;
+typedef interface ID3D10EffectSamplerVariable *LPD3D10EFFECTSAMPLERVARIABLE;
+
+// {6530D5C7-07E9-4271-A418-E7CE4BD1E480}
+DEFINE_GUID(IID_ID3D10EffectSamplerVariable,
+0x6530d5c7, 0x7e9, 0x4271, 0xa4, 0x18, 0xe7, 0xce, 0x4b, 0xd1, 0xe4, 0x80);
+
+#undef INTERFACE
+#define INTERFACE ID3D10EffectSamplerVariable
+
+DECLARE_INTERFACE_(ID3D10EffectSamplerVariable, ID3D10EffectVariable)
+{
+ STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
+
+ STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
+
+ STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
+ STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
+
+ STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+ STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
+
+ STDMETHOD(GetSampler)(THIS_ UINT Index, ID3D10SamplerState **ppSampler) PURE;
+ STDMETHOD(GetBackingStore)(THIS_ UINT Index, D3D10_SAMPLER_DESC *pSamplerDesc) PURE;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10EffectPass //////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+//----------------------------------------------------------------------------
+// D3D10_PASS_DESC:
+//
+// Retrieved by ID3D10EffectPass::GetDesc()
+//----------------------------------------------------------------------------
+
+typedef struct _D3D10_PASS_DESC
+{
+ LPCSTR Name; // Name of this pass (NULL if not anonymous)
+ UINT Annotations; // Number of annotations on this pass
+
+ BYTE *pIAInputSignature; // Signature from VS or GS (if there is no VS)
+ // or NULL if neither exists
+
+ UINT StencilRef; // Specified in SetDepthStencilState()
+ UINT SampleMask; // Specified in SetBlendState()
+ FLOAT BlendFactor[4]; // Specified in SetBlendState()
+} D3D10_PASS_DESC;
+
+//----------------------------------------------------------------------------
+// D3D10_PASS_SHADER_DESC:
+//
+// Retrieved by ID3D10EffectPass::Get**ShaderDesc()
+//----------------------------------------------------------------------------
+
+typedef struct _D3D10_PASS_SHADER_DESC
+{
+ ID3D10EffectShaderVariable *pShaderVariable; // The variable that this shader came from.
+ // If this is an inline shader assignment,
+ // the returned interface will be an
+ // anonymous shader variable, which is
+ // not retrievable any other way. It's
+ // name in the variable description will
+ // be "$Anonymous".
+ // If there is no assignment of this type in
+ // the pass block, pShaderVariable != NULL,
+ // but pShaderVariable->IsValid() == FALSE.
+
+ UINT ShaderIndex; // The element of pShaderVariable (if an array)
+ // or 0 if not applicable
+} D3D10_PASS_SHADER_DESC;
+
+typedef interface ID3D10EffectPass ID3D10EffectPass;
+typedef interface ID3D10EffectPass *LPD3D10EFFECTPASS;
+
+// {5CFBEB89-1A06-46e0-B282-E3F9BFA36A54}
+DEFINE_GUID(IID_ID3D10EffectPass,
+0x5cfbeb89, 0x1a06, 0x46e0, 0xb2, 0x82, 0xe3, 0xf9, 0xbf, 0xa3, 0x6a, 0x54);
+
+#undef INTERFACE
+#define INTERFACE ID3D10EffectPass
+
+DECLARE_INTERFACE(ID3D10EffectPass)
+{
+ STDMETHOD_(BOOL, IsValid)(THIS) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3D10_PASS_DESC *pDesc) PURE;
+
+ STDMETHOD(GetVertexShaderDesc)(THIS_ D3D10_PASS_SHADER_DESC *pDesc) PURE;
+ STDMETHOD(GetGeometryShaderDesc)(THIS_ D3D10_PASS_SHADER_DESC *pDesc) PURE;
+ STDMETHOD(GetPixelShaderDesc)(THIS_ D3D10_PASS_SHADER_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD(Apply)(THIS_ UINT Flags) PURE;
+
+ STDMETHOD(ComputeStateBlockMask)(THIS_ D3D10_STATE_BLOCK_MASK *pStateBlockMask) PURE;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10EffectTechnique /////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+//----------------------------------------------------------------------------
+// D3D10_TECHNIQUE_DESC:
+//
+// Retrieved by ID3D10EffectTechnique::GetDesc()
+//----------------------------------------------------------------------------
+
+typedef struct _D3D10_TECHNIQUE_DESC
+{
+ LPCSTR Name; // Name of this technique (NULL if not anonymous)
+ UINT Passes; // Number of passes contained within
+ UINT Annotations; // Number of annotations on this technique
+} D3D10_TECHNIQUE_DESC;
+
+typedef interface ID3D10EffectTechnique ID3D10EffectTechnique;
+typedef interface ID3D10EffectTechnique *LPD3D10EFFECTTECHNIQUE;
+
+// {DB122CE8-D1C9-4292-B237-24ED3DE8B175}
+DEFINE_GUID(IID_ID3D10EffectTechnique,
+0xdb122ce8, 0xd1c9, 0x4292, 0xb2, 0x37, 0x24, 0xed, 0x3d, 0xe8, 0xb1, 0x75);
+
+#undef INTERFACE
+#define INTERFACE ID3D10EffectTechnique
+
+DECLARE_INTERFACE(ID3D10EffectTechnique)
+{
+ STDMETHOD_(BOOL, IsValid)(THIS) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3D10_TECHNIQUE_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD_(ID3D10EffectPass*, GetPassByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectPass*, GetPassByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD(ComputeStateBlockMask)(THIS_ D3D10_STATE_BLOCK_MASK *pStateBlockMask) PURE;
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10Effect //////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+//----------------------------------------------------------------------------
+// D3D10_EFFECT_DESC:
+//
+// Retrieved by ID3D10Effect::GetDesc()
+//----------------------------------------------------------------------------
+
+typedef struct _D3D10_EFFECT_DESC
+{
+ //TODO: do we need these?
+ //LPCSTR Creator;
+ //UINT Version;
+
+ BOOL IsChildEffect; // TRUE if this is a child effect,
+ // FALSE if this is standalone or an effect pool.
+
+ UINT ConstantBuffers; // Number of constant buffers in this effect,
+ // excluding the effect pool.
+ UINT SharedConstantBuffers; // Number of constant buffers shared in this
+ // effect's pool.
+
+ UINT GlobalVariables; // Number of global variables in this effect,
+ // excluding the effect pool.
+ UINT SharedGlobalVariables; // Number of global variables shared in this
+ // effect's pool.
+
+ UINT Techniques; // Number of techniques in this effect,
+ // excluding the effect pool.
+} D3D10_EFFECT_DESC;
+
+typedef interface ID3D10Effect ID3D10Effect;
+typedef interface ID3D10Effect *LPD3D10EFFECT;
+
+// {51B0CA8B-EC0B-4519-870D-8EE1CB5017C7}
+DEFINE_GUID(IID_ID3D10Effect,
+0x51b0ca8b, 0xec0b, 0x4519, 0x87, 0xd, 0x8e, 0xe1, 0xcb, 0x50, 0x17, 0xc7);
+
+#undef INTERFACE
+#define INTERFACE ID3D10Effect
+
+DECLARE_INTERFACE_(ID3D10Effect, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ STDMETHOD_(BOOL, IsValid)(THIS) PURE;
+ STDMETHOD_(BOOL, IsPool)(THIS) PURE;
+
+ // Managing D3D Device
+ STDMETHOD(GetDevice)(THIS_ ID3D10Device** ppDevice) PURE;
+
+ // New Reflection APIs
+ STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10EffectConstantBuffer*, GetConstantBufferByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectConstantBuffer*, GetConstantBufferByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD_(ID3D10EffectVariable*, GetVariableByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetVariableByName)(THIS_ LPCSTR Name) PURE;
+ STDMETHOD_(ID3D10EffectVariable*, GetVariableBySemantic)(THIS_ LPCSTR Semantic) PURE;
+
+ STDMETHOD_(ID3D10EffectTechnique*, GetTechniqueByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10EffectTechnique*, GetTechniqueByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD(Optimize)(THIS) PURE;
+ STDMETHOD_(BOOL, IsOptimized)(THIS) PURE;
+
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3D10EffectPool //////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3D10EffectPool ID3D10EffectPool;
+typedef interface ID3D10EffectPool *LPD3D10EFFECTPOOL;
+
+// {9537AB04-3250-412e-8213-FCD2F8677933}
+DEFINE_GUID(IID_ID3D10EffectPool,
+0x9537ab04, 0x3250, 0x412e, 0x82, 0x13, 0xfc, 0xd2, 0xf8, 0x67, 0x79, 0x33);
+
+#undef INTERFACE
+#define INTERFACE ID3D10EffectPool
+
+DECLARE_INTERFACE_(ID3D10EffectPool, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ STDMETHOD_(ID3D10Effect*, AsEffect)(THIS) PURE;
+
+ // No public methods
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// APIs //////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+//----------------------------------------------------------------------------
+// D3D10CreateEffectFromXXXX:
+// --------------------------
+// Creates an effect from a binary effect or file
+//
+// Parameters:
+//
+// [in]
+//
+// TODO: Unicode support
+// TODO: Support for binary (and not just ASCII)
+//
+// pFileName
+// Name of the ASCII (uncompiled) or binary (compiled) Effect file to load
+//
+// hModule
+// Handle to the module containing the resource to compile from
+// pResourceName
+// Name of the resource within hModule to compile from
+//
+// pData
+// Blob of effect data, either ASCII (uncompiled) or binary (compiled)
+// DataLength
+// Length of the data blob
+//
+// pDefines
+// Optional NULL-terminated array of preprocessor macro definitions.
+// pInclude
+// Optional interface pointer to use for handling #include directives.
+// If this parameter is NULL, #includes will be honored when compiling
+// from file, and will error when compiling from resource or memory.
+// HLSLFlags
+// Compilation flags pertaining to shaders and data types, honored by
+// the HLSL compiler
+// FXFlags
+// Compilation flags pertaining to Effect compilation, honored
+// by the Effect compiler
+// pDevice
+// Pointer to the D3D10 device on which to create Effect resources
+// pEffectPool
+// Pointer to an Effect pool to share variables with or NULL
+//
+// [out]
+//
+// ppEffect
+// Address of the newly created Effect interface
+// ppEffectPool
+// Address of the newly created Effect pool interface
+// ppErrors
+// If non-NULL, address of a buffer with error messages that occurred
+// during parsing or compilation
+//
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI D3D10CompileEffectFromMemory(void *pData, SIZE_T DataLength, LPCSTR pSrcFileName, CONST D3D10_SHADER_MACRO *pDefines,
+ ID3D10Include *pInclude, UINT HLSLFlags, UINT FXFlags,
+ ID3D10Blob **ppCompiledEffect, ID3D10Blob **ppErrors);
+
+HRESULT WINAPI D3D10CreateEffectFromMemory(void *pData, SIZE_T DataLength, UINT FXFlags, ID3D10Device *pDevice,
+ ID3D10EffectPool *pEffectPool, ID3D10Effect **ppEffect);
+
+HRESULT WINAPI D3D10CreateEffectPoolFromMemory(void *pData, SIZE_T DataLength, UINT FXFlags, ID3D10Device *pDevice,
+ ID3D10EffectPool **ppEffectPool);
+
+
+//----------------------------------------------------------------------------
+// D3D10DisassembleEffect:
+// -----------------------
+// Takes an effect interface, and returns a buffer containing text assembly.
+//
+// Parameters:
+// pEffect
+// Pointer to the runtime effect interface.
+// EnableColorCode
+// Emit HTML tags for color coding the output?
+// ppDisassembly
+// Returns a buffer containing the disassembled effect.
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI D3D10DisassembleEffect(ID3D10Effect *pEffect, BOOL EnableColorCode, ID3D10Blob **ppDisassembly);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+#endif //__D3D10EFFECT_H__
+
+
diff --git a/src/dep/include/DXSDK/include/D3D10shader.h b/src/dep/include/DXSDK/include/D3D10shader.h
new file mode 100644
index 0000000..a3c8e53
--- /dev/null
+++ b/src/dep/include/DXSDK/include/D3D10shader.h
@@ -0,0 +1,640 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//
+// File: D3D10Shader.h
+// Content: D3D10 Shader Types and APIs
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef __D3D10SHADER_H__
+#define __D3D10SHADER_H__
+
+#include "d3d10.h"
+
+//---------------------------------------------------------------------------
+// D3D10_TX_VERSION:
+// --------------
+// Version token used to create a procedural texture filler in effects
+// Used by D3D10Fill[]TX functions
+//---------------------------------------------------------------------------
+#define D3D10_TX_VERSION(_Major,_Minor) (('T' << 24) | ('X' << 16) | ((_Major) << 8) | (_Minor))
+
+
+//----------------------------------------------------------------------------
+// D3D10SHADER flags:
+// -----------------
+// D3D10_SHADER_DEBUG
+// Insert debug file/line/type/symbol information.
+//
+// D3D10_SHADER_SKIP_VALIDATION
+// Do not validate the generated code against known capabilities and
+// constraints. This option is only recommended when compiling shaders
+// you KNOW will work. (ie. have compiled before without this option.)
+// Shaders are always validated by D3D before they are set to the device.
+//
+// D3D10_SHADER_SKIP_OPTIMIZATION
+// Instructs the compiler to skip optimization steps during code generation.
+// Unless you are trying to isolate a problem in your code using this option
+// is not recommended.
+//
+// D3D10_SHADER_PACK_MATRIX_ROW_MAJOR
+// Unless explicitly specified, matrices will be packed in row-major order
+// on input and output from the shader.
+//
+// D3D10_SHADER_PACK_MATRIX_COLUMN_MAJOR
+// Unless explicitly specified, matrices will be packed in column-major
+// order on input and output from the shader. This is generally more
+// efficient, since it allows vector-matrix multiplication to be performed
+// using a series of dot-products.
+//
+// D3D10_SHADER_PARTIAL_PRECISION
+// Force all computations in resulting shader to occur at partial precision.
+// This may result in faster evaluation of shaders on some hardware.
+//
+// D3D10_SHADER_FORCE_VS_SOFTWARE_NO_OPT
+// Force compiler to compile against the next highest available software
+// target for vertex shaders. This flag also turns optimizations off,
+// and debugging on.
+//
+// D3D10_SHADER_FORCE_PS_SOFTWARE_NO_OPT
+// Force compiler to compile against the next highest available software
+// target for pixel shaders. This flag also turns optimizations off,
+// and debugging on.
+//
+// D3D10_SHADER_NO_PRESHADER
+// Disables Preshaders. Using this flag will cause the compiler to not
+// pull out static expression for evaluation on the host cpu
+//
+// D3D10_SHADER_AVOID_FLOW_CONTROL
+// Hint compiler to avoid flow-control constructs where possible.
+//
+// D3D10_SHADER_PREFER_FLOW_CONTROL
+// Hint compiler to prefer flow-control constructs where possible.
+//
+// D3D10_SHADER_ENABLE_STRICTNESS
+// By default, the HLSL/Effect compilers are not strict on deprecated syntax.
+// Specifying this flag enables the strict mode. Deprecated syntax may be
+// removed in a future release, and enabling syntax is a good way to make sure
+// your shaders comply to the latest spec.
+//
+// D3D10_SHADER_ENABLE_BACKWARDS_COMPATIBILITY
+// This enables older shaders to compile to 4_0 targets.
+//
+//----------------------------------------------------------------------------
+
+#define D3D10_SHADER_DEBUG (1 << 0)
+#define D3D10_SHADER_SKIP_VALIDATION (1 << 1)
+#define D3D10_SHADER_SKIP_OPTIMIZATION (1 << 2)
+#define D3D10_SHADER_PACK_MATRIX_ROW_MAJOR (1 << 3)
+#define D3D10_SHADER_PACK_MATRIX_COLUMN_MAJOR (1 << 4)
+#define D3D10_SHADER_PARTIAL_PRECISION (1 << 5)
+#define D3D10_SHADER_FORCE_VS_SOFTWARE_NO_OPT (1 << 6)
+#define D3D10_SHADER_FORCE_PS_SOFTWARE_NO_OPT (1 << 7)
+#define D3D10_SHADER_NO_PRESHADER (1 << 8)
+#define D3D10_SHADER_AVOID_FLOW_CONTROL (1 << 9)
+#define D3D10_SHADER_PREFER_FLOW_CONTROL (1 << 10)
+#define D3D10_SHADER_ENABLE_STRICTNESS (1 << 11)
+#define D3D10_SHADER_ENABLE_BACKWARDS_COMPATIBILITY (1 << 12)
+
+
+
+//----------------------------------------------------------------------------
+// D3D10_SHADER_MACRO:
+// ----------
+// Preprocessor macro definition. The application pass in a NULL-terminated
+// array of this structure to various D3D10 APIs. This enables the application
+// to #define tokens at runtime, before the file is parsed.
+//----------------------------------------------------------------------------
+
+typedef struct _D3D10_SHADER_MACRO
+{
+ LPCSTR Name;
+ LPCSTR Definition;
+
+} D3D10_SHADER_MACRO, *LPD3D10_SHADER_MACRO;
+
+
+//----------------------------------------------------------------------------
+// D3D10_SHADER_VARIABLE_CLASS:
+//----------------------------------------------------------------------------
+
+typedef enum _D3D10_SHADER_VARIABLE_CLASS
+{
+ D3D10_SVC_SCALAR,
+ D3D10_SVC_VECTOR,
+ D3D10_SVC_MATRIX_ROWS,
+ D3D10_SVC_MATRIX_COLUMNS,
+ D3D10_SVC_OBJECT,
+ D3D10_SVC_STRUCT,
+
+ // force 32-bit size enum
+ D3D10_SVC_FORCE_DWORD = 0x7fffffff
+
+} D3D10_SHADER_VARIABLE_CLASS, *LPD3D10_SHADER_VARIABLE_CLASS;
+
+//----------------------------------------------------------------------------
+// D3D10_SHADER_VARIABLE_TYPE:
+//----------------------------------------------------------------------------
+
+typedef enum _D3D10_SHADER_VARIABLE_TYPE
+{
+ D3D10_SVT_VOID = 0,
+ D3D10_SVT_BOOL = 1,
+ D3D10_SVT_INT = 2,
+ D3D10_SVT_FLOAT = 3,
+ D3D10_SVT_STRING = 4,
+ D3D10_SVT_TEXTURE = 5,
+ D3D10_SVT_TEXTURE1D = 6,
+ D3D10_SVT_TEXTURE2D = 7,
+ D3D10_SVT_TEXTURE3D = 8,
+ D3D10_SVT_TEXTURECUBE = 9,
+ D3D10_SVT_SAMPLER = 10,
+ D3D10_SVT_PIXELSHADER = 15,
+ D3D10_SVT_VERTEXSHADER = 16,
+ D3D10_SVT_UINT = 19,
+ D3D10_SVT_UINT8 = 20,
+ D3D10_SVT_GEOMETRYSHADER = 21,
+ D3D10_SVT_RASTERIZER = 22,
+ D3D10_SVT_DEPTHSTENCIL = 23,
+ D3D10_SVT_BLEND = 24,
+ D3D10_SVT_BUFFER = 25,
+ D3D10_SVT_CBUFFER = 26,
+ D3D10_SVT_TBUFFER = 27,
+ D3D10_SVT_TEXTURE1DARRAY = 28,
+ D3D10_SVT_TEXTURE2DARRAY = 29,
+
+ // force 32-bit size enum
+ D3D10_SVT_FORCE_DWORD = 0x7fffffff
+
+} D3D10_SHADER_VARIABLE_TYPE, *LPD3D10_SHADER_VARIABLE_TYPE;
+
+//----------------------------------------------------------------------------
+// D3D10_SHADER_INPUT_TYPE
+//----------------------------------------------------------------------------
+
+typedef enum _D3D10_SHADER_INPUT_TYPE
+{
+ D3D10_SIT_CBUFFER,
+ D3D10_SIT_TBUFFER,
+ D3D10_SIT_TEXTURE,
+ D3D10_SIT_SAMPLER,
+} D3D10_SHADER_INPUT_TYPE, *LPD3D10_SHADER_INPUT_TYPE;
+
+typedef enum _D3D10_CBUFFER_TYPE
+{
+ D3D10_CT_CBUFFER,
+ D3D10_CT_TBUFFER,
+} D3D10_CBUFFER_TYPE, *LPD3D10_CBUFFER_TYPE;
+
+typedef enum D3D10_NAME
+{
+ D3D10_NAME_UNDEFINED = 0,
+ D3D10_NAME_POSITION = 1,
+ D3D10_NAME_CLIP_DISTANCE = 2,
+ D3D10_NAME_CULL_DISTANCE = 3,
+ D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
+ D3D10_NAME_VIEWPORT_ARRAY_INDEX = 5,
+ D3D10_NAME_VERTEX_ID = 6,
+ D3D10_NAME_PRIMITIVE_ID = 7,
+ D3D10_NAME_INSTANCE_ID = 8,
+ D3D10_NAME_IS_FRONT_FACE = 9
+} D3D10_NAME;
+
+typedef enum D3D10_RESOURCE_DIMENSION
+{
+ D3D10_RESOURCE_DIMENSION_UNKNOWN = 0,
+ D3D10_RESOURCE_DIMENSION_BUFFER = 1,
+ D3D10_RESOURCE_DIMENSION_TEXTURE1D = 2,
+ D3D10_RESOURCE_DIMENSION_TEXTURE2D = 3,
+ D3D10_RESOURCE_DIMENSION_TEXTURE3D = 4,
+ D3D10_RESOURCE_DIMENSION_TEXTURECUBE = 5,
+ D3D10_RESOURCE_DIMENSION_TEXTURE1DARRAY = 6,
+ D3D10_RESOURCE_DIMENSION_TEXTURE2DARRAY = 7,
+} D3D10_RESOURCE_DIMENSION;
+
+typedef enum D3D10_RESOURCE_RETURN_TYPE
+{
+ D3D10_RETURN_TYPE_UNORM = 1,
+ D3D10_RETURN_TYPE_SNORM = 2,
+ D3D10_RETURN_TYPE_SINT = 3,
+ D3D10_RETURN_TYPE_UINT = 4,
+ D3D10_RETURN_TYPE_FLOAT = 5,
+ D3D10_RETURN_TYPE_MIXED = 6,
+} D3D10_RESOURCE_RETURN_TYPE;
+
+typedef enum D3D10_REGISTER_COMPONENT_TYPE
+{
+ D3D10_REGISTER_COMPONENT_UNKNOWN = 0,
+ D3D10_REGISTER_COMPONENT_UINT32 = 1,
+ D3D10_REGISTER_COMPONENT_SINT32 = 2,
+ D3D10_REGISTER_COMPONENT_FLOAT32 = 3
+} D3D10_REGISTER_COMPONENT_TYPE;
+
+
+//----------------------------------------------------------------------------
+// D3D10_INCLUDE_TYPE:
+//----------------------------------------------------------------------------
+
+typedef enum _D3D10_INCLUDE_TYPE
+{
+ D3D10_INCLUDE_LOCAL,
+ D3D10_INCLUDE_SYSTEM,
+
+ // force 32-bit size enum
+ D3D10_INCLUDE_FORCE_DWORD = 0x7fffffff
+
+} D3D10_INCLUDE_TYPE, *LPD3D10_INCLUDE_TYPE;
+
+
+//----------------------------------------------------------------------------
+// ID3D10Include:
+// -------------
+// This interface is intended to be implemented by the application, and can
+// be used by various D3D10 APIs. This enables application-specific handling
+// of #include directives in source files.
+//
+// Open()
+// Opens an include file. If successful, it should fill in ppData and
+// pBytes. The data pointer returned must remain valid until Close is
+// subsequently called.
+// Close()
+// Closes an include file. If Open was successful, Close is guaranteed
+// to be called before the API using this interface returns.
+//----------------------------------------------------------------------------
+
+typedef interface ID3D10Include ID3D10Include;
+typedef interface ID3D10Include *LPD3D10INCLUDE;
+
+#undef INTERFACE
+#define INTERFACE ID3D10Include
+
+DECLARE_INTERFACE(ID3D10Include)
+{
+ STDMETHOD(Open)(THIS_ D3D10_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;
+ STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;
+};
+
+
+//----------------------------------------------------------------------------
+// ID3D10ShaderReflection:
+//----------------------------------------------------------------------------
+
+//
+// Structure definitions
+//
+
+typedef struct _D3D10_SHADER_DESC
+{
+ UINT Version; // Shader version
+ LPCSTR Creator; // Creator string
+ UINT Flags; // Shader compilation/parse flags
+
+ UINT ConstantBuffers; // Number of constant buffers
+ UINT BoundResources; // Number of bound resources
+ UINT InputParameters; // Number of parameters in the input signature
+ UINT OutputParameters; // Number of parameters in the output signature
+} D3D10_SHADER_DESC;
+
+typedef struct _D3D10_SHADER_BUFFER_DESC
+{
+ LPCSTR Name; // Name of the constant buffer
+ D3D10_CBUFFER_TYPE Type; // Indicates that this is a CBuffer or TBuffer
+ UINT Variables; // Number of member variables
+ UINT Size; // Size of CB (in bytes)
+} D3D10_SHADER_BUFFER_DESC;
+
+typedef struct _D3D10_SHADER_VARIABLE_DESC
+{
+ LPCSTR Name; // Name of the variable
+ UINT StartOffset; // Offset in constant buffer's backing store
+ UINT Size; // Size of variable (in bytes)
+ LPVOID DefaultValue; // Raw pointer to default value
+} D3D10_SHADER_VARIABLE_DESC;
+
+typedef struct _D3D10_SHADER_TYPE_DESC
+{
+ D3D10_SHADER_VARIABLE_CLASS Class; // Variable class (e.g. object, matrix, etc.)
+ D3D10_SHADER_VARIABLE_TYPE Type; // Variable type (e.g. float, sampler, etc.)
+ UINT Rows; // Number of rows (for matrices, 1 for other numeric, 0 if not applicable)
+ UINT Columns; // Number of columns (for vectors & matrices, 1 for other numeric, 0 if not applicable)
+ UINT Elements; // Number of elements (0 if not an array)
+ UINT Members; // Number of members (0 if not a structure)
+} D3D10_SHADER_TYPE_DESC;
+
+typedef struct _D3D10_SHADER_INPUT_BIND_DESC
+{
+ LPCSTR Name; // Name of the resource
+ D3D10_SHADER_INPUT_TYPE Type; // Type of resource (e.g. texture, cbuffer, etc.)
+ UINT BindPoint; // Starting bind point
+ UINT BindCount; // Number of contiguous bind points (for arrays)
+
+ D3D10_RESOURCE_RETURN_TYPE ReturnType; // Return type (if texture)
+ D3D10_RESOURCE_DIMENSION Dimension; // Dimension (if texture)
+} D3D10_SHADER_INPUT_BIND_DESC;
+
+typedef struct _D3D10_SIGNATURE_PARAMETER_DESC
+{
+ LPCSTR SemanticName; // Name of the semantic
+ UINT SemanticIndex; // Index of the semantic
+ UINT Register; // Number of member variables
+ D3D10_NAME SystemValueType;// A predefined system value, or D3D10_NAME_UNDEFINED if not applicable
+ D3D10_REGISTER_COMPONENT_TYPE ComponentType;// Scalar type (e.g. uint, float, etc.)
+ BYTE Mask; // Mask to indicate which components of the register
+ // are used (combination of D3D10_COMPONENT_MASK values)
+ BYTE ReadWriteMask; // Mask to indicate whether a given component is
+ // never written (if this is an output signature) or
+ // always read (if this is an input signature).
+ // (combination of D3D10_COMPONENT_MASK values)
+
+} D3D10_SIGNATURE_PARAMETER_DESC;
+
+//
+// Interface definitions
+//
+
+typedef interface ID3D10ShaderReflectionType ID3D10ShaderReflectionType;
+typedef interface ID3D10ShaderReflectionType *LPD3D10SHADERREFLECTIONTYPE;
+
+// {C530AD7D-9B16-4395-A979-BA2ECFF83ADD}
+DEFINE_GUID(IID_ID3D10ShaderReflectionType,
+0xc530ad7d, 0x9b16, 0x4395, 0xa9, 0x79, 0xba, 0x2e, 0xcf, 0xf8, 0x3a, 0xdd);
+
+#undef INTERFACE
+#define INTERFACE ID3D10ShaderReflectionType
+
+DECLARE_INTERFACE(ID3D10ShaderReflectionType)
+{
+ STDMETHOD(GetDesc)(THIS_ D3D10_SHADER_TYPE_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10ShaderReflectionType*, GetMemberTypeByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10ShaderReflectionType*, GetMemberTypeByName)(THIS_ LPCSTR Name) PURE;
+ STDMETHOD_(LPCSTR, GetMemberTypeName)(THIS_ UINT Index) PURE;
+};
+
+typedef interface ID3D10ShaderReflectionVariable ID3D10ShaderReflectionVariable;
+typedef interface ID3D10ShaderReflectionVariable *LPD3D10SHADERREFLECTIONVARIABLE;
+
+// {1BF63C95-2650-405d-99C1-3636BD1DA0A1}
+DEFINE_GUID(IID_ID3D10ShaderReflectionVariable,
+0x1bf63c95, 0x2650, 0x405d, 0x99, 0xc1, 0x36, 0x36, 0xbd, 0x1d, 0xa0, 0xa1);
+
+#undef INTERFACE
+#define INTERFACE ID3D10ShaderReflectionVariable
+
+DECLARE_INTERFACE(ID3D10ShaderReflectionVariable)
+{
+ STDMETHOD(GetDesc)(THIS_ D3D10_SHADER_VARIABLE_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10ShaderReflectionType*, GetType)(THIS) PURE;
+};
+
+typedef interface ID3D10ShaderReflectionConstantBuffer ID3D10ShaderReflectionConstantBuffer;
+typedef interface ID3D10ShaderReflectionConstantBuffer *LPD3D10SHADERREFLECTIONCONSTANTBUFFER;
+
+// {66C66A94-DDDD-4b62-A66A-F0DA33C2B4D0}
+DEFINE_GUID(IID_ID3D10ShaderReflectionConstantBuffer,
+0x66c66a94, 0xdddd, 0x4b62, 0xa6, 0x6a, 0xf0, 0xda, 0x33, 0xc2, 0xb4, 0xd0);
+
+#undef INTERFACE
+#define INTERFACE ID3D10ShaderReflectionConstantBuffer
+
+DECLARE_INTERFACE(ID3D10ShaderReflectionConstantBuffer)
+{
+ STDMETHOD(GetDesc)(THIS_ D3D10_SHADER_BUFFER_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10ShaderReflectionVariable*, GetVariableByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10ShaderReflectionVariable*, GetVariableByName)(THIS_ LPCSTR Name) PURE;
+};
+
+typedef interface ID3D10ShaderReflection ID3D10ShaderReflection;
+typedef interface ID3D10ShaderReflection *LPD3D10SHADERREFLECTION;
+
+// {D40E20B6-F8F7-42ad-AB20-4BAF8F15DFAA}
+DEFINE_GUID(IID_ID3D10ShaderReflection,
+0xd40e20b6, 0xf8f7, 0x42ad, 0xab, 0x20, 0x4b, 0xaf, 0x8f, 0x15, 0xdf, 0xaa);
+
+#undef INTERFACE
+#define INTERFACE ID3D10ShaderReflection
+
+DECLARE_INTERFACE_(ID3D10ShaderReflection, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ STDMETHOD(GetDesc)(THIS_ D3D10_SHADER_DESC *pDesc) PURE;
+
+ STDMETHOD_(ID3D10ShaderReflectionConstantBuffer*, GetConstantBufferByIndex)(THIS_ UINT Index) PURE;
+ STDMETHOD_(ID3D10ShaderReflectionConstantBuffer*, GetConstantBufferByName)(THIS_ LPCSTR Name) PURE;
+
+ STDMETHOD(GetResourceBindingDesc)(THIS_ UINT ResourceIndex, D3D10_SHADER_INPUT_BIND_DESC *pDesc) PURE;
+
+ STDMETHOD(GetInputParameterDesc)(THIS_ UINT ParameterIndex, D3D10_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
+ STDMETHOD(GetOutputParameterDesc)(THIS_ UINT ParameterIndex, D3D10_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
+
+};
+
+//////////////////////////////////////////////////////////////////////////////
+// APIs //////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+
+//----------------------------------------------------------------------------
+// D3D10CompileShader:
+// ------------------
+// Compiles a shader.
+//
+// Parameters:
+// pSrcFile
+// Source file name.
+// hSrcModule
+// Module handle. if NULL, current module will be used.
+// pSrcResource
+// Resource name in module.
+// pSrcData
+// Pointer to source code.
+// SrcDataLen
+// Size of source code, in bytes.
+// pDefines
+// Optional NULL-terminated array of preprocessor macro definitions.
+// pInclude
+// Optional interface pointer to use for handling #include directives.
+// If this parameter is NULL, #includes will be honored when compiling
+// from file, and will error when compiling from resource or memory.
+// pFunctionName
+// Name of the entrypoint function where execution should begin.
+// pProfile
+// Instruction set to be used when generating code. The D3D10 entry
+// point currently supports only "vs_4_0", "ps_4_0", and "gs_4_0".
+// Flags
+// See D3D10_SHADER_xxx flags.
+// ppShader
+// Returns a buffer containing the created shader. This buffer contains
+// the compiled shader code, as well as any embedded debug and symbol
+// table info. (See D3D10GetShaderConstantTable)
+// ppErrorMsgs
+// Returns a buffer containing a listing of errors and warnings that were
+// encountered during the compile. If you are running in a debugger,
+// these are the same messages you will see in your debug output.
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI D3D10CompileShader(LPCSTR pSrcData, SIZE_T SrcDataLen, LPCSTR pFileName, CONST D3D10_SHADER_MACRO* pDefines, LPD3D10INCLUDE pInclude,
+ LPCSTR pFunctionName, LPCSTR pProfile, UINT Flags, ID3D10Blob** ppShader, ID3D10Blob** ppErrorMsgs);
+
+//----------------------------------------------------------------------------
+// D3D10DisassembleShader:
+// ----------------------
+// Takes a binary shader, and returns a buffer containing text assembly.
+//
+// Parameters:
+// pShader
+// Pointer to the shader byte code.
+// ShaderSizeInBytes
+// Size of the shader byte code in bytes.
+// EnableColorCode
+// Emit HTML tags for color coding the output?
+// pComments
+// Pointer to a comment string to include at the top of the shader.
+// ppDisassembly
+// Returns a buffer containing the disassembled shader.
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI D3D10DisassembleShader(CONST UINT *pShader, BOOL EnableColorCode, LPCSTR pComments, ID3D10Blob** ppDisassembly);
+
+//----------------------------------------------------------------------------
+// D3D10GetShaderSize:
+// ------------------
+// Returns the size of the shader blob container, in bytes.
+//
+// Parameters:
+// pFunction
+// Pointer to the function UINT stream
+//----------------------------------------------------------------------------
+
+UINT WINAPI D3D10GetShaderSize(CONST UINT *pFunction);
+
+//----------------------------------------------------------------------------
+// D3D10GetShaderVersion:
+// -----------------------
+// Returns the shader version of a given shader. Returns zero if the shader
+// function is NULL.
+//
+// Parameters:
+// pFunction
+// Pointer to the function UINT stream
+//----------------------------------------------------------------------------
+
+UINT WINAPI D3D10GetShaderVersion(CONST UINT *pFunction);
+
+
+//----------------------------------------------------------------------------
+// D3D10GetPixelShaderProfile/D3D10GetVertexShaderProfile/D3D10GetGeometryShaderProfile:
+// -----------------------------------------------------
+// Returns the name of the HLSL profile best suited to a given device.
+//
+// Parameters:
+// pDevice
+// Pointer to the device in question
+//----------------------------------------------------------------------------
+
+LPCSTR WINAPI D3D10GetPixelShaderProfile(ID3D10Device *pDevice);
+
+LPCSTR WINAPI D3D10GetVertexShaderProfile(ID3D10Device *pDevice);
+
+LPCSTR WINAPI D3D10GetGeometryShaderProfile(ID3D10Device *pDevice);
+
+//----------------------------------------------------------------------------
+// D3D10ReflectShader:
+// ------------------
+// Creates a shader reflection object that can be used to retrieve information
+// about a compiled shader
+//
+// Parameters:
+// pShaderBytecode
+// Pointer to a compiled shader (same pointer that is passed into
+// ID3D10Device::CreateShader)
+// BytecodeLength
+// Length of the shader bytecode buffer
+// ppReflector
+// [out] Returns a ID3D10ShaderReflection object that can be used to
+// retrieve shader resource and constant buffer information
+//
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI D3D10ReflectShader(void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10ShaderReflection **ppReflector);
+
+//----------------------------------------------------------------------------
+// D3D10PreprocessShader
+// ---------------------
+// Creates a shader reflection object that can be used to retrieve information
+// about a compiled shader
+//
+// Parameters:
+// pSrcData
+// Pointer to source code
+// SrcDataLen
+// Size of source code, in bytes
+// pFileName
+// Source file name (used for error output)
+// pDefines
+// Optional NULL-terminated array of preprocessor macro definitions.
+// pInclude
+// Optional interface pointer to use for handling #include directives.
+// If this parameter is NULL, #includes will be honored when assembling
+// from file, and will error when assembling from resource or memory.
+// ppShaderText
+// Returns a buffer containing a single large string that represents
+// the resulting formatted token stream
+// ppErrorMsgs
+// Returns a buffer containing a listing of errors and warnings that were
+// encountered during assembly. If you are running in a debugger,
+// these are the same messages you will see in your debug output.
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI D3D10PreprocessShader(LPCSTR pSrcData, SIZE_T SrcDataSize, LPCSTR pFileName, CONST D3D10_SHADER_MACRO* pDefines,
+ LPD3D10INCLUDE pInclude, ID3D10Blob** ppShaderText, ID3D10Blob** ppErrorMsgs);
+
+//////////////////////////////////////////////////////////////////////////
+//
+// Shader blob manipulation routines
+// ---------------------------------
+//
+// void *pShaderBytecode - a buffer containing the result of an HLSL
+// compilation. Typically this opaque buffer contains several
+// discrete sections including the shader executable code, the input
+// signature, and the output signature. This can typically be retrieved
+// by calling ID3D10Blob::GetBufferPointer() on the returned blob
+// from HLSL's compile APIs.
+//
+// UINT BytecodeLength - the length of pShaderBytecode. This can
+// typically be retrieved by calling ID3D10Blob::GetBufferSize()
+// on the returned blob from HLSL's compile APIs.
+//
+// ID3D10Blob **ppSignatureBlob(s) - a newly created buffer that
+// contains only the signature portions of the original bytecode.
+// This is a copy; the original bytecode is not modified. You may
+// specify NULL for this parameter to have the bytecode validated
+// for the presence of the corresponding signatures without actually
+// copying them and creating a new blob.
+//
+// Returns E_INVALIDARG if any required parameters are NULL
+// Returns E_FAIL is the bytecode is corrupt or missing signatures
+// Returns S_OK on success
+//
+//////////////////////////////////////////////////////////////////////////
+
+HRESULT D3D10GetInputSignatureBlob(void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10Blob **ppSignatureBlob);
+HRESULT D3D10GetOutputSignatureBlob(void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10Blob **ppSignatureBlob);
+HRESULT D3D10GetInputAndOutputSignatureBlob(void *pShaderBytecode, SIZE_T BytecodeLength, ID3D10Blob **ppSignatureBlob);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+#endif //__D3D10SHADER_H__
+
diff --git a/src/dep/include/DXSDK/include/D3DX10.h b/src/dep/include/DXSDK/include/D3DX10.h
new file mode 100644
index 0000000..fa26b3f
--- /dev/null
+++ b/src/dep/include/DXSDK/include/D3DX10.h
@@ -0,0 +1,72 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dx10.h
+// Content: D3DX10 utility library
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#ifdef __D3DX10_INTERNAL__
+#error Incorrect D3DX10 header used
+#endif
+
+#ifndef __D3DX10_H__
+#define __D3DX10_H__
+
+
+// Defines
+#include
+#include
+
+#define D3DX10_DEFAULT ((UINT) -1)
+#define D3DX10_FROM_FILE ((UINT) -3)
+#define DXGI_FORMAT_FROM_FILE ((DXGI_FORMAT) -3)
+
+#ifndef D3DX10INLINE
+#ifdef _MSC_VER
+ #if (_MSC_VER >= 1200)
+ #define D3DX10INLINE __forceinline
+ #else
+ #define D3DX10INLINE __inline
+ #endif
+#else
+ #ifdef __cplusplus
+ #define D3DX10INLINE inline
+ #else
+ #define D3DX10INLINE
+ #endif
+#endif
+#endif
+
+
+
+// Includes
+#include "d3d10.h"
+#include "d3dx10.h"
+#include "d3dx10math.h"
+#include "d3dx10core.h"
+#include "d3dx10tex.h"
+#include "d3dx10mesh.h"
+#include "d3dx10async.h"
+
+
+// Errors
+#define _FACDD 0x876
+#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
+
+enum _D3DX10_ERR {
+ D3DX10_ERR_CANNOT_MODIFY_INDEX_BUFFER = MAKE_DDHRESULT(2900),
+ D3DX10_ERR_INVALID_MESH = MAKE_DDHRESULT(2901),
+ D3DX10_ERR_CANNOT_ATTR_SORT = MAKE_DDHRESULT(2902),
+ D3DX10_ERR_SKINNING_NOT_SUPPORTED = MAKE_DDHRESULT(2903),
+ D3DX10_ERR_TOO_MANY_INFLUENCES = MAKE_DDHRESULT(2904),
+ D3DX10_ERR_INVALID_DATA = MAKE_DDHRESULT(2905),
+ D3DX10_ERR_LOADED_MESH_HAS_NO_DATA = MAKE_DDHRESULT(2906),
+ D3DX10_ERR_DUPLICATE_NAMED_FRAGMENT = MAKE_DDHRESULT(2907),
+ D3DX10_ERR_CANNOT_REMOVE_LAST_ITEM = MAKE_DDHRESULT(2908),
+};
+
+
+#endif //__D3DX10_H__
+
diff --git a/src/dep/include/DXSDK/include/D3DX10core.h b/src/dep/include/DXSDK/include/D3DX10core.h
new file mode 100644
index 0000000..a288a30
--- /dev/null
+++ b/src/dep/include/DXSDK/include/D3DX10core.h
@@ -0,0 +1,418 @@
+///////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dx10core.h
+// Content: D3DX10 core types and functions
+//
+///////////////////////////////////////////////////////////////////////////
+
+#include "d3dx10.h"
+
+#ifndef __D3DX10CORE_H__
+#define __D3DX10CORE_H__
+
+// Current name of the DLL shipped in the same SDK as this header.
+#define D3DX10_DLL_W L"d3dx10.dll"
+#define D3DX10_DLL_A "d3dx10.dll"
+
+#ifdef UNICODE
+ #define D3DX10_DLL D3DX10_DLL_W
+#else
+ #define D3DX10_DLL D3DX10_DLL_A
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+///////////////////////////////////////////////////////////////////////////
+// D3DX10_SDK_VERSION:
+// -----------------
+// This identifier is passed to D3DX10CheckVersion in order to ensure that an
+// application was built against the correct header files and lib files.
+// This number is incremented whenever a header (or other) change would
+// require applications to be rebuilt. If the version doesn't match,
+// D3DX10CreateVersion will return FALSE. (The number itself has no meaning.)
+///////////////////////////////////////////////////////////////////////////
+
+#define D3DX10_VERSION 0x1002
+#define D3DX10_SDK_VERSION 1000
+
+HRESULT WINAPI D3DX10CheckVersion(UINT D3DSdkVersion, UINT D3DX10SdkVersion);
+UINT WINAPI D3DX10GetDriverLevel(ID3D10Device *pDevice);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+
+//////////////////////////////////////////////////////////////////////////////
+// D3DX10_SPRITE flags:
+// -----------------
+// D3DX10_SPRITE_SAVE_STATE
+// Specifies device state should be saved and restored in Begin/End.
+// D3DX10SPRITE_SORT_TEXTURE
+// Sprites are sorted by texture prior to drawing. This is recommended when
+// drawing non-overlapping sprites of uniform depth. For example, drawing
+// screen-aligned text with ID3DX10Font.
+// D3DX10SPRITE_SORT_DEPTH_FRONT_TO_BACK
+// Sprites are sorted by depth front-to-back prior to drawing. This is
+// recommended when drawing opaque sprites of varying depths.
+// D3DX10SPRITE_SORT_DEPTH_BACK_TO_FRONT
+// Sprites are sorted by depth back-to-front prior to drawing. This is
+// recommended when drawing transparent sprites of varying depths.
+// D3DX10SPRITE_ADDREF_TEXTURES
+// AddRef/Release all textures passed in to DrawSpritesBuffered
+//////////////////////////////////////////////////////////////////////////////
+
+enum
+{
+ D3DX10_SPRITE_SORT_TEXTURE = 0x01,
+ D3DX10_SPRITE_SORT_DEPTH_BACK_TO_FRONT = 0x02,
+ D3DX10_SPRITE_SORT_DEPTH_FRONT_TO_BACK = 0x04,
+ D3DX10_SPRITE_SAVE_STATE = 0x08,
+ D3DX10_SPRITE_ADDREF_TEXTURES = 0x10,
+};
+
+typedef struct _D3DX10_SPRITE
+{
+ D3DXMATRIX matWorld;
+
+ D3DXVECTOR2 TexCoord;
+ D3DXVECTOR2 TexSize;
+
+ D3DXCOLOR ColorModulate;
+
+ ID3D10ShaderResourceView *pTexture;
+ UINT TextureIndex;
+} D3DX10_SPRITE;
+
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3DX10Sprite:
+// ------------
+// This object intends to provide an easy way to drawing sprites using D3D.
+//
+// Begin -
+// Prepares device for drawing sprites.
+//
+// Draw -
+// Draws a sprite
+//
+// Flush -
+// Forces all batched sprites to submitted to the device.
+//
+// End -
+// Restores device state to how it was when Begin was called.
+//
+//////////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3DX10Sprite ID3DX10Sprite;
+typedef interface ID3DX10Sprite *LPD3DX10SPRITE;
+
+
+// {BA0B762D-8D28-43ec-B9DC-2F84443B0614}
+DEFINE_GUID(IID_ID3DX10Sprite,
+0xba0b762d, 0x8d28, 0x43ec, 0xb9, 0xdc, 0x2f, 0x84, 0x44, 0x3b, 0x6, 0x14);
+
+
+#undef INTERFACE
+#define INTERFACE ID3DX10Sprite
+
+DECLARE_INTERFACE_(ID3DX10Sprite, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ // ID3DX10Sprite
+ STDMETHOD(Begin)(THIS_ UINT flags) PURE;
+
+ STDMETHOD(DrawSpritesBuffered)(THIS_ D3DX10_SPRITE *pSprites, UINT cSprites) PURE;
+ STDMETHOD(Flush)(THIS) PURE;
+
+ STDMETHOD(DrawSpritesImmediate)(THIS_ D3DX10_SPRITE *pSprites, UINT cSprites, UINT cbSprite, UINT flags) PURE;
+ STDMETHOD(End)(THIS) PURE;
+
+ STDMETHOD(GetViewTransform)(THIS_ D3DXMATRIX *pViewTransform) PURE;
+ STDMETHOD(SetViewTransform)(THIS_ D3DXMATRIX *pViewTransform) PURE;
+ STDMETHOD(GetProjectionTransform)(THIS_ D3DXMATRIX *pProjectionTransform) PURE;
+ STDMETHOD(SetProjectionTransform)(THIS_ D3DXMATRIX *pProjectionTransform) PURE;
+
+ STDMETHOD(GetDevice)(THIS_ ID3D10Device** ppDevice) PURE;
+};
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+HRESULT WINAPI
+ D3DX10CreateSprite(
+ ID3D10Device* pDevice,
+ UINT cDeviceBufferSize,
+ LPD3DX10SPRITE* ppSprite);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3DX10ThreadPump:
+//////////////////////////////////////////////////////////////////////////////
+
+#undef INTERFACE
+#define INTERFACE ID3DX10DataLoader
+
+DECLARE_INTERFACE(ID3DX10DataLoader)
+{
+ STDMETHOD(Load)(THIS) PURE;
+ STDMETHOD(Decompress)(THIS_ void **ppData, SIZE_T *pcBytes) PURE;
+ STDMETHOD(Destroy)(THIS) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE ID3DX10DataProcessor
+
+DECLARE_INTERFACE(ID3DX10DataProcessor)
+{
+ STDMETHOD(Process)(THIS_ void *pData, SIZE_T cBytes) PURE;
+ STDMETHOD(CreateDeviceObject)(THIS_ void **ppDataObject) PURE;
+ STDMETHOD(Destroy)(THIS) PURE;
+};
+
+// {C93FECFA-6967-478a-ABBC-402D90621FCB}
+DEFINE_GUID(IID_ID3DX10ThreadPump,
+0xc93fecfa, 0x6967, 0x478a, 0xab, 0xbc, 0x40, 0x2d, 0x90, 0x62, 0x1f, 0xcb);
+
+#undef INTERFACE
+#define INTERFACE ID3DX10ThreadPump
+
+DECLARE_INTERFACE_(ID3DX10ThreadPump, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ // ID3DX10ThreadPump
+ STDMETHOD(AddWorkItem)(THIS_ ID3DX10DataLoader *pDataLoader, ID3DX10DataProcessor *pDataProcessor, HRESULT *pHResult, void **ppDeviceObject) PURE;
+ STDMETHOD_(UINT, GetWorkItemCount)(THIS) PURE;
+
+ STDMETHOD(WaitForAllItems)(THIS) PURE;
+ STDMETHOD(ProcessDeviceWorkItems)(THIS_ UINT iWorkItemCount);
+
+ STDMETHOD(PurgeAllItems)(THIS) PURE;
+ STDMETHOD(GetQueueStatus)(THIS_ UINT *pIoQueue, UINT *pProcessQueue, UINT *pDeviceQueue) PURE;
+
+};
+
+HRESULT WINAPI D3DX10CreateThreadPump(UINT cIoThreads, UINT cProcThreads, ID3DX10ThreadPump **ppThreadPump);
+
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3DX10Font:
+// ----------
+// Font objects contain the textures and resources needed to render a specific
+// font on a specific device.
+//
+// GetGlyphData -
+// Returns glyph cache data, for a given glyph.
+//
+// PreloadCharacters/PreloadGlyphs/PreloadText -
+// Preloads glyphs into the glyph cache textures.
+//
+// DrawText -
+// Draws formatted text on a D3D device. Some parameters are
+// surprisingly similar to those of GDI's DrawText function. See GDI
+// documentation for a detailed description of these parameters.
+// If pSprite is NULL, an internal sprite object will be used.
+//
+//////////////////////////////////////////////////////////////////////////////
+
+typedef struct _D3DX10_FONT_DESCA
+{
+ INT Height;
+ UINT Width;
+ UINT Weight;
+ UINT MipLevels;
+ BOOL Italic;
+ BYTE CharSet;
+ BYTE OutputPrecision;
+ BYTE Quality;
+ BYTE PitchAndFamily;
+ CHAR FaceName[LF_FACESIZE];
+
+} D3DX10_FONT_DESCA, *LPD3DX10_FONT_DESCA;
+
+typedef struct _D3DX10_FONT_DESCW
+{
+ INT Height;
+ UINT Width;
+ UINT Weight;
+ UINT MipLevels;
+ BOOL Italic;
+ BYTE CharSet;
+ BYTE OutputPrecision;
+ BYTE Quality;
+ BYTE PitchAndFamily;
+ WCHAR FaceName[LF_FACESIZE];
+
+} D3DX10_FONT_DESCW, *LPD3DX10_FONT_DESCW;
+
+#ifdef UNICODE
+typedef D3DX10_FONT_DESCW D3DX10_FONT_DESC;
+typedef LPD3DX10_FONT_DESCW LPD3DX10_FONT_DESC;
+#else
+typedef D3DX10_FONT_DESCA D3DX10_FONT_DESC;
+typedef LPD3DX10_FONT_DESCA LPD3DX10_FONT_DESC;
+#endif
+
+
+typedef interface ID3DX10Font ID3DX10Font;
+typedef interface ID3DX10Font *LPD3DX10FONT;
+
+
+// {D79DBB70-5F21-4d36-BBC2-FF525C213CDC}
+DEFINE_GUID(IID_ID3DX10Font,
+0xd79dbb70, 0x5f21, 0x4d36, 0xbb, 0xc2, 0xff, 0x52, 0x5c, 0x21, 0x3c, 0xdc);
+
+
+#undef INTERFACE
+#define INTERFACE ID3DX10Font
+
+DECLARE_INTERFACE_(ID3DX10Font, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ // ID3DX10Font
+ STDMETHOD(GetDevice)(THIS_ ID3D10Device** ppDevice) PURE;
+ STDMETHOD(GetDescA)(THIS_ D3DX10_FONT_DESCA *pDesc) PURE;
+ STDMETHOD(GetDescW)(THIS_ D3DX10_FONT_DESCW *pDesc) PURE;
+ STDMETHOD_(BOOL, GetTextMetricsA)(THIS_ TEXTMETRICA *pTextMetrics) PURE;
+ STDMETHOD_(BOOL, GetTextMetricsW)(THIS_ TEXTMETRICW *pTextMetrics) PURE;
+
+ STDMETHOD_(HDC, GetDC)(THIS) PURE;
+ STDMETHOD(GetGlyphData)(THIS_ UINT Glyph, ID3D10ShaderResourceView** ppTexture, RECT *pBlackBox, POINT *pCellInc) PURE;
+
+ STDMETHOD(PreloadCharacters)(THIS_ UINT First, UINT Last) PURE;
+ STDMETHOD(PreloadGlyphs)(THIS_ UINT First, UINT Last) PURE;
+ STDMETHOD(PreloadTextA)(THIS_ LPCSTR pString, INT Count) PURE;
+ STDMETHOD(PreloadTextW)(THIS_ LPCWSTR pString, INT Count) PURE;
+
+ STDMETHOD_(INT, DrawTextA)(THIS_ LPD3DX10SPRITE pSprite, LPCSTR pString, INT Count, LPRECT pRect, UINT Format, D3DXCOLOR Color) PURE;
+ STDMETHOD_(INT, DrawTextW)(THIS_ LPD3DX10SPRITE pSprite, LPCWSTR pString, INT Count, LPRECT pRect, UINT Format, D3DXCOLOR Color) PURE;
+
+#ifdef __cplusplus
+#ifdef UNICODE
+ HRESULT GetDesc(D3DX10_FONT_DESCW *pDesc) { return GetDescW(pDesc); }
+ HRESULT PreloadText(LPCWSTR pString, INT Count) { return PreloadTextW(pString, Count); }
+#else
+ HRESULT GetDesc(D3DX10_FONT_DESCA *pDesc) { return GetDescA(pDesc); }
+ HRESULT PreloadText(LPCSTR pString, INT Count) { return PreloadTextA(pString, Count); }
+#endif
+#endif //__cplusplus
+};
+
+#ifndef GetTextMetrics
+#ifdef UNICODE
+#define GetTextMetrics GetTextMetricsW
+#else
+#define GetTextMetrics GetTextMetricsA
+#endif
+#endif
+
+#ifndef DrawText
+#ifdef UNICODE
+#define DrawText DrawTextW
+#else
+#define DrawText DrawTextA
+#endif
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+
+HRESULT WINAPI
+ D3DX10CreateFontA(
+ ID3D10Device* pDevice,
+ INT Height,
+ UINT Width,
+ UINT Weight,
+ UINT MipLevels,
+ BOOL Italic,
+ UINT CharSet,
+ UINT OutputPrecision,
+ UINT Quality,
+ UINT PitchAndFamily,
+ LPCSTR pFaceName,
+ LPD3DX10FONT* ppFont);
+
+HRESULT WINAPI
+ D3DX10CreateFontW(
+ ID3D10Device* pDevice,
+ INT Height,
+ UINT Width,
+ UINT Weight,
+ UINT MipLevels,
+ BOOL Italic,
+ UINT CharSet,
+ UINT OutputPrecision,
+ UINT Quality,
+ UINT PitchAndFamily,
+ LPCWSTR pFaceName,
+ LPD3DX10FONT* ppFont);
+
+#ifdef UNICODE
+#define D3DX10CreateFont D3DX10CreateFontW
+#else
+#define D3DX10CreateFont D3DX10CreateFontA
+#endif
+
+
+HRESULT WINAPI
+ D3DX10CreateFontIndirectA(
+ ID3D10Device* pDevice,
+ CONST D3DX10_FONT_DESCA* pDesc,
+ LPD3DX10FONT* ppFont);
+
+HRESULT WINAPI
+ D3DX10CreateFontIndirectW(
+ ID3D10Device* pDevice,
+ CONST D3DX10_FONT_DESCW* pDesc,
+ LPD3DX10FONT* ppFont);
+
+#ifdef UNICODE
+#define D3DX10CreateFontIndirect D3DX10CreateFontIndirectW
+#else
+#define D3DX10CreateFontIndirect D3DX10CreateFontIndirectA
+#endif
+
+HRESULT WINAPI D3DX10UnsetAllDeviceObjects(ID3D10Device *pDevice);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+///////////////////////////////////////////////////////////////////////////
+//
+// TODO: move these to a central error header file
+//
+#define _FACD3D 0x876
+#define MAKE_D3DHRESULT( code ) MAKE_HRESULT( 1, _FACD3D, code )
+#define MAKE_D3DSTATUS( code ) MAKE_HRESULT( 0, _FACD3D, code )
+
+#define D3DERR_INVALIDCALL MAKE_D3DHRESULT(2156)
+#define D3DERR_WASSTILLDRAWING MAKE_D3DHRESULT(540)
+
+#endif //__D3DX10CORE_H__
+
diff --git a/src/dep/include/DXSDK/include/D3DX10math.h b/src/dep/include/DXSDK/include/D3DX10math.h
new file mode 100644
index 0000000..e307044
--- /dev/null
+++ b/src/dep/include/DXSDK/include/D3DX10math.h
@@ -0,0 +1,1788 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: D3DX10math.h
+// Content: D3DX10 math types and functions
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#include "D3DX10.h"
+
+// D3DX10 and D3DX9 math look the same. You can include either one into your project.
+// We are intentionally using the header define from D3DX9 math to prevent double-inclusion.
+#ifndef __D3DX9MATH_H__
+#define __D3DX9MATH_H__
+
+#include
+#if _MSC_VER >= 1200
+#pragma warning(push)
+#endif
+#pragma warning(disable:4201) // anonymous unions warning
+
+//===========================================================================
+//
+// Type definitions from D3D9
+//
+//===========================================================================
+
+#ifndef D3DVECTOR_DEFINED
+typedef struct _D3DVECTOR {
+ float x;
+ float y;
+ float z;
+} D3DVECTOR;
+#define D3DVECTOR_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
+
+//===========================================================================
+//
+// General purpose utilities
+//
+//===========================================================================
+#define D3DX_PI ((FLOAT) 3.141592654f)
+#define D3DX_1BYPI ((FLOAT) 0.318309886f)
+
+#define D3DXToRadian( degree ) ((degree) * (D3DX_PI / 180.0f))
+#define D3DXToDegree( radian ) ((radian) * (180.0f / D3DX_PI))
+
+
+
+//===========================================================================
+//
+// 16 bit floating point numbers
+//
+//===========================================================================
+
+#define D3DX_16F_DIG 3 // # of decimal digits of precision
+#define D3DX_16F_EPSILON 4.8875809e-4f // smallest such that 1.0 + epsilon != 1.0
+#define D3DX_16F_MANT_DIG 11 // # of bits in mantissa
+#define D3DX_16F_MAX 6.550400e+004 // max value
+#define D3DX_16F_MAX_10_EXP 4 // max decimal exponent
+#define D3DX_16F_MAX_EXP 15 // max binary exponent
+#define D3DX_16F_MIN 6.1035156e-5f // min positive value
+#define D3DX_16F_MIN_10_EXP (-4) // min decimal exponent
+#define D3DX_16F_MIN_EXP (-12) // min binary exponent
+#define D3DX_16F_RADIX 2 // exponent radix
+#define D3DX_16F_ROUNDS 1 // addition rounding: near
+
+
+typedef struct D3DXFLOAT16
+{
+#ifdef __cplusplus
+public:
+ D3DXFLOAT16() {};
+ D3DXFLOAT16( FLOAT );
+ D3DXFLOAT16( CONST D3DXFLOAT16& );
+
+ // casting
+ operator FLOAT ();
+
+ // binary operators
+ BOOL operator == ( CONST D3DXFLOAT16& ) const;
+ BOOL operator != ( CONST D3DXFLOAT16& ) const;
+
+protected:
+#endif //__cplusplus
+ WORD value;
+} D3DXFLOAT16, *LPD3DXFLOAT16;
+
+
+
+//===========================================================================
+//
+// Vectors
+//
+//===========================================================================
+
+
+//--------------------------
+// 2D Vector
+//--------------------------
+typedef struct D3DXVECTOR2
+{
+#ifdef __cplusplus
+public:
+ D3DXVECTOR2() {};
+ D3DXVECTOR2( CONST FLOAT * );
+ D3DXVECTOR2( CONST D3DXFLOAT16 * );
+ D3DXVECTOR2( FLOAT x, FLOAT y );
+
+ // casting
+ operator FLOAT* ();
+ operator CONST FLOAT* () const;
+
+ // assignment operators
+ D3DXVECTOR2& operator += ( CONST D3DXVECTOR2& );
+ D3DXVECTOR2& operator -= ( CONST D3DXVECTOR2& );
+ D3DXVECTOR2& operator *= ( FLOAT );
+ D3DXVECTOR2& operator /= ( FLOAT );
+
+ // unary operators
+ D3DXVECTOR2 operator + () const;
+ D3DXVECTOR2 operator - () const;
+
+ // binary operators
+ D3DXVECTOR2 operator + ( CONST D3DXVECTOR2& ) const;
+ D3DXVECTOR2 operator - ( CONST D3DXVECTOR2& ) const;
+ D3DXVECTOR2 operator * ( FLOAT ) const;
+ D3DXVECTOR2 operator / ( FLOAT ) const;
+
+ friend D3DXVECTOR2 operator * ( FLOAT, CONST D3DXVECTOR2& );
+
+ BOOL operator == ( CONST D3DXVECTOR2& ) const;
+ BOOL operator != ( CONST D3DXVECTOR2& ) const;
+
+
+public:
+#endif //__cplusplus
+ FLOAT x, y;
+} D3DXVECTOR2, *LPD3DXVECTOR2;
+
+
+
+//--------------------------
+// 2D Vector (16 bit)
+//--------------------------
+
+typedef struct D3DXVECTOR2_16F
+{
+#ifdef __cplusplus
+public:
+ D3DXVECTOR2_16F() {};
+ D3DXVECTOR2_16F( CONST FLOAT * );
+ D3DXVECTOR2_16F( CONST D3DXFLOAT16 * );
+ D3DXVECTOR2_16F( CONST D3DXFLOAT16 &x, CONST D3DXFLOAT16 &y );
+
+ // casting
+ operator D3DXFLOAT16* ();
+ operator CONST D3DXFLOAT16* () const;
+
+ // binary operators
+ BOOL operator == ( CONST D3DXVECTOR2_16F& ) const;
+ BOOL operator != ( CONST D3DXVECTOR2_16F& ) const;
+
+public:
+#endif //__cplusplus
+ D3DXFLOAT16 x, y;
+
+} D3DXVECTOR2_16F, *LPD3DXVECTOR2_16F;
+
+
+
+//--------------------------
+// 3D Vector
+//--------------------------
+#ifdef __cplusplus
+typedef struct D3DXVECTOR3 : public D3DVECTOR
+{
+public:
+ D3DXVECTOR3() {};
+ D3DXVECTOR3( CONST FLOAT * );
+ D3DXVECTOR3( CONST D3DVECTOR& );
+ D3DXVECTOR3( CONST D3DXFLOAT16 * );
+ D3DXVECTOR3( FLOAT x, FLOAT y, FLOAT z );
+
+ // casting
+ operator FLOAT* ();
+ operator CONST FLOAT* () const;
+
+ // assignment operators
+ D3DXVECTOR3& operator += ( CONST D3DXVECTOR3& );
+ D3DXVECTOR3& operator -= ( CONST D3DXVECTOR3& );
+ D3DXVECTOR3& operator *= ( FLOAT );
+ D3DXVECTOR3& operator /= ( FLOAT );
+
+ // unary operators
+ D3DXVECTOR3 operator + () const;
+ D3DXVECTOR3 operator - () const;
+
+ // binary operators
+ D3DXVECTOR3 operator + ( CONST D3DXVECTOR3& ) const;
+ D3DXVECTOR3 operator - ( CONST D3DXVECTOR3& ) const;
+ D3DXVECTOR3 operator * ( FLOAT ) const;
+ D3DXVECTOR3 operator / ( FLOAT ) const;
+
+ friend D3DXVECTOR3 operator * ( FLOAT, CONST struct D3DXVECTOR3& );
+
+ BOOL operator == ( CONST D3DXVECTOR3& ) const;
+ BOOL operator != ( CONST D3DXVECTOR3& ) const;
+
+} D3DXVECTOR3, *LPD3DXVECTOR3;
+
+#else //!__cplusplus
+typedef struct _D3DVECTOR D3DXVECTOR3, *LPD3DXVECTOR3;
+#endif //!__cplusplus
+
+
+
+//--------------------------
+// 3D Vector (16 bit)
+//--------------------------
+typedef struct D3DXVECTOR3_16F
+{
+#ifdef __cplusplus
+public:
+ D3DXVECTOR3_16F() {};
+ D3DXVECTOR3_16F( CONST FLOAT * );
+ D3DXVECTOR3_16F( CONST D3DVECTOR& );
+ D3DXVECTOR3_16F( CONST D3DXFLOAT16 * );
+ D3DXVECTOR3_16F( CONST D3DXFLOAT16 &x, CONST D3DXFLOAT16 &y, CONST D3DXFLOAT16 &z );
+
+ // casting
+ operator D3DXFLOAT16* ();
+ operator CONST D3DXFLOAT16* () const;
+
+ // binary operators
+ BOOL operator == ( CONST D3DXVECTOR3_16F& ) const;
+ BOOL operator != ( CONST D3DXVECTOR3_16F& ) const;
+
+public:
+#endif //__cplusplus
+ D3DXFLOAT16 x, y, z;
+
+} D3DXVECTOR3_16F, *LPD3DXVECTOR3_16F;
+
+
+
+//--------------------------
+// 4D Vector
+//--------------------------
+typedef struct D3DXVECTOR4
+{
+#ifdef __cplusplus
+public:
+ D3DXVECTOR4() {};
+ D3DXVECTOR4( CONST FLOAT* );
+ D3DXVECTOR4( CONST D3DXFLOAT16* );
+ D3DXVECTOR4( CONST D3DVECTOR& xyz, FLOAT w );
+ D3DXVECTOR4( FLOAT x, FLOAT y, FLOAT z, FLOAT w );
+
+ // casting
+ operator FLOAT* ();
+ operator CONST FLOAT* () const;
+
+ // assignment operators
+ D3DXVECTOR4& operator += ( CONST D3DXVECTOR4& );
+ D3DXVECTOR4& operator -= ( CONST D3DXVECTOR4& );
+ D3DXVECTOR4& operator *= ( FLOAT );
+ D3DXVECTOR4& operator /= ( FLOAT );
+
+ // unary operators
+ D3DXVECTOR4 operator + () const;
+ D3DXVECTOR4 operator - () const;
+
+ // binary operators
+ D3DXVECTOR4 operator + ( CONST D3DXVECTOR4& ) const;
+ D3DXVECTOR4 operator - ( CONST D3DXVECTOR4& ) const;
+ D3DXVECTOR4 operator * ( FLOAT ) const;
+ D3DXVECTOR4 operator / ( FLOAT ) const;
+
+ friend D3DXVECTOR4 operator * ( FLOAT, CONST D3DXVECTOR4& );
+
+ BOOL operator == ( CONST D3DXVECTOR4& ) const;
+ BOOL operator != ( CONST D3DXVECTOR4& ) const;
+
+public:
+#endif //__cplusplus
+ FLOAT x, y, z, w;
+} D3DXVECTOR4, *LPD3DXVECTOR4;
+
+
+//--------------------------
+// 4D Vector (16 bit)
+//--------------------------
+typedef struct D3DXVECTOR4_16F
+{
+#ifdef __cplusplus
+public:
+ D3DXVECTOR4_16F() {};
+ D3DXVECTOR4_16F( CONST FLOAT * );
+ D3DXVECTOR4_16F( CONST D3DXFLOAT16* );
+ D3DXVECTOR4_16F( CONST D3DXVECTOR3_16F& xyz, CONST D3DXFLOAT16& w );
+ D3DXVECTOR4_16F( CONST D3DXFLOAT16& x, CONST D3DXFLOAT16& y, CONST D3DXFLOAT16& z, CONST D3DXFLOAT16& w );
+
+ // casting
+ operator D3DXFLOAT16* ();
+ operator CONST D3DXFLOAT16* () const;
+
+ // binary operators
+ BOOL operator == ( CONST D3DXVECTOR4_16F& ) const;
+ BOOL operator != ( CONST D3DXVECTOR4_16F& ) const;
+
+public:
+#endif //__cplusplus
+ D3DXFLOAT16 x, y, z, w;
+
+} D3DXVECTOR4_16F, *LPD3DXVECTOR4_16F;
+
+
+
+//===========================================================================
+//
+// Matrices
+//
+//===========================================================================
+#ifdef __cplusplus
+typedef struct D3DXMATRIX : public D3DMATRIX
+{
+public:
+ D3DXMATRIX() {};
+ D3DXMATRIX( CONST FLOAT * );
+ D3DXMATRIX( CONST D3DMATRIX& );
+ D3DXMATRIX( CONST D3DXFLOAT16 * );
+ D3DXMATRIX( FLOAT _11, FLOAT _12, FLOAT _13, FLOAT _14,
+ FLOAT _21, FLOAT _22, FLOAT _23, FLOAT _24,
+ FLOAT _31, FLOAT _32, FLOAT _33, FLOAT _34,
+ FLOAT _41, FLOAT _42, FLOAT _43, FLOAT _44 );
+
+
+ // access grants
+ FLOAT& operator () ( UINT Row, UINT Col );
+ FLOAT operator () ( UINT Row, UINT Col ) const;
+
+ // casting operators
+ operator FLOAT* ();
+ operator CONST FLOAT* () const;
+
+ // assignment operators
+ D3DXMATRIX& operator *= ( CONST D3DXMATRIX& );
+ D3DXMATRIX& operator += ( CONST D3DXMATRIX& );
+ D3DXMATRIX& operator -= ( CONST D3DXMATRIX& );
+ D3DXMATRIX& operator *= ( FLOAT );
+ D3DXMATRIX& operator /= ( FLOAT );
+
+ // unary operators
+ D3DXMATRIX operator + () const;
+ D3DXMATRIX operator - () const;
+
+ // binary operators
+ D3DXMATRIX operator * ( CONST D3DXMATRIX& ) const;
+ D3DXMATRIX operator + ( CONST D3DXMATRIX& ) const;
+ D3DXMATRIX operator - ( CONST D3DXMATRIX& ) const;
+ D3DXMATRIX operator * ( FLOAT ) const;
+ D3DXMATRIX operator / ( FLOAT ) const;
+
+ friend D3DXMATRIX operator * ( FLOAT, CONST D3DXMATRIX& );
+
+ BOOL operator == ( CONST D3DXMATRIX& ) const;
+ BOOL operator != ( CONST D3DXMATRIX& ) const;
+
+} D3DXMATRIX, *LPD3DXMATRIX;
+
+#else //!__cplusplus
+typedef struct _D3DMATRIX D3DXMATRIX, *LPD3DXMATRIX;
+#endif //!__cplusplus
+
+
+//---------------------------------------------------------------------------
+// Aligned Matrices
+//
+// This class helps keep matrices 16-byte aligned as preferred by P4 cpus.
+// It aligns matrices on the stack and on the heap or in global scope.
+// It does this using __declspec(align(16)) which works on VC7 and on VC 6
+// with the processor pack. Unfortunately there is no way to detect the
+// latter so this is turned on only on VC7. On other compilers this is the
+// the same as D3DXMATRIX.
+//
+// Using this class on a compiler that does not actually do the alignment
+// can be dangerous since it will not expose bugs that ignore alignment.
+// E.g if an object of this class in inside a struct or class, and some code
+// memcopys data in it assuming tight packing. This could break on a compiler
+// that eventually start aligning the matrix.
+//---------------------------------------------------------------------------
+#ifdef __cplusplus
+typedef struct _D3DXMATRIXA16 : public D3DXMATRIX
+{
+ _D3DXMATRIXA16() {};
+ _D3DXMATRIXA16( CONST FLOAT * );
+ _D3DXMATRIXA16( CONST D3DMATRIX& );
+ _D3DXMATRIXA16( CONST D3DXFLOAT16 * );
+ _D3DXMATRIXA16( FLOAT _11, FLOAT _12, FLOAT _13, FLOAT _14,
+ FLOAT _21, FLOAT _22, FLOAT _23, FLOAT _24,
+ FLOAT _31, FLOAT _32, FLOAT _33, FLOAT _34,
+ FLOAT _41, FLOAT _42, FLOAT _43, FLOAT _44 );
+
+ // new operators
+ void* operator new ( size_t );
+ void* operator new[] ( size_t );
+
+ // delete operators
+ void operator delete ( void* ); // These are NOT virtual; Do not
+ void operator delete[] ( void* ); // cast to D3DXMATRIX and delete.
+
+ // assignment operators
+ _D3DXMATRIXA16& operator = ( CONST D3DXMATRIX& );
+
+} _D3DXMATRIXA16;
+
+#else //!__cplusplus
+typedef D3DXMATRIX _D3DXMATRIXA16;
+#endif //!__cplusplus
+
+
+
+#if _MSC_VER >= 1300 // VC7
+#define D3DX_ALIGN16 __declspec(align(16))
+#else
+#define D3DX_ALIGN16 // Earlier compiler may not understand this, do nothing.
+#endif
+
+typedef D3DX_ALIGN16 _D3DXMATRIXA16 D3DXMATRIXA16, *LPD3DXMATRIXA16;
+
+
+
+//===========================================================================
+//
+// Quaternions
+//
+//===========================================================================
+typedef struct D3DXQUATERNION
+{
+#ifdef __cplusplus
+public:
+ D3DXQUATERNION() {};
+ D3DXQUATERNION( CONST FLOAT * );
+ D3DXQUATERNION( CONST D3DXFLOAT16 * );
+ D3DXQUATERNION( FLOAT x, FLOAT y, FLOAT z, FLOAT w );
+
+ // casting
+ operator FLOAT* ();
+ operator CONST FLOAT* () const;
+
+ // assignment operators
+ D3DXQUATERNION& operator += ( CONST D3DXQUATERNION& );
+ D3DXQUATERNION& operator -= ( CONST D3DXQUATERNION& );
+ D3DXQUATERNION& operator *= ( CONST D3DXQUATERNION& );
+ D3DXQUATERNION& operator *= ( FLOAT );
+ D3DXQUATERNION& operator /= ( FLOAT );
+
+ // unary operators
+ D3DXQUATERNION operator + () const;
+ D3DXQUATERNION operator - () const;
+
+ // binary operators
+ D3DXQUATERNION operator + ( CONST D3DXQUATERNION& ) const;
+ D3DXQUATERNION operator - ( CONST D3DXQUATERNION& ) const;
+ D3DXQUATERNION operator * ( CONST D3DXQUATERNION& ) const;
+ D3DXQUATERNION operator * ( FLOAT ) const;
+ D3DXQUATERNION operator / ( FLOAT ) const;
+
+ friend D3DXQUATERNION operator * (FLOAT, CONST D3DXQUATERNION& );
+
+ BOOL operator == ( CONST D3DXQUATERNION& ) const;
+ BOOL operator != ( CONST D3DXQUATERNION& ) const;
+
+#endif //__cplusplus
+ FLOAT x, y, z, w;
+} D3DXQUATERNION, *LPD3DXQUATERNION;
+
+
+//===========================================================================
+//
+// Planes
+//
+//===========================================================================
+typedef struct D3DXPLANE
+{
+#ifdef __cplusplus
+public:
+ D3DXPLANE() {};
+ D3DXPLANE( CONST FLOAT* );
+ D3DXPLANE( CONST D3DXFLOAT16* );
+ D3DXPLANE( FLOAT a, FLOAT b, FLOAT c, FLOAT d );
+
+ // casting
+ operator FLOAT* ();
+ operator CONST FLOAT* () const;
+
+ // assignment operators
+ D3DXPLANE& operator *= ( FLOAT );
+ D3DXPLANE& operator /= ( FLOAT );
+
+ // unary operators
+ D3DXPLANE operator + () const;
+ D3DXPLANE operator - () const;
+
+ // binary operators
+ D3DXPLANE operator * ( FLOAT ) const;
+ D3DXPLANE operator / ( FLOAT ) const;
+
+ friend D3DXPLANE operator * ( FLOAT, CONST D3DXPLANE& );
+
+ BOOL operator == ( CONST D3DXPLANE& ) const;
+ BOOL operator != ( CONST D3DXPLANE& ) const;
+
+#endif //__cplusplus
+ FLOAT a, b, c, d;
+} D3DXPLANE, *LPD3DXPLANE;
+
+
+//===========================================================================
+//
+// Colors
+//
+//===========================================================================
+
+typedef struct D3DXCOLOR
+{
+#ifdef __cplusplus
+public:
+ D3DXCOLOR() {};
+ D3DXCOLOR( UINT argb );
+ D3DXCOLOR( CONST FLOAT * );
+ D3DXCOLOR( CONST D3DXFLOAT16 * );
+ D3DXCOLOR( FLOAT r, FLOAT g, FLOAT b, FLOAT a );
+
+ // casting
+ operator UINT () const;
+
+ operator FLOAT* ();
+ operator CONST FLOAT* () const;
+
+ // assignment operators
+ D3DXCOLOR& operator += ( CONST D3DXCOLOR& );
+ D3DXCOLOR& operator -= ( CONST D3DXCOLOR& );
+ D3DXCOLOR& operator *= ( FLOAT );
+ D3DXCOLOR& operator /= ( FLOAT );
+
+ // unary operators
+ D3DXCOLOR operator + () const;
+ D3DXCOLOR operator - () const;
+
+ // binary operators
+ D3DXCOLOR operator + ( CONST D3DXCOLOR& ) const;
+ D3DXCOLOR operator - ( CONST D3DXCOLOR& ) const;
+ D3DXCOLOR operator * ( FLOAT ) const;
+ D3DXCOLOR operator / ( FLOAT ) const;
+
+ friend D3DXCOLOR operator * ( FLOAT, CONST D3DXCOLOR& );
+
+ BOOL operator == ( CONST D3DXCOLOR& ) const;
+ BOOL operator != ( CONST D3DXCOLOR& ) const;
+
+#endif //__cplusplus
+ FLOAT r, g, b, a;
+} D3DXCOLOR, *LPD3DXCOLOR;
+
+
+
+//===========================================================================
+//
+// D3DX math functions:
+//
+// NOTE:
+// * All these functions can take the same object as in and out parameters.
+//
+// * Out parameters are typically also returned as return values, so that
+// the output of one function may be used as a parameter to another.
+//
+//===========================================================================
+
+//--------------------------
+// Float16
+//--------------------------
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Converts an array 32-bit floats to 16-bit floats
+D3DXFLOAT16* WINAPI D3DXFloat32To16Array
+ ( D3DXFLOAT16 *pOut, CONST FLOAT *pIn, UINT n );
+
+// Converts an array 16-bit floats to 32-bit floats
+FLOAT* WINAPI D3DXFloat16To32Array
+ ( FLOAT *pOut, CONST D3DXFLOAT16 *pIn, UINT n );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+//--------------------------
+// 2D Vector
+//--------------------------
+
+// inline
+
+FLOAT D3DXVec2Length
+ ( CONST D3DXVECTOR2 *pV );
+
+FLOAT D3DXVec2LengthSq
+ ( CONST D3DXVECTOR2 *pV );
+
+FLOAT D3DXVec2Dot
+ ( CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
+
+// Z component of ((x1,y1,0) cross (x2,y2,0))
+FLOAT D3DXVec2CCW
+ ( CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
+
+D3DXVECTOR2* D3DXVec2Add
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
+
+D3DXVECTOR2* D3DXVec2Subtract
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
+
+// Minimize each component. x = min(x1, x2), y = min(y1, y2)
+D3DXVECTOR2* D3DXVec2Minimize
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
+
+// Maximize each component. x = max(x1, x2), y = max(y1, y2)
+D3DXVECTOR2* D3DXVec2Maximize
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
+
+D3DXVECTOR2* D3DXVec2Scale
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV, FLOAT s );
+
+// Linear interpolation. V1 + s(V2-V1)
+D3DXVECTOR2* D3DXVec2Lerp
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2,
+ FLOAT s );
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+D3DXVECTOR2* WINAPI D3DXVec2Normalize
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV );
+
+// Hermite interpolation between position V1, tangent T1 (when s == 0)
+// and position V2, tangent T2 (when s == 1).
+D3DXVECTOR2* WINAPI D3DXVec2Hermite
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pT1,
+ CONST D3DXVECTOR2 *pV2, CONST D3DXVECTOR2 *pT2, FLOAT s );
+
+// CatmullRom interpolation between V1 (when s == 0) and V2 (when s == 1)
+D3DXVECTOR2* WINAPI D3DXVec2CatmullRom
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV0, CONST D3DXVECTOR2 *pV1,
+ CONST D3DXVECTOR2 *pV2, CONST D3DXVECTOR2 *pV3, FLOAT s );
+
+// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1)
+D3DXVECTOR2* WINAPI D3DXVec2BaryCentric
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2,
+ CONST D3DXVECTOR2 *pV3, FLOAT f, FLOAT g);
+
+// Transform (x, y, 0, 1) by matrix.
+D3DXVECTOR4* WINAPI D3DXVec2Transform
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR2 *pV, CONST D3DXMATRIX *pM );
+
+// Transform (x, y, 0, 1) by matrix, project result back into w=1.
+D3DXVECTOR2* WINAPI D3DXVec2TransformCoord
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV, CONST D3DXMATRIX *pM );
+
+// Transform (x, y, 0, 0) by matrix.
+D3DXVECTOR2* WINAPI D3DXVec2TransformNormal
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV, CONST D3DXMATRIX *pM );
+
+// Transform Array (x, y, 0, 1) by matrix.
+D3DXVECTOR4* WINAPI D3DXVec2TransformArray
+ ( D3DXVECTOR4 *pOut, UINT OutStride, CONST D3DXVECTOR2 *pV, UINT VStride, CONST D3DXMATRIX *pM, UINT n);
+
+// Transform Array (x, y, 0, 1) by matrix, project result back into w=1.
+D3DXVECTOR2* WINAPI D3DXVec2TransformCoordArray
+ ( D3DXVECTOR2 *pOut, UINT OutStride, CONST D3DXVECTOR2 *pV, UINT VStride, CONST D3DXMATRIX *pM, UINT n );
+
+// Transform Array (x, y, 0, 0) by matrix.
+D3DXVECTOR2* WINAPI D3DXVec2TransformNormalArray
+ ( D3DXVECTOR2 *pOut, UINT OutStride, CONST D3DXVECTOR2 *pV, UINT VStride, CONST D3DXMATRIX *pM, UINT n );
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+//--------------------------
+// 3D Vector
+//--------------------------
+
+// inline
+
+FLOAT D3DXVec3Length
+ ( CONST D3DXVECTOR3 *pV );
+
+FLOAT D3DXVec3LengthSq
+ ( CONST D3DXVECTOR3 *pV );
+
+FLOAT D3DXVec3Dot
+ ( CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
+
+D3DXVECTOR3* D3DXVec3Cross
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
+
+D3DXVECTOR3* D3DXVec3Add
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
+
+D3DXVECTOR3* D3DXVec3Subtract
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
+
+// Minimize each component. x = min(x1, x2), y = min(y1, y2), ...
+D3DXVECTOR3* D3DXVec3Minimize
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
+
+// Maximize each component. x = max(x1, x2), y = max(y1, y2), ...
+D3DXVECTOR3* D3DXVec3Maximize
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
+
+D3DXVECTOR3* D3DXVec3Scale
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, FLOAT s);
+
+// Linear interpolation. V1 + s(V2-V1)
+D3DXVECTOR3* D3DXVec3Lerp
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2,
+ FLOAT s );
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+D3DXVECTOR3* WINAPI D3DXVec3Normalize
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV );
+
+// Hermite interpolation between position V1, tangent T1 (when s == 0)
+// and position V2, tangent T2 (when s == 1).
+D3DXVECTOR3* WINAPI D3DXVec3Hermite
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pT1,
+ CONST D3DXVECTOR3 *pV2, CONST D3DXVECTOR3 *pT2, FLOAT s );
+
+// CatmullRom interpolation between V1 (when s == 0) and V2 (when s == 1)
+D3DXVECTOR3* WINAPI D3DXVec3CatmullRom
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV0, CONST D3DXVECTOR3 *pV1,
+ CONST D3DXVECTOR3 *pV2, CONST D3DXVECTOR3 *pV3, FLOAT s );
+
+// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1)
+D3DXVECTOR3* WINAPI D3DXVec3BaryCentric
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2,
+ CONST D3DXVECTOR3 *pV3, FLOAT f, FLOAT g);
+
+// Transform (x, y, z, 1) by matrix.
+D3DXVECTOR4* WINAPI D3DXVec3Transform
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DXMATRIX *pM );
+
+// Transform (x, y, z, 1) by matrix, project result back into w=1.
+D3DXVECTOR3* WINAPI D3DXVec3TransformCoord
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DXMATRIX *pM );
+
+// Transform (x, y, z, 0) by matrix. If you transforming a normal by a
+// non-affine matrix, the matrix you pass to this function should be the
+// transpose of the inverse of the matrix you would use to transform a coord.
+D3DXVECTOR3* WINAPI D3DXVec3TransformNormal
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DXMATRIX *pM );
+
+
+// Transform Array (x, y, z, 1) by matrix.
+D3DXVECTOR4* WINAPI D3DXVec3TransformArray
+ ( D3DXVECTOR4 *pOut, UINT OutStride, CONST D3DXVECTOR3 *pV, UINT VStride, CONST D3DXMATRIX *pM, UINT n );
+
+// Transform Array (x, y, z, 1) by matrix, project result back into w=1.
+D3DXVECTOR3* WINAPI D3DXVec3TransformCoordArray
+ ( D3DXVECTOR3 *pOut, UINT OutStride, CONST D3DXVECTOR3 *pV, UINT VStride, CONST D3DXMATRIX *pM, UINT n );
+
+// Transform (x, y, z, 0) by matrix. If you transforming a normal by a
+// non-affine matrix, the matrix you pass to this function should be the
+// transpose of the inverse of the matrix you would use to transform a coord.
+D3DXVECTOR3* WINAPI D3DXVec3TransformNormalArray
+ ( D3DXVECTOR3 *pOut, UINT OutStride, CONST D3DXVECTOR3 *pV, UINT VStride, CONST D3DXMATRIX *pM, UINT n );
+
+// Project vector from object space into screen space
+D3DXVECTOR3* WINAPI D3DXVec3Project
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3D10_VIEWPORT *pViewport,
+ CONST D3DXMATRIX *pProjection, CONST D3DXMATRIX *pView, CONST D3DXMATRIX *pWorld);
+
+// Project vector from screen space into object space
+D3DXVECTOR3* WINAPI D3DXVec3Unproject
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3D10_VIEWPORT *pViewport,
+ CONST D3DXMATRIX *pProjection, CONST D3DXMATRIX *pView, CONST D3DXMATRIX *pWorld);
+
+// Project vector Array from object space into screen space
+D3DXVECTOR3* WINAPI D3DXVec3ProjectArray
+ ( D3DXVECTOR3 *pOut, UINT OutStride,CONST D3DXVECTOR3 *pV, UINT VStride,CONST D3D10_VIEWPORT *pViewport,
+ CONST D3DXMATRIX *pProjection, CONST D3DXMATRIX *pView, CONST D3DXMATRIX *pWorld, UINT n);
+
+// Project vector Array from screen space into object space
+D3DXVECTOR3* WINAPI D3DXVec3UnprojectArray
+ ( D3DXVECTOR3 *pOut, UINT OutStride, CONST D3DXVECTOR3 *pV, UINT VStride, CONST D3D10_VIEWPORT *pViewport,
+ CONST D3DXMATRIX *pProjection, CONST D3DXMATRIX *pView, CONST D3DXMATRIX *pWorld, UINT n);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+//--------------------------
+// 4D Vector
+//--------------------------
+
+// inline
+
+FLOAT D3DXVec4Length
+ ( CONST D3DXVECTOR4 *pV );
+
+FLOAT D3DXVec4LengthSq
+ ( CONST D3DXVECTOR4 *pV );
+
+FLOAT D3DXVec4Dot
+ ( CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2 );
+
+D3DXVECTOR4* D3DXVec4Add
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2);
+
+D3DXVECTOR4* D3DXVec4Subtract
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2);
+
+// Minimize each component. x = min(x1, x2), y = min(y1, y2), ...
+D3DXVECTOR4* D3DXVec4Minimize
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2);
+
+// Maximize each component. x = max(x1, x2), y = max(y1, y2), ...
+D3DXVECTOR4* D3DXVec4Maximize
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2);
+
+D3DXVECTOR4* D3DXVec4Scale
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV, FLOAT s);
+
+// Linear interpolation. V1 + s(V2-V1)
+D3DXVECTOR4* D3DXVec4Lerp
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2,
+ FLOAT s );
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Cross-product in 4 dimensions.
+D3DXVECTOR4* WINAPI D3DXVec4Cross
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2,
+ CONST D3DXVECTOR4 *pV3);
+
+D3DXVECTOR4* WINAPI D3DXVec4Normalize
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV );
+
+// Hermite interpolation between position V1, tangent T1 (when s == 0)
+// and position V2, tangent T2 (when s == 1).
+D3DXVECTOR4* WINAPI D3DXVec4Hermite
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pT1,
+ CONST D3DXVECTOR4 *pV2, CONST D3DXVECTOR4 *pT2, FLOAT s );
+
+// CatmullRom interpolation between V1 (when s == 0) and V2 (when s == 1)
+D3DXVECTOR4* WINAPI D3DXVec4CatmullRom
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV0, CONST D3DXVECTOR4 *pV1,
+ CONST D3DXVECTOR4 *pV2, CONST D3DXVECTOR4 *pV3, FLOAT s );
+
+// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1)
+D3DXVECTOR4* WINAPI D3DXVec4BaryCentric
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2,
+ CONST D3DXVECTOR4 *pV3, FLOAT f, FLOAT g);
+
+// Transform vector by matrix.
+D3DXVECTOR4* WINAPI D3DXVec4Transform
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV, CONST D3DXMATRIX *pM );
+
+// Transform vector array by matrix.
+D3DXVECTOR4* WINAPI D3DXVec4TransformArray
+ ( D3DXVECTOR4 *pOut, UINT OutStride, CONST D3DXVECTOR4 *pV, UINT VStride, CONST D3DXMATRIX *pM, UINT n );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+//--------------------------
+// 4D Matrix
+//--------------------------
+
+// inline
+
+D3DXMATRIX* D3DXMatrixIdentity
+ ( D3DXMATRIX *pOut );
+
+BOOL D3DXMatrixIsIdentity
+ ( CONST D3DXMATRIX *pM );
+
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+FLOAT WINAPI D3DXMatrixDeterminant
+ ( CONST D3DXMATRIX *pM );
+
+HRESULT WINAPI D3DXMatrixDecompose
+ ( D3DXVECTOR3 *pOutScale, D3DXQUATERNION *pOutRotation,
+ D3DXVECTOR3 *pOutTranslation, CONST D3DXMATRIX *pM );
+
+D3DXMATRIX* WINAPI D3DXMatrixTranspose
+ ( D3DXMATRIX *pOut, CONST D3DXMATRIX *pM );
+
+// Matrix multiplication. The result represents the transformation M2
+// followed by the transformation M1. (Out = M1 * M2)
+D3DXMATRIX* WINAPI D3DXMatrixMultiply
+ ( D3DXMATRIX *pOut, CONST D3DXMATRIX *pM1, CONST D3DXMATRIX *pM2 );
+
+// Matrix multiplication, followed by a transpose. (Out = T(M1 * M2))
+D3DXMATRIX* WINAPI D3DXMatrixMultiplyTranspose
+ ( D3DXMATRIX *pOut, CONST D3DXMATRIX *pM1, CONST D3DXMATRIX *pM2 );
+
+// Calculate inverse of matrix. Inversion my fail, in which case NULL will
+// be returned. The determinant of pM is also returned it pfDeterminant
+// is non-NULL.
+D3DXMATRIX* WINAPI D3DXMatrixInverse
+ ( D3DXMATRIX *pOut, FLOAT *pDeterminant, CONST D3DXMATRIX *pM );
+
+// Build a matrix which scales by (sx, sy, sz)
+D3DXMATRIX* WINAPI D3DXMatrixScaling
+ ( D3DXMATRIX *pOut, FLOAT sx, FLOAT sy, FLOAT sz );
+
+// Build a matrix which translates by (x, y, z)
+D3DXMATRIX* WINAPI D3DXMatrixTranslation
+ ( D3DXMATRIX *pOut, FLOAT x, FLOAT y, FLOAT z );
+
+// Build a matrix which rotates around the X axis
+D3DXMATRIX* WINAPI D3DXMatrixRotationX
+ ( D3DXMATRIX *pOut, FLOAT Angle );
+
+// Build a matrix which rotates around the Y axis
+D3DXMATRIX* WINAPI D3DXMatrixRotationY
+ ( D3DXMATRIX *pOut, FLOAT Angle );
+
+// Build a matrix which rotates around the Z axis
+D3DXMATRIX* WINAPI D3DXMatrixRotationZ
+ ( D3DXMATRIX *pOut, FLOAT Angle );
+
+// Build a matrix which rotates around an arbitrary axis
+D3DXMATRIX* WINAPI D3DXMatrixRotationAxis
+ ( D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pV, FLOAT Angle );
+
+// Build a matrix from a quaternion
+D3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion
+ ( D3DXMATRIX *pOut, CONST D3DXQUATERNION *pQ);
+
+// Yaw around the Y axis, a pitch around the X axis,
+// and a roll around the Z axis.
+D3DXMATRIX* WINAPI D3DXMatrixRotationYawPitchRoll
+ ( D3DXMATRIX *pOut, FLOAT Yaw, FLOAT Pitch, FLOAT Roll );
+
+// Build transformation matrix. NULL arguments are treated as identity.
+// Mout = Msc-1 * Msr-1 * Ms * Msr * Msc * Mrc-1 * Mr * Mrc * Mt
+D3DXMATRIX* WINAPI D3DXMatrixTransformation
+ ( D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pScalingCenter,
+ CONST D3DXQUATERNION *pScalingRotation, CONST D3DXVECTOR3 *pScaling,
+ CONST D3DXVECTOR3 *pRotationCenter, CONST D3DXQUATERNION *pRotation,
+ CONST D3DXVECTOR3 *pTranslation);
+
+// Build 2D transformation matrix in XY plane. NULL arguments are treated as identity.
+// Mout = Msc-1 * Msr-1 * Ms * Msr * Msc * Mrc-1 * Mr * Mrc * Mt
+D3DXMATRIX* WINAPI D3DXMatrixTransformation2D
+ ( D3DXMATRIX *pOut, CONST D3DXVECTOR2* pScalingCenter,
+ FLOAT ScalingRotation, CONST D3DXVECTOR2* pScaling,
+ CONST D3DXVECTOR2* pRotationCenter, FLOAT Rotation,
+ CONST D3DXVECTOR2* pTranslation);
+
+// Build affine transformation matrix. NULL arguments are treated as identity.
+// Mout = Ms * Mrc-1 * Mr * Mrc * Mt
+D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation
+ ( D3DXMATRIX *pOut, FLOAT Scaling, CONST D3DXVECTOR3 *pRotationCenter,
+ CONST D3DXQUATERNION *pRotation, CONST D3DXVECTOR3 *pTranslation);
+
+// Build 2D affine transformation matrix in XY plane. NULL arguments are treated as identity.
+// Mout = Ms * Mrc-1 * Mr * Mrc * Mt
+D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation2D
+ ( D3DXMATRIX *pOut, FLOAT Scaling, CONST D3DXVECTOR2* pRotationCenter,
+ FLOAT Rotation, CONST D3DXVECTOR2* pTranslation);
+
+// Build a lookat matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixLookAtRH
+ ( D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pEye, CONST D3DXVECTOR3 *pAt,
+ CONST D3DXVECTOR3 *pUp );
+
+// Build a lookat matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixLookAtLH
+ ( D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pEye, CONST D3DXVECTOR3 *pAt,
+ CONST D3DXVECTOR3 *pUp );
+
+// Build a perspective projection matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveRH
+ ( D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf );
+
+// Build a perspective projection matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveLH
+ ( D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf );
+
+// Build a perspective projection matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovRH
+ ( D3DXMATRIX *pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf );
+
+// Build a perspective projection matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovLH
+ ( D3DXMATRIX *pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf );
+
+// Build a perspective projection matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterRH
+ ( D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn,
+ FLOAT zf );
+
+// Build a perspective projection matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterLH
+ ( D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn,
+ FLOAT zf );
+
+// Build an ortho projection matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixOrthoRH
+ ( D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf );
+
+// Build an ortho projection matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixOrthoLH
+ ( D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf );
+
+// Build an ortho projection matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterRH
+ ( D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn,
+ FLOAT zf );
+
+// Build an ortho projection matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterLH
+ ( D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn,
+ FLOAT zf );
+
+// Build a matrix which flattens geometry into a plane, as if casting
+// a shadow from a light.
+D3DXMATRIX* WINAPI D3DXMatrixShadow
+ ( D3DXMATRIX *pOut, CONST D3DXVECTOR4 *pLight,
+ CONST D3DXPLANE *pPlane );
+
+// Build a matrix which reflects the coordinate system about a plane
+D3DXMATRIX* WINAPI D3DXMatrixReflect
+ ( D3DXMATRIX *pOut, CONST D3DXPLANE *pPlane );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+//--------------------------
+// Quaternion
+//--------------------------
+
+// inline
+
+FLOAT D3DXQuaternionLength
+ ( CONST D3DXQUATERNION *pQ );
+
+// Length squared, or "norm"
+FLOAT D3DXQuaternionLengthSq
+ ( CONST D3DXQUATERNION *pQ );
+
+FLOAT D3DXQuaternionDot
+ ( CONST D3DXQUATERNION *pQ1, CONST D3DXQUATERNION *pQ2 );
+
+// (0, 0, 0, 1)
+D3DXQUATERNION* D3DXQuaternionIdentity
+ ( D3DXQUATERNION *pOut );
+
+BOOL D3DXQuaternionIsIdentity
+ ( CONST D3DXQUATERNION *pQ );
+
+// (-x, -y, -z, w)
+D3DXQUATERNION* D3DXQuaternionConjugate
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ );
+
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Compute a quaternin's axis and angle of rotation. Expects unit quaternions.
+void WINAPI D3DXQuaternionToAxisAngle
+ ( CONST D3DXQUATERNION *pQ, D3DXVECTOR3 *pAxis, FLOAT *pAngle );
+
+// Build a quaternion from a rotation matrix.
+D3DXQUATERNION* WINAPI D3DXQuaternionRotationMatrix
+ ( D3DXQUATERNION *pOut, CONST D3DXMATRIX *pM);
+
+// Rotation about arbitrary axis.
+D3DXQUATERNION* WINAPI D3DXQuaternionRotationAxis
+ ( D3DXQUATERNION *pOut, CONST D3DXVECTOR3 *pV, FLOAT Angle );
+
+// Yaw around the Y axis, a pitch around the X axis,
+// and a roll around the Z axis.
+D3DXQUATERNION* WINAPI D3DXQuaternionRotationYawPitchRoll
+ ( D3DXQUATERNION *pOut, FLOAT Yaw, FLOAT Pitch, FLOAT Roll );
+
+// Quaternion multiplication. The result represents the rotation Q2
+// followed by the rotation Q1. (Out = Q2 * Q1)
+D3DXQUATERNION* WINAPI D3DXQuaternionMultiply
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ1,
+ CONST D3DXQUATERNION *pQ2 );
+
+D3DXQUATERNION* WINAPI D3DXQuaternionNormalize
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ );
+
+// Conjugate and re-norm
+D3DXQUATERNION* WINAPI D3DXQuaternionInverse
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ );
+
+// Expects unit quaternions.
+// if q = (cos(theta), sin(theta) * v); ln(q) = (0, theta * v)
+D3DXQUATERNION* WINAPI D3DXQuaternionLn
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ );
+
+// Expects pure quaternions. (w == 0) w is ignored in calculation.
+// if q = (0, theta * v); exp(q) = (cos(theta), sin(theta) * v)
+D3DXQUATERNION* WINAPI D3DXQuaternionExp
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ );
+
+// Spherical linear interpolation between Q1 (t == 0) and Q2 (t == 1).
+// Expects unit quaternions.
+D3DXQUATERNION* WINAPI D3DXQuaternionSlerp
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ1,
+ CONST D3DXQUATERNION *pQ2, FLOAT t );
+
+// Spherical quadrangle interpolation.
+// Slerp(Slerp(Q1, C, t), Slerp(A, B, t), 2t(1-t))
+D3DXQUATERNION* WINAPI D3DXQuaternionSquad
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ1,
+ CONST D3DXQUATERNION *pA, CONST D3DXQUATERNION *pB,
+ CONST D3DXQUATERNION *pC, FLOAT t );
+
+// Setup control points for spherical quadrangle interpolation
+// from Q1 to Q2. The control points are chosen in such a way
+// to ensure the continuity of tangents with adjacent segments.
+void WINAPI D3DXQuaternionSquadSetup
+ ( D3DXQUATERNION *pAOut, D3DXQUATERNION *pBOut, D3DXQUATERNION *pCOut,
+ CONST D3DXQUATERNION *pQ0, CONST D3DXQUATERNION *pQ1,
+ CONST D3DXQUATERNION *pQ2, CONST D3DXQUATERNION *pQ3 );
+
+// Barycentric interpolation.
+// Slerp(Slerp(Q1, Q2, f+g), Slerp(Q1, Q3, f+g), g/(f+g))
+D3DXQUATERNION* WINAPI D3DXQuaternionBaryCentric
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ1,
+ CONST D3DXQUATERNION *pQ2, CONST D3DXQUATERNION *pQ3,
+ FLOAT f, FLOAT g );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+//--------------------------
+// Plane
+//--------------------------
+
+// inline
+
+// ax + by + cz + dw
+FLOAT D3DXPlaneDot
+ ( CONST D3DXPLANE *pP, CONST D3DXVECTOR4 *pV);
+
+// ax + by + cz + d
+FLOAT D3DXPlaneDotCoord
+ ( CONST D3DXPLANE *pP, CONST D3DXVECTOR3 *pV);
+
+// ax + by + cz
+FLOAT D3DXPlaneDotNormal
+ ( CONST D3DXPLANE *pP, CONST D3DXVECTOR3 *pV);
+
+D3DXPLANE* D3DXPlaneScale
+ (D3DXPLANE *pOut, CONST D3DXPLANE *pP, FLOAT s);
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Normalize plane (so that |a,b,c| == 1)
+D3DXPLANE* WINAPI D3DXPlaneNormalize
+ ( D3DXPLANE *pOut, CONST D3DXPLANE *pP);
+
+// Find the intersection between a plane and a line. If the line is
+// parallel to the plane, NULL is returned.
+D3DXVECTOR3* WINAPI D3DXPlaneIntersectLine
+ ( D3DXVECTOR3 *pOut, CONST D3DXPLANE *pP, CONST D3DXVECTOR3 *pV1,
+ CONST D3DXVECTOR3 *pV2);
+
+// Construct a plane from a point and a normal
+D3DXPLANE* WINAPI D3DXPlaneFromPointNormal
+ ( D3DXPLANE *pOut, CONST D3DXVECTOR3 *pPoint, CONST D3DXVECTOR3 *pNormal);
+
+// Construct a plane from 3 points
+D3DXPLANE* WINAPI D3DXPlaneFromPoints
+ ( D3DXPLANE *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2,
+ CONST D3DXVECTOR3 *pV3);
+
+// Transform a plane by a matrix. The vector (a,b,c) must be normal.
+// M should be the inverse transpose of the transformation desired.
+D3DXPLANE* WINAPI D3DXPlaneTransform
+ ( D3DXPLANE *pOut, CONST D3DXPLANE *pP, CONST D3DXMATRIX *pM );
+
+// Transform an array of planes by a matrix. The vectors (a,b,c) must be normal.
+// M should be the inverse transpose of the transformation desired.
+D3DXPLANE* WINAPI D3DXPlaneTransformArray
+ ( D3DXPLANE *pOut, UINT OutStride, CONST D3DXPLANE *pP, UINT PStride, CONST D3DXMATRIX *pM, UINT n );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+//--------------------------
+// Color
+//--------------------------
+
+// inline
+
+// (1-r, 1-g, 1-b, a)
+D3DXCOLOR* D3DXColorNegative
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC);
+
+D3DXCOLOR* D3DXColorAdd
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2);
+
+D3DXCOLOR* D3DXColorSubtract
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2);
+
+D3DXCOLOR* D3DXColorScale
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC, FLOAT s);
+
+// (r1*r2, g1*g2, b1*b2, a1*a2)
+D3DXCOLOR* D3DXColorModulate
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2);
+
+// Linear interpolation of r,g,b, and a. C1 + s(C2-C1)
+D3DXCOLOR* D3DXColorLerp
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2, FLOAT s);
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Interpolate r,g,b between desaturated color and color.
+// DesaturatedColor + s(Color - DesaturatedColor)
+D3DXCOLOR* WINAPI D3DXColorAdjustSaturation
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC, FLOAT s);
+
+// Interpolate r,g,b between 50% grey and color. Grey + s(Color - Grey)
+D3DXCOLOR* WINAPI D3DXColorAdjustContrast
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC, FLOAT c);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+
+//--------------------------
+// Misc
+//--------------------------
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Calculate Fresnel term given the cosine of theta (likely obtained by
+// taking the dot of two normals), and the refraction index of the material.
+FLOAT WINAPI D3DXFresnelTerm
+ (FLOAT CosTheta, FLOAT RefractionIndex);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+//===========================================================================
+//
+// Matrix Stack
+//
+//===========================================================================
+
+typedef interface ID3DXMatrixStack ID3DXMatrixStack;
+typedef interface ID3DXMatrixStack *LPD3DXMATRIXSTACK;
+
+// {C7885BA7-F990-4fe7-922D-8515E477DD85}
+DEFINE_GUID(IID_ID3DXMatrixStack,
+0xc7885ba7, 0xf990, 0x4fe7, 0x92, 0x2d, 0x85, 0x15, 0xe4, 0x77, 0xdd, 0x85);
+
+
+#undef INTERFACE
+#define INTERFACE ID3DXMatrixStack
+
+DECLARE_INTERFACE_(ID3DXMatrixStack, IUnknown)
+{
+ //
+ // IUnknown methods
+ //
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ //
+ // ID3DXMatrixStack methods
+ //
+
+ // Pops the top of the stack, returns the current top
+ // *after* popping the top.
+ STDMETHOD(Pop)(THIS) PURE;
+
+ // Pushes the stack by one, duplicating the current matrix.
+ STDMETHOD(Push)(THIS) PURE;
+
+ // Loads identity in the current matrix.
+ STDMETHOD(LoadIdentity)(THIS) PURE;
+
+ // Loads the given matrix into the current matrix
+ STDMETHOD(LoadMatrix)(THIS_ CONST D3DXMATRIX* pM ) PURE;
+
+ // Right-Multiplies the given matrix to the current matrix.
+ // (transformation is about the current world origin)
+ STDMETHOD(MultMatrix)(THIS_ CONST D3DXMATRIX* pM ) PURE;
+
+ // Left-Multiplies the given matrix to the current matrix
+ // (transformation is about the local origin of the object)
+ STDMETHOD(MultMatrixLocal)(THIS_ CONST D3DXMATRIX* pM ) PURE;
+
+ // Right multiply the current matrix with the computed rotation
+ // matrix, counterclockwise about the given axis with the given angle.
+ // (rotation is about the current world origin)
+ STDMETHOD(RotateAxis)
+ (THIS_ CONST D3DXVECTOR3* pV, FLOAT Angle) PURE;
+
+ // Left multiply the current matrix with the computed rotation
+ // matrix, counterclockwise about the given axis with the given angle.
+ // (rotation is about the local origin of the object)
+ STDMETHOD(RotateAxisLocal)
+ (THIS_ CONST D3DXVECTOR3* pV, FLOAT Angle) PURE;
+
+ // Right multiply the current matrix with the computed rotation
+ // matrix. All angles are counterclockwise. (rotation is about the
+ // current world origin)
+
+ // The rotation is composed of a yaw around the Y axis, a pitch around
+ // the X axis, and a roll around the Z axis.
+ STDMETHOD(RotateYawPitchRoll)
+ (THIS_ FLOAT Yaw, FLOAT Pitch, FLOAT Roll) PURE;
+
+ // Left multiply the current matrix with the computed rotation
+ // matrix. All angles are counterclockwise. (rotation is about the
+ // local origin of the object)
+
+ // The rotation is composed of a yaw around the Y axis, a pitch around
+ // the X axis, and a roll around the Z axis.
+ STDMETHOD(RotateYawPitchRollLocal)
+ (THIS_ FLOAT Yaw, FLOAT Pitch, FLOAT Roll) PURE;
+
+ // Right multiply the current matrix with the computed scale
+ // matrix. (transformation is about the current world origin)
+ STDMETHOD(Scale)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
+
+ // Left multiply the current matrix with the computed scale
+ // matrix. (transformation is about the local origin of the object)
+ STDMETHOD(ScaleLocal)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
+
+ // Right multiply the current matrix with the computed translation
+ // matrix. (transformation is about the current world origin)
+ STDMETHOD(Translate)(THIS_ FLOAT x, FLOAT y, FLOAT z ) PURE;
+
+ // Left multiply the current matrix with the computed translation
+ // matrix. (transformation is about the local origin of the object)
+ STDMETHOD(TranslateLocal)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
+
+ // Obtain the current matrix at the top of the stack
+ STDMETHOD_(D3DXMATRIX*, GetTop)(THIS) PURE;
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HRESULT WINAPI
+ D3DXCreateMatrixStack(
+ UINT Flags,
+ LPD3DXMATRIXSTACK* ppStack);
+
+#ifdef __cplusplus
+}
+#endif
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//============================================================================
+//
+// Basic Spherical Harmonic math routines
+//
+//============================================================================
+
+#define D3DXSH_MINORDER 2
+#define D3DXSH_MAXORDER 6
+
+//============================================================================
+//
+// D3DXSHEvalDirection:
+// --------------------
+// Evaluates the Spherical Harmonic basis functions
+//
+// Parameters:
+// pOut
+// Output SH coefficients - basis function Ylm is stored at l*l + m+l
+// This is the pointer that is returned.
+// Order
+// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
+// pDir
+// Direction to evaluate in - assumed to be normalized
+//
+//============================================================================
+
+FLOAT* WINAPI D3DXSHEvalDirection
+ ( FLOAT *pOut, UINT Order, CONST D3DXVECTOR3 *pDir );
+
+//============================================================================
+//
+// D3DXSHRotate:
+// --------------------
+// Rotates SH vector by a rotation matrix
+//
+// Parameters:
+// pOut
+// Output SH coefficients - basis function Ylm is stored at l*l + m+l
+// This is the pointer that is returned (should not alias with pIn.)
+// Order
+// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
+// pMatrix
+// Matrix used for rotation - rotation sub matrix should be orthogonal
+// and have a unit determinant.
+// pIn
+// Input SH coeffs (rotated), incorect results if this is also output.
+//
+//============================================================================
+
+FLOAT* WINAPI D3DXSHRotate
+ ( FLOAT *pOut, UINT Order, CONST D3DXMATRIX *pMatrix, CONST FLOAT *pIn );
+
+//============================================================================
+//
+// D3DXSHRotateZ:
+// --------------------
+// Rotates the SH vector in the Z axis by an angle
+//
+// Parameters:
+// pOut
+// Output SH coefficients - basis function Ylm is stored at l*l + m+l
+// This is the pointer that is returned (should not alias with pIn.)
+// Order
+// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
+// Angle
+// Angle in radians to rotate around the Z axis.
+// pIn
+// Input SH coeffs (rotated), incorect results if this is also output.
+//
+//============================================================================
+
+
+FLOAT* WINAPI D3DXSHRotateZ
+ ( FLOAT *pOut, UINT Order, FLOAT Angle, CONST FLOAT *pIn );
+
+//============================================================================
+//
+// D3DXSHAdd:
+// --------------------
+// Adds two SH vectors, pOut[i] = pA[i] + pB[i];
+//
+// Parameters:
+// pOut
+// Output SH coefficients - basis function Ylm is stored at l*l + m+l
+// This is the pointer that is returned.
+// Order
+// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
+// pA
+// Input SH coeffs.
+// pB
+// Input SH coeffs (second vector.)
+//
+//============================================================================
+
+FLOAT* WINAPI D3DXSHAdd
+ ( FLOAT *pOut, UINT Order, CONST FLOAT *pA, CONST FLOAT *pB );
+
+//============================================================================
+//
+// D3DXSHScale:
+// --------------------
+// Adds two SH vectors, pOut[i] = pA[i]*Scale;
+//
+// Parameters:
+// pOut
+// Output SH coefficients - basis function Ylm is stored at l*l + m+l
+// This is the pointer that is returned.
+// Order
+// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
+// pIn
+// Input SH coeffs.
+// Scale
+// Scale factor.
+//
+//============================================================================
+
+FLOAT* WINAPI D3DXSHScale
+ ( FLOAT *pOut, UINT Order, CONST FLOAT *pIn, CONST FLOAT Scale );
+
+//============================================================================
+//
+// D3DXSHDot:
+// --------------------
+// Computes the dot product of two SH vectors
+//
+// Parameters:
+// Order
+// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
+// pA
+// Input SH coeffs.
+// pB
+// Second set of input SH coeffs.
+//
+//============================================================================
+
+FLOAT WINAPI D3DXSHDot
+ ( UINT Order, CONST FLOAT *pA, CONST FLOAT *pB );
+
+//============================================================================
+//
+// Basic Spherical Harmonic lighting routines
+//
+//============================================================================
+
+//============================================================================
+//
+// D3DXSHEvalDirectionalLight:
+// --------------------
+// Evaluates a directional light and returns spectral SH data. The output
+// vector is computed so that if the intensity of R/G/B is unit the resulting
+// exit radiance of a point directly under the light on a diffuse object with
+// an albedo of 1 would be 1.0. This will compute 3 spectral samples, pROut
+// has to be specified, while pGout and pBout are optional.
+//
+// Parameters:
+// Order
+// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
+// pDir
+// Direction light is coming from (assumed to be normalized.)
+// RIntensity
+// Red intensity of light.
+// GIntensity
+// Green intensity of light.
+// BIntensity
+// Blue intensity of light.
+// pROut
+// Output SH vector for Red.
+// pGOut
+// Output SH vector for Green (optional.)
+// pBOut
+// Output SH vector for Blue (optional.)
+//
+//============================================================================
+
+HRESULT WINAPI D3DXSHEvalDirectionalLight
+ ( UINT Order, CONST D3DXVECTOR3 *pDir,
+ FLOAT RIntensity, FLOAT GIntensity, FLOAT BIntensity,
+ FLOAT *pROut, FLOAT *pGOut, FLOAT *pBOut );
+
+//============================================================================
+//
+// D3DXSHEvalSphericalLight:
+// --------------------
+// Evaluates a spherical light and returns spectral SH data. There is no
+// normalization of the intensity of the light like there is for directional
+// lights, care has to be taken when specifiying the intensities. This will
+// compute 3 spectral samples, pROut has to be specified, while pGout and
+// pBout are optional.
+//
+// Parameters:
+// Order
+// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
+// pPos
+// Position of light - reciever is assumed to be at the origin.
+// Radius
+// Radius of the spherical light source.
+// RIntensity
+// Red intensity of light.
+// GIntensity
+// Green intensity of light.
+// BIntensity
+// Blue intensity of light.
+// pROut
+// Output SH vector for Red.
+// pGOut
+// Output SH vector for Green (optional.)
+// pBOut
+// Output SH vector for Blue (optional.)
+//
+//============================================================================
+
+HRESULT WINAPI D3DXSHEvalSphericalLight
+ ( UINT Order, CONST D3DXVECTOR3 *pPos, FLOAT Radius,
+ FLOAT RIntensity, FLOAT GIntensity, FLOAT BIntensity,
+ FLOAT *pROut, FLOAT *pGOut, FLOAT *pBOut );
+
+//============================================================================
+//
+// D3DXSHEvalConeLight:
+// --------------------
+// Evaluates a light that is a cone of constant intensity and returns spectral
+// SH data. The output vector is computed so that if the intensity of R/G/B is
+// unit the resulting exit radiance of a point directly under the light oriented
+// in the cone direction on a diffuse object with an albedo of 1 would be 1.0.
+// This will compute 3 spectral samples, pROut has to be specified, while pGout
+// and pBout are optional.
+//
+// Parameters:
+// Order
+// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
+// pDir
+// Direction light is coming from (assumed to be normalized.)
+// Radius
+// Radius of cone in radians.
+// RIntensity
+// Red intensity of light.
+// GIntensity
+// Green intensity of light.
+// BIntensity
+// Blue intensity of light.
+// pROut
+// Output SH vector for Red.
+// pGOut
+// Output SH vector for Green (optional.)
+// pBOut
+// Output SH vector for Blue (optional.)
+//
+//============================================================================
+
+HRESULT WINAPI D3DXSHEvalConeLight
+ ( UINT Order, CONST D3DXVECTOR3 *pDir, FLOAT Radius,
+ FLOAT RIntensity, FLOAT GIntensity, FLOAT BIntensity,
+ FLOAT *pROut, FLOAT *pGOut, FLOAT *pBOut );
+
+//============================================================================
+//
+// D3DXSHEvalHemisphereLight:
+// --------------------
+// Evaluates a light that is a linear interpolant between two colors over the
+// sphere. The interpolant is linear along the axis of the two points, not
+// over the surface of the sphere (ie: if the axis was (0,0,1) it is linear in
+// Z, not in the azimuthal angle.) The resulting spherical lighting function
+// is normalized so that a point on a perfectly diffuse surface with no
+// shadowing and a normal pointed in the direction pDir would result in exit
+// radiance with a value of 1 if the top color was white and the bottom color
+// was black. This is a very simple model where Top represents the intensity
+// of the "sky" and Bottom represents the intensity of the "ground".
+//
+// Parameters:
+// Order
+// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
+// pDir
+// Axis of the hemisphere.
+// Top
+// Color of the upper hemisphere.
+// Bottom
+// Color of the lower hemisphere.
+// pROut
+// Output SH vector for Red.
+// pGOut
+// Output SH vector for Green
+// pBOut
+// Output SH vector for Blue
+//
+//============================================================================
+
+HRESULT WINAPI D3DXSHEvalHemisphereLight
+ ( UINT Order, CONST D3DXVECTOR3 *pDir, D3DXCOLOR Top, D3DXCOLOR Bottom,
+ FLOAT *pROut, FLOAT *pGOut, FLOAT *pBOut );
+
+// Math intersection functions
+
+BOOL WINAPI D3DXIntersectTri
+(
+ CONST D3DXVECTOR3 *p0, // Triangle vertex 0 position
+ CONST D3DXVECTOR3 *p1, // Triangle vertex 1 position
+ CONST D3DXVECTOR3 *p2, // Triangle vertex 2 position
+ CONST D3DXVECTOR3 *pRayPos, // Ray origin
+ CONST D3DXVECTOR3 *pRayDir, // Ray direction
+ FLOAT *pU, // Barycentric Hit Coordinates
+ FLOAT *pV, // Barycentric Hit Coordinates
+ FLOAT *pDist); // Ray-Intersection Parameter Distance
+
+BOOL WINAPI
+ D3DXSphereBoundProbe(
+ CONST D3DXVECTOR3 *pCenter,
+ FLOAT Radius,
+ CONST D3DXVECTOR3 *pRayPosition,
+ CONST D3DXVECTOR3 *pRayDirection);
+
+BOOL WINAPI
+ D3DXBoxBoundProbe(
+ CONST D3DXVECTOR3 *pMin,
+ CONST D3DXVECTOR3 *pMax,
+ CONST D3DXVECTOR3 *pRayPosition,
+ CONST D3DXVECTOR3 *pRayDirection);
+
+HRESULT WINAPI
+ D3DXComputeBoundingSphere(
+ CONST D3DXVECTOR3 *pFirstPosition, // pointer to first position
+ DWORD NumVertices,
+ DWORD dwStride, // count in bytes to subsequent position vectors
+ D3DXVECTOR3 *pCenter,
+ FLOAT *pRadius);
+
+HRESULT WINAPI
+ D3DXComputeBoundingBox(
+ CONST D3DXVECTOR3 *pFirstPosition, // pointer to first position
+ DWORD NumVertices,
+ DWORD dwStride, // count in bytes to subsequent position vectors
+ D3DXVECTOR3 *pMin,
+ D3DXVECTOR3 *pMax);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#include "D3DX10math.inl"
+
+#if _MSC_VER >= 1200
+#pragma warning(pop)
+#else
+#pragma warning(default:4201)
+#endif
+
+#endif // __D3DX9MATH_H__
+
diff --git a/src/dep/include/DXSDK/include/D3DX10math.inl b/src/dep/include/DXSDK/include/D3DX10math.inl
new file mode 100644
index 0000000..ac31b8a
--- /dev/null
+++ b/src/dep/include/DXSDK/include/D3DX10math.inl
@@ -0,0 +1,2208 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dx10math.inl
+// Content: D3DX10 math inline functions
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef __D3DXMATH_INL__
+#define __D3DXMATH_INL__
+
+
+//===========================================================================
+//
+// Inline Class Methods
+//
+//===========================================================================
+
+#ifdef __cplusplus
+
+//--------------------------
+// Float16
+//--------------------------
+
+D3DX10INLINE
+D3DXFLOAT16::D3DXFLOAT16( FLOAT f )
+{
+ D3DXFloat32To16Array(this, &f, 1);
+}
+
+D3DX10INLINE
+D3DXFLOAT16::D3DXFLOAT16( CONST D3DXFLOAT16& f )
+{
+ value = f.value;
+}
+
+// casting
+D3DX10INLINE
+D3DXFLOAT16::operator FLOAT ()
+{
+ FLOAT f;
+ D3DXFloat16To32Array(&f, this, 1);
+ return f;
+}
+
+// binary operators
+D3DX10INLINE BOOL
+D3DXFLOAT16::operator == ( CONST D3DXFLOAT16& f ) const
+{
+ return value == f.value;
+}
+
+D3DX10INLINE BOOL
+D3DXFLOAT16::operator != ( CONST D3DXFLOAT16& f ) const
+{
+ return value != f.value;
+}
+
+
+//--------------------------
+// 2D Vector
+//--------------------------
+
+D3DX10INLINE
+D3DXVECTOR2::D3DXVECTOR2( CONST FLOAT *pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ x = pf[0];
+ y = pf[1];
+}
+
+D3DX10INLINE
+D3DXVECTOR2::D3DXVECTOR2( CONST D3DXFLOAT16 *pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ D3DXFloat16To32Array(&x, pf, 2);
+}
+
+D3DX10INLINE
+D3DXVECTOR2::D3DXVECTOR2( FLOAT fx, FLOAT fy )
+{
+ x = fx;
+ y = fy;
+}
+
+
+// casting
+D3DX10INLINE
+D3DXVECTOR2::operator FLOAT* ()
+{
+ return (FLOAT *) &x;
+}
+
+D3DX10INLINE
+D3DXVECTOR2::operator CONST FLOAT* () const
+{
+ return (CONST FLOAT *) &x;
+}
+
+
+// assignment operators
+D3DX10INLINE D3DXVECTOR2&
+D3DXVECTOR2::operator += ( CONST D3DXVECTOR2& v )
+{
+ x += v.x;
+ y += v.y;
+ return *this;
+}
+
+D3DX10INLINE D3DXVECTOR2&
+D3DXVECTOR2::operator -= ( CONST D3DXVECTOR2& v )
+{
+ x -= v.x;
+ y -= v.y;
+ return *this;
+}
+
+D3DX10INLINE D3DXVECTOR2&
+D3DXVECTOR2::operator *= ( FLOAT f )
+{
+ x *= f;
+ y *= f;
+ return *this;
+}
+
+D3DX10INLINE D3DXVECTOR2&
+D3DXVECTOR2::operator /= ( FLOAT f )
+{
+ FLOAT fInv = 1.0f / f;
+ x *= fInv;
+ y *= fInv;
+ return *this;
+}
+
+
+// unary operators
+D3DX10INLINE D3DXVECTOR2
+D3DXVECTOR2::operator + () const
+{
+ return *this;
+}
+
+D3DX10INLINE D3DXVECTOR2
+D3DXVECTOR2::operator - () const
+{
+ return D3DXVECTOR2(-x, -y);
+}
+
+
+// binary operators
+D3DX10INLINE D3DXVECTOR2
+D3DXVECTOR2::operator + ( CONST D3DXVECTOR2& v ) const
+{
+ return D3DXVECTOR2(x + v.x, y + v.y);
+}
+
+D3DX10INLINE D3DXVECTOR2
+D3DXVECTOR2::operator - ( CONST D3DXVECTOR2& v ) const
+{
+ return D3DXVECTOR2(x - v.x, y - v.y);
+}
+
+D3DX10INLINE D3DXVECTOR2
+D3DXVECTOR2::operator * ( FLOAT f ) const
+{
+ return D3DXVECTOR2(x * f, y * f);
+}
+
+D3DX10INLINE D3DXVECTOR2
+D3DXVECTOR2::operator / ( FLOAT f ) const
+{
+ FLOAT fInv = 1.0f / f;
+ return D3DXVECTOR2(x * fInv, y * fInv);
+}
+
+D3DX10INLINE D3DXVECTOR2
+operator * ( FLOAT f, CONST D3DXVECTOR2& v )
+{
+ return D3DXVECTOR2(f * v.x, f * v.y);
+}
+
+D3DX10INLINE BOOL
+D3DXVECTOR2::operator == ( CONST D3DXVECTOR2& v ) const
+{
+ return x == v.x && y == v.y;
+}
+
+D3DX10INLINE BOOL
+D3DXVECTOR2::operator != ( CONST D3DXVECTOR2& v ) const
+{
+ return x != v.x || y != v.y;
+}
+
+
+
+//--------------------------
+// 2D Vector (16 bit)
+//--------------------------
+
+D3DX10INLINE
+D3DXVECTOR2_16F::D3DXVECTOR2_16F( CONST FLOAT *pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ D3DXFloat32To16Array(&x, pf, 2);
+}
+
+D3DX10INLINE
+D3DXVECTOR2_16F::D3DXVECTOR2_16F( CONST D3DXFLOAT16 *pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ *((UINT *) &x) = *((UINT *) &pf[0]);
+}
+
+D3DX10INLINE
+D3DXVECTOR2_16F::D3DXVECTOR2_16F( CONST D3DXFLOAT16 &fx, CONST D3DXFLOAT16 &fy )
+{
+ x = fx;
+ y = fy;
+}
+
+
+// casting
+D3DX10INLINE
+D3DXVECTOR2_16F::operator D3DXFLOAT16* ()
+{
+ return (D3DXFLOAT16*) &x;
+}
+
+D3DX10INLINE
+D3DXVECTOR2_16F::operator CONST D3DXFLOAT16* () const
+{
+ return (CONST D3DXFLOAT16*) &x;
+}
+
+
+// binary operators
+D3DX10INLINE BOOL
+D3DXVECTOR2_16F::operator == ( CONST D3DXVECTOR2_16F &v ) const
+{
+ return *((UINT *) &x) == *((UINT *) &v.x);
+}
+
+D3DX10INLINE BOOL
+D3DXVECTOR2_16F::operator != ( CONST D3DXVECTOR2_16F &v ) const
+{
+ return *((UINT *) &x) != *((UINT *) &v.x);
+}
+
+
+//--------------------------
+// 3D Vector
+//--------------------------
+D3DX10INLINE
+D3DXVECTOR3::D3DXVECTOR3( CONST FLOAT *pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ x = pf[0];
+ y = pf[1];
+ z = pf[2];
+}
+
+D3DX10INLINE
+D3DXVECTOR3::D3DXVECTOR3( CONST D3DVECTOR& v )
+{
+ x = v.x;
+ y = v.y;
+ z = v.z;
+}
+
+D3DX10INLINE
+D3DXVECTOR3::D3DXVECTOR3( CONST D3DXFLOAT16 *pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ D3DXFloat16To32Array(&x, pf, 3);
+}
+
+D3DX10INLINE
+D3DXVECTOR3::D3DXVECTOR3( FLOAT fx, FLOAT fy, FLOAT fz )
+{
+ x = fx;
+ y = fy;
+ z = fz;
+}
+
+
+// casting
+D3DX10INLINE
+D3DXVECTOR3::operator FLOAT* ()
+{
+ return (FLOAT *) &x;
+}
+
+D3DX10INLINE
+D3DXVECTOR3::operator CONST FLOAT* () const
+{
+ return (CONST FLOAT *) &x;
+}
+
+
+// assignment operators
+D3DX10INLINE D3DXVECTOR3&
+D3DXVECTOR3::operator += ( CONST D3DXVECTOR3& v )
+{
+ x += v.x;
+ y += v.y;
+ z += v.z;
+ return *this;
+}
+
+D3DX10INLINE D3DXVECTOR3&
+D3DXVECTOR3::operator -= ( CONST D3DXVECTOR3& v )
+{
+ x -= v.x;
+ y -= v.y;
+ z -= v.z;
+ return *this;
+}
+
+D3DX10INLINE D3DXVECTOR3&
+D3DXVECTOR3::operator *= ( FLOAT f )
+{
+ x *= f;
+ y *= f;
+ z *= f;
+ return *this;
+}
+
+D3DX10INLINE D3DXVECTOR3&
+D3DXVECTOR3::operator /= ( FLOAT f )
+{
+ FLOAT fInv = 1.0f / f;
+ x *= fInv;
+ y *= fInv;
+ z *= fInv;
+ return *this;
+}
+
+
+// unary operators
+D3DX10INLINE D3DXVECTOR3
+D3DXVECTOR3::operator + () const
+{
+ return *this;
+}
+
+D3DX10INLINE D3DXVECTOR3
+D3DXVECTOR3::operator - () const
+{
+ return D3DXVECTOR3(-x, -y, -z);
+}
+
+
+// binary operators
+D3DX10INLINE D3DXVECTOR3
+D3DXVECTOR3::operator + ( CONST D3DXVECTOR3& v ) const
+{
+ return D3DXVECTOR3(x + v.x, y + v.y, z + v.z);
+}
+
+D3DX10INLINE D3DXVECTOR3
+D3DXVECTOR3::operator - ( CONST D3DXVECTOR3& v ) const
+{
+ return D3DXVECTOR3(x - v.x, y - v.y, z - v.z);
+}
+
+D3DX10INLINE D3DXVECTOR3
+D3DXVECTOR3::operator * ( FLOAT f ) const
+{
+ return D3DXVECTOR3(x * f, y * f, z * f);
+}
+
+D3DX10INLINE D3DXVECTOR3
+D3DXVECTOR3::operator / ( FLOAT f ) const
+{
+ FLOAT fInv = 1.0f / f;
+ return D3DXVECTOR3(x * fInv, y * fInv, z * fInv);
+}
+
+
+D3DX10INLINE D3DXVECTOR3
+operator * ( FLOAT f, CONST struct D3DXVECTOR3& v )
+{
+ return D3DXVECTOR3(f * v.x, f * v.y, f * v.z);
+}
+
+
+D3DX10INLINE BOOL
+D3DXVECTOR3::operator == ( CONST D3DXVECTOR3& v ) const
+{
+ return x == v.x && y == v.y && z == v.z;
+}
+
+D3DX10INLINE BOOL
+D3DXVECTOR3::operator != ( CONST D3DXVECTOR3& v ) const
+{
+ return x != v.x || y != v.y || z != v.z;
+}
+
+
+
+//--------------------------
+// 3D Vector (16 bit)
+//--------------------------
+
+D3DX10INLINE
+D3DXVECTOR3_16F::D3DXVECTOR3_16F( CONST FLOAT *pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ D3DXFloat32To16Array(&x, pf, 3);
+}
+
+D3DX10INLINE
+D3DXVECTOR3_16F::D3DXVECTOR3_16F( CONST D3DVECTOR& v )
+{
+ D3DXFloat32To16Array(&x, &v.x, 1);
+ D3DXFloat32To16Array(&y, &v.y, 1);
+ D3DXFloat32To16Array(&z, &v.z, 1);
+}
+
+D3DX10INLINE
+D3DXVECTOR3_16F::D3DXVECTOR3_16F( CONST D3DXFLOAT16 *pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ *((UINT *) &x) = *((UINT *) &pf[0]);
+ *((WORD *) &z) = *((WORD *) &pf[2]);
+}
+
+D3DX10INLINE
+D3DXVECTOR3_16F::D3DXVECTOR3_16F( CONST D3DXFLOAT16 &fx, CONST D3DXFLOAT16 &fy, CONST D3DXFLOAT16 &fz )
+{
+ x = fx;
+ y = fy;
+ z = fz;
+}
+
+
+// casting
+D3DX10INLINE
+D3DXVECTOR3_16F::operator D3DXFLOAT16* ()
+{
+ return (D3DXFLOAT16*) &x;
+}
+
+D3DX10INLINE
+D3DXVECTOR3_16F::operator CONST D3DXFLOAT16* () const
+{
+ return (CONST D3DXFLOAT16*) &x;
+}
+
+
+// binary operators
+D3DX10INLINE BOOL
+D3DXVECTOR3_16F::operator == ( CONST D3DXVECTOR3_16F &v ) const
+{
+ return *((UINT *) &x) == *((UINT *) &v.x) &&
+ *((WORD *) &z) == *((WORD *) &v.z);
+}
+
+D3DX10INLINE BOOL
+D3DXVECTOR3_16F::operator != ( CONST D3DXVECTOR3_16F &v ) const
+{
+ return *((UINT *) &x) != *((UINT *) &v.x) ||
+ *((WORD *) &z) != *((WORD *) &v.z);
+}
+
+
+//--------------------------
+// 4D Vector
+//--------------------------
+D3DX10INLINE
+D3DXVECTOR4::D3DXVECTOR4( CONST FLOAT *pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ x = pf[0];
+ y = pf[1];
+ z = pf[2];
+ w = pf[3];
+}
+
+D3DX10INLINE
+D3DXVECTOR4::D3DXVECTOR4( CONST D3DXFLOAT16 *pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ D3DXFloat16To32Array(&x, pf, 4);
+}
+
+D3DX10INLINE
+D3DXVECTOR4::D3DXVECTOR4( CONST D3DVECTOR& v, FLOAT f )
+{
+ x = v.x;
+ y = v.y;
+ z = v.z;
+ w = f;
+}
+
+D3DX10INLINE
+D3DXVECTOR4::D3DXVECTOR4( FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw )
+{
+ x = fx;
+ y = fy;
+ z = fz;
+ w = fw;
+}
+
+
+// casting
+D3DX10INLINE
+D3DXVECTOR4::operator FLOAT* ()
+{
+ return (FLOAT *) &x;
+}
+
+D3DX10INLINE
+D3DXVECTOR4::operator CONST FLOAT* () const
+{
+ return (CONST FLOAT *) &x;
+}
+
+
+// assignment operators
+D3DX10INLINE D3DXVECTOR4&
+D3DXVECTOR4::operator += ( CONST D3DXVECTOR4& v )
+{
+ x += v.x;
+ y += v.y;
+ z += v.z;
+ w += v.w;
+ return *this;
+}
+
+D3DX10INLINE D3DXVECTOR4&
+D3DXVECTOR4::operator -= ( CONST D3DXVECTOR4& v )
+{
+ x -= v.x;
+ y -= v.y;
+ z -= v.z;
+ w -= v.w;
+ return *this;
+}
+
+D3DX10INLINE D3DXVECTOR4&
+D3DXVECTOR4::operator *= ( FLOAT f )
+{
+ x *= f;
+ y *= f;
+ z *= f;
+ w *= f;
+ return *this;
+}
+
+D3DX10INLINE D3DXVECTOR4&
+D3DXVECTOR4::operator /= ( FLOAT f )
+{
+ FLOAT fInv = 1.0f / f;
+ x *= fInv;
+ y *= fInv;
+ z *= fInv;
+ w *= fInv;
+ return *this;
+}
+
+
+// unary operators
+D3DX10INLINE D3DXVECTOR4
+D3DXVECTOR4::operator + () const
+{
+ return *this;
+}
+
+D3DX10INLINE D3DXVECTOR4
+D3DXVECTOR4::operator - () const
+{
+ return D3DXVECTOR4(-x, -y, -z, -w);
+}
+
+
+// binary operators
+D3DX10INLINE D3DXVECTOR4
+D3DXVECTOR4::operator + ( CONST D3DXVECTOR4& v ) const
+{
+ return D3DXVECTOR4(x + v.x, y + v.y, z + v.z, w + v.w);
+}
+
+D3DX10INLINE D3DXVECTOR4
+D3DXVECTOR4::operator - ( CONST D3DXVECTOR4& v ) const
+{
+ return D3DXVECTOR4(x - v.x, y - v.y, z - v.z, w - v.w);
+}
+
+D3DX10INLINE D3DXVECTOR4
+D3DXVECTOR4::operator * ( FLOAT f ) const
+{
+ return D3DXVECTOR4(x * f, y * f, z * f, w * f);
+}
+
+D3DX10INLINE D3DXVECTOR4
+D3DXVECTOR4::operator / ( FLOAT f ) const
+{
+ FLOAT fInv = 1.0f / f;
+ return D3DXVECTOR4(x * fInv, y * fInv, z * fInv, w * fInv);
+}
+
+D3DX10INLINE D3DXVECTOR4
+operator * ( FLOAT f, CONST D3DXVECTOR4& v )
+{
+ return D3DXVECTOR4(f * v.x, f * v.y, f * v.z, f * v.w);
+}
+
+
+D3DX10INLINE BOOL
+D3DXVECTOR4::operator == ( CONST D3DXVECTOR4& v ) const
+{
+ return x == v.x && y == v.y && z == v.z && w == v.w;
+}
+
+D3DX10INLINE BOOL
+D3DXVECTOR4::operator != ( CONST D3DXVECTOR4& v ) const
+{
+ return x != v.x || y != v.y || z != v.z || w != v.w;
+}
+
+
+
+//--------------------------
+// 4D Vector (16 bit)
+//--------------------------
+
+D3DX10INLINE
+D3DXVECTOR4_16F::D3DXVECTOR4_16F( CONST FLOAT *pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ D3DXFloat32To16Array(&x, pf, 4);
+}
+
+D3DX10INLINE
+D3DXVECTOR4_16F::D3DXVECTOR4_16F( CONST D3DXFLOAT16 *pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ *((UINT *) &x) = *((UINT *) &pf[0]);
+ *((UINT *) &z) = *((UINT *) &pf[2]);
+}
+
+D3DX10INLINE
+D3DXVECTOR4_16F::D3DXVECTOR4_16F( CONST D3DXVECTOR3_16F& v, CONST D3DXFLOAT16& f )
+{
+ x = v.x;
+ y = v.y;
+ z = v.z;
+ w = f;
+}
+
+D3DX10INLINE
+D3DXVECTOR4_16F::D3DXVECTOR4_16F( CONST D3DXFLOAT16 &fx, CONST D3DXFLOAT16 &fy, CONST D3DXFLOAT16 &fz, CONST D3DXFLOAT16 &fw )
+{
+ x = fx;
+ y = fy;
+ z = fz;
+ w = fw;
+}
+
+
+// casting
+D3DX10INLINE
+D3DXVECTOR4_16F::operator D3DXFLOAT16* ()
+{
+ return (D3DXFLOAT16*) &x;
+}
+
+D3DX10INLINE
+D3DXVECTOR4_16F::operator CONST D3DXFLOAT16* () const
+{
+ return (CONST D3DXFLOAT16*) &x;
+}
+
+
+// binary operators
+D3DX10INLINE BOOL
+D3DXVECTOR4_16F::operator == ( CONST D3DXVECTOR4_16F &v ) const
+{
+ return *((UINT *) &x) == *((UINT *) &v.x) &&
+ *((UINT *) &z) == *((UINT *) &v.z);
+}
+
+D3DX10INLINE BOOL
+D3DXVECTOR4_16F::operator != ( CONST D3DXVECTOR4_16F &v ) const
+{
+ return *((UINT *) &x) != *((UINT *) &v.x) ||
+ *((UINT *) &z) != *((UINT *) &v.z);
+}
+
+
+//--------------------------
+// Matrix
+//--------------------------
+D3DX10INLINE
+D3DXMATRIX::D3DXMATRIX( CONST FLOAT* pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ memcpy(&_11, pf, sizeof(D3DXMATRIX));
+}
+
+D3DX10INLINE
+D3DXMATRIX::D3DXMATRIX( CONST D3DMATRIX& mat )
+{
+ memcpy(&_11, &mat, sizeof(D3DXMATRIX));
+}
+
+D3DX10INLINE
+D3DXMATRIX::D3DXMATRIX( CONST D3DXFLOAT16* pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ D3DXFloat16To32Array(&_11, pf, 16);
+}
+
+D3DX10INLINE
+D3DXMATRIX::D3DXMATRIX( FLOAT f11, FLOAT f12, FLOAT f13, FLOAT f14,
+ FLOAT f21, FLOAT f22, FLOAT f23, FLOAT f24,
+ FLOAT f31, FLOAT f32, FLOAT f33, FLOAT f34,
+ FLOAT f41, FLOAT f42, FLOAT f43, FLOAT f44 )
+{
+ _11 = f11; _12 = f12; _13 = f13; _14 = f14;
+ _21 = f21; _22 = f22; _23 = f23; _24 = f24;
+ _31 = f31; _32 = f32; _33 = f33; _34 = f34;
+ _41 = f41; _42 = f42; _43 = f43; _44 = f44;
+}
+
+
+
+// access grants
+D3DX10INLINE FLOAT&
+D3DXMATRIX::operator () ( UINT iRow, UINT iCol )
+{
+ return m[iRow][iCol];
+}
+
+D3DX10INLINE FLOAT
+D3DXMATRIX::operator () ( UINT iRow, UINT iCol ) const
+{
+ return m[iRow][iCol];
+}
+
+
+// casting operators
+D3DX10INLINE
+D3DXMATRIX::operator FLOAT* ()
+{
+ return (FLOAT *) &_11;
+}
+
+D3DX10INLINE
+D3DXMATRIX::operator CONST FLOAT* () const
+{
+ return (CONST FLOAT *) &_11;
+}
+
+
+// assignment operators
+D3DX10INLINE D3DXMATRIX&
+D3DXMATRIX::operator *= ( CONST D3DXMATRIX& mat )
+{
+ D3DXMatrixMultiply(this, this, &mat);
+ return *this;
+}
+
+D3DX10INLINE D3DXMATRIX&
+D3DXMATRIX::operator += ( CONST D3DXMATRIX& mat )
+{
+ _11 += mat._11; _12 += mat._12; _13 += mat._13; _14 += mat._14;
+ _21 += mat._21; _22 += mat._22; _23 += mat._23; _24 += mat._24;
+ _31 += mat._31; _32 += mat._32; _33 += mat._33; _34 += mat._34;
+ _41 += mat._41; _42 += mat._42; _43 += mat._43; _44 += mat._44;
+ return *this;
+}
+
+D3DX10INLINE D3DXMATRIX&
+D3DXMATRIX::operator -= ( CONST D3DXMATRIX& mat )
+{
+ _11 -= mat._11; _12 -= mat._12; _13 -= mat._13; _14 -= mat._14;
+ _21 -= mat._21; _22 -= mat._22; _23 -= mat._23; _24 -= mat._24;
+ _31 -= mat._31; _32 -= mat._32; _33 -= mat._33; _34 -= mat._34;
+ _41 -= mat._41; _42 -= mat._42; _43 -= mat._43; _44 -= mat._44;
+ return *this;
+}
+
+D3DX10INLINE D3DXMATRIX&
+D3DXMATRIX::operator *= ( FLOAT f )
+{
+ _11 *= f; _12 *= f; _13 *= f; _14 *= f;
+ _21 *= f; _22 *= f; _23 *= f; _24 *= f;
+ _31 *= f; _32 *= f; _33 *= f; _34 *= f;
+ _41 *= f; _42 *= f; _43 *= f; _44 *= f;
+ return *this;
+}
+
+D3DX10INLINE D3DXMATRIX&
+D3DXMATRIX::operator /= ( FLOAT f )
+{
+ FLOAT fInv = 1.0f / f;
+ _11 *= fInv; _12 *= fInv; _13 *= fInv; _14 *= fInv;
+ _21 *= fInv; _22 *= fInv; _23 *= fInv; _24 *= fInv;
+ _31 *= fInv; _32 *= fInv; _33 *= fInv; _34 *= fInv;
+ _41 *= fInv; _42 *= fInv; _43 *= fInv; _44 *= fInv;
+ return *this;
+}
+
+
+// unary operators
+D3DX10INLINE D3DXMATRIX
+D3DXMATRIX::operator + () const
+{
+ return *this;
+}
+
+D3DX10INLINE D3DXMATRIX
+D3DXMATRIX::operator - () const
+{
+ return D3DXMATRIX(-_11, -_12, -_13, -_14,
+ -_21, -_22, -_23, -_24,
+ -_31, -_32, -_33, -_34,
+ -_41, -_42, -_43, -_44);
+}
+
+
+// binary operators
+D3DX10INLINE D3DXMATRIX
+D3DXMATRIX::operator * ( CONST D3DXMATRIX& mat ) const
+{
+ D3DXMATRIX matT;
+ D3DXMatrixMultiply(&matT, this, &mat);
+ return matT;
+}
+
+D3DX10INLINE D3DXMATRIX
+D3DXMATRIX::operator + ( CONST D3DXMATRIX& mat ) const
+{
+ return D3DXMATRIX(_11 + mat._11, _12 + mat._12, _13 + mat._13, _14 + mat._14,
+ _21 + mat._21, _22 + mat._22, _23 + mat._23, _24 + mat._24,
+ _31 + mat._31, _32 + mat._32, _33 + mat._33, _34 + mat._34,
+ _41 + mat._41, _42 + mat._42, _43 + mat._43, _44 + mat._44);
+}
+
+D3DX10INLINE D3DXMATRIX
+D3DXMATRIX::operator - ( CONST D3DXMATRIX& mat ) const
+{
+ return D3DXMATRIX(_11 - mat._11, _12 - mat._12, _13 - mat._13, _14 - mat._14,
+ _21 - mat._21, _22 - mat._22, _23 - mat._23, _24 - mat._24,
+ _31 - mat._31, _32 - mat._32, _33 - mat._33, _34 - mat._34,
+ _41 - mat._41, _42 - mat._42, _43 - mat._43, _44 - mat._44);
+}
+
+D3DX10INLINE D3DXMATRIX
+D3DXMATRIX::operator * ( FLOAT f ) const
+{
+ return D3DXMATRIX(_11 * f, _12 * f, _13 * f, _14 * f,
+ _21 * f, _22 * f, _23 * f, _24 * f,
+ _31 * f, _32 * f, _33 * f, _34 * f,
+ _41 * f, _42 * f, _43 * f, _44 * f);
+}
+
+D3DX10INLINE D3DXMATRIX
+D3DXMATRIX::operator / ( FLOAT f ) const
+{
+ FLOAT fInv = 1.0f / f;
+ return D3DXMATRIX(_11 * fInv, _12 * fInv, _13 * fInv, _14 * fInv,
+ _21 * fInv, _22 * fInv, _23 * fInv, _24 * fInv,
+ _31 * fInv, _32 * fInv, _33 * fInv, _34 * fInv,
+ _41 * fInv, _42 * fInv, _43 * fInv, _44 * fInv);
+}
+
+
+D3DX10INLINE D3DXMATRIX
+operator * ( FLOAT f, CONST D3DXMATRIX& mat )
+{
+ return D3DXMATRIX(f * mat._11, f * mat._12, f * mat._13, f * mat._14,
+ f * mat._21, f * mat._22, f * mat._23, f * mat._24,
+ f * mat._31, f * mat._32, f * mat._33, f * mat._34,
+ f * mat._41, f * mat._42, f * mat._43, f * mat._44);
+}
+
+
+D3DX10INLINE BOOL
+D3DXMATRIX::operator == ( CONST D3DXMATRIX& mat ) const
+{
+ return 0 == memcmp(this, &mat, sizeof(D3DXMATRIX));
+}
+
+D3DX10INLINE BOOL
+D3DXMATRIX::operator != ( CONST D3DXMATRIX& mat ) const
+{
+ return 0 != memcmp(this, &mat, sizeof(D3DXMATRIX));
+}
+
+
+
+//--------------------------
+// Aligned Matrices
+//--------------------------
+
+D3DX10INLINE
+_D3DXMATRIXA16::_D3DXMATRIXA16( CONST FLOAT* f ) :
+ D3DXMATRIX( f )
+{
+}
+
+D3DX10INLINE
+_D3DXMATRIXA16::_D3DXMATRIXA16( CONST D3DMATRIX& m ) :
+ D3DXMATRIX( m )
+{
+}
+
+D3DX10INLINE
+_D3DXMATRIXA16::_D3DXMATRIXA16( CONST D3DXFLOAT16* f ) :
+ D3DXMATRIX( f )
+{
+}
+
+D3DX10INLINE
+_D3DXMATRIXA16::_D3DXMATRIXA16( FLOAT _11, FLOAT _12, FLOAT _13, FLOAT _14,
+ FLOAT _21, FLOAT _22, FLOAT _23, FLOAT _24,
+ FLOAT _31, FLOAT _32, FLOAT _33, FLOAT _34,
+ FLOAT _41, FLOAT _42, FLOAT _43, FLOAT _44 ) :
+ D3DXMATRIX(_11, _12, _13, _14,
+ _21, _22, _23, _24,
+ _31, _32, _33, _34,
+ _41, _42, _43, _44)
+{
+}
+
+D3DX10INLINE void*
+_D3DXMATRIXA16::operator new( size_t s )
+{
+ LPBYTE p = ::new BYTE[s + 16];
+ if (p)
+ {
+ BYTE offset = (BYTE)(16 - ((UINT_PTR)p & 15));
+ p += offset;
+ p[-1] = offset;
+ }
+ return p;
+}
+
+D3DX10INLINE void*
+_D3DXMATRIXA16::operator new[]( size_t s )
+{
+ LPBYTE p = ::new BYTE[s + 16];
+ if (p)
+ {
+ BYTE offset = (BYTE)(16 - ((UINT_PTR)p & 15));
+ p += offset;
+ p[-1] = offset;
+ }
+ return p;
+}
+
+D3DX10INLINE void
+_D3DXMATRIXA16::operator delete(void* p)
+{
+ if(p)
+ {
+ BYTE* pb = static_cast(p);
+ pb -= pb[-1];
+ ::delete [] pb;
+ }
+}
+
+D3DX10INLINE void
+_D3DXMATRIXA16::operator delete[](void* p)
+{
+ if(p)
+ {
+ BYTE* pb = static_cast(p);
+ pb -= pb[-1];
+ ::delete [] pb;
+ }
+}
+
+D3DX10INLINE _D3DXMATRIXA16&
+_D3DXMATRIXA16::operator=(CONST D3DXMATRIX& rhs)
+{
+ memcpy(&_11, &rhs, sizeof(D3DXMATRIX));
+ return *this;
+}
+
+
+//--------------------------
+// Quaternion
+//--------------------------
+
+D3DX10INLINE
+D3DXQUATERNION::D3DXQUATERNION( CONST FLOAT* pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ x = pf[0];
+ y = pf[1];
+ z = pf[2];
+ w = pf[3];
+}
+
+D3DX10INLINE
+D3DXQUATERNION::D3DXQUATERNION( CONST D3DXFLOAT16* pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ D3DXFloat16To32Array(&x, pf, 4);
+}
+
+D3DX10INLINE
+D3DXQUATERNION::D3DXQUATERNION( FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw )
+{
+ x = fx;
+ y = fy;
+ z = fz;
+ w = fw;
+}
+
+
+// casting
+D3DX10INLINE
+D3DXQUATERNION::operator FLOAT* ()
+{
+ return (FLOAT *) &x;
+}
+
+D3DX10INLINE
+D3DXQUATERNION::operator CONST FLOAT* () const
+{
+ return (CONST FLOAT *) &x;
+}
+
+
+// assignment operators
+D3DX10INLINE D3DXQUATERNION&
+D3DXQUATERNION::operator += ( CONST D3DXQUATERNION& q )
+{
+ x += q.x;
+ y += q.y;
+ z += q.z;
+ w += q.w;
+ return *this;
+}
+
+D3DX10INLINE D3DXQUATERNION&
+D3DXQUATERNION::operator -= ( CONST D3DXQUATERNION& q )
+{
+ x -= q.x;
+ y -= q.y;
+ z -= q.z;
+ w -= q.w;
+ return *this;
+}
+
+D3DX10INLINE D3DXQUATERNION&
+D3DXQUATERNION::operator *= ( CONST D3DXQUATERNION& q )
+{
+ D3DXQuaternionMultiply(this, this, &q);
+ return *this;
+}
+
+D3DX10INLINE D3DXQUATERNION&
+D3DXQUATERNION::operator *= ( FLOAT f )
+{
+ x *= f;
+ y *= f;
+ z *= f;
+ w *= f;
+ return *this;
+}
+
+D3DX10INLINE D3DXQUATERNION&
+D3DXQUATERNION::operator /= ( FLOAT f )
+{
+ FLOAT fInv = 1.0f / f;
+ x *= fInv;
+ y *= fInv;
+ z *= fInv;
+ w *= fInv;
+ return *this;
+}
+
+
+// unary operators
+D3DX10INLINE D3DXQUATERNION
+D3DXQUATERNION::operator + () const
+{
+ return *this;
+}
+
+D3DX10INLINE D3DXQUATERNION
+D3DXQUATERNION::operator - () const
+{
+ return D3DXQUATERNION(-x, -y, -z, -w);
+}
+
+
+// binary operators
+D3DX10INLINE D3DXQUATERNION
+D3DXQUATERNION::operator + ( CONST D3DXQUATERNION& q ) const
+{
+ return D3DXQUATERNION(x + q.x, y + q.y, z + q.z, w + q.w);
+}
+
+D3DX10INLINE D3DXQUATERNION
+D3DXQUATERNION::operator - ( CONST D3DXQUATERNION& q ) const
+{
+ return D3DXQUATERNION(x - q.x, y - q.y, z - q.z, w - q.w);
+}
+
+D3DX10INLINE D3DXQUATERNION
+D3DXQUATERNION::operator * ( CONST D3DXQUATERNION& q ) const
+{
+ D3DXQUATERNION qT;
+ D3DXQuaternionMultiply(&qT, this, &q);
+ return qT;
+}
+
+D3DX10INLINE D3DXQUATERNION
+D3DXQUATERNION::operator * ( FLOAT f ) const
+{
+ return D3DXQUATERNION(x * f, y * f, z * f, w * f);
+}
+
+D3DX10INLINE D3DXQUATERNION
+D3DXQUATERNION::operator / ( FLOAT f ) const
+{
+ FLOAT fInv = 1.0f / f;
+ return D3DXQUATERNION(x * fInv, y * fInv, z * fInv, w * fInv);
+}
+
+
+D3DX10INLINE D3DXQUATERNION
+operator * (FLOAT f, CONST D3DXQUATERNION& q )
+{
+ return D3DXQUATERNION(f * q.x, f * q.y, f * q.z, f * q.w);
+}
+
+
+D3DX10INLINE BOOL
+D3DXQUATERNION::operator == ( CONST D3DXQUATERNION& q ) const
+{
+ return x == q.x && y == q.y && z == q.z && w == q.w;
+}
+
+D3DX10INLINE BOOL
+D3DXQUATERNION::operator != ( CONST D3DXQUATERNION& q ) const
+{
+ return x != q.x || y != q.y || z != q.z || w != q.w;
+}
+
+
+
+//--------------------------
+// Plane
+//--------------------------
+
+D3DX10INLINE
+D3DXPLANE::D3DXPLANE( CONST FLOAT* pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ a = pf[0];
+ b = pf[1];
+ c = pf[2];
+ d = pf[3];
+}
+
+D3DX10INLINE
+D3DXPLANE::D3DXPLANE( CONST D3DXFLOAT16* pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ D3DXFloat16To32Array(&a, pf, 4);
+}
+
+D3DX10INLINE
+D3DXPLANE::D3DXPLANE( FLOAT fa, FLOAT fb, FLOAT fc, FLOAT fd )
+{
+ a = fa;
+ b = fb;
+ c = fc;
+ d = fd;
+}
+
+
+// casting
+D3DX10INLINE
+D3DXPLANE::operator FLOAT* ()
+{
+ return (FLOAT *) &a;
+}
+
+D3DX10INLINE
+D3DXPLANE::operator CONST FLOAT* () const
+{
+ return (CONST FLOAT *) &a;
+}
+
+
+// assignment operators
+D3DX10INLINE D3DXPLANE&
+D3DXPLANE::operator *= ( FLOAT f )
+{
+ a *= f;
+ b *= f;
+ c *= f;
+ d *= f;
+ return *this;
+}
+
+D3DX10INLINE D3DXPLANE&
+D3DXPLANE::operator /= ( FLOAT f )
+{
+ FLOAT fInv = 1.0f / f;
+ a *= fInv;
+ b *= fInv;
+ c *= fInv;
+ d *= fInv;
+ return *this;
+}
+
+
+// unary operators
+D3DX10INLINE D3DXPLANE
+D3DXPLANE::operator + () const
+{
+ return *this;
+}
+
+D3DX10INLINE D3DXPLANE
+D3DXPLANE::operator - () const
+{
+ return D3DXPLANE(-a, -b, -c, -d);
+}
+
+
+// binary operators
+D3DX10INLINE D3DXPLANE
+D3DXPLANE::operator * ( FLOAT f ) const
+{
+ return D3DXPLANE(a * f, b * f, c * f, d * f);
+}
+
+D3DX10INLINE D3DXPLANE
+D3DXPLANE::operator / ( FLOAT f ) const
+{
+ FLOAT fInv = 1.0f / f;
+ return D3DXPLANE(a * fInv, b * fInv, c * fInv, d * fInv);
+}
+
+D3DX10INLINE D3DXPLANE
+operator * (FLOAT f, CONST D3DXPLANE& p )
+{
+ return D3DXPLANE(f * p.a, f * p.b, f * p.c, f * p.d);
+}
+
+D3DX10INLINE BOOL
+D3DXPLANE::operator == ( CONST D3DXPLANE& p ) const
+{
+ return a == p.a && b == p.b && c == p.c && d == p.d;
+}
+
+D3DX10INLINE BOOL
+D3DXPLANE::operator != ( CONST D3DXPLANE& p ) const
+{
+ return a != p.a || b != p.b || c != p.c || d != p.d;
+}
+
+
+
+
+//--------------------------
+// Color
+//--------------------------
+
+D3DX10INLINE
+D3DXCOLOR::D3DXCOLOR( UINT dw )
+{
+ CONST FLOAT f = 1.0f / 255.0f;
+ r = f * (FLOAT) (unsigned char) (dw >> 16);
+ g = f * (FLOAT) (unsigned char) (dw >> 8);
+ b = f * (FLOAT) (unsigned char) (dw >> 0);
+ a = f * (FLOAT) (unsigned char) (dw >> 24);
+}
+
+D3DX10INLINE
+D3DXCOLOR::D3DXCOLOR( CONST FLOAT* pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ r = pf[0];
+ g = pf[1];
+ b = pf[2];
+ a = pf[3];
+}
+
+D3DX10INLINE
+D3DXCOLOR::D3DXCOLOR( CONST D3DXFLOAT16* pf )
+{
+#ifdef D3DX10_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ D3DXFloat16To32Array(&r, pf, 4);
+}
+
+D3DX10INLINE
+D3DXCOLOR::D3DXCOLOR( FLOAT fr, FLOAT fg, FLOAT fb, FLOAT fa )
+{
+ r = fr;
+ g = fg;
+ b = fb;
+ a = fa;
+}
+
+
+// casting
+D3DX10INLINE
+D3DXCOLOR::operator UINT () const
+{
+ UINT dwR = r >= 1.0f ? 0xff : r <= 0.0f ? 0x00 : (UINT) (r * 255.0f + 0.5f);
+ UINT dwG = g >= 1.0f ? 0xff : g <= 0.0f ? 0x00 : (UINT) (g * 255.0f + 0.5f);
+ UINT dwB = b >= 1.0f ? 0xff : b <= 0.0f ? 0x00 : (UINT) (b * 255.0f + 0.5f);
+ UINT dwA = a >= 1.0f ? 0xff : a <= 0.0f ? 0x00 : (UINT) (a * 255.0f + 0.5f);
+
+ return (dwA << 24) | (dwR << 16) | (dwG << 8) | (dwB << 0);
+}
+
+
+D3DX10INLINE
+D3DXCOLOR::operator FLOAT * ()
+{
+ return (FLOAT *) &r;
+}
+
+D3DX10INLINE
+D3DXCOLOR::operator CONST FLOAT * () const
+{
+ return (CONST FLOAT *) &r;
+}
+
+// assignment operators
+D3DX10INLINE D3DXCOLOR&
+D3DXCOLOR::operator += ( CONST D3DXCOLOR& c )
+{
+ r += c.r;
+ g += c.g;
+ b += c.b;
+ a += c.a;
+ return *this;
+}
+
+D3DX10INLINE D3DXCOLOR&
+D3DXCOLOR::operator -= ( CONST D3DXCOLOR& c )
+{
+ r -= c.r;
+ g -= c.g;
+ b -= c.b;
+ a -= c.a;
+ return *this;
+}
+
+D3DX10INLINE D3DXCOLOR&
+D3DXCOLOR::operator *= ( FLOAT f )
+{
+ r *= f;
+ g *= f;
+ b *= f;
+ a *= f;
+ return *this;
+}
+
+D3DX10INLINE D3DXCOLOR&
+D3DXCOLOR::operator /= ( FLOAT f )
+{
+ FLOAT fInv = 1.0f / f;
+ r *= fInv;
+ g *= fInv;
+ b *= fInv;
+ a *= fInv;
+ return *this;
+}
+
+
+// unary operators
+D3DX10INLINE D3DXCOLOR
+D3DXCOLOR::operator + () const
+{
+ return *this;
+}
+
+D3DX10INLINE D3DXCOLOR
+D3DXCOLOR::operator - () const
+{
+ return D3DXCOLOR(-r, -g, -b, -a);
+}
+
+
+// binary operators
+D3DX10INLINE D3DXCOLOR
+D3DXCOLOR::operator + ( CONST D3DXCOLOR& c ) const
+{
+ return D3DXCOLOR(r + c.r, g + c.g, b + c.b, a + c.a);
+}
+
+D3DX10INLINE D3DXCOLOR
+D3DXCOLOR::operator - ( CONST D3DXCOLOR& c ) const
+{
+ return D3DXCOLOR(r - c.r, g - c.g, b - c.b, a - c.a);
+}
+
+D3DX10INLINE D3DXCOLOR
+D3DXCOLOR::operator * ( FLOAT f ) const
+{
+ return D3DXCOLOR(r * f, g * f, b * f, a * f);
+}
+
+D3DX10INLINE D3DXCOLOR
+D3DXCOLOR::operator / ( FLOAT f ) const
+{
+ FLOAT fInv = 1.0f / f;
+ return D3DXCOLOR(r * fInv, g * fInv, b * fInv, a * fInv);
+}
+
+
+D3DX10INLINE D3DXCOLOR
+operator * (FLOAT f, CONST D3DXCOLOR& c )
+{
+ return D3DXCOLOR(f * c.r, f * c.g, f * c.b, f * c.a);
+}
+
+
+D3DX10INLINE BOOL
+D3DXCOLOR::operator == ( CONST D3DXCOLOR& c ) const
+{
+ return r == c.r && g == c.g && b == c.b && a == c.a;
+}
+
+D3DX10INLINE BOOL
+D3DXCOLOR::operator != ( CONST D3DXCOLOR& c ) const
+{
+ return r != c.r || g != c.g || b != c.b || a != c.a;
+}
+
+
+#endif //__cplusplus
+
+
+
+//===========================================================================
+//
+// Inline functions
+//
+//===========================================================================
+
+
+//--------------------------
+// 2D Vector
+//--------------------------
+
+D3DX10INLINE FLOAT D3DXVec2Length
+ ( CONST D3DXVECTOR2 *pV )
+{
+#ifdef D3DX10_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+#ifdef __cplusplus
+ return sqrtf(pV->x * pV->x + pV->y * pV->y);
+#else
+ return (FLOAT) sqrt(pV->x * pV->x + pV->y * pV->y);
+#endif
+}
+
+D3DX10INLINE FLOAT D3DXVec2LengthSq
+ ( CONST D3DXVECTOR2 *pV )
+{
+#ifdef D3DX10_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+ return pV->x * pV->x + pV->y * pV->y;
+}
+
+D3DX10INLINE FLOAT D3DXVec2Dot
+ ( CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX10_DEBUG
+ if(!pV1 || !pV2)
+ return 0.0f;
+#endif
+
+ return pV1->x * pV2->x + pV1->y * pV2->y;
+}
+
+D3DX10INLINE FLOAT D3DXVec2CCW
+ ( CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX10_DEBUG
+ if(!pV1 || !pV2)
+ return 0.0f;
+#endif
+
+ return pV1->x * pV2->y - pV1->y * pV2->x;
+}
+
+D3DX10INLINE D3DXVECTOR2* D3DXVec2Add
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + pV2->x;
+ pOut->y = pV1->y + pV2->y;
+ return pOut;
+}
+
+D3DX10INLINE D3DXVECTOR2* D3DXVec2Subtract
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x - pV2->x;
+ pOut->y = pV1->y - pV2->y;
+ return pOut;
+}
+
+D3DX10INLINE D3DXVECTOR2* D3DXVec2Minimize
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x < pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y < pV2->y ? pV1->y : pV2->y;
+ return pOut;
+}
+
+D3DX10INLINE D3DXVECTOR2* D3DXVec2Maximize
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x > pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y > pV2->y ? pV1->y : pV2->y;
+ return pOut;
+}
+
+D3DX10INLINE D3DXVECTOR2* D3DXVec2Scale
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV, FLOAT s )
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV)
+ return NULL;
+#endif
+
+ pOut->x = pV->x * s;
+ pOut->y = pV->y * s;
+ return pOut;
+}
+
+D3DX10INLINE D3DXVECTOR2* D3DXVec2Lerp
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2,
+ FLOAT s )
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + s * (pV2->x - pV1->x);
+ pOut->y = pV1->y + s * (pV2->y - pV1->y);
+ return pOut;
+}
+
+
+//--------------------------
+// 3D Vector
+//--------------------------
+
+D3DX10INLINE FLOAT D3DXVec3Length
+ ( CONST D3DXVECTOR3 *pV )
+{
+#ifdef D3DX10_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+#ifdef __cplusplus
+ return sqrtf(pV->x * pV->x + pV->y * pV->y + pV->z * pV->z);
+#else
+ return (FLOAT) sqrt(pV->x * pV->x + pV->y * pV->y + pV->z * pV->z);
+#endif
+}
+
+D3DX10INLINE FLOAT D3DXVec3LengthSq
+ ( CONST D3DXVECTOR3 *pV )
+{
+#ifdef D3DX10_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+ return pV->x * pV->x + pV->y * pV->y + pV->z * pV->z;
+}
+
+D3DX10INLINE FLOAT D3DXVec3Dot
+ ( CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 )
+{
+#ifdef D3DX10_DEBUG
+ if(!pV1 || !pV2)
+ return 0.0f;
+#endif
+
+ return pV1->x * pV2->x + pV1->y * pV2->y + pV1->z * pV2->z;
+}
+
+D3DX10INLINE D3DXVECTOR3* D3DXVec3Cross
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 )
+{
+ D3DXVECTOR3 v;
+
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ v.x = pV1->y * pV2->z - pV1->z * pV2->y;
+ v.y = pV1->z * pV2->x - pV1->x * pV2->z;
+ v.z = pV1->x * pV2->y - pV1->y * pV2->x;
+
+ *pOut = v;
+ return pOut;
+}
+
+D3DX10INLINE D3DXVECTOR3* D3DXVec3Add
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 )
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + pV2->x;
+ pOut->y = pV1->y + pV2->y;
+ pOut->z = pV1->z + pV2->z;
+ return pOut;
+}
+
+D3DX10INLINE D3DXVECTOR3* D3DXVec3Subtract
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 )
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x - pV2->x;
+ pOut->y = pV1->y - pV2->y;
+ pOut->z = pV1->z - pV2->z;
+ return pOut;
+}
+
+D3DX10INLINE D3DXVECTOR3* D3DXVec3Minimize
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 )
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x < pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y < pV2->y ? pV1->y : pV2->y;
+ pOut->z = pV1->z < pV2->z ? pV1->z : pV2->z;
+ return pOut;
+}
+
+D3DX10INLINE D3DXVECTOR3* D3DXVec3Maximize
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 )
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x > pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y > pV2->y ? pV1->y : pV2->y;
+ pOut->z = pV1->z > pV2->z ? pV1->z : pV2->z;
+ return pOut;
+}
+
+D3DX10INLINE D3DXVECTOR3* D3DXVec3Scale
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, FLOAT s)
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV)
+ return NULL;
+#endif
+
+ pOut->x = pV->x * s;
+ pOut->y = pV->y * s;
+ pOut->z = pV->z * s;
+ return pOut;
+}
+
+D3DX10INLINE D3DXVECTOR3* D3DXVec3Lerp
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2,
+ FLOAT s )
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + s * (pV2->x - pV1->x);
+ pOut->y = pV1->y + s * (pV2->y - pV1->y);
+ pOut->z = pV1->z + s * (pV2->z - pV1->z);
+ return pOut;
+}
+
+
+//--------------------------
+// 4D Vector
+//--------------------------
+
+D3DX10INLINE FLOAT D3DXVec4Length
+ ( CONST D3DXVECTOR4 *pV )
+{
+#ifdef D3DX10_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+#ifdef __cplusplus
+ return sqrtf(pV->x * pV->x + pV->y * pV->y + pV->z * pV->z + pV->w * pV->w);
+#else
+ return (FLOAT) sqrt(pV->x * pV->x + pV->y * pV->y + pV->z * pV->z + pV->w * pV->w);
+#endif
+}
+
+D3DX10INLINE FLOAT D3DXVec4LengthSq
+ ( CONST D3DXVECTOR4 *pV )
+{
+#ifdef D3DX10_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+ return pV->x * pV->x + pV->y * pV->y + pV->z * pV->z + pV->w * pV->w;
+}
+
+D3DX10INLINE FLOAT D3DXVec4Dot
+ ( CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2 )
+{
+#ifdef D3DX10_DEBUG
+ if(!pV1 || !pV2)
+ return 0.0f;
+#endif
+
+ return pV1->x * pV2->x + pV1->y * pV2->y + pV1->z * pV2->z + pV1->w * pV2->w;
+}
+
+D3DX10INLINE D3DXVECTOR4* D3DXVec4Add
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2)
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + pV2->x;
+ pOut->y = pV1->y + pV2->y;
+ pOut->z = pV1->z + pV2->z;
+ pOut->w = pV1->w + pV2->w;
+ return pOut;
+}
+
+D3DX10INLINE D3DXVECTOR4* D3DXVec4Subtract
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2)
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x - pV2->x;
+ pOut->y = pV1->y - pV2->y;
+ pOut->z = pV1->z - pV2->z;
+ pOut->w = pV1->w - pV2->w;
+ return pOut;
+}
+
+D3DX10INLINE D3DXVECTOR4* D3DXVec4Minimize
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2)
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x < pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y < pV2->y ? pV1->y : pV2->y;
+ pOut->z = pV1->z < pV2->z ? pV1->z : pV2->z;
+ pOut->w = pV1->w < pV2->w ? pV1->w : pV2->w;
+ return pOut;
+}
+
+D3DX10INLINE D3DXVECTOR4* D3DXVec4Maximize
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2)
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x > pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y > pV2->y ? pV1->y : pV2->y;
+ pOut->z = pV1->z > pV2->z ? pV1->z : pV2->z;
+ pOut->w = pV1->w > pV2->w ? pV1->w : pV2->w;
+ return pOut;
+}
+
+D3DX10INLINE D3DXVECTOR4* D3DXVec4Scale
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV, FLOAT s)
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV)
+ return NULL;
+#endif
+
+ pOut->x = pV->x * s;
+ pOut->y = pV->y * s;
+ pOut->z = pV->z * s;
+ pOut->w = pV->w * s;
+ return pOut;
+}
+
+D3DX10INLINE D3DXVECTOR4* D3DXVec4Lerp
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2,
+ FLOAT s )
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + s * (pV2->x - pV1->x);
+ pOut->y = pV1->y + s * (pV2->y - pV1->y);
+ pOut->z = pV1->z + s * (pV2->z - pV1->z);
+ pOut->w = pV1->w + s * (pV2->w - pV1->w);
+ return pOut;
+}
+
+
+//--------------------------
+// 4D Matrix
+//--------------------------
+
+D3DX10INLINE D3DXMATRIX* D3DXMatrixIdentity
+ ( D3DXMATRIX *pOut )
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut)
+ return NULL;
+#endif
+
+ pOut->m[0][1] = pOut->m[0][2] = pOut->m[0][3] =
+ pOut->m[1][0] = pOut->m[1][2] = pOut->m[1][3] =
+ pOut->m[2][0] = pOut->m[2][1] = pOut->m[2][3] =
+ pOut->m[3][0] = pOut->m[3][1] = pOut->m[3][2] = 0.0f;
+
+ pOut->m[0][0] = pOut->m[1][1] = pOut->m[2][2] = pOut->m[3][3] = 1.0f;
+ return pOut;
+}
+
+
+D3DX10INLINE BOOL D3DXMatrixIsIdentity
+ ( CONST D3DXMATRIX *pM )
+{
+#ifdef D3DX10_DEBUG
+ if(!pM)
+ return FALSE;
+#endif
+
+ return pM->m[0][0] == 1.0f && pM->m[0][1] == 0.0f && pM->m[0][2] == 0.0f && pM->m[0][3] == 0.0f &&
+ pM->m[1][0] == 0.0f && pM->m[1][1] == 1.0f && pM->m[1][2] == 0.0f && pM->m[1][3] == 0.0f &&
+ pM->m[2][0] == 0.0f && pM->m[2][1] == 0.0f && pM->m[2][2] == 1.0f && pM->m[2][3] == 0.0f &&
+ pM->m[3][0] == 0.0f && pM->m[3][1] == 0.0f && pM->m[3][2] == 0.0f && pM->m[3][3] == 1.0f;
+}
+
+
+//--------------------------
+// Quaternion
+//--------------------------
+
+D3DX10INLINE FLOAT D3DXQuaternionLength
+ ( CONST D3DXQUATERNION *pQ )
+{
+#ifdef D3DX10_DEBUG
+ if(!pQ)
+ return 0.0f;
+#endif
+
+#ifdef __cplusplus
+ return sqrtf(pQ->x * pQ->x + pQ->y * pQ->y + pQ->z * pQ->z + pQ->w * pQ->w);
+#else
+ return (FLOAT) sqrt(pQ->x * pQ->x + pQ->y * pQ->y + pQ->z * pQ->z + pQ->w * pQ->w);
+#endif
+}
+
+D3DX10INLINE FLOAT D3DXQuaternionLengthSq
+ ( CONST D3DXQUATERNION *pQ )
+{
+#ifdef D3DX10_DEBUG
+ if(!pQ)
+ return 0.0f;
+#endif
+
+ return pQ->x * pQ->x + pQ->y * pQ->y + pQ->z * pQ->z + pQ->w * pQ->w;
+}
+
+D3DX10INLINE FLOAT D3DXQuaternionDot
+ ( CONST D3DXQUATERNION *pQ1, CONST D3DXQUATERNION *pQ2 )
+{
+#ifdef D3DX10_DEBUG
+ if(!pQ1 || !pQ2)
+ return 0.0f;
+#endif
+
+ return pQ1->x * pQ2->x + pQ1->y * pQ2->y + pQ1->z * pQ2->z + pQ1->w * pQ2->w;
+}
+
+
+D3DX10INLINE D3DXQUATERNION* D3DXQuaternionIdentity
+ ( D3DXQUATERNION *pOut )
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut)
+ return NULL;
+#endif
+
+ pOut->x = pOut->y = pOut->z = 0.0f;
+ pOut->w = 1.0f;
+ return pOut;
+}
+
+D3DX10INLINE BOOL D3DXQuaternionIsIdentity
+ ( CONST D3DXQUATERNION *pQ )
+{
+#ifdef D3DX10_DEBUG
+ if(!pQ)
+ return FALSE;
+#endif
+
+ return pQ->x == 0.0f && pQ->y == 0.0f && pQ->z == 0.0f && pQ->w == 1.0f;
+}
+
+
+D3DX10INLINE D3DXQUATERNION* D3DXQuaternionConjugate
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ )
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pQ)
+ return NULL;
+#endif
+
+ pOut->x = -pQ->x;
+ pOut->y = -pQ->y;
+ pOut->z = -pQ->z;
+ pOut->w = pQ->w;
+ return pOut;
+}
+
+
+//--------------------------
+// Plane
+//--------------------------
+
+D3DX10INLINE FLOAT D3DXPlaneDot
+ ( CONST D3DXPLANE *pP, CONST D3DXVECTOR4 *pV)
+{
+#ifdef D3DX10_DEBUG
+ if(!pP || !pV)
+ return 0.0f;
+#endif
+
+ return pP->a * pV->x + pP->b * pV->y + pP->c * pV->z + pP->d * pV->w;
+}
+
+D3DX10INLINE FLOAT D3DXPlaneDotCoord
+ ( CONST D3DXPLANE *pP, CONST D3DXVECTOR3 *pV)
+{
+#ifdef D3DX10_DEBUG
+ if(!pP || !pV)
+ return 0.0f;
+#endif
+
+ return pP->a * pV->x + pP->b * pV->y + pP->c * pV->z + pP->d;
+}
+
+D3DX10INLINE FLOAT D3DXPlaneDotNormal
+ ( CONST D3DXPLANE *pP, CONST D3DXVECTOR3 *pV)
+{
+#ifdef D3DX10_DEBUG
+ if(!pP || !pV)
+ return 0.0f;
+#endif
+
+ return pP->a * pV->x + pP->b * pV->y + pP->c * pV->z;
+}
+
+D3DX10INLINE D3DXPLANE* D3DXPlaneScale
+ (D3DXPLANE *pOut, CONST D3DXPLANE *pP, FLOAT s)
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pP)
+ return NULL;
+#endif
+
+ pOut->a = pP->a * s;
+ pOut->b = pP->b * s;
+ pOut->c = pP->c * s;
+ pOut->d = pP->d * s;
+ return pOut;
+}
+
+
+//--------------------------
+// Color
+//--------------------------
+
+D3DX10INLINE D3DXCOLOR* D3DXColorNegative
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC)
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pC)
+ return NULL;
+#endif
+
+ pOut->r = 1.0f - pC->r;
+ pOut->g = 1.0f - pC->g;
+ pOut->b = 1.0f - pC->b;
+ pOut->a = pC->a;
+ return pOut;
+}
+
+D3DX10INLINE D3DXCOLOR* D3DXColorAdd
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2)
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pC1 || !pC2)
+ return NULL;
+#endif
+
+ pOut->r = pC1->r + pC2->r;
+ pOut->g = pC1->g + pC2->g;
+ pOut->b = pC1->b + pC2->b;
+ pOut->a = pC1->a + pC2->a;
+ return pOut;
+}
+
+D3DX10INLINE D3DXCOLOR* D3DXColorSubtract
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2)
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pC1 || !pC2)
+ return NULL;
+#endif
+
+ pOut->r = pC1->r - pC2->r;
+ pOut->g = pC1->g - pC2->g;
+ pOut->b = pC1->b - pC2->b;
+ pOut->a = pC1->a - pC2->a;
+ return pOut;
+}
+
+D3DX10INLINE D3DXCOLOR* D3DXColorScale
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC, FLOAT s)
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pC)
+ return NULL;
+#endif
+
+ pOut->r = pC->r * s;
+ pOut->g = pC->g * s;
+ pOut->b = pC->b * s;
+ pOut->a = pC->a * s;
+ return pOut;
+}
+
+D3DX10INLINE D3DXCOLOR* D3DXColorModulate
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2)
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pC1 || !pC2)
+ return NULL;
+#endif
+
+ pOut->r = pC1->r * pC2->r;
+ pOut->g = pC1->g * pC2->g;
+ pOut->b = pC1->b * pC2->b;
+ pOut->a = pC1->a * pC2->a;
+ return pOut;
+}
+
+D3DX10INLINE D3DXCOLOR* D3DXColorLerp
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2, FLOAT s)
+{
+#ifdef D3DX10_DEBUG
+ if(!pOut || !pC1 || !pC2)
+ return NULL;
+#endif
+
+ pOut->r = pC1->r + s * (pC2->r - pC1->r);
+ pOut->g = pC1->g + s * (pC2->g - pC1->g);
+ pOut->b = pC1->b + s * (pC2->b - pC1->b);
+ pOut->a = pC1->a + s * (pC2->a - pC1->a);
+ return pOut;
+}
+
+
+#endif // __D3DXMATH_INL__
+
diff --git a/src/dep/include/DXSDK/include/D3DX10mesh.h b/src/dep/include/DXSDK/include/D3DX10mesh.h
new file mode 100644
index 0000000..3078204
--- /dev/null
+++ b/src/dep/include/DXSDK/include/D3DX10mesh.h
@@ -0,0 +1,286 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dx10mesh.h
+// Content: D3DX10 mesh types and functions
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#include "d3dx10.h"
+
+#ifndef __D3DX10MESH_H__
+#define __D3DX10MESH_H__
+
+// {7ED943DD-52E8-40b5-A8D8-76685C406330}
+DEFINE_GUID(IID_ID3DX10BaseMesh,
+0x7ed943dd, 0x52e8, 0x40b5, 0xa8, 0xd8, 0x76, 0x68, 0x5c, 0x40, 0x63, 0x30);
+
+// {04B0D117-1041-46b1-AA8A-3952848BA22E}
+DEFINE_GUID(IID_ID3DX10MeshBuffer,
+0x4b0d117, 0x1041, 0x46b1, 0xaa, 0x8a, 0x39, 0x52, 0x84, 0x8b, 0xa2, 0x2e);
+
+// {4020E5C2-1403-4929-883F-E2E849FAC195}
+DEFINE_GUID(IID_ID3DX10Mesh,
+0x4020e5c2, 0x1403, 0x4929, 0x88, 0x3f, 0xe2, 0xe8, 0x49, 0xfa, 0xc1, 0x95);
+
+// {8875769A-D579-4088-AAEB-534D1AD84E96}
+DEFINE_GUID(IID_ID3DX10PMesh,
+0x8875769a, 0xd579, 0x4088, 0xaa, 0xeb, 0x53, 0x4d, 0x1a, 0xd8, 0x4e, 0x96);
+
+// {667EA4C7-F1CD-4386-B523-7C0290B83CC5}
+DEFINE_GUID(IID_ID3DX10SPMesh,
+0x667ea4c7, 0xf1cd, 0x4386, 0xb5, 0x23, 0x7c, 0x2, 0x90, 0xb8, 0x3c, 0xc5);
+
+// {3CE6CC22-DBF2-44f4-894D-F9C34A337139}
+DEFINE_GUID(IID_ID3DX10PatchMesh,
+0x3ce6cc22, 0xdbf2, 0x44f4, 0x89, 0x4d, 0xf9, 0xc3, 0x4a, 0x33, 0x71, 0x39);
+
+
+// Mesh options - lower 3 bytes only, upper byte used by _D3DX10MESHOPT option flags
+enum _D3DX10MESH {
+ D3DX10_MESH_32_BIT = 0x001, // If set, then use 32 bit indices, if not set use 16 bit indices.
+ D3DX10_MESH_GS_ADJACENCY = 0x004, // If set, mesh contains GS adjacency info. Not valid on input.
+
+};
+
+typedef struct _D3DX10_ATTRIBUTE_RANGE
+{
+ UINT AttribId;
+ UINT FaceStart;
+ UINT FaceCount;
+ UINT VertexStart;
+ UINT VertexCount;
+} D3DX10_ATTRIBUTE_RANGE;
+
+typedef D3DX10_ATTRIBUTE_RANGE* LPD3DX10_ATTRIBUTE_RANGE;
+
+typedef enum _D3DX10_MESH_DISCARD_FLAGS
+{
+ D3DX10_MESH_DISCARD_ATTRIBUTE_BUFFER = 0x01,
+ D3DX10_MESH_DISCARD_ATTRIBUTE_TABLE = 0x02,
+ D3DX10_MESH_DISCARD_POINTREPS = 0x04,
+ D3DX10_MESH_DISCARD_ADJACENCY = 0x08,
+ D3DX10_MESH_DISCARD_DEVICE_BUFFERS = 0x10,
+
+} D3DX10_MESH_DISCARD_FLAGS;
+
+typedef struct _D3DX10_WELD_EPSILONS
+{
+ FLOAT Position; // NOTE: This does NOT replace the epsilon in GenerateAdjacency
+ // in general, it should be the same value or greater than the one passed to GeneratedAdjacency
+ FLOAT BlendWeights;
+ FLOAT Normal;
+ FLOAT PSize;
+ FLOAT Specular;
+ FLOAT Diffuse;
+ FLOAT Texcoord[8];
+ FLOAT Tangent;
+ FLOAT Binormal;
+ FLOAT TessFactor;
+} D3DX10_WELD_EPSILONS;
+
+typedef D3DX10_WELD_EPSILONS* LPD3DX10_WELD_EPSILONS;
+
+typedef struct _D3DX10_INTERSECT_INFO
+{
+ UINT FaceIndex; // index of face intersected
+ FLOAT U; // Barycentric Hit Coordinates
+ FLOAT V; // Barycentric Hit Coordinates
+ FLOAT Dist; // Ray-Intersection Parameter Distance
+} D3DX10_INTERSECT_INFO, *LPD3DX10_INTERSECT_INFO;
+
+// ID3DX10MeshBuffer is used by D3DX10Mesh vertex and index buffers
+#undef INTERFACE
+#define INTERFACE ID3DX10MeshBuffer
+
+DECLARE_INTERFACE_(ID3DX10MeshBuffer, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ // ID3DX10MeshBuffer
+ STDMETHOD(Map)(THIS_ void **ppData, SIZE_T *pSize) PURE;
+ STDMETHOD(Unmap)(THIS) PURE;
+ STDMETHOD_(SIZE_T, GetSize)(THIS) PURE;
+};
+
+// D3DX10 Mesh interfaces
+#undef INTERFACE
+#define INTERFACE ID3DX10Mesh
+
+DECLARE_INTERFACE_(ID3DX10Mesh, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ // ID3DX10Mesh
+ STDMETHOD_(UINT, GetFaceCount)(THIS) PURE;
+ STDMETHOD_(UINT, GetVertexCount)(THIS) PURE;
+ STDMETHOD_(UINT, GetVertexBufferCount)(THIS) PURE;
+ STDMETHOD_(UINT, GetFlags)(THIS) PURE;
+ STDMETHOD(GetVertexDescription)(THIS_ CONST D3D10_INPUT_ELEMENT_DESC **ppDesc, UINT *pDeclCount) PURE;
+
+ STDMETHOD(SetVertexData)(THIS_ UINT iBuffer, CONST void *pData) PURE;
+ STDMETHOD(GetVertexBuffer)(THIS_ UINT iBuffer, ID3DX10MeshBuffer **ppVertexBuffer) PURE;
+
+ STDMETHOD(SetIndexData)(THIS_ CONST void *pData, UINT cIndices) PURE;
+ STDMETHOD(GetIndexBuffer)(THIS_ ID3DX10MeshBuffer **ppIndexBuffer) PURE;
+
+ STDMETHOD(SetAttributeData)(THIS_ CONST UINT *pData) PURE;
+ STDMETHOD(GetAttributeBuffer)(THIS_ ID3DX10MeshBuffer **ppAttributeBuffer) PURE;
+
+ STDMETHOD(SetAttributeTable)(THIS_ CONST D3DX10_ATTRIBUTE_RANGE *pAttribTable, UINT cAttribTableSize) PURE;
+ STDMETHOD(GetAttributeTable)(THIS_ D3DX10_ATTRIBUTE_RANGE *pAttribTable, UINT *pAttribTableSize) PURE;
+
+ STDMETHOD(GenerateAdjacencyAndPointReps)(THIS_ FLOAT Epsilon) PURE;
+ STDMETHOD(GenerateGSAdjacency)(THIS) PURE;
+
+ STDMETHOD(SetAdjacencyData)(THIS_ CONST UINT *pAdjacency) PURE;
+ STDMETHOD(GetAdjacencyBuffer)(THIS_ ID3DX10MeshBuffer **ppAdjacency) PURE;
+
+ STDMETHOD(SetPointRepData)(THIS_ CONST UINT *pPointReps) PURE;
+ STDMETHOD(GetPointRepBuffer)(THIS_ ID3DX10MeshBuffer **ppPointReps) PURE;
+
+ STDMETHOD(Discard)(THIS_ D3DX10_MESH_DISCARD_FLAGS dwDiscard) PURE;
+ STDMETHOD(CloneMesh)(THIS_ UINT Flags, LPCWSTR pPosSemantic, CONST D3D10_INPUT_ELEMENT_DESC *pDesc, UINT DeclCount, ID3DX10Mesh** ppCloneMesh) PURE;
+
+ STDMETHOD(Optimize)(THIS_ UINT Flags, UINT * pFaceRemap, LPD3D10BLOB *ppVertexRemap) PURE;
+ STDMETHOD(GenerateAttributeBufferFromTable)(THIS) PURE;
+
+ STDMETHOD(Intersect)(THIS_ D3DXVECTOR3 *pRayPos, D3DXVECTOR3 *pRayDir,
+ UINT *pHitCount, UINT *pFaceIndex, float *pU, float *pV, float *pDist, ID3D10Blob **ppAllHits);
+ STDMETHOD(IntersectSubset)(THIS_ UINT AttribId, D3DXVECTOR3 *pRayPos, D3DXVECTOR3 *pRayDir,
+ UINT *pHitCount, UINT *pFaceIndex, float *pU, float *pV, float *pDist, ID3D10Blob **ppAllHits);
+
+ // ID3DX10Mesh - Device functions
+ STDMETHOD(CommitToDevice)(THIS) PURE;
+ STDMETHOD(DrawSubset)(THIS_ UINT AttribId) PURE;
+ STDMETHOD(DrawSubsetInstanced)(THIS_ UINT AttribId, UINT InstanceCount, UINT StartInstanceLocation) PURE;
+
+ STDMETHOD(GetDeviceVertexBuffer)(THIS_ UINT iBuffer, ID3D10Buffer **ppVertexBuffer) PURE;
+ STDMETHOD(GetDeviceIndexBuffer)(THIS_ ID3D10Buffer **ppIndexBuffer) PURE;
+};
+
+
+// Flat API
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+HRESULT WINAPI
+ D3DX10CreateMesh(
+ ID3D10Device *pDevice,
+ CONST D3D10_INPUT_ELEMENT_DESC *pDeclaration,
+ UINT DeclCount,
+ LPCWSTR pPositionSemantic,
+ UINT VertexCount,
+ UINT FaceCount,
+ UINT Options,
+ ID3DX10Mesh **ppMesh);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+
+// ID3DX10Mesh::Optimize options - upper byte only, lower 3 bytes used from _D3DX10MESH option flags
+enum _D3DX10MESHOPT {
+ D3DX10_MESHOPT_COMPACT = 0x01000000,
+ D3DX10_MESHOPT_ATTR_SORT = 0x02000000,
+ D3DX10_MESHOPT_VERTEX_CACHE = 0x04000000,
+ D3DX10_MESHOPT_STRIP_REORDER = 0x08000000,
+ D3DX10_MESHOPT_IGNORE_VERTS = 0x10000000, // optimize faces only, don't touch vertices
+ D3DX10_MESHOPT_DO_NOT_SPLIT = 0x20000000, // do not split vertices shared between attribute groups when attribute sorting
+ D3DX10_MESHOPT_DEVICE_INDEPENDENT = 0x00400000, // Only affects VCache. uses a static known good cache size for all cards
+
+ // D3DX10_MESHOPT_SHAREVB has been removed, please use D3DX10MESH_VB_SHARE instead
+
+};
+
+
+//////////////////////////////////////////////////////////////////////////
+// ID3DXSkinInfo
+//////////////////////////////////////////////////////////////////////////
+
+// {420BD604-1C76-4a34-A466-E45D0658A32C}
+DEFINE_GUID(IID_ID3DX10SkinInfo,
+0x420bd604, 0x1c76, 0x4a34, 0xa4, 0x66, 0xe4, 0x5d, 0x6, 0x58, 0xa3, 0x2c);
+
+// scaling modes for ID3DX10SkinInfo::Compact() & ID3DX10SkinInfo::UpdateMesh()
+#define D3DX10_SKININFO_NO_SCALING 0
+#define D3DX10_SKININFO_SCALE_TO_1 1
+#define D3DX10_SKININFO_SCALE_TO_TOTAL 2
+
+typedef struct _D3DX10_SKINNING_CHANNEL
+{
+ UINT SrcOffset;
+ UINT DestOffset;
+ BOOL IsNormal;
+} D3DX10_SKINNING_CHANNEL;
+
+#undef INTERFACE
+#define INTERFACE ID3DX10SkinInfo
+
+typedef struct ID3DX10SkinInfo *LPD3DX10SKININFO;
+
+DECLARE_INTERFACE_(ID3DX10SkinInfo, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ STDMETHOD_(UINT , GetNumVertices)(THIS) PURE;
+ STDMETHOD_(UINT , GetNumBones)(THIS) PURE;
+ STDMETHOD_(UINT , GetMaxBoneInfluences)(THIS) PURE;
+
+ STDMETHOD(AddVertices)(THIS_ UINT Count) PURE;
+ STDMETHOD(RemapVertices)(THIS_ UINT NewVertexCount, UINT *pVertexRemap) PURE;
+
+ STDMETHOD(AddBones)(THIS_ UINT Count) PURE;
+ STDMETHOD(RemoveBone)(THIS_ UINT Index) PURE;
+ STDMETHOD(RemapBones)(THIS_ UINT NewBoneCount, UINT *pBoneRemap) PURE;
+
+ STDMETHOD(AddBoneInfluences)(THIS_ UINT BoneIndex, UINT InfluenceCount, UINT *pIndices, float *pWeights) PURE;
+ STDMETHOD(ClearBoneInfluences)(THIS_ UINT BoneIndex) PURE;
+ STDMETHOD_(UINT , GetBoneInfluenceCount)(THIS_ UINT BoneIndex) PURE;
+ STDMETHOD(GetBoneInfluences)(THIS_ UINT BoneIndex, UINT Offset, UINT Count, UINT *pDestIndices, float *pDestWeights) PURE;
+ STDMETHOD(FindBoneInfluenceIndex)(THIS_ UINT BoneIndex, UINT VertexIndex, UINT *pInfluenceIndex) PURE;
+ STDMETHOD(SetBoneInfluence)(THIS_ UINT BoneIndex, UINT InfluenceIndex, float Weight) PURE;
+ STDMETHOD(GetBoneInfluence)(THIS_ UINT BoneIndex, UINT InfluenceIndex, float *pWeight) PURE;
+
+ STDMETHOD(Compact)(THIS_ UINT MaxPerVertexInfluences, UINT ScaleMode, float MinWeight) PURE;
+ STDMETHOD(DoSoftwareSkinning)(UINT StartVertex, UINT VertexCount, void *pSrcVertices, UINT SrcStride, void *pDestVertices, UINT DestStride, D3DXMATRIX *pBoneMatrices, D3DXMATRIX *pInverseTransposeBoneMatrices, D3DX10_SKINNING_CHANNEL *pChannelDescs, UINT NumChannels) PURE;
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+HRESULT WINAPI
+ D3DX10CreateSkinInfo(LPD3DX10SKININFO* ppSkinInfo);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+typedef struct _D3DX10_ATTRIBUTE_WEIGHTS
+{
+ FLOAT Position;
+ FLOAT Boundary;
+ FLOAT Normal;
+ FLOAT Diffuse;
+ FLOAT Specular;
+ FLOAT Texcoord[8];
+ FLOAT Tangent;
+ FLOAT Binormal;
+} D3DX10_ATTRIBUTE_WEIGHTS, *LPD3DX10_ATTRIBUTE_WEIGHTS;
+
+#endif //__D3DX10MESH_H__
+
+
diff --git a/src/dep/include/DXSDK/include/D3DX10tex.h b/src/dep/include/DXSDK/include/D3DX10tex.h
new file mode 100644
index 0000000..ebca8ea
--- /dev/null
+++ b/src/dep/include/DXSDK/include/D3DX10tex.h
@@ -0,0 +1,637 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dx10tex.h
+// Content: D3DX10 texturing APIs
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#include "d3dx10.h"
+
+#ifndef __D3DX10TEX_H__
+#define __D3DX10TEX_H__
+
+
+//----------------------------------------------------------------------------
+// D3DX10_FILTER flags:
+// ------------------
+//
+// A valid filter must contain one of these values:
+//
+// D3DX10_FILTER_NONE
+// No scaling or filtering will take place. Pixels outside the bounds
+// of the source image are assumed to be transparent black.
+// D3DX10_FILTER_POINT
+// Each destination pixel is computed by sampling the nearest pixel
+// from the source image.
+// D3DX10_FILTER_LINEAR
+// Each destination pixel is computed by linearly interpolating between
+// the nearest pixels in the source image. This filter works best
+// when the scale on each axis is less than 2.
+// D3DX10_FILTER_TRIANGLE
+// Every pixel in the source image contributes equally to the
+// destination image. This is the slowest of all the filters.
+// D3DX10_FILTER_BOX
+// Each pixel is computed by averaging a 2x2(x2) box pixels from
+// the source image. Only works when the dimensions of the
+// destination are half those of the source. (as with mip maps)
+//
+// And can be OR'd with any of these optional flags:
+//
+// D3DX10_FILTER_MIRROR_U
+// Indicates that pixels off the edge of the texture on the U-axis
+// should be mirrored, not wraped.
+// D3DX10_FILTER_MIRROR_V
+// Indicates that pixels off the edge of the texture on the V-axis
+// should be mirrored, not wraped.
+// D3DX10_FILTER_MIRROR_W
+// Indicates that pixels off the edge of the texture on the W-axis
+// should be mirrored, not wraped.
+// D3DX10_FILTER_MIRROR
+// Same as specifying D3DX10_FILTER_MIRROR_U | D3DX10_FILTER_MIRROR_V |
+// D3DX10_FILTER_MIRROR_V
+// D3DX10_FILTER_DITHER
+// Dithers the resulting image using a 4x4 order dither pattern.
+// D3DX10_FILTER_SRGB_IN
+// Denotes that the input data is in sRGB (gamma 2.2) colorspace.
+// D3DX10_FILTER_SRGB_OUT
+// Denotes that the output data is in sRGB (gamma 2.2) colorspace.
+// D3DX10_FILTER_SRGB
+// Same as specifying D3DX10_FILTER_SRGB_IN | D3DX10_FILTER_SRGB_OUT
+//
+//----------------------------------------------------------------------------
+
+typedef enum D3DX10_FILTER_FLAG
+{
+ D3DX10_FILTER_NONE = (1 << 0),
+ D3DX10_FILTER_POINT = (2 << 0),
+ D3DX10_FILTER_LINEAR = (3 << 0),
+ D3DX10_FILTER_TRIANGLE = (4 << 0),
+ D3DX10_FILTER_BOX = (5 << 0),
+
+ D3DX10_FILTER_MIRROR_U = (1 << 16),
+ D3DX10_FILTER_MIRROR_V = (2 << 16),
+ D3DX10_FILTER_MIRROR_W = (4 << 16),
+ D3DX10_FILTER_MIRROR = (7 << 16),
+
+ D3DX10_FILTER_DITHER = (1 << 19),
+ D3DX10_FILTER_DITHER_DIFFUSION= (2 << 19),
+
+ D3DX10_FILTER_SRGB_IN = (1 << 21),
+ D3DX10_FILTER_SRGB_OUT = (2 << 21),
+ D3DX10_FILTER_SRGB = (3 << 21),
+} D3DX10_FILTER_FLAG;
+
+//----------------------------------------------------------------------------
+// D3DX10_NORMALMAP flags:
+// ---------------------
+// These flags are used to control how D3DX10ComputeNormalMap generates normal
+// maps. Any number of these flags may be OR'd together in any combination.
+//
+// D3DX10_NORMALMAP_MIRROR_U
+// Indicates that pixels off the edge of the texture on the U-axis
+// should be mirrored, not wraped.
+// D3DX10_NORMALMAP_MIRROR_V
+// Indicates that pixels off the edge of the texture on the V-axis
+// should be mirrored, not wraped.
+// D3DX10_NORMALMAP_MIRROR
+// Same as specifying D3DX10_NORMALMAP_MIRROR_U | D3DX10_NORMALMAP_MIRROR_V
+// D3DX10_NORMALMAP_INVERTSIGN
+// Inverts the direction of each normal
+// D3DX10_NORMALMAP_COMPUTE_OCCLUSION
+// Compute the per pixel Occlusion term and encodes it into the alpha.
+// An Alpha of 1 means that the pixel is not obscured in anyway, and
+// an alpha of 0 would mean that the pixel is completly obscured.
+//
+//----------------------------------------------------------------------------
+
+typedef enum D3DX10_NORMALMAP_FLAG
+{
+ D3DX10_NORMALMAP_MIRROR_U = (1 << 16),
+ D3DX10_NORMALMAP_MIRROR_V = (2 << 16),
+ D3DX10_NORMALMAP_MIRROR = (3 << 16),
+ D3DX10_NORMALMAP_INVERTSIGN = (8 << 16),
+ D3DX10_NORMALMAP_COMPUTE_OCCLUSION = (16 << 16),
+} D3DX10_NORMALMAP_FLAG;
+
+//----------------------------------------------------------------------------
+// D3DX10_CHANNEL flags:
+// -------------------
+// These flags are used by functions which operate on or more channels
+// in a texture.
+//
+// D3DX10_CHANNEL_RED
+// Indicates the red channel should be used
+// D3DX10_CHANNEL_BLUE
+// Indicates the blue channel should be used
+// D3DX10_CHANNEL_GREEN
+// Indicates the green channel should be used
+// D3DX10_CHANNEL_ALPHA
+// Indicates the alpha channel should be used
+// D3DX10_CHANNEL_LUMINANCE
+// Indicates the luminaces of the red green and blue channels should be
+// used.
+//
+//----------------------------------------------------------------------------
+
+typedef enum D3DX10_CHANNEL_FLAG
+{
+ D3DX10_CHANNEL_RED = (1 << 0),
+ D3DX10_CHANNEL_BLUE = (1 << 1),
+ D3DX10_CHANNEL_GREEN = (1 << 2),
+ D3DX10_CHANNEL_ALPHA = (1 << 3),
+ D3DX10_CHANNEL_LUMINANCE = (1 << 4),
+} D3DX10_CHANNEL_FLAG;
+
+
+
+//----------------------------------------------------------------------------
+// D3DX10_IMAGE_FILE_FORMAT:
+// ---------------------
+// This enum is used to describe supported image file formats.
+//
+//----------------------------------------------------------------------------
+
+typedef enum _D3DX10_IMAGE_FILE_FORMAT
+{
+ D3DX10_IFF_BMP = 0,
+ D3DX10_IFF_JPG = 1,
+ D3DX10_IFF_PNG = 3,
+ D3DX10_IFF_DDS = 4,
+ D3DX10_IFF_TIFF = 10,
+ D3DX10_IFF_GIF = 11,
+ D3DX10_IFF_FORCE_DWORD = 0x7fffffff
+
+} D3DX10_IMAGE_FILE_FORMAT;
+
+
+//----------------------------------------------------------------------------
+// D3DX10_IMAGE_INFO:
+// ---------------
+// This structure is used to return a rough description of what the
+// the original contents of an image file looked like.
+//
+// Width
+// Width of original image in pixels
+// Height
+// Height of original image in pixels
+// Depth
+// Depth of original image in pixels
+// ArraySize
+// Array size in textures
+// MipLevels
+// Number of mip levels in original image
+// Format
+// D3D format which most closely describes the data in original image
+// ResourceType
+// D3DRESOURCETYPE representing the type of texture stored in the file.
+// D3DRTYPE_TEXTURE, D3DRTYPE_VOLUMETEXTURE, or D3DRTYPE_CUBETEXTURE.
+// ImageFileFormat
+// D3DX10_IMAGE_FILE_FORMAT representing the format of the image file.
+//
+//----------------------------------------------------------------------------
+
+typedef struct _D3DX10_IMAGE_INFO
+{
+ UINT Width;
+ UINT Height;
+ UINT Depth;
+ UINT ArraySize;
+ UINT MipLevels;
+ DXGI_FORMAT Format;
+ D3D10_RESOURCE ResourceType;
+ D3DX10_IMAGE_FILE_FORMAT ImageFileFormat;
+
+} D3DX10_IMAGE_INFO;
+
+
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Image File APIs ///////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+//----------------------------------------------------------------------------
+// D3DX10_IMAGE_LOAD_INFO:
+// ---------------
+// This structure can be optionally passed in to texture loader APIs to
+// control how textures get loaded. Pass in D3DX10_DEFAULT for any of these
+// to have D3DX automatically pick defaults based on the source file.
+//
+// Width
+// Rescale texture to Width texels wide
+// Height
+// Rescale texture to Height texels high
+// Depth
+// Rescale texture to Depth texels deep
+// FirstMipLevel
+// First mip level to load
+// MipLevels
+// Number of mip levels to load after the first level
+// Usage
+// D3D10_USAGE flag for the new texture
+// BindFlags
+// D3D10 Bind flags for the new texture
+// CpuAccessFlags
+// D3D10 CPU Access flags for the new texture
+// MiscFlags
+// Reserved. Must be 0
+// Format
+// Resample texture to the specified format
+// Filter
+// Filter the texture using the specified filter (only when resampling)
+// MipFilter
+// Filter the texture mip levels using the specified filter (only if
+// generating mips)
+// pSrcInfo
+// (optional) pointer to a D3DX10_IMAGE_INFO structure that will get
+// populated with source image information
+//
+//----------------------------------------------------------------------------
+
+#define D3DX10_IMAGE_LOAD_VALID_FLAGS (0)
+
+typedef struct _D3DX10_IMAGE_LOAD_INFO
+{
+ UINT Width;
+ UINT Height;
+ UINT Depth;
+ UINT FirstMipLevel;
+ UINT MipLevels;
+ D3D10_USAGE Usage;
+ UINT32 BindFlags;
+ UINT32 CpuAccessFlags;
+ UINT32 MiscFlags;
+ DXGI_FORMAT Format;
+ UINT Filter;
+ UINT MipFilter;
+ D3DX10_IMAGE_INFO* pSrcInfo;
+
+#ifdef __cplusplus
+ _D3DX10_IMAGE_LOAD_INFO()
+ {
+ Width = D3DX10_DEFAULT;
+ Height = D3DX10_DEFAULT;
+ Depth = D3DX10_DEFAULT;
+ FirstMipLevel = D3DX10_DEFAULT;
+ MipLevels = D3DX10_DEFAULT;
+ Usage = (D3D10_USAGE) D3DX10_DEFAULT;
+ BindFlags = D3DX10_DEFAULT;
+ CpuAccessFlags = D3DX10_DEFAULT;
+ MiscFlags = D3DX10_DEFAULT;
+ Format = DXGI_FORMAT_FROM_FILE;
+ Filter = D3DX10_DEFAULT;
+ MipFilter = D3DX10_DEFAULT;
+ pSrcInfo = NULL;
+ }
+#endif
+
+} D3DX10_IMAGE_LOAD_INFO;
+
+//----------------------------------------------------------------------------
+// D3DX10 Asynchronous texture I/O (advanced mode)
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI D3DX10CreateAsyncFileLoaderW(LPCWSTR pFileName, ID3DX10DataLoader **ppDataLoader);
+HRESULT WINAPI D3DX10CreateAsyncFileLoaderA(LPCSTR pFileName, ID3DX10DataLoader **ppDataLoader);
+HRESULT WINAPI D3DX10CreateAsyncMemoryLoader(LPCVOID pData, SIZE_T cbData, ID3DX10DataLoader **ppDataLoader);
+HRESULT WINAPI D3DX10CreateAsyncResourceLoaderW(HMODULE hSrcModule, LPCWSTR pSrcResource, ID3DX10DataLoader **ppDataLoader);
+HRESULT WINAPI D3DX10CreateAsyncResourceLoaderA(HMODULE hSrcModule, LPCSTR pSrcResource, ID3DX10DataLoader **ppDataLoader);
+
+#ifdef UNICODE
+#define D3DX10CreateAsyncFileLoader D3DX10CreateAsyncFileLoaderW
+#define D3DX10CreateAsyncResourceLoader D3DX10CreateAsyncResourceLoaderW
+#else
+#define D3DX10CreateAsyncFileLoader D3DX10CreateAsyncFileLoaderA
+#define D3DX10CreateAsyncResourceLoader D3DX10CreateAsyncResourceLoaderA
+#endif
+
+HRESULT WINAPI D3DX10CreateAsyncTextureProcessor(ID3D10Device *pDevice, D3DX10_IMAGE_LOAD_INFO *pLoadInfo, ID3DX10DataProcessor **ppDataProcessor);
+HRESULT WINAPI D3DX10CreateAsyncTextureInfoProcessor(D3DX10_IMAGE_INFO *pImageInfo, ID3DX10DataProcessor **ppDataProcessor);
+HRESULT WINAPI D3DX10CreateAsyncShaderResourceViewProcessor(ID3D10Device *pDevice, D3DX10_IMAGE_LOAD_INFO *pLoadInfo, ID3DX10DataProcessor **ppDataProcessor);
+
+//----------------------------------------------------------------------------
+// GetImageInfoFromFile/Resource/Memory:
+// ------------------------------
+// Fills in a D3DX10_IMAGE_INFO struct with information about an image file.
+//
+// Parameters:
+// pSrcFile
+// File name of the source image.
+// pSrcModule
+// Module where resource is located, or NULL for module associated
+// with image the os used to create the current process.
+// pSrcResource
+// Resource name.
+// pSrcData
+// Pointer to file in memory.
+// SrcDataSize
+// Size in bytes of file in memory.
+// pPump
+// Optional pointer to a thread pump object to use.
+// pSrcInfo
+// Pointer to a D3DX10_IMAGE_INFO structure to be filled in with the
+// description of the data in the source image file.
+//
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DX10GetImageInfoFromFileA(
+ LPCSTR pSrcFile,
+ ID3DX10ThreadPump* pPump,
+ D3DX10_IMAGE_INFO* pSrcInfo);
+
+HRESULT WINAPI
+ D3DX10GetImageInfoFromFileW(
+ LPCWSTR pSrcFile,
+ ID3DX10ThreadPump* pPump,
+ D3DX10_IMAGE_INFO* pSrcInfo);
+
+#ifdef UNICODE
+#define D3DX10GetImageInfoFromFile D3DX10GetImageInfoFromFileW
+#else
+#define D3DX10GetImageInfoFromFile D3DX10GetImageInfoFromFileA
+#endif
+
+
+HRESULT WINAPI
+ D3DX10GetImageInfoFromResourceA(
+ HMODULE hSrcModule,
+ LPCSTR pSrcResource,
+ ID3DX10ThreadPump* pPump,
+ D3DX10_IMAGE_INFO* pSrcInfo);
+
+HRESULT WINAPI
+ D3DX10GetImageInfoFromResourceW(
+ HMODULE hSrcModule,
+ LPCWSTR pSrcResource,
+ ID3DX10ThreadPump* pPump,
+ D3DX10_IMAGE_INFO* pSrcInfo);
+
+#ifdef UNICODE
+#define D3DX10GetImageInfoFromResource D3DX10GetImageInfoFromResourceW
+#else
+#define D3DX10GetImageInfoFromResource D3DX10GetImageInfoFromResourceA
+#endif
+
+
+HRESULT WINAPI
+ D3DX10GetImageInfoFromMemory(
+ LPCVOID pSrcData,
+ SIZE_T SrcDataSize,
+ ID3DX10ThreadPump* pPump,
+ D3DX10_IMAGE_INFO* pSrcInfo);
+
+//////////////////////////////////////////////////////////////////////////////
+// Create/Save Texture APIs //////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+
+//----------------------------------------------------------------------------
+// D3DX10CreateTextureFromFile/Resource/Memory:
+// D3DX10CreateShaderResourceViewFromFile/Resource/Memory:
+// -----------------------------------
+// Create a texture object from a file or resource.
+//
+// Parameters:
+//
+// pDevice
+// The D3D device with which the texture is going to be used.
+// pSrcFile
+// File name.
+// hSrcModule
+// Module handle. if NULL, current module will be used.
+// pSrcResource
+// Resource name in module
+// pvSrcData
+// Pointer to file in memory.
+// SrcDataSize
+// Size in bytes of file in memory.
+// pLoadInfo
+// Optional pointer to a D3DX10_IMAGE_LOAD_INFO structure that
+// contains additional loader parameters.
+// pPump
+// Optional pointer to a thread pump object to use.
+// ppTexture
+// [out] Created texture object.
+// ppShaderResourceView
+// [out] Shader resource view object created.
+//
+//----------------------------------------------------------------------------
+
+
+// FromFile
+
+HRESULT WINAPI
+ D3DX10CreateShaderResourceViewFromFileA(
+ ID3D10Device* pDevice,
+ LPCSTR pSrcFile,
+ D3DX10_IMAGE_LOAD_INFO *pLoadInfo,
+ ID3DX10ThreadPump* pPump,
+ ID3D10ShaderResourceView** ppShaderResourceView);
+
+HRESULT WINAPI
+ D3DX10CreateShaderResourceViewFromFileW(
+ ID3D10Device* pDevice,
+ LPCWSTR pSrcFile,
+ D3DX10_IMAGE_LOAD_INFO *pLoadInfo,
+ ID3DX10ThreadPump* pPump,
+ ID3D10ShaderResourceView** ppShaderResourceView);
+
+#ifdef UNICODE
+#define D3DX10CreateShaderResourceViewFromFile D3DX10CreateShaderResourceViewFromFileW
+#else
+#define D3DX10CreateShaderResourceViewFromFile D3DX10CreateShaderResourceViewFromFileA
+#endif
+
+HRESULT WINAPI
+ D3DX10CreateTextureFromFileA(
+ ID3D10Device* pDevice,
+ LPCSTR pSrcFile,
+ D3DX10_IMAGE_LOAD_INFO *pLoadInfo,
+ ID3DX10ThreadPump* pPump,
+ ID3D10Resource** ppShaderResourceView);
+
+HRESULT WINAPI
+ D3DX10CreateTextureFromFileW(
+ ID3D10Device* pDevice,
+ LPCWSTR pSrcFile,
+ D3DX10_IMAGE_LOAD_INFO *pLoadInfo,
+ ID3DX10ThreadPump* pPump,
+ ID3D10Resource** ppShaderResourceView);
+
+#ifdef UNICODE
+#define D3DX10CreateTextureFromFile D3DX10CreateTextureFromFileW
+#else
+#define D3DX10CreateTextureFromFile D3DX10CreateTextureFromFileA
+#endif
+
+// FromResource (resources in dll/exes)
+
+HRESULT WINAPI
+ D3DX10CreateShaderResourceViewFromResourceA(
+ ID3D10Device* pDevice,
+ HMODULE hSrcModule,
+ LPCSTR pSrcResource,
+ D3DX10_IMAGE_LOAD_INFO *pLoadInfo,
+ ID3DX10ThreadPump* pPump,
+ ID3D10ShaderResourceView** ppShaderResourceView);
+
+HRESULT WINAPI
+ D3DX10CreateShaderResourceViewFromResourceW(
+ ID3D10Device* pDevice,
+ HMODULE hSrcModule,
+ LPCWSTR pSrcResource,
+ D3DX10_IMAGE_LOAD_INFO *pLoadInfo,
+ ID3DX10ThreadPump* pPump,
+ ID3D10ShaderResourceView** ppShaderResourceView);
+
+#ifdef UNICODE
+#define D3DX10CreateShaderResourceViewFromResource D3DX10CreateShaderResourceViewFromResourceW
+#else
+#define D3DX10CreateShaderResourceViewFromResource D3DX10CreateShaderResourceViewFromResourceA
+#endif
+
+HRESULT WINAPI
+ D3DX10CreateTextureFromResourceA(
+ ID3D10Device* pDevice,
+ HMODULE hSrcModule,
+ LPCSTR pSrcResource,
+ D3DX10_IMAGE_LOAD_INFO *pLoadInfo,
+ ID3DX10ThreadPump* pPump,
+ ID3D10Resource** ppTexture);
+
+HRESULT WINAPI
+ D3DX10CreateTextureFromResourceW(
+ ID3D10Device* pDevice,
+ HMODULE hSrcModule,
+ LPCWSTR pSrcResource,
+ D3DX10_IMAGE_LOAD_INFO *pLoadInfo,
+ ID3DX10ThreadPump* pPump,
+ ID3D10Resource** ppTexture);
+
+#ifdef UNICODE
+#define D3DX10CreateTextureFromResource D3DX10CreateTextureFromResourceW
+#else
+#define D3DX10CreateTextureFromResource D3DX10CreateTextureFromResourceA
+#endif
+
+
+// FromFileInMemory
+
+HRESULT WINAPI
+ D3DX10CreateShaderResourceViewFromMemory(
+ ID3D10Device* pDevice,
+ LPCVOID pSrcData,
+ SIZE_T SrcDataSize,
+ D3DX10_IMAGE_LOAD_INFO *pLoadInfo,
+ ID3DX10ThreadPump* pPump,
+ ID3D10ShaderResourceView** ppShaderResourceView);
+
+HRESULT WINAPI
+ D3DX10CreateTextureFromMemory(
+ ID3D10Device* pDevice,
+ LPCVOID pSrcData,
+ SIZE_T SrcDataSize,
+ D3DX10_IMAGE_LOAD_INFO *pLoadInfo,
+ ID3DX10ThreadPump* pPump,
+ ID3D10Resource** ppTexture);
+
+
+//----------------------------------------------------------------------------
+// D3DX10SaveTextureToFile:
+// ----------------------
+// Save a texture to a file.
+//
+// Parameters:
+// pDestFile
+// File name of the destination file
+// DestFormat
+// D3DX10_IMAGE_FILE_FORMAT specifying file format to use when saving.
+// pSrcTexture
+// Source texture, containing the image to be saved
+//
+//----------------------------------------------------------------------------
+
+
+HRESULT WINAPI
+ D3DX10SaveTextureToFileA(
+ ID3D10Resource *pSrcTexture,
+ D3DX10_IMAGE_FILE_FORMAT DestFormat,
+ LPCSTR pDestFile);
+
+HRESULT WINAPI
+ D3DX10SaveTextureToFileW(
+ ID3D10Resource *pSrcTexture,
+ D3DX10_IMAGE_FILE_FORMAT DestFormat,
+ LPCWSTR pDestFile);
+
+#ifdef UNICODE
+#define D3DX10SaveTextureToFile D3DX10SaveTextureToFileW
+#else
+#define D3DX10SaveTextureToFile D3DX10SaveTextureToFileA
+#endif
+
+//----------------------------------------------------------------------------
+// D3DX10SaveTextureToMemory:
+// ----------------------
+// Save a texture to a file.
+//
+// Parameters:
+// ppDestBuf
+// address of a d3dxbuffer pointer to return the image data
+// DestFormat
+// D3DX10_IMAGE_FILE_FORMAT specifying file format to use when saving.
+// pSrcTexture
+// Source texture, containing the image to be saved
+//
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DX10SaveTextureToMemory(
+ ID3D10Resource *pSrcTexture,
+ D3DX10_IMAGE_FILE_FORMAT DestFormat,
+ LPD3D10BLOB* ppDestBuf);
+
+
+//----------------------------------------------------------------------------
+// D3DX10ComputeNormalMap:
+// ---------------------
+// Converts a height map into a normal map. The (x,y,z) components of each
+// normal are mapped to the (r,g,b) channels of the output texture.
+//
+// Parameters
+// pSrcTexture
+// Pointer to the source heightmap texture
+// Flags
+// D3DX10_NORMALMAP flags
+// Channel
+// D3DX10_CHANNEL specifying source of height information
+// Amplitude
+// The constant value which the height information is multiplied by.
+// pDestTexture
+// Pointer to the destination texture
+//---------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DX10ComputeNormalMap(
+ ID3D10Texture2D *pSrcTexture,
+ UINT Flags,
+ UINT Channel,
+ FLOAT Amplitude,
+ ID3D10Texture2D *pDestTexture);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+#endif //__D3DX10TEX_H__
+
diff --git a/src/dep/include/DXSDK/include/DXGI.h b/src/dep/include/DXSDK/include/DXGI.h
new file mode 100644
index 0000000..ec161c8
--- /dev/null
+++ b/src/dep/include/DXSDK/include/DXGI.h
@@ -0,0 +1,1667 @@
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 7.00.0485 */
+/* Compiler settings for dxgi.idl:
+ Oicf, W1, Zp8, env=Win32 (32b run)
+ protocol : dce , ms_ext, c_ext, robust
+ 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( )
+
+#pragma warning( disable: 4049 ) /* more than 64k source lines */
+
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCSAL_H_VERSION__
+#define __REQUIRED_RPCSAL_H_VERSION__ 100
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of
+#endif // __RPCNDR_H_VERSION__
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __dxgi_h__
+#define __dxgi_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IDXGIObject_FWD_DEFINED__
+#define __IDXGIObject_FWD_DEFINED__
+typedef interface IDXGIObject IDXGIObject;
+#endif /* __IDXGIObject_FWD_DEFINED__ */
+
+
+#ifndef __IDXGIDeviceSubObject_FWD_DEFINED__
+#define __IDXGIDeviceSubObject_FWD_DEFINED__
+typedef interface IDXGIDeviceSubObject IDXGIDeviceSubObject;
+#endif /* __IDXGIDeviceSubObject_FWD_DEFINED__ */
+
+
+#ifndef __IDXGIResource_FWD_DEFINED__
+#define __IDXGIResource_FWD_DEFINED__
+typedef interface IDXGIResource IDXGIResource;
+#endif /* __IDXGIResource_FWD_DEFINED__ */
+
+
+#ifndef __IDXGISurface_FWD_DEFINED__
+#define __IDXGISurface_FWD_DEFINED__
+typedef interface IDXGISurface IDXGISurface;
+#endif /* __IDXGISurface_FWD_DEFINED__ */
+
+
+#ifndef __IDXGIAdapter_FWD_DEFINED__
+#define __IDXGIAdapter_FWD_DEFINED__
+typedef interface IDXGIAdapter IDXGIAdapter;
+#endif /* __IDXGIAdapter_FWD_DEFINED__ */
+
+
+#ifndef __IDXGIOutput_FWD_DEFINED__
+#define __IDXGIOutput_FWD_DEFINED__
+typedef interface IDXGIOutput IDXGIOutput;
+#endif /* __IDXGIOutput_FWD_DEFINED__ */
+
+
+#ifndef __IDXGISwapChain_FWD_DEFINED__
+#define __IDXGISwapChain_FWD_DEFINED__
+typedef interface IDXGISwapChain IDXGISwapChain;
+#endif /* __IDXGISwapChain_FWD_DEFINED__ */
+
+
+#ifndef __IDXGIFactory_FWD_DEFINED__
+#define __IDXGIFactory_FWD_DEFINED__
+typedef interface IDXGIFactory IDXGIFactory;
+#endif /* __IDXGIFactory_FWD_DEFINED__ */
+
+
+#ifndef __IDXGIDevice_FWD_DEFINED__
+#define __IDXGIDevice_FWD_DEFINED__
+typedef interface IDXGIDevice IDXGIDevice;
+#endif /* __IDXGIDevice_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "dxgitype.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+
+#ifndef __IDXGIObject_INTERFACE_DEFINED__
+#define __IDXGIObject_INTERFACE_DEFINED__
+
+/* interface IDXGIObject */
+/* [unique][local][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXGIObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("aec22fb8-76f3-4639-9be0-28eb43a67a2e")
+ IDXGIObject : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
+ /* [in] */ REFGUID Name,
+ /* [in] */ SIZE_T DataSize,
+ /* [in] */ const void *pData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
+ /* [in] */ REFGUID Name,
+ /* [in] */ const IUnknown *pUnknown) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
+ /* [in] */ REFGUID Name,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [out] */ void *pData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetParent(
+ /* [in] */ REFIID riid,
+ /* [retval][out] */ void **ppParent) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXGIObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXGIObject * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXGIObject * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXGIObject * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ IDXGIObject * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ SIZE_T DataSize,
+ /* [in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ IDXGIObject * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ const IUnknown *pUnknown);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ IDXGIObject * This,
+ /* [in] */ REFGUID Name,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *GetParent )(
+ IDXGIObject * This,
+ /* [in] */ REFIID riid,
+ /* [retval][out] */ void **ppParent);
+
+ END_INTERFACE
+ } IDXGIObjectVtbl;
+
+ interface IDXGIObject
+ {
+ CONST_VTBL struct IDXGIObjectVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXGIObject_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IDXGIObject_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IDXGIObject_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IDXGIObject_SetPrivateData(This,Name,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
+
+#define IDXGIObject_SetPrivateDataInterface(This,Name,pUnknown) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
+
+#define IDXGIObject_GetPrivateData(This,Name,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
+
+#define IDXGIObject_GetParent(This,riid,ppParent) \
+ ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IDXGIObject_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDXGIDeviceSubObject_INTERFACE_DEFINED__
+#define __IDXGIDeviceSubObject_INTERFACE_DEFINED__
+
+/* interface IDXGIDeviceSubObject */
+/* [unique][local][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXGIDeviceSubObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("3d3e0379-f9de-4d58-bb6c-18d62992f1a6")
+ IDXGIDeviceSubObject : public IDXGIObject
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetDevice(
+ /* [in] */ REFIID riid,
+ /* [retval][out] */ void **ppDevice) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXGIDeviceSubObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXGIDeviceSubObject * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXGIDeviceSubObject * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXGIDeviceSubObject * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ IDXGIDeviceSubObject * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ SIZE_T DataSize,
+ /* [in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ IDXGIDeviceSubObject * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ const IUnknown *pUnknown);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ IDXGIDeviceSubObject * This,
+ /* [in] */ REFGUID Name,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *GetParent )(
+ IDXGIDeviceSubObject * This,
+ /* [in] */ REFIID riid,
+ /* [retval][out] */ void **ppParent);
+
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ IDXGIDeviceSubObject * This,
+ /* [in] */ REFIID riid,
+ /* [retval][out] */ void **ppDevice);
+
+ END_INTERFACE
+ } IDXGIDeviceSubObjectVtbl;
+
+ interface IDXGIDeviceSubObject
+ {
+ CONST_VTBL struct IDXGIDeviceSubObjectVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXGIDeviceSubObject_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IDXGIDeviceSubObject_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IDXGIDeviceSubObject_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IDXGIDeviceSubObject_SetPrivateData(This,Name,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
+
+#define IDXGIDeviceSubObject_SetPrivateDataInterface(This,Name,pUnknown) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
+
+#define IDXGIDeviceSubObject_GetPrivateData(This,Name,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
+
+#define IDXGIDeviceSubObject_GetParent(This,riid,ppParent) \
+ ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
+
+
+#define IDXGIDeviceSubObject_GetDevice(This,riid,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IDXGIDeviceSubObject_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDXGIResource_INTERFACE_DEFINED__
+#define __IDXGIResource_INTERFACE_DEFINED__
+
+/* interface IDXGIResource */
+/* [unique][local][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXGIResource;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("035f3ab4-482e-4e50-b41f-8a7f8bd8960b")
+ IDXGIResource : public IDXGIDeviceSubObject
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetSharedHandle(
+ /* [out] */ HANDLE *pSharedHandle) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetUsage(
+ /* [out] */ DXGI_USAGE *pUsage) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetEvictionPriority(
+ /* [in] */ UINT EvictionPriority) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetEvictionPriority(
+ /* [retval][out] */ UINT *pEvictionPriority) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXGIResourceVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXGIResource * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXGIResource * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXGIResource * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ IDXGIResource * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ SIZE_T DataSize,
+ /* [in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ IDXGIResource * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ const IUnknown *pUnknown);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ IDXGIResource * This,
+ /* [in] */ REFGUID Name,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *GetParent )(
+ IDXGIResource * This,
+ /* [in] */ REFIID riid,
+ /* [retval][out] */ void **ppParent);
+
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ IDXGIResource * This,
+ /* [in] */ REFIID riid,
+ /* [retval][out] */ void **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetSharedHandle )(
+ IDXGIResource * This,
+ /* [out] */ HANDLE *pSharedHandle);
+
+ HRESULT ( STDMETHODCALLTYPE *GetUsage )(
+ IDXGIResource * This,
+ /* [out] */ DXGI_USAGE *pUsage);
+
+ HRESULT ( STDMETHODCALLTYPE *SetEvictionPriority )(
+ IDXGIResource * This,
+ /* [in] */ UINT EvictionPriority);
+
+ HRESULT ( STDMETHODCALLTYPE *GetEvictionPriority )(
+ IDXGIResource * This,
+ /* [retval][out] */ UINT *pEvictionPriority);
+
+ END_INTERFACE
+ } IDXGIResourceVtbl;
+
+ interface IDXGIResource
+ {
+ CONST_VTBL struct IDXGIResourceVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXGIResource_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IDXGIResource_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IDXGIResource_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IDXGIResource_SetPrivateData(This,Name,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
+
+#define IDXGIResource_SetPrivateDataInterface(This,Name,pUnknown) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
+
+#define IDXGIResource_GetPrivateData(This,Name,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
+
+#define IDXGIResource_GetParent(This,riid,ppParent) \
+ ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
+
+
+#define IDXGIResource_GetDevice(This,riid,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) )
+
+
+#define IDXGIResource_GetSharedHandle(This,pSharedHandle) \
+ ( (This)->lpVtbl -> GetSharedHandle(This,pSharedHandle) )
+
+#define IDXGIResource_GetUsage(This,pUsage) \
+ ( (This)->lpVtbl -> GetUsage(This,pUsage) )
+
+#define IDXGIResource_SetEvictionPriority(This,EvictionPriority) \
+ ( (This)->lpVtbl -> SetEvictionPriority(This,EvictionPriority) )
+
+#define IDXGIResource_GetEvictionPriority(This,pEvictionPriority) \
+ ( (This)->lpVtbl -> GetEvictionPriority(This,pEvictionPriority) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IDXGIResource_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_dxgi_0000_0003 */
+/* [local] */
+
+#define DXGI_MAP_READ ( 1UL )
+
+#define DXGI_MAP_WRITE ( 2UL )
+
+#define DXGI_MAP_DISCARD ( 4UL )
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0003_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0003_v0_0_s_ifspec;
+
+#ifndef __IDXGISurface_INTERFACE_DEFINED__
+#define __IDXGISurface_INTERFACE_DEFINED__
+
+/* interface IDXGISurface */
+/* [unique][local][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXGISurface;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("cafcb56c-6ac3-4889-bf47-9e23bbd260ec")
+ IDXGISurface : public IDXGIDeviceSubObject
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetDesc(
+ /* [out] */ DXGI_SURFACE_DESC *pDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Map(
+ /* [out] */ DXGI_MAPPED_RECT *pLockedRect,
+ /* [in] */ UINT Flags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Unmap( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXGISurfaceVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXGISurface * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXGISurface * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXGISurface * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ IDXGISurface * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ SIZE_T DataSize,
+ /* [in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ IDXGISurface * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ const IUnknown *pUnknown);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ IDXGISurface * This,
+ /* [in] */ REFGUID Name,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *GetParent )(
+ IDXGISurface * This,
+ /* [in] */ REFIID riid,
+ /* [retval][out] */ void **ppParent);
+
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ IDXGISurface * This,
+ /* [in] */ REFIID riid,
+ /* [retval][out] */ void **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *GetDesc )(
+ IDXGISurface * This,
+ /* [out] */ DXGI_SURFACE_DESC *pDesc);
+
+ HRESULT ( STDMETHODCALLTYPE *Map )(
+ IDXGISurface * This,
+ /* [out] */ DXGI_MAPPED_RECT *pLockedRect,
+ /* [in] */ UINT Flags);
+
+ HRESULT ( STDMETHODCALLTYPE *Unmap )(
+ IDXGISurface * This);
+
+ END_INTERFACE
+ } IDXGISurfaceVtbl;
+
+ interface IDXGISurface
+ {
+ CONST_VTBL struct IDXGISurfaceVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXGISurface_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IDXGISurface_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IDXGISurface_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IDXGISurface_SetPrivateData(This,Name,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
+
+#define IDXGISurface_SetPrivateDataInterface(This,Name,pUnknown) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
+
+#define IDXGISurface_GetPrivateData(This,Name,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
+
+#define IDXGISurface_GetParent(This,riid,ppParent) \
+ ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
+
+
+#define IDXGISurface_GetDevice(This,riid,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) )
+
+
+#define IDXGISurface_GetDesc(This,pDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pDesc) )
+
+#define IDXGISurface_Map(This,pLockedRect,Flags) \
+ ( (This)->lpVtbl -> Map(This,pLockedRect,Flags) )
+
+#define IDXGISurface_Unmap(This) \
+ ( (This)->lpVtbl -> Unmap(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IDXGISurface_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_dxgi_0000_0004 */
+/* [local] */
+
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0004_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0004_v0_0_s_ifspec;
+
+#ifndef __IDXGIAdapter_INTERFACE_DEFINED__
+#define __IDXGIAdapter_INTERFACE_DEFINED__
+
+/* interface IDXGIAdapter */
+/* [unique][local][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXGIAdapter;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("2411e7e1-12ac-4ccf-bd14-9798e8534dc0")
+ IDXGIAdapter : public IDXGIObject
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE EnumOutputs(
+ /* [in] */ UINT Output,
+ /* [out][in] */ IDXGIOutput **ppOutput) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDesc(
+ /* [out] */ DXGI_ADAPTER_DESC *pDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RegisterDriver(
+ /* [in] */ HMODULE Module) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CheckInterfaceSupport(
+ /* [in] */ REFGUID InterfaceName,
+ /* [out] */ LARGE_INTEGER *pUMDVersion) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXGIAdapterVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXGIAdapter * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXGIAdapter * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXGIAdapter * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ IDXGIAdapter * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ SIZE_T DataSize,
+ /* [in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ IDXGIAdapter * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ const IUnknown *pUnknown);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ IDXGIAdapter * This,
+ /* [in] */ REFGUID Name,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *GetParent )(
+ IDXGIAdapter * This,
+ /* [in] */ REFIID riid,
+ /* [retval][out] */ void **ppParent);
+
+ HRESULT ( STDMETHODCALLTYPE *EnumOutputs )(
+ IDXGIAdapter * This,
+ /* [in] */ UINT Output,
+ /* [out][in] */ IDXGIOutput **ppOutput);
+
+ HRESULT ( STDMETHODCALLTYPE *GetDesc )(
+ IDXGIAdapter * This,
+ /* [out] */ DXGI_ADAPTER_DESC *pDesc);
+
+ HRESULT ( STDMETHODCALLTYPE *RegisterDriver )(
+ IDXGIAdapter * This,
+ /* [in] */ HMODULE Module);
+
+ HRESULT ( STDMETHODCALLTYPE *CheckInterfaceSupport )(
+ IDXGIAdapter * This,
+ /* [in] */ REFGUID InterfaceName,
+ /* [out] */ LARGE_INTEGER *pUMDVersion);
+
+ END_INTERFACE
+ } IDXGIAdapterVtbl;
+
+ interface IDXGIAdapter
+ {
+ CONST_VTBL struct IDXGIAdapterVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXGIAdapter_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IDXGIAdapter_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IDXGIAdapter_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IDXGIAdapter_SetPrivateData(This,Name,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
+
+#define IDXGIAdapter_SetPrivateDataInterface(This,Name,pUnknown) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
+
+#define IDXGIAdapter_GetPrivateData(This,Name,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
+
+#define IDXGIAdapter_GetParent(This,riid,ppParent) \
+ ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
+
+
+#define IDXGIAdapter_EnumOutputs(This,Output,ppOutput) \
+ ( (This)->lpVtbl -> EnumOutputs(This,Output,ppOutput) )
+
+#define IDXGIAdapter_GetDesc(This,pDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pDesc) )
+
+#define IDXGIAdapter_RegisterDriver(This,Module) \
+ ( (This)->lpVtbl -> RegisterDriver(This,Module) )
+
+#define IDXGIAdapter_CheckInterfaceSupport(This,InterfaceName,pUMDVersion) \
+ ( (This)->lpVtbl -> CheckInterfaceSupport(This,InterfaceName,pUMDVersion) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IDXGIAdapter_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_dxgi_0000_0005 */
+/* [local] */
+
+#define DXGI_ENUM_MODES_INTERLACED ( 1UL )
+
+#define DXGI_ENUM_MODES_NONPREROTATED ( 2UL )
+
+#define DXGI_ENUM_MODES_SCALING ( 4UL )
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0005_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0005_v0_0_s_ifspec;
+
+#ifndef __IDXGIOutput_INTERFACE_DEFINED__
+#define __IDXGIOutput_INTERFACE_DEFINED__
+
+/* interface IDXGIOutput */
+/* [unique][local][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXGIOutput;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ae02eedb-c735-4690-8d52-5a8dc20213aa")
+ IDXGIOutput : public IDXGIObject
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetDesc(
+ /* [out] */ DXGI_OUTPUT_DESC *pDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetGammaControlCapabilities(
+ /* [out] */ DXGI_GAMMA_CONTROL_CAPABILIITES *pGammaCaps) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumDisplayModes(
+ /* [in] */ UINT Mode,
+ /* [in] */ DXGI_FORMAT EnumFormat,
+ /* [out] */ DXGI_MODE_DESC *pDesc,
+ /* [in] */ UINT Flags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDisplayMode(
+ /* [out] */ DXGI_MODE_DESC *pMode) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FindClosestMatchingMode(
+ /* [in] */ const DXGI_MODE_DESC *pModeToMatch,
+ /* [out] */ DXGI_MODE_DESC *pClosestMatch) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE WaitForVBlank( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE TakeOwnership(
+ /* [in] */ IUnknown *pDevice,
+ BOOL Exclusive) = 0;
+
+ virtual void STDMETHODCALLTYPE ReleaseOwnership( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetDisplaySurface(
+ /* [in] */ IDXGISurface *pScanoutSurface,
+ /* [in] */ DXGI_MODE_DESC *pMode) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDisplaySurfaceData(
+ /* [in] */ IDXGISurface *pDestination) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFrameStatistics(
+ /* [out] */ DXGI_FRAME_STATISTICS *pStats) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetGammaControl(
+ /* [in] */ const DXGI_GAMMA_CONTROL *pArray) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXGIOutputVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXGIOutput * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXGIOutput * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXGIOutput * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ IDXGIOutput * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ SIZE_T DataSize,
+ /* [in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ IDXGIOutput * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ const IUnknown *pUnknown);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ IDXGIOutput * This,
+ /* [in] */ REFGUID Name,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *GetParent )(
+ IDXGIOutput * This,
+ /* [in] */ REFIID riid,
+ /* [retval][out] */ void **ppParent);
+
+ HRESULT ( STDMETHODCALLTYPE *GetDesc )(
+ IDXGIOutput * This,
+ /* [out] */ DXGI_OUTPUT_DESC *pDesc);
+
+ HRESULT ( STDMETHODCALLTYPE *GetGammaControlCapabilities )(
+ IDXGIOutput * This,
+ /* [out] */ DXGI_GAMMA_CONTROL_CAPABILIITES *pGammaCaps);
+
+ HRESULT ( STDMETHODCALLTYPE *EnumDisplayModes )(
+ IDXGIOutput * This,
+ /* [in] */ UINT Mode,
+ /* [in] */ DXGI_FORMAT EnumFormat,
+ /* [out] */ DXGI_MODE_DESC *pDesc,
+ /* [in] */ UINT Flags);
+
+ HRESULT ( STDMETHODCALLTYPE *GetDisplayMode )(
+ IDXGIOutput * This,
+ /* [out] */ DXGI_MODE_DESC *pMode);
+
+ HRESULT ( STDMETHODCALLTYPE *FindClosestMatchingMode )(
+ IDXGIOutput * This,
+ /* [in] */ const DXGI_MODE_DESC *pModeToMatch,
+ /* [out] */ DXGI_MODE_DESC *pClosestMatch);
+
+ HRESULT ( STDMETHODCALLTYPE *WaitForVBlank )(
+ IDXGIOutput * This);
+
+ HRESULT ( STDMETHODCALLTYPE *TakeOwnership )(
+ IDXGIOutput * This,
+ /* [in] */ IUnknown *pDevice,
+ BOOL Exclusive);
+
+ void ( STDMETHODCALLTYPE *ReleaseOwnership )(
+ IDXGIOutput * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetDisplaySurface )(
+ IDXGIOutput * This,
+ /* [in] */ IDXGISurface *pScanoutSurface,
+ /* [in] */ DXGI_MODE_DESC *pMode);
+
+ HRESULT ( STDMETHODCALLTYPE *GetDisplaySurfaceData )(
+ IDXGIOutput * This,
+ /* [in] */ IDXGISurface *pDestination);
+
+ HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )(
+ IDXGIOutput * This,
+ /* [out] */ DXGI_FRAME_STATISTICS *pStats);
+
+ HRESULT ( STDMETHODCALLTYPE *SetGammaControl )(
+ IDXGIOutput * This,
+ /* [in] */ const DXGI_GAMMA_CONTROL *pArray);
+
+ END_INTERFACE
+ } IDXGIOutputVtbl;
+
+ interface IDXGIOutput
+ {
+ CONST_VTBL struct IDXGIOutputVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXGIOutput_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IDXGIOutput_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IDXGIOutput_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IDXGIOutput_SetPrivateData(This,Name,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
+
+#define IDXGIOutput_SetPrivateDataInterface(This,Name,pUnknown) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
+
+#define IDXGIOutput_GetPrivateData(This,Name,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
+
+#define IDXGIOutput_GetParent(This,riid,ppParent) \
+ ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
+
+
+#define IDXGIOutput_GetDesc(This,pDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pDesc) )
+
+#define IDXGIOutput_GetGammaControlCapabilities(This,pGammaCaps) \
+ ( (This)->lpVtbl -> GetGammaControlCapabilities(This,pGammaCaps) )
+
+#define IDXGIOutput_EnumDisplayModes(This,Mode,EnumFormat,pDesc,Flags) \
+ ( (This)->lpVtbl -> EnumDisplayModes(This,Mode,EnumFormat,pDesc,Flags) )
+
+#define IDXGIOutput_GetDisplayMode(This,pMode) \
+ ( (This)->lpVtbl -> GetDisplayMode(This,pMode) )
+
+#define IDXGIOutput_FindClosestMatchingMode(This,pModeToMatch,pClosestMatch) \
+ ( (This)->lpVtbl -> FindClosestMatchingMode(This,pModeToMatch,pClosestMatch) )
+
+#define IDXGIOutput_WaitForVBlank(This) \
+ ( (This)->lpVtbl -> WaitForVBlank(This) )
+
+#define IDXGIOutput_TakeOwnership(This,pDevice,Exclusive) \
+ ( (This)->lpVtbl -> TakeOwnership(This,pDevice,Exclusive) )
+
+#define IDXGIOutput_ReleaseOwnership(This) \
+ ( (This)->lpVtbl -> ReleaseOwnership(This) )
+
+#define IDXGIOutput_SetDisplaySurface(This,pScanoutSurface,pMode) \
+ ( (This)->lpVtbl -> SetDisplaySurface(This,pScanoutSurface,pMode) )
+
+#define IDXGIOutput_GetDisplaySurfaceData(This,pDestination) \
+ ( (This)->lpVtbl -> GetDisplaySurfaceData(This,pDestination) )
+
+#define IDXGIOutput_GetFrameStatistics(This,pStats) \
+ ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) )
+
+#define IDXGIOutput_SetGammaControl(This,pArray) \
+ ( (This)->lpVtbl -> SetGammaControl(This,pArray) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IDXGIOutput_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_dxgi_0000_0006 */
+/* [local] */
+
+#define DXGI_MAX_BACKBUFFERS ( 16 )
+#define DXGI_PRESENT_TEST 0x00000001UL
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0006_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0006_v0_0_s_ifspec;
+
+#ifndef __IDXGISwapChain_INTERFACE_DEFINED__
+#define __IDXGISwapChain_INTERFACE_DEFINED__
+
+/* interface IDXGISwapChain */
+/* [unique][local][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXGISwapChain;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("310d36a0-d2e7-4c0a-aa04-6a9d23b8886a")
+ IDXGISwapChain : public IDXGIDeviceSubObject
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE Present(
+ /* [in] */ RECT *pSrc,
+ /* [in] */ RECT *pDest,
+ /* [in] */ RECT *pSourceDirtyRects,
+ /* [in] */ UINT NumSourceRects,
+ /* [in] */ UINT SyncInterval,
+ /* [in] */ UINT Flags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetBackBuffer(
+ /* [in] */ UINT Buffer,
+ /* [in] */ REFIID riid,
+ /* [out][in] */ void **ppSurface) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetFullscreenState(
+ /* [in] */ BOOL Fullscreen,
+ /* [in] */ IDXGIOutput *pTarget) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFullscreenState(
+ /* [out] */ BOOL *pFullscreen,
+ /* [out] */ IDXGIOutput **ppTarget) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDesc(
+ /* [out] */ DXGI_SWAP_CHAIN_DESC *pDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ResizeBackBuffers(
+ /* [in] */ UINT Width,
+ /* [in] */ UINT Height,
+ /* [in] */ DXGI_FORMAT NewFormat) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ResizeTarget(
+ /* [in] */ const DXGI_MODE_DESC *pNewTargetParameters) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetContainingOutput(
+ IDXGIOutput **ppOutput) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetFrameStatistics(
+ /* [out] */ DXGI_FRAME_STATISTICS *pStats) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetLastPresentCount(
+ /* [out] */ UINT *pLastPresentCount) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXGISwapChainVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXGISwapChain * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXGISwapChain * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXGISwapChain * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ IDXGISwapChain * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ SIZE_T DataSize,
+ /* [in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ IDXGISwapChain * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ const IUnknown *pUnknown);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ IDXGISwapChain * This,
+ /* [in] */ REFGUID Name,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *GetParent )(
+ IDXGISwapChain * This,
+ /* [in] */ REFIID riid,
+ /* [retval][out] */ void **ppParent);
+
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ IDXGISwapChain * This,
+ /* [in] */ REFIID riid,
+ /* [retval][out] */ void **ppDevice);
+
+ HRESULT ( STDMETHODCALLTYPE *Present )(
+ IDXGISwapChain * This,
+ /* [in] */ RECT *pSrc,
+ /* [in] */ RECT *pDest,
+ /* [in] */ RECT *pSourceDirtyRects,
+ /* [in] */ UINT NumSourceRects,
+ /* [in] */ UINT SyncInterval,
+ /* [in] */ UINT Flags);
+
+ HRESULT ( STDMETHODCALLTYPE *GetBackBuffer )(
+ IDXGISwapChain * This,
+ /* [in] */ UINT Buffer,
+ /* [in] */ REFIID riid,
+ /* [out][in] */ void **ppSurface);
+
+ HRESULT ( STDMETHODCALLTYPE *SetFullscreenState )(
+ IDXGISwapChain * This,
+ /* [in] */ BOOL Fullscreen,
+ /* [in] */ IDXGIOutput *pTarget);
+
+ HRESULT ( STDMETHODCALLTYPE *GetFullscreenState )(
+ IDXGISwapChain * This,
+ /* [out] */ BOOL *pFullscreen,
+ /* [out] */ IDXGIOutput **ppTarget);
+
+ HRESULT ( STDMETHODCALLTYPE *GetDesc )(
+ IDXGISwapChain * This,
+ /* [out] */ DXGI_SWAP_CHAIN_DESC *pDesc);
+
+ HRESULT ( STDMETHODCALLTYPE *ResizeBackBuffers )(
+ IDXGISwapChain * This,
+ /* [in] */ UINT Width,
+ /* [in] */ UINT Height,
+ /* [in] */ DXGI_FORMAT NewFormat);
+
+ HRESULT ( STDMETHODCALLTYPE *ResizeTarget )(
+ IDXGISwapChain * This,
+ /* [in] */ const DXGI_MODE_DESC *pNewTargetParameters);
+
+ HRESULT ( STDMETHODCALLTYPE *GetContainingOutput )(
+ IDXGISwapChain * This,
+ IDXGIOutput **ppOutput);
+
+ HRESULT ( STDMETHODCALLTYPE *GetFrameStatistics )(
+ IDXGISwapChain * This,
+ /* [out] */ DXGI_FRAME_STATISTICS *pStats);
+
+ HRESULT ( STDMETHODCALLTYPE *GetLastPresentCount )(
+ IDXGISwapChain * This,
+ /* [out] */ UINT *pLastPresentCount);
+
+ END_INTERFACE
+ } IDXGISwapChainVtbl;
+
+ interface IDXGISwapChain
+ {
+ CONST_VTBL struct IDXGISwapChainVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXGISwapChain_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IDXGISwapChain_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IDXGISwapChain_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IDXGISwapChain_SetPrivateData(This,Name,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
+
+#define IDXGISwapChain_SetPrivateDataInterface(This,Name,pUnknown) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
+
+#define IDXGISwapChain_GetPrivateData(This,Name,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
+
+#define IDXGISwapChain_GetParent(This,riid,ppParent) \
+ ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
+
+
+#define IDXGISwapChain_GetDevice(This,riid,ppDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppDevice) )
+
+
+#define IDXGISwapChain_Present(This,pSrc,pDest,pSourceDirtyRects,NumSourceRects,SyncInterval,Flags) \
+ ( (This)->lpVtbl -> Present(This,pSrc,pDest,pSourceDirtyRects,NumSourceRects,SyncInterval,Flags) )
+
+#define IDXGISwapChain_GetBackBuffer(This,Buffer,riid,ppSurface) \
+ ( (This)->lpVtbl -> GetBackBuffer(This,Buffer,riid,ppSurface) )
+
+#define IDXGISwapChain_SetFullscreenState(This,Fullscreen,pTarget) \
+ ( (This)->lpVtbl -> SetFullscreenState(This,Fullscreen,pTarget) )
+
+#define IDXGISwapChain_GetFullscreenState(This,pFullscreen,ppTarget) \
+ ( (This)->lpVtbl -> GetFullscreenState(This,pFullscreen,ppTarget) )
+
+#define IDXGISwapChain_GetDesc(This,pDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pDesc) )
+
+#define IDXGISwapChain_ResizeBackBuffers(This,Width,Height,NewFormat) \
+ ( (This)->lpVtbl -> ResizeBackBuffers(This,Width,Height,NewFormat) )
+
+#define IDXGISwapChain_ResizeTarget(This,pNewTargetParameters) \
+ ( (This)->lpVtbl -> ResizeTarget(This,pNewTargetParameters) )
+
+#define IDXGISwapChain_GetContainingOutput(This,ppOutput) \
+ ( (This)->lpVtbl -> GetContainingOutput(This,ppOutput) )
+
+#define IDXGISwapChain_GetFrameStatistics(This,pStats) \
+ ( (This)->lpVtbl -> GetFrameStatistics(This,pStats) )
+
+#define IDXGISwapChain_GetLastPresentCount(This,pLastPresentCount) \
+ ( (This)->lpVtbl -> GetLastPresentCount(This,pLastPresentCount) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IDXGISwapChain_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_dxgi_0000_0007 */
+/* [local] */
+
+#define DXGI_MWA_NO_WINDOW_CHANGES ( 1 << 0 )
+#define DXGI_MWA_NO_ALT_ENTER ( 1 << 1 )
+#define DXGI_MWA_VALID ( 0x3 )
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0007_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0007_v0_0_s_ifspec;
+
+#ifndef __IDXGIFactory_INTERFACE_DEFINED__
+#define __IDXGIFactory_INTERFACE_DEFINED__
+
+/* interface IDXGIFactory */
+/* [unique][local][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXGIFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7b7166ec-21c7-44ae-b21a-c9ae321ae369")
+ IDXGIFactory : public IDXGIObject
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE EnumAdapters(
+ /* [in] */ UINT Adapter,
+ /* [out] */ IDXGIAdapter **ppAdapter) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE MakeWindowAssociation(
+ HWND WindowHandle,
+ UINT Flags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetWindowAssociation(
+ HWND *pWindowHandle) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateSwapChain(
+ IUnknown *pDevice,
+ DXGI_SWAP_CHAIN_DESC *pDesc,
+ IDXGISwapChain **ppSwapChain) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXGIFactoryVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXGIFactory * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXGIFactory * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXGIFactory * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ IDXGIFactory * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ SIZE_T DataSize,
+ /* [in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ IDXGIFactory * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ const IUnknown *pUnknown);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ IDXGIFactory * This,
+ /* [in] */ REFGUID Name,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *GetParent )(
+ IDXGIFactory * This,
+ /* [in] */ REFIID riid,
+ /* [retval][out] */ void **ppParent);
+
+ HRESULT ( STDMETHODCALLTYPE *EnumAdapters )(
+ IDXGIFactory * This,
+ /* [in] */ UINT Adapter,
+ /* [out] */ IDXGIAdapter **ppAdapter);
+
+ HRESULT ( STDMETHODCALLTYPE *MakeWindowAssociation )(
+ IDXGIFactory * This,
+ HWND WindowHandle,
+ UINT Flags);
+
+ HRESULT ( STDMETHODCALLTYPE *GetWindowAssociation )(
+ IDXGIFactory * This,
+ HWND *pWindowHandle);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateSwapChain )(
+ IDXGIFactory * This,
+ IUnknown *pDevice,
+ DXGI_SWAP_CHAIN_DESC *pDesc,
+ IDXGISwapChain **ppSwapChain);
+
+ END_INTERFACE
+ } IDXGIFactoryVtbl;
+
+ interface IDXGIFactory
+ {
+ CONST_VTBL struct IDXGIFactoryVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXGIFactory_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IDXGIFactory_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IDXGIFactory_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IDXGIFactory_SetPrivateData(This,Name,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
+
+#define IDXGIFactory_SetPrivateDataInterface(This,Name,pUnknown) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
+
+#define IDXGIFactory_GetPrivateData(This,Name,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
+
+#define IDXGIFactory_GetParent(This,riid,ppParent) \
+ ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
+
+
+#define IDXGIFactory_EnumAdapters(This,Adapter,ppAdapter) \
+ ( (This)->lpVtbl -> EnumAdapters(This,Adapter,ppAdapter) )
+
+#define IDXGIFactory_MakeWindowAssociation(This,WindowHandle,Flags) \
+ ( (This)->lpVtbl -> MakeWindowAssociation(This,WindowHandle,Flags) )
+
+#define IDXGIFactory_GetWindowAssociation(This,pWindowHandle) \
+ ( (This)->lpVtbl -> GetWindowAssociation(This,pWindowHandle) )
+
+#define IDXGIFactory_CreateSwapChain(This,pDevice,pDesc,ppSwapChain) \
+ ( (This)->lpVtbl -> CreateSwapChain(This,pDevice,pDesc,ppSwapChain) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IDXGIFactory_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_dxgi_0000_0008 */
+/* [local] */
+
+HRESULT WINAPI CreateDXGIFactory(REFIID riid, void **ppFactory);
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0008_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0008_v0_0_s_ifspec;
+
+#ifndef __IDXGIDevice_INTERFACE_DEFINED__
+#define __IDXGIDevice_INTERFACE_DEFINED__
+
+/* interface IDXGIDevice */
+/* [unique][local][uuid][object] */
+
+
+EXTERN_C const IID IID_IDXGIDevice;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("54ec77fa-1377-44e6-8c32-88fd5f44c84c")
+ IDXGIDevice : public IDXGIObject
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetAdapter(
+ /* [out] */ IDXGIAdapter **pAdapter) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateSurface(
+ /* [in] */ const DXGI_SURFACE_DESC *pDesc,
+ /* [in] */ UINT NumSurfaces,
+ /* [in] */ DXGI_USAGE Usage,
+ /* [in] */ const DXGI_SHARED_RESOURCE *pSharedResource,
+ /* [out] */ IDXGISurface **ppSurface) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE QueryResourceResidency(
+ /* [size_is][in] */ IUnknown *const *ppResources,
+ /* [size_is][out] */ DXGI_RESIDENCY *pResidencyStatus,
+ /* [in] */ SIZE_T NumResources) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetGPUThreadPriority(
+ /* [in] */ INT Priority) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetGPUThreadPriority(
+ /* [retval][out] */ INT *pPriority) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IDXGIDeviceVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IDXGIDevice * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IDXGIDevice * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IDXGIDevice * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ IDXGIDevice * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ SIZE_T DataSize,
+ /* [in] */ const void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ IDXGIDevice * This,
+ /* [in] */ REFGUID Name,
+ /* [in] */ const IUnknown *pUnknown);
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ IDXGIDevice * This,
+ /* [in] */ REFGUID Name,
+ /* [out][in] */ SIZE_T *pDataSize,
+ /* [out] */ void *pData);
+
+ HRESULT ( STDMETHODCALLTYPE *GetParent )(
+ IDXGIDevice * This,
+ /* [in] */ REFIID riid,
+ /* [retval][out] */ void **ppParent);
+
+ HRESULT ( STDMETHODCALLTYPE *GetAdapter )(
+ IDXGIDevice * This,
+ /* [out] */ IDXGIAdapter **pAdapter);
+
+ HRESULT ( STDMETHODCALLTYPE *CreateSurface )(
+ IDXGIDevice * This,
+ /* [in] */ const DXGI_SURFACE_DESC *pDesc,
+ /* [in] */ UINT NumSurfaces,
+ /* [in] */ DXGI_USAGE Usage,
+ /* [in] */ const DXGI_SHARED_RESOURCE *pSharedResource,
+ /* [out] */ IDXGISurface **ppSurface);
+
+ HRESULT ( STDMETHODCALLTYPE *QueryResourceResidency )(
+ IDXGIDevice * This,
+ /* [size_is][in] */ IUnknown *const *ppResources,
+ /* [size_is][out] */ DXGI_RESIDENCY *pResidencyStatus,
+ /* [in] */ SIZE_T NumResources);
+
+ HRESULT ( STDMETHODCALLTYPE *SetGPUThreadPriority )(
+ IDXGIDevice * This,
+ /* [in] */ INT Priority);
+
+ HRESULT ( STDMETHODCALLTYPE *GetGPUThreadPriority )(
+ IDXGIDevice * This,
+ /* [retval][out] */ INT *pPriority);
+
+ END_INTERFACE
+ } IDXGIDeviceVtbl;
+
+ interface IDXGIDevice
+ {
+ CONST_VTBL struct IDXGIDeviceVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IDXGIDevice_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IDXGIDevice_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IDXGIDevice_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IDXGIDevice_SetPrivateData(This,Name,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,Name,DataSize,pData) )
+
+#define IDXGIDevice_SetPrivateDataInterface(This,Name,pUnknown) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,Name,pUnknown) )
+
+#define IDXGIDevice_GetPrivateData(This,Name,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,Name,pDataSize,pData) )
+
+#define IDXGIDevice_GetParent(This,riid,ppParent) \
+ ( (This)->lpVtbl -> GetParent(This,riid,ppParent) )
+
+
+#define IDXGIDevice_GetAdapter(This,pAdapter) \
+ ( (This)->lpVtbl -> GetAdapter(This,pAdapter) )
+
+#define IDXGIDevice_CreateSurface(This,pDesc,NumSurfaces,Usage,pSharedResource,ppSurface) \
+ ( (This)->lpVtbl -> CreateSurface(This,pDesc,NumSurfaces,Usage,pSharedResource,ppSurface) )
+
+#define IDXGIDevice_QueryResourceResidency(This,ppResources,pResidencyStatus,NumResources) \
+ ( (This)->lpVtbl -> QueryResourceResidency(This,ppResources,pResidencyStatus,NumResources) )
+
+#define IDXGIDevice_SetGPUThreadPriority(This,Priority) \
+ ( (This)->lpVtbl -> SetGPUThreadPriority(This,Priority) )
+
+#define IDXGIDevice_GetGPUThreadPriority(This,pPriority) \
+ ( (This)->lpVtbl -> GetGPUThreadPriority(This,pPriority) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IDXGIDevice_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_dxgi_0000_0009 */
+/* [local] */
+
+HRESULT WINAPI CreateDataTransportDevice( IDXGIAdapter *pAdapter, IDXGIDevice **pOut);
+#ifdef __cplusplus
+#endif /*__cplusplus*/
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0009_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxgi_0000_0009_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/src/dep/include/DXSDK/include/DXGIType.h b/src/dep/include/DXSDK/include/DXGIType.h
new file mode 100644
index 0000000..36fa61f
--- /dev/null
+++ b/src/dep/include/DXSDK/include/DXGIType.h
@@ -0,0 +1,359 @@
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 7.00.0485 */
+/* Compiler settings for dxgitype.idl:
+ Oicf, W1, Zp8, env=Win32 (32b run)
+ protocol : dce , ms_ext, c_ext, robust
+ 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( )
+
+#pragma warning( disable: 4049 ) /* more than 64k source lines */
+
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCSAL_H_VERSION__
+#define __REQUIRED_RPCSAL_H_VERSION__ 100
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of
+#endif // __RPCNDR_H_VERSION__
+
+
+#ifndef __dxgitype_h__
+#define __dxgitype_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+/* Forward Declarations */
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+
+/* interface __MIDL_itf_dxgitype_0000_0000 */
+/* [local] */
+
+#define _FACDXGI 0x87a
+#define MAKE_DXGI_HRESULT( code ) MAKE_HRESULT( 1, _FACDXGI, code )
+#define MAKE_DXGI_STATUS( code ) MAKE_HRESULT( 0, _FACDXGI, code )
+#define DXGI_STATUS_OCCLUDED MAKE_DXGI_STATUS(1 )
+#define DXGI_STATUS_CLIPPED MAKE_DXGI_STATUS(2 )
+#define DXGI_STATUS_NO_REDIRECTION MAKE_DXGI_STATUS(4 )
+#define DXGI_ERROR_INVALID_CALL MAKE_DXGI_HRESULT( 1 )
+#define DXGI_ERROR_NOT_FOUND MAKE_DXGI_HRESULT( 2 )
+#define DXGI_ERROR_MORE_DATA MAKE_DXGI_HRESULT( 3 )
+#define DXGI_ERROR_UNSUPPORTED MAKE_DXGI_HRESULT( 4 )
+#define DXGI_ERROR_DEVICE_REMOVED MAKE_DXGI_HRESULT( 5 )
+#define DXGI_ERROR_DEVICE_HUNG MAKE_DXGI_HRESULT( 6 )
+#define DXGI_ERROR_DEVICE_RESET MAKE_DXGI_HRESULT( 7 )
+#define DXGI_ERROR_WAS_STILL_DRAWING MAKE_DXGI_HRESULT( 10 )
+#define DXGI_ERROR_DRIVER_INTERNAL_ERROR MAKE_DXGI_HRESULT( 32 )
+#define DXGI_ERROR_NONEXCLUSIVE MAKE_DXGI_HRESULT( 33 )
+#define DXGI_CPU_ACCESS_NONE ( 0 )
+#define DXGI_CPU_ACCESS_DYNAMIC ( 1 )
+#define DXGI_CPU_ACCESS_READ_WRITE ( 2 )
+#define DXGI_CPU_ACCESS_SCRATCH ( 3 )
+#define DXGI_CPU_ACCESS_FIELD 15
+#define DXGI_USAGE_SHADER_INPUT ( 1L << (0 + 4) )
+#define DXGI_USAGE_RENDER_TARGET_OUTPUT ( 1L << (1 + 4) )
+#define DXGI_USAGE_BACK_BUFFER ( 1L << (2 + 4) )
+#define DXGI_USAGE_SHARED ( 1L << (3 + 4) )
+#define DXGI_USAGE_PRIMARY ( 1L << (4 + 4) )
+typedef UINT DXGI_USAGE;
+
+typedef
+enum DXGI_FORMAT
+ { DXGI_FORMAT_UNKNOWN = 0,
+ DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
+ DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
+ DXGI_FORMAT_R32G32B32A32_UINT = 3,
+ DXGI_FORMAT_R32G32B32A32_SINT = 4,
+ DXGI_FORMAT_R32G32B32_TYPELESS = 5,
+ DXGI_FORMAT_R32G32B32_FLOAT = 6,
+ DXGI_FORMAT_R32G32B32_UINT = 7,
+ DXGI_FORMAT_R32G32B32_SINT = 8,
+ DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
+ DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
+ DXGI_FORMAT_R16G16B16A16_UNORM = 11,
+ DXGI_FORMAT_R16G16B16A16_UINT = 12,
+ DXGI_FORMAT_R16G16B16A16_SNORM = 13,
+ DXGI_FORMAT_R16G16B16A16_SINT = 14,
+ DXGI_FORMAT_R32G32_TYPELESS = 15,
+ DXGI_FORMAT_R32G32_FLOAT = 16,
+ DXGI_FORMAT_R32G32_UINT = 17,
+ DXGI_FORMAT_R32G32_SINT = 18,
+ DXGI_FORMAT_R32G8X24_TYPELESS = 19,
+ DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
+ DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
+ DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
+ DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
+ DXGI_FORMAT_R10G10B10A2_UNORM = 24,
+ DXGI_FORMAT_R10G10B10A2_UINT = 25,
+ DXGI_FORMAT_R11G11B10_FLOAT = 26,
+ DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
+ DXGI_FORMAT_R8G8B8A8_UNORM = 28,
+ DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
+ DXGI_FORMAT_R8G8B8A8_UINT = 30,
+ DXGI_FORMAT_R8G8B8A8_SNORM = 31,
+ DXGI_FORMAT_R8G8B8A8_SINT = 32,
+ DXGI_FORMAT_R16G16_TYPELESS = 33,
+ DXGI_FORMAT_R16G16_FLOAT = 34,
+ DXGI_FORMAT_R16G16_UNORM = 35,
+ DXGI_FORMAT_R16G16_UINT = 36,
+ DXGI_FORMAT_R16G16_SNORM = 37,
+ DXGI_FORMAT_R16G16_SINT = 38,
+ DXGI_FORMAT_R32_TYPELESS = 39,
+ DXGI_FORMAT_D32_FLOAT = 40,
+ DXGI_FORMAT_R32_FLOAT = 41,
+ DXGI_FORMAT_R32_UINT = 42,
+ DXGI_FORMAT_R32_SINT = 43,
+ DXGI_FORMAT_R24G8_TYPELESS = 44,
+ DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
+ DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
+ DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
+ DXGI_FORMAT_R8G8_TYPELESS = 48,
+ DXGI_FORMAT_R8G8_UNORM = 49,
+ DXGI_FORMAT_R8G8_UINT = 50,
+ DXGI_FORMAT_R8G8_SNORM = 51,
+ DXGI_FORMAT_R8G8_SINT = 52,
+ DXGI_FORMAT_R16_TYPELESS = 53,
+ DXGI_FORMAT_R16_FLOAT = 54,
+ DXGI_FORMAT_D16_UNORM = 55,
+ DXGI_FORMAT_R16_UNORM = 56,
+ DXGI_FORMAT_R16_UINT = 57,
+ DXGI_FORMAT_R16_SNORM = 58,
+ DXGI_FORMAT_R16_SINT = 59,
+ DXGI_FORMAT_R8_TYPELESS = 60,
+ DXGI_FORMAT_R8_UNORM = 61,
+ DXGI_FORMAT_R8_UINT = 62,
+ DXGI_FORMAT_R8_SNORM = 63,
+ DXGI_FORMAT_R8_SINT = 64,
+ DXGI_FORMAT_A8_UNORM = 65,
+ DXGI_FORMAT_R1_UNORM = 66,
+ DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
+ DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
+ DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
+ DXGI_FORMAT_BC1_TYPELESS = 70,
+ DXGI_FORMAT_BC1_UNORM = 71,
+ DXGI_FORMAT_BC1_UNORM_SRGB = 72,
+ DXGI_FORMAT_BC2_TYPELESS = 73,
+ DXGI_FORMAT_BC2_UNORM = 74,
+ DXGI_FORMAT_BC2_UNORM_SRGB = 75,
+ DXGI_FORMAT_BC3_TYPELESS = 76,
+ DXGI_FORMAT_BC3_UNORM = 77,
+ DXGI_FORMAT_BC3_UNORM_SRGB = 78,
+ DXGI_FORMAT_BC4_TYPELESS = 79,
+ DXGI_FORMAT_BC4_UNORM = 80,
+ DXGI_FORMAT_BC4_SNORM = 81,
+ DXGI_FORMAT_BC5_TYPELESS = 82,
+ DXGI_FORMAT_BC5_UNORM = 83,
+ DXGI_FORMAT_BC5_SNORM = 84,
+ DXGI_FORMAT_B5G6R5_UNORM = 85,
+ DXGI_FORMAT_B5G5R5A1_UNORM = 86,
+ DXGI_FORMAT_B8G8R8A8_UNORM = 87,
+ DXGI_FORMAT_B8G8R8X8_UNORM = 88,
+ DXGI_FORMAT_FORCE_UINT = 0xffffffffUL
+ } DXGI_FORMAT;
+
+typedef struct DXGI_RGB
+ {
+ float Red;
+ float Green;
+ float Blue;
+ } DXGI_RGB;
+
+typedef struct DXGI_GAMMA_CONTROL
+ {
+ DXGI_RGB Scale;
+ DXGI_RGB Offset;
+ DXGI_RGB GammaCurve[ 1025 ];
+ } DXGI_GAMMA_CONTROL;
+
+typedef struct DXGI_GAMMA_CONTROL_CAPABILIITES
+ {
+ BOOL ScaleAndOffsetSupported;
+ float MaxConvertedValue;
+ float MinConvertedValue;
+ UINT NumGammaControlPoints;
+ float ControlPointPositions[ 1025 ];
+ } DXGI_GAMMA_CONTROL_CAPABILIITES;
+
+typedef struct DXGI_FRAME_STATISTICS
+ {
+ UINT PresentCount;
+ UINT PresentRefreshCount;
+ UINT SyncRefreshCount;
+ LARGE_INTEGER SyncQPCTime;
+ LARGE_INTEGER SyncGPUTime;
+ } DXGI_FRAME_STATISTICS;
+
+typedef struct DXGI_RATIONAL
+ {
+ UINT Numerator;
+ UINT Denominator;
+ } DXGI_RATIONAL;
+
+typedef
+enum DXGI_MODE_SCANLINE_ORDER
+ { DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED = 0,
+ DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE = 1,
+ DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST = 2,
+ DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST = 3
+ } DXGI_MODE_SCANLINE_ORDER;
+
+typedef
+enum DXGI_MODE_SCALING
+ { DXGI_MODE_SCALING_UNSPECIFIED = 0,
+ DXGI_MODE_SCALING_CENTERED = 1,
+ DXGI_MODE_SCALING_STRETCHED = 2
+ } DXGI_MODE_SCALING;
+
+typedef
+enum DXGI_MODE_ROTATION
+ { DXGI_MODE_ROTATION_UNSPECIFIED = 0,
+ DXGI_MODE_ROTATION_IDENTITY = 1,
+ DXGI_MODE_ROTATION_ROTATE90 = 2,
+ DXGI_MODE_ROTATION_ROTATE180 = 3,
+ DXGI_MODE_ROTATION_ROTATE270 = 4
+ } DXGI_MODE_ROTATION;
+
+typedef struct DXGI_MODE_DESC
+ {
+ UINT Width;
+ UINT Height;
+ DXGI_RATIONAL RefreshRate;
+ DXGI_FORMAT Format;
+ DXGI_MODE_SCANLINE_ORDER ScanlineOrdering;
+ DXGI_MODE_SCALING Scaling;
+ } DXGI_MODE_DESC;
+
+typedef struct DXGI_MAPPED_RECT
+ {
+ INT Pitch;
+ BYTE *pBits;
+ } DXGI_MAPPED_RECT;
+
+typedef struct DXGI_ADAPTER_DESC
+ {
+ WCHAR Description[ 128 ];
+ UINT VendorId;
+ UINT DeviceId;
+ UINT SubSysId;
+ UINT Revision;
+ SIZE_T DedicatedVideoMemory;
+ SIZE_T SharedVideoMemory;
+ } DXGI_ADAPTER_DESC;
+
+#if !defined(HMONITOR_DECLARED) && !defined(HMONITOR) && (WINVER < 0x0500)
+#define HMONITOR_DECLARED
+#if 0
+typedef HANDLE HMONITOR;
+
+#endif
+DECLARE_HANDLE(HMONITOR);
+#endif
+typedef struct DXGI_OUTPUT_DESC
+ {
+ WCHAR DeviceName[ 32 ];
+ RECT DesktopCoordinates;
+ BOOL AttachedToDesktop;
+ DXGI_MODE_ROTATION Rotation;
+ HMONITOR Monitor;
+ } DXGI_OUTPUT_DESC;
+
+typedef struct DXGI_SAMPLE_DESC
+ {
+ UINT Count;
+ UINT Quality;
+ } DXGI_SAMPLE_DESC;
+
+typedef struct DXGI_SHARED_RESOURCE
+ {
+ HANDLE Handle;
+ DXGI_USAGE OpenUsage;
+ } DXGI_SHARED_RESOURCE;
+
+#define DXGI_RESOURCE_PRIORITY_MINIMUM ( 0x28000000 )
+
+#define DXGI_RESOURCE_PRIORITY_LOW ( 0x50000000 )
+
+#define DXGI_RESOURCE_PRIORITY_NORMAL ( 0x78000000 )
+
+#define DXGI_RESOURCE_PRIORITY_HIGH ( 0xa0000000 )
+
+#define DXGI_RESOURCE_PRIORITY_MAXIMUM ( 0xc8000000 )
+
+typedef
+enum DXGI_RESIDENCY
+ { DXGI_RESIDENCY_FULLY_RESIDENT = 1,
+ DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY = 2,
+ DXGI_RESIDENCY_EVICTED_TO_DISK = 3
+ } DXGI_RESIDENCY;
+
+typedef struct DXGI_SURFACE_DESC
+ {
+ UINT Width;
+ UINT Height;
+ DXGI_FORMAT Format;
+ DXGI_SAMPLE_DESC SampleDesc;
+ } DXGI_SURFACE_DESC;
+
+typedef
+enum DXGI_SWAP_EFFECT
+ { DXGI_SWAP_EFFECT_DISCARD = 0,
+ DXGI_SWAP_EFFECT_COPY = 1
+ } DXGI_SWAP_EFFECT;
+
+typedef struct DXGI_SWAP_CHAIN_DESC
+ {
+ DXGI_MODE_DESC BackBufferDesc;
+ DXGI_SAMPLE_DESC SampleDesc;
+ DXGI_SHARED_RESOURCE Sharing;
+ DXGI_USAGE BackBufferUsage;
+ UINT BackBufferCount;
+ UINT MaxFrameLatency;
+ HWND OutputWindow;
+ BOOL Windowed;
+ DXGI_SWAP_EFFECT SwapEffect;
+ DXGI_MODE_ROTATION BackBufferRotation;
+ } DXGI_SWAP_CHAIN_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_dxgitype_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_dxgitype_0000_0000_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/src/dep/include/DXSDK/include/DxErr.h b/src/dep/include/DXSDK/include/DxErr.h
new file mode 100644
index 0000000..ef1c7e0
--- /dev/null
+++ b/src/dep/include/DXSDK/include/DxErr.h
@@ -0,0 +1,99 @@
+/*==========================================================================;
+ *
+ *
+ * File: dxerr.h
+ * Content: DirectX Error Library Include File
+ *
+ ****************************************************************************/
+
+#ifndef _DXERR_H_
+#define _DXERR_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+//
+// DXGetErrorString
+//
+// Desc: Converts a DirectX HRESULT to a string
+//
+// Args: HRESULT hr Can be any error code from
+// XACT D3D10 D3DX10 D3D9 D3DX9 D3D8 D3DX8 DDRAW DPLAY8 DMUSIC DSOUND DINPUT DSHOW
+//
+// Return: Converted string
+//
+const char* WINAPI DXGetErrorStringA(HRESULT hr);
+const WCHAR* WINAPI DXGetErrorStringW(HRESULT hr);
+
+#ifdef UNICODE
+#define DXGetErrorString DXGetErrorStringW
+#else
+#define DXGetErrorString DXGetErrorStringA
+#endif
+
+
+//
+// DXGetErrorDescription
+//
+// Desc: Returns a string description of a DirectX HRESULT
+//
+// Args: HRESULT hr Can be any error code from
+// XACT D3D10 D3DX10 D3D9 D3DX9 D3D8 D3DX8 DDRAW DPLAY8 DMUSIC DSOUND DINPUT DSHOW
+//
+// Return: String description
+//
+const char* WINAPI DXGetErrorDescriptionA(HRESULT hr);
+const WCHAR* WINAPI DXGetErrorDescriptionW(HRESULT hr);
+
+#ifdef UNICODE
+ #define DXGetErrorDescription DXGetErrorDescriptionW
+#else
+ #define DXGetErrorDescription DXGetErrorDescriptionA
+#endif
+
+
+//
+// DXTrace
+//
+// Desc: Outputs a formatted error message to the debug stream
+//
+// Args: CHAR* strFile The current file, typically passed in using the
+// __FILE__ macro.
+// DWORD dwLine The current line number, typically passed in using the
+// __LINE__ macro.
+// HRESULT hr An HRESULT that will be traced to the debug stream.
+// CHAR* strMsg A string that will be traced to the debug stream (may be NULL)
+// BOOL bPopMsgBox If TRUE, then a message box will popup also containing the passed info.
+//
+// Return: The hr that was passed in.
+//
+HRESULT WINAPI DXTraceA( const char* strFile, DWORD dwLine, HRESULT hr, const char* strMsg, BOOL bPopMsgBox );
+HRESULT WINAPI DXTraceW( const char* strFile, DWORD dwLine, HRESULT hr, const WCHAR* strMsg, BOOL bPopMsgBox );
+
+#ifdef UNICODE
+#define DXTrace DXTraceW
+#else
+#define DXTrace DXTraceA
+#endif
+
+
+//
+// Helper macros
+//
+#if defined(DEBUG) | defined(_DEBUG)
+#define DXTRACE_MSG(str) DXTrace( __FILE__, (DWORD)__LINE__, 0, str, FALSE )
+#define DXTRACE_ERR(str,hr) DXTrace( __FILE__, (DWORD)__LINE__, hr, str, FALSE )
+#define DXTRACE_ERR_MSGBOX(str,hr) DXTrace( __FILE__, (DWORD)__LINE__, hr, str, TRUE )
+#else
+#define DXTRACE_MSG(str) (0L)
+#define DXTRACE_ERR(str,hr) (hr)
+#define DXTRACE_ERR_MSGBOX(str,hr) (hr)
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+#endif // _DXERR_H_
diff --git a/src/dep/include/DXSDK/include/PIXPlugin.h b/src/dep/include/DXSDK/include/PIXPlugin.h
new file mode 100644
index 0000000..243c5b4
--- /dev/null
+++ b/src/dep/include/DXSDK/include/PIXPlugin.h
@@ -0,0 +1,120 @@
+//==================================================================================================
+// PIXPlugin.h
+//
+// Microsoft PIX Plugin Header
+//
+// Copyright (c) Microsoft Corporation, All rights reserved
+//==================================================================================================
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+
+//==================================================================================================
+// PIX_PLUGIN_SYSTEM_VERSION - Indicates version of the plugin interface the plugin is built with.
+//==================================================================================================
+#define PIX_PLUGIN_SYSTEM_VERSION 0x101
+
+
+//==================================================================================================
+// PIXCOUNTERID - A unique identifier for each PIX plugin counter.
+//==================================================================================================
+typedef int PIXCOUNTERID;
+
+
+//==================================================================================================
+// PIXCOUNTERDATATYPE - Indicates what type of data the counter produces.
+//==================================================================================================
+enum PIXCOUNTERDATATYPE
+{
+ PCDT_RESERVED,
+ PCDT_FLOAT,
+ PCDT_INT,
+ PCDT_INT64,
+ PCDT_STRING,
+};
+
+
+//==================================================================================================
+// PIXPLUGININFO - This structure is filled out by PIXGetPluginInfo and passed back to PIX.
+//==================================================================================================
+struct PIXPLUGININFO
+{
+ // Filled in by caller:
+ HINSTANCE hinst;
+
+ // Filled in by PIXGetPluginInfo:
+ WCHAR* pstrPluginName; // Name of plugin
+ int iPluginVersion; // Version of this particular plugin
+ int iPluginSystemVersion; // Version of PIX's plugin system this plugin was designed for
+};
+
+
+//==================================================================================================
+// PIXCOUNTERINFO - This structure is filled out by PIXGetCounterInfo and passed back to PIX
+// to allow PIX to determine information about the counters in the plugin.
+//==================================================================================================
+struct PIXCOUNTERINFO
+{
+ PIXCOUNTERID counterID; // Used to uniquely ID this counter
+ WCHAR* pstrName; // String name of the counter
+ PIXCOUNTERDATATYPE pcdtDataType; // Data type returned by this counter
+};
+
+
+//==================================================================================================
+// PIXGetPluginInfo - This returns basic information about this plugin to PIX.
+//==================================================================================================
+BOOL WINAPI PIXGetPluginInfo( PIXPLUGININFO* pPIXPluginInfo );
+
+
+//==================================================================================================
+// PIXGetCounterInfo - This returns an array of PIXCOUNTERINFO structs to PIX.
+// These PIXCOUNTERINFOs allow PIX to enumerate the counters contained
+// in this plugin.
+//==================================================================================================
+BOOL WINAPI PIXGetCounterInfo( DWORD* pdwReturnCounters, PIXCOUNTERINFO** ppCounterInfoList );
+
+
+//==================================================================================================
+// PIXGetCounterDesc - This is called by PIX to request a description of the indicated counter.
+//==================================================================================================
+BOOL WINAPI PIXGetCounterDesc( PIXCOUNTERID id, WCHAR** ppstrCounterDesc );
+
+
+//==================================================================================================
+// PIXBeginExperiment - This called by PIX once per counter when instrumentation starts.
+//==================================================================================================
+BOOL WINAPI PIXBeginExperiment( PIXCOUNTERID id, const WCHAR* pstrApplication );
+
+
+//==================================================================================================
+// PIXEndFrame - This is called by PIX once per counter at the end of each frame to gather the
+// counter value for that frame. Note that the pointer to the return data must
+// continue to point to valid counter data until the next call to PIXEndFrame (or
+// PIXEndExperiment) for the same counter. So do not set *ppReturnData to the same
+// pointer for multiple counters, or point to a local variable that will go out of
+// scope. See the sample PIX plugin for an example of how to structure a plugin
+// properly.
+//==================================================================================================
+BOOL WINAPI PIXEndFrame( PIXCOUNTERID id, UINT iFrame, DWORD* pdwReturnBytes, BYTE** ppReturnData );
+
+
+//==================================================================================================
+// PIXEndExperiment - This is called by PIX once per counter when instrumentation ends.
+//==================================================================================================
+BOOL WINAPI PIXEndExperiment( PIXCOUNTERID id );
+
+
+#ifdef __cplusplus
+};
+#endif
+
+//==================================================================================================
+// eof: PIXPlugin.h
+//==================================================================================================
+
diff --git a/src/dep/include/DXSDK/include/X3DAudio.h b/src/dep/include/DXSDK/include/X3DAudio.h
new file mode 100644
index 0000000..9f95766
--- /dev/null
+++ b/src/dep/include/DXSDK/include/X3DAudio.h
@@ -0,0 +1,279 @@
+/*-========================================================================-_
+ | - X3DAUDIO - |
+ | Copyright (c) Microsoft Corporation. All rights reserved. |
+ |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
+ |VERSION: 0.1 MODEL: Unmanaged User-mode |
+ |CONTRACT: N / A EXCEPT: No Exceptions |
+ |PARENT: N / A MINREQ: Win2000, Xenon |
+ |PROJECT: X3DAudio DIALECT: MS Visual C++ 7.0 |
+ |>------------------------------------------------------------------------<|
+ | DUTY: Cross-platform stand-alone 3D audio math library |
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
+ NOTES:
+ 1. Definition of terms:
+ LFE: Low Frequency Effect -- always omnidirectional.
+ LPF: Low Pass Filter, divided into two classifications:
+ Direct -- Applied to the direct signal path,
+ used for obstruction/occlusion effect.
+ Reverb -- Applied to the reverb signal path,
+ used for occlusion effect only.
+
+ 2. Volume level is expressed as a linear amplitude scaler:
+ 1.0f represents no attenuation applied to the original signal,
+ 0.5f denotes an attenuation of 6dB, and 0.0f results in silence.
+ Amplification (volume > 1.0f) is also allowed, and is not clamped.
+
+ 3. X3DAudio uses a left-handed Cartesian coordinate system with values
+ on the x-axis increasing from left to right, on the y-axis from
+ bottom to top, and on the z-axis from near to far.
+ Azimuths are measured clockwise from a given reference direction.
+
+ Distance measurement is with respect to user-defined world units.
+ Applications may provide coordinates using any system of measure
+ as all non-normalized calculations are scale invariant, with such
+ operations natively occurring in the user-defined world unit space.
+ Metric constants are supplied only as a convenience.
+ Distance is calculated using the Euclidean norm formula.
+
+ 4. Only real values are permissible with functions using 32-bit
+ float parameters -- NAN and infinite values are not accepted.
+ All computation occurs in 32-bit precision mode. */
+
+
+#ifndef __X3DAUDIO_H__
+#define __X3DAUDIO_H__
+//---------------------------------------------------//
+ #if defined(_XBOX)
+ #include
+ #endif
+ #include
+
+ // speaker geometry configuration flags, specifies assignment of channels to speaker positions, defined as per WAVEFORMATEXTENSIBLE.dwChannelMask
+ #if !defined(SPEAKER_FRONT_LEFT)
+ #define SPEAKER_FRONT_LEFT 0x00000001
+ #define SPEAKER_FRONT_RIGHT 0x00000002
+ #define SPEAKER_FRONT_CENTER 0x00000004
+ #define SPEAKER_LOW_FREQUENCY 0x00000008
+ #define SPEAKER_BACK_LEFT 0x00000010
+ #define SPEAKER_BACK_RIGHT 0x00000020
+ #define SPEAKER_FRONT_LEFT_OF_CENTER 0x00000040
+ #define SPEAKER_FRONT_RIGHT_OF_CENTER 0x00000080
+ #define SPEAKER_BACK_CENTER 0x00000100
+ #define SPEAKER_SIDE_LEFT 0x00000200
+ #define SPEAKER_SIDE_RIGHT 0x00000400
+ #define SPEAKER_TOP_CENTER 0x00000800
+ #define SPEAKER_TOP_FRONT_LEFT 0x00001000
+ #define SPEAKER_TOP_FRONT_CENTER 0x00002000
+ #define SPEAKER_TOP_FRONT_RIGHT 0x00004000
+ #define SPEAKER_TOP_BACK_LEFT 0x00008000
+ #define SPEAKER_TOP_BACK_CENTER 0x00010000
+ #define SPEAKER_TOP_BACK_RIGHT 0x00020000
+ #endif
+
+ // standard speaker geometry configurations, used with X3DAudioInitialize
+ #if !defined(SPEAKER_STEREO) && !defined(SPEAKER_5POINT1)
+ #define SPEAKER_STEREO (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT)
+ #define SPEAKER_5POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
+ #endif
+
+ // xenon speaker geometry configuration, used with X3DAudioInitialize
+ #if defined(_XBOX)
+ #define SPEAKER_XBOX SPEAKER_5POINT1
+ #endif
+
+
+ #define X3DAUDIO_HANDLE_BYTESIZE 16 // size of instance handle in bytes
+
+ // float math constants
+ #define X3DAUDIO_PI 3.141592654f
+ #define X3DAUDIO_2PI 6.283185307f
+
+ // speed of sound in meters per second for dry air at approximately 20C, used with X3DAudioInitialize
+ #define X3DAUDIO_SPEED_OF_SOUND 343.5f
+
+ // calculation control flags, used with X3DAudioCalculate
+ #define X3DAUDIO_CALCULATE_MATRIX 0x00000001 // enable matrix coefficient table calculation
+ #define X3DAUDIO_CALCULATE_DELAY 0x00000002 // enable delay time array calculation (stereo final mix only)
+ #define X3DAUDIO_CALCULATE_LPF_DIRECT 0x00000004 // enable LPF direct-path coefficient calculation
+ #define X3DAUDIO_CALCULATE_LPF_REVERB 0x00000008 // enable LPF reverb-path coefficient calculation
+ #define X3DAUDIO_CALCULATE_REVERB 0x00000010 // enable reverb send level calculation
+ #define X3DAUDIO_CALCULATE_DOPPLER 0x00000020 // enable doppler shift factor calculation
+ #define X3DAUDIO_CALCULATE_EMITTER_ANGLE 0x00000040 // enable emitter-to-listener interior angle calculation
+
+
+//-------------------------------------------------------------//
+ // function storage-class attribute and calltype
+ #if defined(_XBOX)
+ #define X3DAUDIO_API_(type) EXTERN_C type STDAPICALLTYPE
+ #else
+ #if defined(X3DEXPORT)
+ #define X3DAUDIO_API_(type) EXTERN_C __declspec(dllexport) type STDAPICALLTYPE
+ #else
+ #define X3DAUDIO_API_(type) EXTERN_C __declspec(dllimport) type STDAPICALLTYPE
+ #endif
+ #endif
+ #define X3DAUDIO_IMP_(type) type STDMETHODCALLTYPE
+
+
+//-----------------------------------------------------//
+ // primitive types
+ typedef INT_PTR NWORD; // natural machine word, bytesize platform specific
+ typedef UINT_PTR UNWORD; // unsigned natural machine word, bytesize platform specific
+ typedef float FLOAT32; // 32-bit IEEE float
+ typedef D3DVECTOR X3DAUDIO_VECTOR; // float 3D vector
+
+ // instance handle to precalculated constants
+ typedef BYTE X3DAUDIO_HANDLE[X3DAUDIO_HANDLE_BYTESIZE];
+
+
+ // Distance curve point:
+ // Defines a DSP setting at a given normalized distance.
+ typedef struct X3DAUDIO_DISTANCE_CURVE_POINT
+ {
+ FLOAT32 Distance; // normalized distance, must be within [0.0f, 1.0f]
+ FLOAT32 DSPSetting; // DSP control setting
+ } X3DAUDIO_DISTANCE_CURVE_POINT, *LPX3DAUDIO_DISTANCE_CURVE_POINT;
+
+ // Distance curve:
+ // A piecewise curve made up of linear segments used to
+ // define DSP behaviour with respect to normalized distance.
+ //
+ // Note that curve point distances are normalized within [0.0f, 1.0f].
+ // X3DAUDIO_EMITTER.CurveDistanceScaler must be used to scale the
+ // normalized distances to user-defined world units.
+ // For distances beyond CurveDistanceScaler * 1.0f,
+ // pPoints[PointCount-1].DSPSetting is used as the DSP setting.
+ //
+ // All distance curve spans must be such that:
+ // pPoints[k-1].DSPSetting + ((pPoints[k].DSPSetting-pPoints[k-1].DSPSetting) / (pPoints[k].Distance-pPoints[k-1].Distance)) * (pPoints[k].Distance-pPoints[k-1].Distance) != NAN or infinite values
+ // For all points in the distance curve where 1 <= k < PointCount.
+ typedef struct X3DAUDIO_DISTANCE_CURVE
+ {
+ X3DAUDIO_DISTANCE_CURVE_POINT* pPoints; // distance curve point array, must have at least PointCount elements with no duplicates and be sorted in ascending order with respect to Distance
+ UINT32 PointCount; // number of distance curve points, must be >= 2 as all distance curves must have at least two endpoints, defining DSP settings at 0.0f and 1.0f normalized distance
+ } X3DAUDIO_DISTANCE_CURVE, *LPX3DAUDIO_DISTANCE_CURVE;
+
+ // Cone:
+ // Specifies directionality for a single-channel emitter by
+ // scaling DSP behaviour with respect to the emitter's front orientation.
+ // This is modeled using two sound cones: an inner cone and an outer cone.
+ // On/within the inner cone, DSP settings are scaled by the inner values.
+ // On/beyond the outer cone, DSP settings are scaled by the outer values.
+ // If on both the cones, DSP settings are scaled by the inner values only.
+ // Between the two cones, the scaler is linearly interpolated between the
+ // inner and outer values. Set both cone angles to 0 or X3DAUDIO_2PI for
+ // omnidirectionality using only the outer or inner values respectively.
+ typedef struct X3DAUDIO_CONE
+ {
+ FLOAT32 InnerAngle; // inner cone angle in radians, must be within [0.0f, X3DAUDIO_2PI]
+ FLOAT32 OuterAngle; // outer cone angle in radians, must be within [InnerAngle, X3DAUDIO_2PI]
+
+ FLOAT32 InnerVolume; // volume level scaler on/within inner cone, used only for matrix calculations, must be within [0.0f, 2.0f] when used
+ FLOAT32 OuterVolume; // volume level scaler on/beyond outer cone, used only for matrix calculations, must be within [0.0f, 2.0f] when used
+ FLOAT32 InnerLPF; // LPF (both direct and reverb paths) coefficient scaler on/within inner cone, used only for LPF (both direct and reverb paths) calculations, must be within [0.0f, 1.0f] when used
+ FLOAT32 OuterLPF; // LPF (both direct and reverb paths) coefficient scaler on/beyond outer cone, used only for LPF (both direct and reverb paths) calculations, must be within [0.0f, 1.0f] when used
+ FLOAT32 InnerReverb; // reverb send level scaler on/within inner cone, used only for reverb calculations, must be within [0.0f, 2.0f] when used
+ FLOAT32 OuterReverb; // reverb send level scaler on/beyond outer cone, used only for reverb calculations, must be within [0.0f, 2.0f] when used
+ } X3DAUDIO_CONE, *LPX3DAUDIO_CONE;
+
+
+ // Listener:
+ // Defines a point of 3D audio reception.
+ typedef struct X3DAUDIO_LISTENER
+ {
+ X3DAUDIO_VECTOR OrientFront; // orientation of front direction, used only for matrix and delay calculations, must be orthonormal with OrientTop when used
+ X3DAUDIO_VECTOR OrientTop; // orientation of top direction, used only for matrix and delay calculations, must be orthonormal with OrientFront when used
+
+ X3DAUDIO_VECTOR Position; // position in user-defined world units, does not affect Velocity
+ X3DAUDIO_VECTOR Velocity; // velocity vector in user-defined world units/second, used only for doppler calculations, does not affect Position
+ } X3DAUDIO_LISTENER, *LPX3DAUDIO_LISTENER;
+
+ // Emitter:
+ // Defines a 3D audio source, divided into two classifications:
+ //
+ // Single-point -- For use with single-channel sounds.
+ // Positioned at the emitter base, i.e. the channel radius
+ // and azimuth are ignored if the number of channels == 1.
+ //
+ // May be omnidirectional or directional using a cone.
+ // The cone originates from the emitter base position,
+ // and is directed by the emitter's front orientation.
+ //
+ // Multi-point -- For use with multi-channel sounds.
+ // Each non-LFE channel is positioned using an
+ // azimuth along the channel radius with respect to the
+ // front orientation vector in the plane orthogonal to the
+ // top orientation vector. An azimuth of X3DAUDIO_2PI
+ // specifies a channel is a LFE. Such channels are
+ // positioned at the emitter base and are calculated
+ // with respect to pLFECurve only, never pVolumeCurve.
+ //
+ // Multi-point emitters are always omnidirectional,
+ // i.e. the cone is ignored if the number of channels > 1.
+ //
+ // Note that many properties are shared among all channel points,
+ // locking certain behaviour with respect to the emitter base position.
+ // For example, doppler shift is always calculated with respect to the
+ // emitter base position and so is constant for all its channel points.
+ // Distance curve calculations are also with respect to the emitter base
+ // position, with the curves being calculated independently of each other.
+ // For instance, volume and LFE calculations do not affect one another.
+ typedef struct X3DAUDIO_EMITTER
+ {
+ X3DAUDIO_CONE* pCone; // sound cone, used only with single-channel emitters for matrix, LPF (both direct and reverb paths), and reverb calculations, NULL specifies omnidirectionality
+ X3DAUDIO_VECTOR OrientFront; // orientation of front direction, used only for emitter angle calculations or with multi-channel emitters for matrix calculations or single-channel emitters with cones for matrix, LPF (both direct and reverb paths), and reverb calculations, must be normalized when used
+ X3DAUDIO_VECTOR OrientTop; // orientation of top direction, used only with multi-channel emitters for matrix calculations, must be orthonormal with OrientFront when used
+
+ X3DAUDIO_VECTOR Position; // position in user-defined world units, does not affect Velocity
+ X3DAUDIO_VECTOR Velocity; // velocity vector in user-defined world units/second, used only for doppler calculations, does not affect Position
+
+ UINT32 ChannelCount; // number of sound channels, must be > 0
+ FLOAT32 ChannelRadius; // channel radius, used only with multi-channel emitters for matrix calculations, must be >= 0.0f when used
+ FLOAT32* pChannelAzimuths; // channel azimuth array, used only with multi-channel emitters for matrix calculations, contains positions of each channel expressed in radians along the channel radius with respect to the front orientation vector in the plane orthogonal to the top orientation vector, or X3DAUDIO_2PI to specify a LFE channel, must have at least ChannelCount elements, all within [0.0f, X3DAUDIO_2PI] when used
+
+ X3DAUDIO_DISTANCE_CURVE* pVolumeCurve; // volume level distance curve, used only for matrix calculations, NULL specifies the default curve: [0.0f,1.0f], [1.0f,0.0f]
+ X3DAUDIO_DISTANCE_CURVE* pLFECurve; // LFE level distance curve, used only for matrix calculations, NULL specifies the default curve: [0.0f,1.0f], [1.0f,0.0f]
+ X3DAUDIO_DISTANCE_CURVE* pLPFDirectCurve; // LPF direct-path coefficient distance curve, used only for LPF direct-path calculations, NULL specifies the default curve: [0.0f,0.0f], [1.0f,0.25f]
+ X3DAUDIO_DISTANCE_CURVE* pLPFReverbCurve; // LPF reverb-path coefficient distance curve, used only for LPF reverb-path calculations, NULL specifies the default curve: [0.0f,0.25f], [1.0f,0.25f]
+ X3DAUDIO_DISTANCE_CURVE* pReverbCurve; // reverb send level distance curve, used only for reverb calculations, NULL specifies the default curve: [0.0f,1.0f], [1.0f,0.0f]
+
+ FLOAT32 CurveDistanceScaler; // curve distance scaler, used to scale normalized distance curves to user-defined world units and/or exaggerate their effect, does not affect any other calculations, must be within [FLT_MIN, FLT_MAX] when used
+ FLOAT32 DopplerScaler; // doppler shift scaler, used to exaggerate doppler shift effect, does not affect any other calculations, must be within [0.0f, FLT_MAX] when used
+ } X3DAUDIO_EMITTER, *LPX3DAUDIO_EMITTER;
+
+
+ // DSP settings:
+ // Receives results from a call to X3DAudioCalculate() to be sent
+ // to the low-level audio rendering API for 3D signal processing.
+ //
+ // The user is responsible for allocating the matrix coefficient table,
+ // delay time array, and initializing the channel counts when used.
+ typedef struct X3DAUDIO_DSP_SETTINGS
+ {
+ FLOAT32* pMatrixCoefficients; // [in] matrix coefficient table, receives an array representing the volume level of each source channel present in each destination channel with the source channels being the column index and the destination channels being the row index of the table, must have at least SrcChannelCount*DstChannelCount elements
+ FLOAT32* pDelayTimes; // [in] delay time array, receives delays for each destination channel in milliseconds, must have at least DstChannelCount elements (stereo final mix only)
+ UINT32 SrcChannelCount; // [in] number of source channels, must equal number of channels on respective emitter
+ UINT32 DstChannelCount; // [in] number of destination channels, must equal number of channels on the final mix
+
+ FLOAT32 LPFDirectCoefficient; // [out] LPF direct-path coefficient
+ FLOAT32 LPFReverbCoefficient; // [out] LPF reverb-path coefficient
+ FLOAT32 ReverbLevel; // [out] reverb send level
+ FLOAT32 DopplerFactor; // [out] doppler shift factor, scales resampler ratio for doppler shift effect, where the effective frequency = DopplerFactor * original frequency
+ FLOAT32 EmitterToListenerAngle; // [out] emitter-to-listener interior angle, expressed in radians with respect to the emitter's front orientation
+
+ FLOAT32 EmitterToListenerDistance; // [out] distance in user-defined world units from the emitter base to listener position, always calculated
+ FLOAT32 EmitterVelocityComponent; // [out] component of emitter velocity vector projected onto emitter->listener vector in user-defined world units/second, calculated only for doppler
+ FLOAT32 ListenerVelocityComponent; // [out] component of listener velocity vector projected onto emitter->listener vector in user-defined world units/second, calculated only for doppler
+ } X3DAUDIO_DSP_SETTINGS, *LPX3DAUDIO_DSP_SETTINGS;
+
+
+//-------------------------------------------------------//
+ // sets all global 3D audio constants
+ X3DAUDIO_API_(void) X3DAudioInitialize (UINT32 SpeakerChannelMask, FLOAT32 SpeedOfSound, X3DAUDIO_HANDLE Instance);
+
+ // calculates DSP settings with respect to 3D parameters
+ X3DAUDIO_API_(void) X3DAudioCalculate (const X3DAUDIO_HANDLE Instance, const X3DAUDIO_LISTENER* pListener, const X3DAUDIO_EMITTER* pEmitter, UINT32 Flags, X3DAUDIO_DSP_SETTINGS* pDSPSettings);
+
+
+#endif // __X3DAUDIO_H__
+//---------------------------------<-EOF->----------------------------------//
diff --git a/src/dep/include/DXSDK/include/XInput.h b/src/dep/include/DXSDK/include/XInput.h
new file mode 100644
index 0000000..2eeca4e
--- /dev/null
+++ b/src/dep/include/DXSDK/include/XInput.h
@@ -0,0 +1,156 @@
+/***************************************************************************
+* *
+* XInput.h -- This module defines XBOX controller APIs *
+* and constansts for the Windows platform. *
+* *
+* Copyright (c) Microsoft Corp. All rights reserved. *
+* *
+***************************************************************************/
+#ifndef _XINPUT_H_
+#define _XINPUT_H_
+
+#include
+
+// Current name of the DLL shipped in the same SDK as this header.
+// The name reflects the current version
+#define XINPUT_DLL_A "xinput1_1.dll"
+#define XINPUT_DLL_W L"xinput1_1.dll"
+#ifdef UNICODE
+ #define XINPUT_DLL XINPUT_DLL_W
+#else
+ #define XINPUT_DLL XINPUT_DLL_A
+#endif
+
+//
+// Device types available in XINPUT_CAPABILITIES
+//
+#define XINPUT_DEVTYPE_GAMEPAD 0x01
+
+//
+// Device subtypes available in XINPUT_CAPABILITIES
+//
+#define XINPUT_DEVSUBTYPE_GAMEPAD 0x01
+#define XINPUT_DEVSUBTYPE_WHEEL 0x02
+#define XINPUT_DEVSUBTYPE_ARCADE_STICK 0x03
+#define XINPUT_DEVSUBTYPE_FLIGHT_SICK 0x04
+#define XINPUT_DEVSUBTYPE_DANCE_PAD 0x05
+
+//
+// Flags for XINPUT_CAPABILITIES
+//
+#define XINPUT_CAPS_VOICE_SUPPORTED 0x0004
+
+//
+// Constants for gamepad buttons
+//
+#define XINPUT_GAMEPAD_DPAD_UP 0x0001
+#define XINPUT_GAMEPAD_DPAD_DOWN 0x0002
+#define XINPUT_GAMEPAD_DPAD_LEFT 0x0004
+#define XINPUT_GAMEPAD_DPAD_RIGHT 0x0008
+#define XINPUT_GAMEPAD_START 0x0010
+#define XINPUT_GAMEPAD_BACK 0x0020
+#define XINPUT_GAMEPAD_LEFT_THUMB 0x0040
+#define XINPUT_GAMEPAD_RIGHT_THUMB 0x0080
+#define XINPUT_GAMEPAD_LEFT_SHOULDER 0x0100
+#define XINPUT_GAMEPAD_RIGHT_SHOULDER 0x0200
+#define XINPUT_GAMEPAD_A 0x1000
+#define XINPUT_GAMEPAD_B 0x2000
+#define XINPUT_GAMEPAD_X 0x4000
+#define XINPUT_GAMEPAD_Y 0x8000
+
+//
+// Gamepad thresholds
+//
+#define XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE 7849
+#define XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE 8689
+#define XINPUT_GAMEPAD_TRIGGER_THRESHOLD 30
+
+//
+// Flags to pass to XInputGetCapabilities
+//
+#define XINPUT_FLAG_GAMEPAD 0x00000001
+
+
+//
+// Structures used by XInput APIs
+//
+typedef struct _XINPUT_GAMEPAD
+{
+ WORD wButtons;
+ BYTE bLeftTrigger;
+ BYTE bRightTrigger;
+ SHORT sThumbLX;
+ SHORT sThumbLY;
+ SHORT sThumbRX;
+ SHORT sThumbRY;
+} XINPUT_GAMEPAD, *PXINPUT_GAMEPAD;
+
+typedef struct _XINPUT_STATE
+{
+ DWORD dwPacketNumber;
+ XINPUT_GAMEPAD Gamepad;
+} XINPUT_STATE, *PXINPUT_STATE;
+
+typedef struct _XINPUT_VIBRATION
+{
+ WORD wLeftMotorSpeed;
+ WORD wRightMotorSpeed;
+} XINPUT_VIBRATION, *PXINPUT_VIBRATION;
+
+typedef struct _XINPUT_CAPABILITIES
+{
+ BYTE Type;
+ BYTE SubType;
+ WORD Flags;
+ XINPUT_GAMEPAD Gamepad;
+ XINPUT_VIBRATION Vibration;
+} XINPUT_CAPABILITIES, *PXINPUT_CAPABILITIES;
+
+
+//
+// XInput APIs
+//
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+DWORD WINAPI XInputGetState
+(
+ DWORD dwUserIndex, // [in] Index of the gamer associated with the device
+ XINPUT_STATE* pState // [out] Receives the current state
+);
+
+DWORD WINAPI XInputSetState
+(
+ DWORD dwUserIndex, // [in] Index of the gamer associated with the device
+ XINPUT_VIBRATION* pVibration // [in, out] The vibration information to send to the controller
+);
+
+DWORD WINAPI XInputGetCapabilities
+(
+ DWORD dwUserIndex, // [in] Index of the gamer associated with the device
+ DWORD dwFlags, // [in] Input flags that identify the device type
+ XINPUT_CAPABILITIES* pCapabilities // [out] Receives the capabilities
+);
+
+void WINAPI XInputEnable
+(
+ BOOL enable // [in] Indicates weather xinput is enabled or disabled.
+);
+
+
+
+
+DWORD WINAPI XInputGetDSoundAudioDeviceGuids
+(
+ DWORD dwUserIndex, // [in] Index of the gamer associated with the device
+ GUID* pDSoundRenderGuid, // [out] DSound device ID for render
+ GUID* pDSoundCaptureGuid // [out] DSound device ID for capture
+);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //_XINPUT_H_
+
diff --git a/src/dep/include/DXSDK/include/comdecl.h b/src/dep/include/DXSDK/include/comdecl.h
new file mode 100644
index 0000000..7d8eff5
--- /dev/null
+++ b/src/dep/include/DXSDK/include/comdecl.h
@@ -0,0 +1,51 @@
+// comdecl.h: Macros to facilitate COM interface and GUID declarations.
+// Copyright (c) Microsoft Corporation. All rights reserved.
+
+#ifndef _COMDECL_H_
+#define _COMDECL_H_
+
+#include // For standard COM interface macros
+
+// The DEFINE_CLSID() and DEFINE_IID() macros defined below allow COM GUIDs to
+// be declared and defined in such a way that clients can obtain the GUIDs using
+// either the __uuidof() extension or the old-style CLSID_Foo / IID_IFoo names.
+// If using the latter approach, the client can also choose whether to get the
+// GUID definitions by defining the INITGUID preprocessor constant or by linking
+// to a GUID library. This works in either C or C++.
+
+#ifdef __cplusplus
+
+ #define DECLSPEC_UUID_WRAPPER(x) __declspec(uuid(#x))
+ #ifdef INITGUID
+
+ #define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ class DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) className; \
+ EXTERN_C const GUID DECLSPEC_SELECTANY CLSID_##className = __uuidof(className)
+
+ #define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ interface DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) interfaceName; \
+ EXTERN_C const GUID DECLSPEC_SELECTANY IID_##interfaceName = __uuidof(interfaceName)
+
+ #else // INITGUID
+
+ #define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ class DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) className; \
+ EXTERN_C const GUID CLSID_##className
+
+ #define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ interface DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) interfaceName; \
+ EXTERN_C const GUID IID_##interfaceName
+
+ #endif // INITGUID
+
+#else // __cplusplus
+
+ #define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ DEFINE_GUID(CLSID_##className, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8)
+
+ #define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ DEFINE_GUID(IID_##interfaceName, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8)
+
+#endif // __cplusplus
+
+#endif // #ifndef _COMDECL_H_
diff --git a/src/dep/include/DXSDK/include/d3d.h b/src/dep/include/DXSDK/include/d3d.h
new file mode 100644
index 0000000..1cb8a96
--- /dev/null
+++ b/src/dep/include/DXSDK/include/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
+
+#define COM_NO_WINDOWS_H
+#include
+
+#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/src/dep/include/DXSDK/include/d3d10misc.h b/src/dep/include/DXSDK/include/d3d10misc.h
new file mode 100644
index 0000000..edfce5e
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3d10misc.h
@@ -0,0 +1,174 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//
+// File: D3D10Misc.h
+// Content: D3D10 Device Creation APIs
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef __D3D10MISC_H__
+#define __D3D10MISC_H__
+
+#include "d3d10.h"
+
+///////////////////////////////////////////////////////////////////////////
+// ID3D10Blob:
+// ------------
+// The buffer object is used by D3D10 to return arbitrary size data.
+//
+// GetBufferPointer -
+// Returns a pointer to the beginning of the buffer.
+//
+// GetBufferSize -
+// Returns the size of the buffer, in bytes.
+///////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3D10Blob ID3D10Blob;
+typedef interface ID3D10Blob *LPD3D10BLOB;
+
+// {8BA5FB08-5195-40e2-AC58-0D989C3A0102}
+DEFINE_GUID(IID_ID3D10Blob,
+0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);
+
+#undef INTERFACE
+#define INTERFACE ID3D10Blob
+
+DECLARE_INTERFACE_(ID3D10Blob, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ // ID3D10Blob
+ STDMETHOD_(LPVOID, GetBufferPointer)(THIS) PURE;
+ STDMETHOD_(SIZE_T, GetBufferSize)(THIS) PURE;
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+///////////////////////////////////////////////////////////////////////////
+// D3D10_DRIVER_TYPE
+// ----------------
+//
+// This identifier is used to determine the implementation of Direct3D10
+// to be used.
+//
+// Pass one of these values to D3D10CreateDevice
+//
+///////////////////////////////////////////////////////////////////////////
+typedef enum D3D10_DRIVER_TYPE
+{
+ D3D10_DRIVER_TYPE_HARDWARE = 0,
+ D3D10_DRIVER_TYPE_REFERENCE = 1,
+ D3D10_DRIVER_TYPE_NULL = 2,
+ D3D10_DRIVER_TYPE_SOFTWARE = 3,
+} D3D10_DRIVER_TYPE;
+
+DEFINE_GUID(GUID_DeviceType,
+0xd722fb4d, 0x7a68, 0x437a, 0xb2, 0x0c, 0x58, 0x04, 0xee, 0x24, 0x94, 0xa6);
+
+///////////////////////////////////////////////////////////////////////////
+// D3D10CreateDevice
+// ------------------
+//
+// pAdapter
+// If NULL, D3D10CreateDevice will choose the primary adapter and
+// create a new instance from a temporarily created IDXGIFactory.
+// If non-NULL, D3D10CreateDevice will register the appropriate
+// device, if necessary (via IDXGIAdapter::RegisterDrver), before
+// creating the device.
+// DriverType
+// Specifies the driver type to be created: hardware, reference or
+// null.
+// Software
+// HMODULE of a DLL implementing a software rasterizer. Must be NULL for
+// non-Software driver types.
+// Flags
+// Any of those documented for D3D10CreateDevice.
+// SDKVersion
+// SDK version. Use the D3D10_SDK_VERSION macro.
+// ppDevice
+// Pointer to returned interface.
+//
+// Return Values
+// Any of those documented for
+// CreateDXGIFactory
+// IDXGIFactory::EnumAdapters
+// IDXGIAdapter::RegisterDriver
+// D3D10CreateDevice
+//
+///////////////////////////////////////////////////////////////////////////
+HRESULT WINAPI D3D10CreateDevice(
+ IDXGIAdapter *pAdapter,
+ D3D10_DRIVER_TYPE DriverType,
+ HMODULE Software,
+ UINT Flags,
+ UINT SDKVersion,
+ ID3D10Device **ppDevice);
+
+///////////////////////////////////////////////////////////////////////////
+// D3D10CreateDeviceAndSwapChain
+// ------------------------------
+//
+// ppAdapter
+// If NULL, D3D10CreateDevice will choose the primary adapter and
+// create a new instance from a temporarily created IDXGIFactory.
+// If non-NULL, D3D10CreateDevice will register the appropriate
+// device, if necessary (via IDXGIAdapter::RegisterDrver), before
+// creating the device.
+// DriverType
+// Specifies the driver type to be created: hardware, reference or
+// null.
+// Software
+// HMODULE of a DLL implementing a software rasterizer. Must be NULL for
+// non-Software driver types.
+// Flags
+// Any of those documented for D3D10CreateDevice.
+// SDKVersion
+// SDK version. Use the D3D10_SDK_VERSION macro.
+// pSwapChainDesc
+// Swap chain description, may be NULL.
+// ppSwapChain
+// Pointer to returned interface. May be NULL.
+// ppDevice
+// Pointer to returned interface.
+//
+// Return Values
+// Any of those documented for
+// CreateDXGIFactory
+// IDXGIFactory::EnumAdapters
+// IDXGIAdapter::RegisterDriver
+// D3D10CreateDevice
+// IDXGIFactory::CreateSwapChain
+//
+///////////////////////////////////////////////////////////////////////////
+HRESULT WINAPI D3D10CreateDeviceAndSwapChain(
+ IDXGIAdapter *pAdapter,
+ D3D10_DRIVER_TYPE DriverType,
+ HMODULE Software,
+ UINT Flags,
+ UINT SDKVersion,
+ DXGI_SWAP_CHAIN_DESC *pSwapChainDesc,
+ IDXGISwapChain **ppSwapChain,
+ ID3D10Device **ppDevice);
+
+
+///////////////////////////////////////////////////////////////////////////
+// D3D10CreateBlob:
+// -----------------
+// Creates a Buffer of n Bytes
+//////////////////////////////////////////////////////////////////////////
+
+HRESULT WINAPI D3D10CreateBlob(SIZE_T NumBytes, LPD3D10BLOB *ppBuffer);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+#endif //__D3D10EFFECT_H__
+
+
diff --git a/src/dep/include/DXSDK/include/d3d10sdklayers.h b/src/dep/include/DXSDK/include/d3d10sdklayers.h
new file mode 100644
index 0000000..ff728fd
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3d10sdklayers.h
@@ -0,0 +1,998 @@
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 7.00.0485 */
+/* Compiler settings for d3d10sdklayers.idl:
+ Oicf, W1, Zp8, env=Win32 (32b run)
+ protocol : dce , ms_ext, c_ext, robust
+ 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( )
+
+#pragma warning( disable: 4049 ) /* more than 64k source lines */
+
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCSAL_H_VERSION__
+#define __REQUIRED_RPCSAL_H_VERSION__ 100
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of
+#endif // __RPCNDR_H_VERSION__
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __d3d10sdklayers_h__
+#define __d3d10sdklayers_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+/* Forward Declarations */
+
+#ifndef __ID3D10Debug_FWD_DEFINED__
+#define __ID3D10Debug_FWD_DEFINED__
+typedef interface ID3D10Debug ID3D10Debug;
+#endif /* __ID3D10Debug_FWD_DEFINED__ */
+
+
+#ifndef __ID3D10InfoQueue_FWD_DEFINED__
+#define __ID3D10InfoQueue_FWD_DEFINED__
+typedef interface ID3D10InfoQueue ID3D10InfoQueue;
+#endif /* __ID3D10InfoQueue_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+
+/* interface __MIDL_itf_d3d10sdklayers_0000_0000 */
+/* [local] */
+
+#define D3D10_SDK_LAYERS_VERSION ( 2 )
+
+#define D3D10_DEBUG_FEATURE_FLUSH_PER_RENDER_OP ( 0x1 )
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10sdklayers_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10sdklayers_0000_0000_v0_0_s_ifspec;
+
+#ifndef __ID3D10Debug_INTERFACE_DEFINED__
+#define __ID3D10Debug_INTERFACE_DEFINED__
+
+/* interface ID3D10Debug */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10Debug;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9B7E4E01-342C-4106-A19F-4F2704F689F0")
+ ID3D10Debug : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
+ UINT Mask) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetFeatureMask( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE Validate( void) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10DebugVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10Debug * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10Debug * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10Debug * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
+ ID3D10Debug * This,
+ UINT Mask);
+
+ UINT ( STDMETHODCALLTYPE *GetFeatureMask )(
+ ID3D10Debug * This);
+
+ HRESULT ( STDMETHODCALLTYPE *Validate )(
+ ID3D10Debug * This);
+
+ END_INTERFACE
+ } ID3D10DebugVtbl;
+
+ interface ID3D10Debug
+ {
+ CONST_VTBL struct ID3D10DebugVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10Debug_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10Debug_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10Debug_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10Debug_SetFeatureMask(This,Mask) \
+ ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
+
+#define ID3D10Debug_GetFeatureMask(This) \
+ ( (This)->lpVtbl -> GetFeatureMask(This) )
+
+#define ID3D10Debug_Validate(This) \
+ ( (This)->lpVtbl -> Validate(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10Debug_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d10sdklayers_0000_0001 */
+/* [local] */
+
+typedef
+enum D3D10_MESSAGE_CATEGORY
+ { D3D10_MESSAGE_CATEGORY_APPLICATION_DEFINED = 0,
+ D3D10_MESSAGE_CATEGORY_MISCELLANEOUS = ( D3D10_MESSAGE_CATEGORY_APPLICATION_DEFINED + 1 ) ,
+ D3D10_MESSAGE_CATEGORY_INITIALIZATION = ( D3D10_MESSAGE_CATEGORY_MISCELLANEOUS + 1 ) ,
+ D3D10_MESSAGE_CATEGORY_CLEANUP = ( D3D10_MESSAGE_CATEGORY_INITIALIZATION + 1 ) ,
+ D3D10_MESSAGE_CATEGORY_COMPILATION = ( D3D10_MESSAGE_CATEGORY_CLEANUP + 1 ) ,
+ D3D10_MESSAGE_CATEGORY_STATE_CREATION = ( D3D10_MESSAGE_CATEGORY_COMPILATION + 1 ) ,
+ D3D10_MESSAGE_CATEGORY_STATE_SETTING = ( D3D10_MESSAGE_CATEGORY_STATE_CREATION + 1 ) ,
+ D3D10_MESSAGE_CATEGORY_STATE_GETTING = ( D3D10_MESSAGE_CATEGORY_STATE_SETTING + 1 ) ,
+ D3D10_MESSAGE_CATEGORY_RESOURCE_MANIPULATION = ( D3D10_MESSAGE_CATEGORY_STATE_GETTING + 1 ) ,
+ D3D10_MESSAGE_CATEGORY_EXECUTION = ( D3D10_MESSAGE_CATEGORY_RESOURCE_MANIPULATION + 1 )
+ } D3D10_MESSAGE_CATEGORY;
+
+typedef
+enum D3D10_MESSAGE_SEVERITY
+ { D3D10_MESSAGE_SEVERITY_CORRUPTION = 0,
+ D3D10_MESSAGE_SEVERITY_ERROR = ( D3D10_MESSAGE_SEVERITY_CORRUPTION + 1 ) ,
+ D3D10_MESSAGE_SEVERITY_WARNING = ( D3D10_MESSAGE_SEVERITY_ERROR + 1 ) ,
+ D3D10_MESSAGE_SEVERITY_INFO = ( D3D10_MESSAGE_SEVERITY_WARNING + 1 )
+ } D3D10_MESSAGE_SEVERITY;
+
+typedef
+enum D3D10_MESSAGE_ID
+ { D3D10_MESSAGE_ID_UNKNOWN = 0,
+ D3D10_MESSAGE_ID_STRING_FROM_APPLICATION = ( D3D10_MESSAGE_ID_UNKNOWN + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_THIS = ( D3D10_MESSAGE_ID_STRING_FROM_APPLICATION + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_PARAMETER0 = ( D3D10_MESSAGE_ID_CORRUPTED_THIS + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_PARAMETER1 = ( D3D10_MESSAGE_ID_CORRUPTED_PARAMETER0 + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_PARAMETER2 = ( D3D10_MESSAGE_ID_CORRUPTED_PARAMETER1 + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_PARAMETER3 = ( D3D10_MESSAGE_ID_CORRUPTED_PARAMETER2 + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_PARAMETER4 = ( D3D10_MESSAGE_ID_CORRUPTED_PARAMETER3 + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_PARAMETER5 = ( D3D10_MESSAGE_ID_CORRUPTED_PARAMETER4 + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_PARAMETER6 = ( D3D10_MESSAGE_ID_CORRUPTED_PARAMETER5 + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_PARAMETER7 = ( D3D10_MESSAGE_ID_CORRUPTED_PARAMETER6 + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_PARAMETER8 = ( D3D10_MESSAGE_ID_CORRUPTED_PARAMETER7 + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_PARAMETER9 = ( D3D10_MESSAGE_ID_CORRUPTED_PARAMETER8 + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_PARAMETER10 = ( D3D10_MESSAGE_ID_CORRUPTED_PARAMETER9 + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_PARAMETER11 = ( D3D10_MESSAGE_ID_CORRUPTED_PARAMETER10 + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_PARAMETER12 = ( D3D10_MESSAGE_ID_CORRUPTED_PARAMETER11 + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_PARAMETER13 = ( D3D10_MESSAGE_ID_CORRUPTED_PARAMETER12 + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_PARAMETER14 = ( D3D10_MESSAGE_ID_CORRUPTED_PARAMETER13 + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_PARAMETER15 = ( D3D10_MESSAGE_ID_CORRUPTED_PARAMETER14 + 1 ) ,
+ D3D10_MESSAGE_ID_CORRUPTED_MULTITHREADING = ( D3D10_MESSAGE_ID_CORRUPTED_PARAMETER15 + 1 ) ,
+ D3D10_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = ( D3D10_MESSAGE_ID_CORRUPTED_MULTITHREADING + 1 ) ,
+ D3D10_MESSAGE_ID_IASETINPUTLAYOUT_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY + 1 ) ,
+ D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_IASETINPUTLAYOUT_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_IASETINDEXBUFFER_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_VSSETSHADER_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_IASETINDEXBUFFER_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_VSSETSHADERRESOURCES_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_VSSETSHADER_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_VSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_VSSETSAMPLERS_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_GSSETSHADER_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_VSSETSAMPLERS_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_GSSETSHADERRESOURCES_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_GSSETSHADER_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_GSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_GSSETSAMPLERS_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_SOSETTARGETS_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_GSSETSAMPLERS_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_PSSETSHADER_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_SOSETTARGETS_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_PSSETSHADERRESOURCES_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_PSSETSHADER_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_PSSETSHADERRESOURCES_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_PSSETSAMPLERS_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_RSSETSTATE_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_PSSETSAMPLERS_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_OMSETBLENDSTATE_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_RSSETSTATE_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_OMSETDEPTHSTENCILSTATE_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_OMSETBLENDSTATE_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_OMSETRENDERTARGETS_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_OMSETDEPTHSTENCILSTATE_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_SETPREDICATION_UNBINDDELETINGOBJECT = ( D3D10_MESSAGE_ID_OMSETRENDERTARGETS_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = ( D3D10_MESSAGE_ID_SETPREDICATION_UNBINDDELETINGOBJECT + 1 ) ,
+ D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = ( D3D10_MESSAGE_ID_GETPRIVATEDATA_MOREDATA + 1 ) ,
+ D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN = ( D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA + 1 ) ,
+ D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS = ( D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN + 1 ) ,
+ D3D10_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = ( D3D10_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = ( D3D10_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDFORMAT = ( D3D10_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDSAMPLES = ( D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDUSAGE = ( D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDSAMPLES + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDBINDFLAGS = ( D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDUSAGE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDCPUACCESSFLAGS = ( D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDBINDFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDMISCFLAGS = ( D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDCPUACCESSFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDFORMAT = ( D3D10_MESSAGE_ID_CREATEBUFFER_UNRECOGNIZEDMISCFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDCPUACCESSFLAGS = ( D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDBINDFLAGS = ( D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDCPUACCESSFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDINITIALDATA = ( D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDBINDFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDDIMENSIONS = ( D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDINITIALDATA + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMIPLEVELS = ( D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDDIMENSIONS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMISCFLAGS = ( D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMIPLEVELS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDARG_RETURN = ( D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDMISCFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBUFFER_OUTOFMEMORY_RETURN = ( D3D10_MESSAGE_ID_CREATEBUFFER_INVALIDARG_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBUFFER_NULLDESC = ( D3D10_MESSAGE_ID_CREATEBUFFER_OUTOFMEMORY_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDFORMAT = ( D3D10_MESSAGE_ID_CREATEBUFFER_NULLDESC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_UNSUPPORTEDFORMAT = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDSAMPLES = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_UNSUPPORTEDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDUSAGE = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDSAMPLES + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDBINDFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDUSAGE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDCPUACCESSFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDBINDFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDMISCFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDCPUACCESSFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDFORMAT = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_UNRECOGNIZEDMISCFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDCPUACCESSFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDBINDFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDCPUACCESSFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDINITIALDATA = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDBINDFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDDIMENSIONS = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDINITIALDATA + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMIPLEVELS = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDDIMENSIONS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMISCFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMIPLEVELS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDARG_RETURN = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDMISCFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_OUTOFMEMORY_RETURN = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_INVALIDARG_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_NULLDESC = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_OUTOFMEMORY_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE1D_RESOURCETOOLARGE = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_NULLDESC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDFORMAT = ( D3D10_MESSAGE_ID_CREATETEXTURE1D_RESOURCETOOLARGE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_UNSUPPORTEDFORMAT = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDSAMPLES = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_UNSUPPORTEDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDUSAGE = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDSAMPLES + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDBINDFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDUSAGE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDCPUACCESSFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDBINDFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDMISCFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDCPUACCESSFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDFORMAT = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_UNRECOGNIZEDMISCFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDCPUACCESSFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDBINDFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDCPUACCESSFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDINITIALDATA = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDBINDFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDDIMENSIONS = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDINITIALDATA + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMIPLEVELS = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDDIMENSIONS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMISCFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMIPLEVELS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDARG_RETURN = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDMISCFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_OUTOFMEMORY_RETURN = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_INVALIDARG_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_NULLDESC = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_OUTOFMEMORY_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE2D_RESOURCETOOLARGE = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_NULLDESC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDFORMAT = ( D3D10_MESSAGE_ID_CREATETEXTURE2D_RESOURCETOOLARGE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_UNSUPPORTEDFORMAT = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDSAMPLES = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_UNSUPPORTEDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDUSAGE = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDSAMPLES + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDBINDFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDUSAGE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDCPUACCESSFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDBINDFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDMISCFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDCPUACCESSFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDFORMAT = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_UNRECOGNIZEDMISCFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDCPUACCESSFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDBINDFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDCPUACCESSFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDINITIALDATA = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDBINDFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDDIMENSIONS = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDINITIALDATA + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMIPLEVELS = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDDIMENSIONS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMISCFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMIPLEVELS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDARG_RETURN = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDMISCFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_OUTOFMEMORY_RETURN = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_INVALIDARG_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_NULLDESC = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_OUTOFMEMORY_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURE3D_RESOURCETOOLARGE = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_NULLDESC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_UNRECOGNIZEDFORMAT = ( D3D10_MESSAGE_ID_CREATETEXTURE3D_RESOURCETOOLARGE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_UNSUPPORTEDFORMAT = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_UNRECOGNIZEDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDSAMPLES = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_UNSUPPORTEDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_UNRECOGNIZEDUSAGE = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDSAMPLES + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_UNRECOGNIZEDBINDFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_UNRECOGNIZEDUSAGE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_UNRECOGNIZEDCPUACCESSFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_UNRECOGNIZEDBINDFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_UNRECOGNIZEDMISCFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_UNRECOGNIZEDCPUACCESSFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDFORMAT = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_UNRECOGNIZEDMISCFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDCPUACCESSFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDBINDFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDCPUACCESSFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDINITIALDATA = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDBINDFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDDIMENSIONS = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDINITIALDATA + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDMIPLEVELS = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDDIMENSIONS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDMISCFLAGS = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDMIPLEVELS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDARG_RETURN = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDMISCFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_OUTOFMEMORY_RETURN = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_INVALIDARG_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_NULLDESC = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_OUTOFMEMORY_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_CREATETEXTURECUBE_RESOURCETOOLARGE = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_NULLDESC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = ( D3D10_MESSAGE_ID_CREATETEXTURECUBE_RESOURCETOOLARGE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = ( D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = ( D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = ( D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = ( D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_TOOMANYOBJECTS = ( D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN = ( D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_TOOMANYOBJECTS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN = ( D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = ( D3D10_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = ( D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = ( D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = ( D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = ( D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = ( D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_TOOMANYOBJECTS = ( D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN = ( D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_TOOMANYOBJECTS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN = ( D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = ( D3D10_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_TOOMANYOBJECTS = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_TOOMANYOBJECTS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = ( D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = ( D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = ( D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = ( D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = ( D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = ( D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = ( D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = ( D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = ( D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = ( D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = ( D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = ( D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = ( D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLDESC = ( D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = ( D3D10_MESSAGE_ID_CREATEINPUTLAYOUT_NULLDESC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = ( D3D10_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = ( D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = ( D3D10_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = ( D3D10_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = ( D3D10_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = ( D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = ( D3D10_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = ( D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = ( D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE + 1 ) ,
+ D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = ( D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP + 1 ) ,
+ D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_TOOMANYOBJECTS = ( D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC = ( D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_TOOMANYOBJECTS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = ( D3D10_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_TOOMANYOBJECTS = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_TOOMANYOBJECTS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = ( D3D10_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = ( D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = ( D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = ( D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = ( D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = ( D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = ( D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBLENDSTATE_TOOMANYOBJECTS = ( D3D10_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC = ( D3D10_MESSAGE_ID_CREATEBLENDSTATE_TOOMANYOBJECTS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER = ( D3D10_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU = ( D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV = ( D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW = ( D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS = ( D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY = ( D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC = ( D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD = ( D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD = ( D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESAMPLERSTATE_TOOMANYOBJECTS = ( D3D10_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD + 1 ) ,
+ D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC = ( D3D10_MESSAGE_ID_CREATESAMPLERSTATE_TOOMANYOBJECTS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDQUERY = ( D3D10_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDMISCFLAGS = ( D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDQUERY + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_UNEXPECTEDMISCFLAG = ( D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDMISCFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_NULLDESC = ( D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_UNEXPECTEDMISCFLAG + 1 ) ,
+ D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_INVALIDBUFFER = ( D3D10_MESSAGE_ID_CREATEQUERYORPREDICATE_NULLDESC + 1 ) ,
+ D3D10_MESSAGE_ID_IASETINDEXBUFFERS_INVALIDBUFFER = ( D3D10_MESSAGE_ID_IASETVERTEXBUFFERS_INVALIDBUFFER + 1 ) ,
+ D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_INVALIDBUFFER = ( D3D10_MESSAGE_ID_IASETINDEXBUFFERS_INVALIDBUFFER + 1 ) ,
+ D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_INVALIDBUFFER = ( D3D10_MESSAGE_ID_VSSETCONSTANTBUFFERS_INVALIDBUFFER + 1 ) ,
+ D3D10_MESSAGE_ID_SOSETTARGETS_INVALIDBUFFER = ( D3D10_MESSAGE_ID_GSSETCONSTANTBUFFERS_INVALIDBUFFER + 1 ) ,
+ D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_INVALIDBUFFER = ( D3D10_MESSAGE_ID_SOSETTARGETS_INVALIDBUFFER + 1 ) ,
+ D3D10_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH = ( D3D10_MESSAGE_ID_PSSETCONSTANTBUFFERS_INVALIDBUFFER + 1 ) ,
+ D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH = ( D3D10_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH + 1 ) ,
+ D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_SATURATE = ( D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH + 1 ) ,
+ D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSUBRESOURCE = ( D3D10_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_SATURATE + 1 ) ,
+ D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESUBRESOURCE = ( D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSUBRESOURCE + 1 ) ,
+ D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCEBOX = ( D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESUBRESOURCE + 1 ) ,
+ D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCE = ( D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCEBOX + 1 ) ,
+ D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSTATE = ( D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCE + 1 ) ,
+ D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESTATE = ( D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDDESTINATIONSTATE + 1 ) ,
+ D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE = ( D3D10_MESSAGE_ID_COPYSUBRESOURCEREGION_INVALIDSOURCESTATE + 1 ) ,
+ D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE = ( D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE + 1 ) ,
+ D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE = ( D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE + 1 ) ,
+ D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE = ( D3D10_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE + 1 ) ,
+ D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX = ( D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE + 1 ) ,
+ D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE = ( D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX + 1 ) ,
+ D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE = ( D3D10_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE + 1 ) ,
+ D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS = ( D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE + 1 ) ,
+ D3D10_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED = ( D3D10_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN = ( D3D10_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED + 1 ) ,
+ D3D10_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED = ( D3D10_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE = ( D3D10_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE = ( D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS = ( D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED = ( D3D10_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN = ( D3D10_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE = ( D3D10_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED = ( D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE = ( D3D10_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE = ( D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS = ( D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED = ( D3D10_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN = ( D3D10_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE = ( D3D10_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED = ( D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE = ( D3D10_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE = ( D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS = ( D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED = ( D3D10_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN = ( D3D10_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE = ( D3D10_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED = ( D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURECUBE_MAP_INVALIDMAPTYPE = ( D3D10_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURECUBE_MAP_INVALIDSUBRESOURCE = ( D3D10_MESSAGE_ID_TEXTURECUBE_MAP_INVALIDMAPTYPE + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURECUBE_MAP_INVALIDFLAGS = ( D3D10_MESSAGE_ID_TEXTURECUBE_MAP_INVALIDSUBRESOURCE + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURECUBE_MAP_ALREADYMAPPED = ( D3D10_MESSAGE_ID_TEXTURECUBE_MAP_INVALIDFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURECUBE_MAP_DEVICEREMOVED_RETURN = ( D3D10_MESSAGE_ID_TEXTURECUBE_MAP_ALREADYMAPPED + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURECUBE_UNMAP_INVALIDSUBRESOURCE = ( D3D10_MESSAGE_ID_TEXTURECUBE_MAP_DEVICEREMOVED_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_TEXTURECUBE_UNMAP_NOTMAPPED = ( D3D10_MESSAGE_ID_TEXTURECUBE_UNMAP_INVALIDSUBRESOURCE + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_HAZARD = ( D3D10_MESSAGE_ID_TEXTURECUBE_UNMAP_NOTMAPPED + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_HAZARD = ( D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_HAZARD + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_HAZARD = ( D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_HAZARD + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_HAZARD = ( D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_HAZARD + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_HAZARD = ( D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_HAZARD + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_HAZARD = ( D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_HAZARD + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD = ( D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_HAZARD + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_HAZARD = ( D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_HAZARD + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD = ( D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_HAZARD + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_HAZARD = ( D3D10_MESSAGE_ID_DEVICE_OMSETRENDERTARGETS_HAZARD + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW = ( D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_HAZARD + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW = ( D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW = ( D3D10_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW = ( D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW = ( D3D10_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW = ( D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_MISSING = ( D3D10_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = ( D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_MISSING + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX = ( D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE = ( D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK = ( D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE = ( D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = ( D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_NOT_SET = ( D3D10_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_INPUTLAYOUT_NOT_SET = ( D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_NOT_SET + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_NOT_SET = ( D3D10_MESSAGE_ID_DEVICE_DRAW_INPUTLAYOUT_NOT_SET + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL = ( D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_NOT_SET + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET = ( D3D10_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_SHADERRESOURCEVIEW_NOT_SET = ( D3D10_MESSAGE_ID_DEVICE_DRAW_SAMPLER_NOT_SET + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_DIMENSION_MISMATCH = ( D3D10_MESSAGE_ID_DEVICE_DRAW_SHADERRESOURCEVIEW_NOT_SET + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = ( D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_DIMENSION_MISMATCH + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_TOO_SMALL = ( D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_NOT_SET = ( D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_BUFFER_TOO_SMALL + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID = ( D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_NOT_SET + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL = ( D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_FORMAT_INVALID + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_GS_INPUT_PRIMITIVE_MISMATCH = ( D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_BUFFER_TOO_SMALL + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_RETURN_TYPE_MISMATCH = ( D3D10_MESSAGE_ID_DEVICE_DRAW_GS_INPUT_PRIMITIVE_MISMATCH + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_POSITION_NOT_PRESENT = ( D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_RETURN_TYPE_MISMATCH + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_NOT_PRESENT = ( D3D10_MESSAGE_ID_DEVICE_DRAW_POSITION_NOT_PRESENT + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_BOUND_RESOURCE_MAPPED = ( D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_NOT_PRESENT + 1 ) ,
+ D3D10_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS = ( D3D10_MESSAGE_ID_DEVICE_DRAW_BOUND_RESOURCE_MAPPED + 1 ) ,
+ D3D10_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN = ( D3D10_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS + 1 ) ,
+ D3D10_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN = ( D3D10_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE = ( D3D10_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN + 1 ) ,
+ D3D10_MESSAGE_ID_REF_THREADING_MODE = ( D3D10_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE + 1 ) ,
+ D3D10_MESSAGE_ID_REF_UMDRIVER_EXCEPTION = ( D3D10_MESSAGE_ID_REF_THREADING_MODE + 1 ) ,
+ D3D10_MESSAGE_ID_REF_KMDRIVER_EXCEPTION = ( D3D10_MESSAGE_ID_REF_UMDRIVER_EXCEPTION + 1 ) ,
+ D3D10_MESSAGE_ID_REF_HARDWARE_EXCEPTION = ( D3D10_MESSAGE_ID_REF_KMDRIVER_EXCEPTION + 1 ) ,
+ D3D10_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE = ( D3D10_MESSAGE_ID_REF_HARDWARE_EXCEPTION + 1 ) ,
+ D3D10_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER = ( D3D10_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE + 1 ) ,
+ D3D10_MESSAGE_ID_REF_OUT_OF_MEMORY = ( D3D10_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_INVALID_PRIMITIVETOPOLOGY = ( D3D10_MESSAGE_ID_REF_OUT_OF_MEMORY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_OFFSET_UNALIGNED = ( D3D10_MESSAGE_ID_DEVICE_DRAW_INVALID_PRIMITIVETOPOLOGY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_STRIDE_UNALIGNED = ( D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_OFFSET_UNALIGNED + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_OFFSET_UNALIGNED = ( D3D10_MESSAGE_ID_DEVICE_DRAW_VERTEX_STRIDE_UNALIGNED + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED = ( D3D10_MESSAGE_ID_DEVICE_DRAW_INDEX_OFFSET_UNALIGNED + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED = ( D3D10_MESSAGE_ID_DEVICE_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED = ( D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED = ( D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED = ( D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED = ( D3D10_MESSAGE_ID_DEVICE_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED = ( D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_OFFSET_TOO_LARGE = ( D3D10_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_FORMAT_INVALID = ( D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_OFFSET_TOO_LARGE + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_TOO_LARGE = ( D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_FORMAT_INVALID + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_UNALIGNED = ( D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_TOO_LARGE + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_OFFSET_UNALIGNED = ( D3D10_MESSAGE_ID_DEVICE_IASETINDEXBUFFER_OFFSET_UNALIGNED + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_GENERATEMIPS_RESOURCE_INVALID = ( D3D10_MESSAGE_ID_DEVICE_SOSETTARGETS_OFFSET_UNALIGNED + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_BUFFERS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_GENERATEMIPS_RESOURCE_INVALID + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_VIEWS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_BUFFERS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_BUFFERS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_VSSETSHADERRESOURCES_VIEWS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_VSSETSAMPLERS_SAMPLERS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_VSSETCONSTANTBUFFERS_BUFFERS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_VIEWS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_VSSETSAMPLERS_SAMPLERS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_BUFFERS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_GSSETSHADERRESOURCES_VIEWS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_GSSETSAMPLERS_SAMPLERS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_GSSETCONSTANTBUFFERS_BUFFERS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_VIEWS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_GSSETSAMPLERS_SAMPLERS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_BUFFERS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_PSSETSHADERRESOURCES_VIEWS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_PSSETSAMPLERS_SAMPLERS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_PSSETCONSTANTBUFFERS_BUFFERS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_IAGETVERTEXBUFFERS_BUFFERS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_PSSETSAMPLERS_SAMPLERS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_VSGETSHADERRESOURCES_VIEWS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_IAGETVERTEXBUFFERS_BUFFERS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_VSGETCONSTANTBUFFERS_BUFFERS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_VSGETSHADERRESOURCES_VIEWS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_VSGETSAMPLERS_SAMPLERS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_VSGETCONSTANTBUFFERS_BUFFERS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_GSGETSHADERRESOURCES_VIEWS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_VSGETSAMPLERS_SAMPLERS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_GSGETCONSTANTBUFFERS_BUFFERS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_GSGETSHADERRESOURCES_VIEWS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_GSGETSAMPLERS_SAMPLERS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_GSGETCONSTANTBUFFERS_BUFFERS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_SOGETTARGETS_BUFFERS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_GSGETSAMPLERS_SAMPLERS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_PSGETSHADERRESOURCES_VIEWS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_SOGETTARGETS_BUFFERS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_PSGETCONSTANTBUFFERS_BUFFERS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_PSGETSHADERRESOURCES_VIEWS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_PSGETSAMPLERS_SAMPLERS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_PSGETCONSTANTBUFFERS_BUFFERS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_RSGETVIEWPORTS_VIEWPORTS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_PSGETSAMPLERS_SAMPLERS_EMPTY + 1 ) ,
+ D3D10_MESSAGE_ID_DEVICE_RSGETSCISSORRECTS_RECTS_EMPTY = ( D3D10_MESSAGE_ID_DEVICE_RSGETVIEWPORTS_VIEWPORTS_EMPTY + 1 )
+ } D3D10_MESSAGE_ID;
+
+typedef struct D3D10_MESSAGE
+ {
+ D3D10_MESSAGE_CATEGORY Category;
+ D3D10_MESSAGE_SEVERITY Severity;
+ D3D10_MESSAGE_ID ID;
+ const WCHAR *pDescription;
+ SIZE_T DescriptionByteLength;
+ } D3D10_MESSAGE;
+
+typedef struct D3D10_INFO_QUEUE_FILTER_DESC
+ {
+ UINT NumCategories;
+ D3D10_MESSAGE_CATEGORY *pCategoryList;
+ UINT NumSeverities;
+ D3D10_MESSAGE_SEVERITY *pSeverityList;
+ UINT NumIDs;
+ D3D10_MESSAGE_ID *pIDList;
+ } D3D10_INFO_QUEUE_FILTER_DESC;
+
+typedef struct D3D10_INFO_QUEUE_FILTER
+ {
+ D3D10_INFO_QUEUE_FILTER_DESC AllowList;
+ D3D10_INFO_QUEUE_FILTER_DESC DenyList;
+ } D3D10_INFO_QUEUE_FILTER;
+
+#define D3D10_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d10sdklayers_0000_0001_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d10sdklayers_0000_0001_v0_0_s_ifspec;
+
+#ifndef __ID3D10InfoQueue_INTERFACE_DEFINED__
+#define __ID3D10InfoQueue_INTERFACE_DEFINED__
+
+/* interface ID3D10InfoQueue */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D10InfoQueue;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("1b940b17-2642-4d1f-ab1f-b99bad0c395f")
+ ID3D10InfoQueue : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetMessageCountLimit(
+ /* */
+ __in UINT64 MessageCountLimit) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearStoredMessages( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetMessage(
+ /* */
+ __in UINT64 MessageIndex,
+ /* */
+ __out_bcount_opt(*pMessageByteLength) D3D10_MESSAGE *pMessage,
+ /* */
+ __inout SIZE_T *pMessageByteLength) = 0;
+
+ virtual UINT64 STDMETHODCALLTYPE GetNumMessagesAllowedByStorageFilter( void) = 0;
+
+ virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDeniedByStorageFilter( void) = 0;
+
+ virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessages( void) = 0;
+
+ virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessagesAllowedByRetrievalFilter( void) = 0;
+
+ virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDiscardedByMessageCountLimit( void) = 0;
+
+ virtual UINT64 STDMETHODCALLTYPE GetMessageCountLimit( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddStorageFilterEntries(
+ /* */
+ __in D3D10_INFO_QUEUE_FILTER *pFilter) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetStorageFilter(
+ /* */
+ __out_bcount_opt(*pFilterByteLength) D3D10_INFO_QUEUE_FILTER *pFilter,
+ /* */
+ __inout SIZE_T *pFilterByteLength) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearStorageFilter( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PushEmptyStorageFilter( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PushCopyOfStorageFilter( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PushStorageFilter(
+ /* */
+ __in D3D10_INFO_QUEUE_FILTER *pFilter) = 0;
+
+ virtual void STDMETHODCALLTYPE PopStorageFilter( void) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetStorageFilterStackSize( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddRetrievalFilterEntries(
+ /* */
+ __in D3D10_INFO_QUEUE_FILTER *pFilter) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetRetrievalFilter(
+ /* */
+ __out_bcount_opt(*pFilterByteLength) D3D10_INFO_QUEUE_FILTER *pFilter,
+ /* */
+ __inout SIZE_T *pFilterByteLength) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearRetrievalFilter( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PushEmptyRetrievalFilter( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PushCopyOfRetrievalFilter( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE PushRetrievalFilter(
+ /* */
+ __in D3D10_INFO_QUEUE_FILTER *pFilter) = 0;
+
+ virtual void STDMETHODCALLTYPE PopRetrievalFilter( void) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetRetrievalFilterStackSize( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddMessage(
+ /* */
+ __in D3D10_MESSAGE_CATEGORY Category,
+ /* */
+ __in D3D10_MESSAGE_SEVERITY Severity,
+ /* */
+ __in D3D10_MESSAGE_ID ID,
+ /* */
+ __in LPCWSTR pDescription) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE AddApplicationMessage(
+ /* */
+ __in D3D10_MESSAGE_SEVERITY Severity,
+ /* */
+ __in LPCWSTR pDescription) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct ID3D10InfoQueueVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D10InfoQueue * This,
+ /* [in] */ REFIID riid,
+ /* [iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D10InfoQueue * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D10InfoQueue * This);
+
+ HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )(
+ ID3D10InfoQueue * This,
+ /* */
+ __in UINT64 MessageCountLimit);
+
+ void ( STDMETHODCALLTYPE *ClearStoredMessages )(
+ ID3D10InfoQueue * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetMessage )(
+ ID3D10InfoQueue * This,
+ /* */
+ __in UINT64 MessageIndex,
+ /* */
+ __out_bcount_opt(*pMessageByteLength) D3D10_MESSAGE *pMessage,
+ /* */
+ __inout SIZE_T *pMessageByteLength);
+
+ UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )(
+ ID3D10InfoQueue * This);
+
+ UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )(
+ ID3D10InfoQueue * This);
+
+ UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )(
+ ID3D10InfoQueue * This);
+
+ UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )(
+ ID3D10InfoQueue * This);
+
+ UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )(
+ ID3D10InfoQueue * This);
+
+ UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )(
+ ID3D10InfoQueue * This);
+
+ HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )(
+ ID3D10InfoQueue * This,
+ /* */
+ __in D3D10_INFO_QUEUE_FILTER *pFilter);
+
+ HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )(
+ ID3D10InfoQueue * This,
+ /* */
+ __out_bcount_opt(*pFilterByteLength) D3D10_INFO_QUEUE_FILTER *pFilter,
+ /* */
+ __inout SIZE_T *pFilterByteLength);
+
+ void ( STDMETHODCALLTYPE *ClearStorageFilter )(
+ ID3D10InfoQueue * This);
+
+ HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )(
+ ID3D10InfoQueue * This);
+
+ HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )(
+ ID3D10InfoQueue * This);
+
+ HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )(
+ ID3D10InfoQueue * This,
+ /* */
+ __in D3D10_INFO_QUEUE_FILTER *pFilter);
+
+ void ( STDMETHODCALLTYPE *PopStorageFilter )(
+ ID3D10InfoQueue * This);
+
+ UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )(
+ ID3D10InfoQueue * This);
+
+ HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )(
+ ID3D10InfoQueue * This,
+ /* */
+ __in D3D10_INFO_QUEUE_FILTER *pFilter);
+
+ HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )(
+ ID3D10InfoQueue * This,
+ /* */
+ __out_bcount_opt(*pFilterByteLength) D3D10_INFO_QUEUE_FILTER *pFilter,
+ /* */
+ __inout SIZE_T *pFilterByteLength);
+
+ void ( STDMETHODCALLTYPE *ClearRetrievalFilter )(
+ ID3D10InfoQueue * This);
+
+ HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )(
+ ID3D10InfoQueue * This);
+
+ HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )(
+ ID3D10InfoQueue * This);
+
+ HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )(
+ ID3D10InfoQueue * This,
+ /* */
+ __in D3D10_INFO_QUEUE_FILTER *pFilter);
+
+ void ( STDMETHODCALLTYPE *PopRetrievalFilter )(
+ ID3D10InfoQueue * This);
+
+ UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )(
+ ID3D10InfoQueue * This);
+
+ HRESULT ( STDMETHODCALLTYPE *AddMessage )(
+ ID3D10InfoQueue * This,
+ /* */
+ __in D3D10_MESSAGE_CATEGORY Category,
+ /* */
+ __in D3D10_MESSAGE_SEVERITY Severity,
+ /* */
+ __in D3D10_MESSAGE_ID ID,
+ /* */
+ __in LPCWSTR pDescription);
+
+ HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )(
+ ID3D10InfoQueue * This,
+ /* */
+ __in D3D10_MESSAGE_SEVERITY Severity,
+ /* */
+ __in LPCWSTR pDescription);
+
+ END_INTERFACE
+ } ID3D10InfoQueueVtbl;
+
+ interface ID3D10InfoQueue
+ {
+ CONST_VTBL struct ID3D10InfoQueueVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D10InfoQueue_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D10InfoQueue_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D10InfoQueue_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D10InfoQueue_SetMessageCountLimit(This,MessageCountLimit) \
+ ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) )
+
+#define ID3D10InfoQueue_ClearStoredMessages(This) \
+ ( (This)->lpVtbl -> ClearStoredMessages(This) )
+
+#define ID3D10InfoQueue_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \
+ ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) )
+
+#define ID3D10InfoQueue_GetNumMessagesAllowedByStorageFilter(This) \
+ ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) )
+
+#define ID3D10InfoQueue_GetNumMessagesDeniedByStorageFilter(This) \
+ ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) )
+
+#define ID3D10InfoQueue_GetNumStoredMessages(This) \
+ ( (This)->lpVtbl -> GetNumStoredMessages(This) )
+
+#define ID3D10InfoQueue_GetNumStoredMessagesAllowedByRetrievalFilter(This) \
+ ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) )
+
+#define ID3D10InfoQueue_GetNumMessagesDiscardedByMessageCountLimit(This) \
+ ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) )
+
+#define ID3D10InfoQueue_GetMessageCountLimit(This) \
+ ( (This)->lpVtbl -> GetMessageCountLimit(This) )
+
+#define ID3D10InfoQueue_AddStorageFilterEntries(This,pFilter) \
+ ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) )
+
+#define ID3D10InfoQueue_GetStorageFilter(This,pFilter,pFilterByteLength) \
+ ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) )
+
+#define ID3D10InfoQueue_ClearStorageFilter(This) \
+ ( (This)->lpVtbl -> ClearStorageFilter(This) )
+
+#define ID3D10InfoQueue_PushEmptyStorageFilter(This) \
+ ( (This)->lpVtbl -> PushEmptyStorageFilter(This) )
+
+#define ID3D10InfoQueue_PushCopyOfStorageFilter(This) \
+ ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) )
+
+#define ID3D10InfoQueue_PushStorageFilter(This,pFilter) \
+ ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) )
+
+#define ID3D10InfoQueue_PopStorageFilter(This) \
+ ( (This)->lpVtbl -> PopStorageFilter(This) )
+
+#define ID3D10InfoQueue_GetStorageFilterStackSize(This) \
+ ( (This)->lpVtbl -> GetStorageFilterStackSize(This) )
+
+#define ID3D10InfoQueue_AddRetrievalFilterEntries(This,pFilter) \
+ ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) )
+
+#define ID3D10InfoQueue_GetRetrievalFilter(This,pFilter,pFilterByteLength) \
+ ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) )
+
+#define ID3D10InfoQueue_ClearRetrievalFilter(This) \
+ ( (This)->lpVtbl -> ClearRetrievalFilter(This) )
+
+#define ID3D10InfoQueue_PushEmptyRetrievalFilter(This) \
+ ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) )
+
+#define ID3D10InfoQueue_PushCopyOfRetrievalFilter(This) \
+ ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) )
+
+#define ID3D10InfoQueue_PushRetrievalFilter(This,pFilter) \
+ ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) )
+
+#define ID3D10InfoQueue_PopRetrievalFilter(This) \
+ ( (This)->lpVtbl -> PopRetrievalFilter(This) )
+
+#define ID3D10InfoQueue_GetRetrievalFilterStackSize(This) \
+ ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) )
+
+#define ID3D10InfoQueue_AddMessage(This,Category,Severity,ID,pDescription) \
+ ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) )
+
+#define ID3D10InfoQueue_AddApplicationMessage(This,Severity,pDescription) \
+ ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D10InfoQueue_INTERFACE_DEFINED__ */
+
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/src/dep/include/DXSDK/include/d3d8.h b/src/dep/include/DXSDK/include/d3d8.h
new file mode 100644
index 0000000..ae40ee9
--- /dev/null
+++ b/src/dep/include/DXSDK/include/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
+
+#define COM_NO_WINDOWS_H
+#include
+
+#include
+
+#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_ UINT XScreenSpace,UINT YScreenSpace,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/src/dep/include/DXSDK/include/d3d8caps.h b/src/dep/include/DXSDK/include/d3d8caps.h
new file mode 100644
index 0000000..6a7dc11
--- /dev/null
+++ b/src/dep/include/DXSDK/include/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/src/dep/include/DXSDK/include/d3d8types.h b/src/dep/include/DXSDK/include/d3d8types.h
new file mode 100644
index 0000000..0303762
--- /dev/null
+++ b/src/dep/include/DXSDK/include/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
+
+#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<>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)<= 1200
+#pragma warning(pop)
+#else
+#pragma warning(default:4201)
+#endif
+
+#endif /* (DIRECT3D_VERSION >= 0x0800) */
+#endif /* _D3D8TYPES(P)_H_ */
+
diff --git a/src/dep/include/DXSDK/include/d3dcaps.h b/src/dep/include/DXSDK/include/d3dcaps.h
new file mode 100644
index 0000000..701bf9c
--- /dev/null
+++ b/src/dep/include/DXSDK/include/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/src/dep/include/DXSDK/include/d3drm.h b/src/dep/include/DXSDK/include/d3drm.h
new file mode 100644
index 0000000..95594b8
--- /dev/null
+++ b/src/dep/include/DXSDK/include/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/src/dep/include/DXSDK/include/d3drmdef.h b/src/dep/include/DXSDK/include/d3drmdef.h
new file mode 100644
index 0000000..c6477ca
--- /dev/null
+++ b/src/dep/include/DXSDK/include/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
+#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< /* 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/src/dep/include/DXSDK/include/d3drmwin.h b/src/dep/include/DXSDK/include/d3drmwin.h
new file mode 100644
index 0000000..a785319
--- /dev/null
+++ b/src/dep/include/DXSDK/include/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/src/dep/include/DXSDK/include/d3dtypes.h b/src/dep/include/DXSDK/include/d3dtypes.h
new file mode 100644
index 0000000..d1759dc
--- /dev/null
+++ b/src/dep/include/DXSDK/include/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
+
+#include
+#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/src/dep/include/DXSDK/include/d3dvec.inl b/src/dep/include/DXSDK/include/d3dvec.inl
new file mode 100644
index 0000000..b9d6db7
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3dvec.inl
@@ -0,0 +1,255 @@
+
+/******************************************************************
+ * *
+ * D3DVec.inl *
+ * *
+ * Float-valued 3D vector class for Direct3D. *
+ * *
+ * Copyright (c) Microsoft Corp. All rights reserved. *
+ * *
+ ******************************************************************/
+
+#include
+
+// =====================================
+// Constructors
+// =====================================
+
+inline
+_D3DVECTOR::_D3DVECTOR(D3DVALUE f)
+{
+ x = y = z = f;
+}
+
+inline
+_D3DVECTOR::_D3DVECTOR(D3DVALUE _x, D3DVALUE _y, D3DVALUE _z)
+{
+ x = _x; y = _y; z = _z;
+}
+
+inline
+_D3DVECTOR::_D3DVECTOR(const D3DVALUE f[3])
+{
+ x = f[0]; y = f[1]; z = f[2];
+}
+
+// =====================================
+// Access grants
+// =====================================
+
+inline const D3DVALUE&
+_D3DVECTOR::operator[](int i) const
+{
+ return (&x)[i];
+}
+
+inline D3DVALUE&
+_D3DVECTOR::operator[](int i)
+{
+ return (&x)[i];
+}
+
+
+// =====================================
+// Assignment operators
+// =====================================
+
+inline _D3DVECTOR&
+_D3DVECTOR::operator += (const _D3DVECTOR& v)
+{
+ x += v.x; y += v.y; z += v.z;
+ return *this;
+}
+
+inline _D3DVECTOR&
+_D3DVECTOR::operator -= (const _D3DVECTOR& v)
+{
+ x -= v.x; y -= v.y; z -= v.z;
+ return *this;
+}
+
+inline _D3DVECTOR&
+_D3DVECTOR::operator *= (const _D3DVECTOR& v)
+{
+ x *= v.x; y *= v.y; z *= v.z;
+ return *this;
+}
+
+inline _D3DVECTOR&
+_D3DVECTOR::operator /= (const _D3DVECTOR& v)
+{
+ x /= v.x; y /= v.y; z /= v.z;
+ return *this;
+}
+
+inline _D3DVECTOR&
+_D3DVECTOR::operator *= (D3DVALUE s)
+{
+ x *= s; y *= s; z *= s;
+ return *this;
+}
+
+inline _D3DVECTOR&
+_D3DVECTOR::operator /= (D3DVALUE s)
+{
+ x /= s; y /= s; z /= s;
+ return *this;
+}
+
+inline _D3DVECTOR
+operator + (const _D3DVECTOR& v)
+{
+ return v;
+}
+
+inline _D3DVECTOR
+operator - (const _D3DVECTOR& v)
+{
+ return _D3DVECTOR(-v.x, -v.y, -v.z);
+}
+
+inline _D3DVECTOR
+operator + (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
+{
+ return _D3DVECTOR(v1.x+v2.x, v1.y+v2.y, v1.z+v2.z);
+}
+
+inline _D3DVECTOR
+operator - (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
+{
+ return _D3DVECTOR(v1.x-v2.x, v1.y-v2.y, v1.z-v2.z);
+}
+
+inline _D3DVECTOR
+operator * (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
+{
+ return _D3DVECTOR(v1.x*v2.x, v1.y*v2.y, v1.z*v2.z);
+}
+
+inline _D3DVECTOR
+operator / (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
+{
+ return _D3DVECTOR(v1.x/v2.x, v1.y/v2.y, v1.z/v2.z);
+}
+
+inline int
+operator < (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
+{
+ return v1[0] < v2[0] && v1[1] < v2[1] && v1[2] < v2[2];
+}
+
+inline int
+operator <= (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
+{
+ return v1[0] <= v2[0] && v1[1] <= v2[1] && v1[2] <= v2[2];
+}
+
+inline _D3DVECTOR
+operator * (const _D3DVECTOR& v, D3DVALUE s)
+{
+ return _D3DVECTOR(s*v.x, s*v.y, s*v.z);
+}
+
+inline _D3DVECTOR
+operator * (D3DVALUE s, const _D3DVECTOR& v)
+{
+ return _D3DVECTOR(s*v.x, s*v.y, s*v.z);
+}
+
+inline _D3DVECTOR
+operator / (const _D3DVECTOR& v, D3DVALUE s)
+{
+ return _D3DVECTOR(v.x/s, v.y/s, v.z/s);
+}
+
+inline int
+operator == (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
+{
+ return v1.x==v2.x && v1.y==v2.y && v1.z == v2.z;
+}
+
+inline D3DVALUE
+Magnitude (const _D3DVECTOR& v)
+{
+ return (D3DVALUE) sqrt(SquareMagnitude(v));
+}
+
+inline D3DVALUE
+SquareMagnitude (const _D3DVECTOR& v)
+{
+ return v.x*v.x + v.y*v.y + v.z*v.z;
+}
+
+inline _D3DVECTOR
+Normalize (const _D3DVECTOR& v)
+{
+ return v / Magnitude(v);
+}
+
+inline D3DVALUE
+Min (const _D3DVECTOR& v)
+{
+ D3DVALUE ret = v.x;
+ if (v.y < ret) ret = v.y;
+ if (v.z < ret) ret = v.z;
+ return ret;
+}
+
+inline D3DVALUE
+Max (const _D3DVECTOR& v)
+{
+ D3DVALUE ret = v.x;
+ if (ret < v.y) ret = v.y;
+ if (ret < v.z) ret = v.z;
+ return ret;
+}
+
+inline _D3DVECTOR
+Minimize (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
+{
+ return _D3DVECTOR( v1[0] < v2[0] ? v1[0] : v2[0],
+ v1[1] < v2[1] ? v1[1] : v2[1],
+ v1[2] < v2[2] ? v1[2] : v2[2]);
+}
+
+inline _D3DVECTOR
+Maximize (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
+{
+ return _D3DVECTOR( v1[0] > v2[0] ? v1[0] : v2[0],
+ v1[1] > v2[1] ? v1[1] : v2[1],
+ v1[2] > v2[2] ? v1[2] : v2[2]);
+}
+
+inline D3DVALUE
+DotProduct (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
+{
+ return v1.x*v2.x + v1.y * v2.y + v1.z*v2.z;
+}
+
+inline _D3DVECTOR
+CrossProduct (const _D3DVECTOR& v1, const _D3DVECTOR& v2)
+{
+ _D3DVECTOR result;
+
+ result[0] = v1[1] * v2[2] - v1[2] * v2[1];
+ result[1] = v1[2] * v2[0] - v1[0] * v2[2];
+ result[2] = v1[0] * v2[1] - v1[1] * v2[0];
+
+ return result;
+}
+
+inline _D3DMATRIX
+operator* (const _D3DMATRIX& a, const _D3DMATRIX& b)
+{
+ _D3DMATRIX ret;
+ for (int i=0; i<4; i++) {
+ for (int j=0; j<4; j++) {
+ ret(i, j) = 0.0f;
+ for (int k=0; k<4; k++) {
+ ret(i, j) += a(i, k) * b(k, j);
+ }
+ }
+ }
+ return ret;
+}
+
diff --git a/src/dep/include/DXSDK/include/d3dx.h b/src/dep/include/DXSDK/include/d3dx.h
new file mode 100644
index 0000000..ac5cd2f
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3dx.h
@@ -0,0 +1,26 @@
+///////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dx.h
+// Content: D3DX utility library
+//
+///////////////////////////////////////////////////////////////////////////
+
+#ifndef __D3DX_H__
+#define __D3DX_H__
+
+#ifndef D3DXINLINE
+#ifdef __cplusplus
+#define D3DXINLINE inline
+#else
+#define D3DXINLINE _inline
+#endif
+#endif
+
+#include "d3dxcore.h"
+#include "d3dxmath.h"
+#include "d3dxshapes.h"
+#include "d3dxsprite.h"
+
+#endif //__D3DX_H__
diff --git a/src/dep/include/DXSDK/include/d3dx10async.h b/src/dep/include/DXSDK/include/d3dx10async.h
new file mode 100644
index 0000000..fa754f0
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3dx10async.h
@@ -0,0 +1,280 @@
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//
+// File: D3DX10Effect.h
+// Content: D3DX10 Effect / Shader loaders
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef __D3DX10EFFECT_H__
+#define __D3DX10EFFECT_H__
+
+#include "d3dx10.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+
+//----------------------------------------------------------------------------
+// D3DX10CompileShader:
+// ------------------
+// Compiles a shader.
+//
+// Parameters:
+// pSrcFile
+// Source file name.
+// hSrcModule
+// Module handle. if NULL, current module will be used.
+// pSrcResource
+// Resource name in module.
+// pSrcData
+// Pointer to source code.
+// SrcDataLen
+// Size of source code, in bytes.
+// pDefines
+// Optional NULL-terminated array of preprocessor macro definitions.
+// pInclude
+// Optional interface pointer to use for handling #include directives.
+// If this parameter is NULL, #includes will be honored when compiling
+// from file, and will error when compiling from resource or memory.
+// pFunctionName
+// Name of the entrypoint function where execution should begin.
+// pProfile
+// Instruction set to be used when generating code. Currently supported
+// profiles are "vs_1_1", "vs_2_0", "vs_2_a", "vs_2_sw", "ps_1_1",
+// "ps_1_2", "ps_1_3", "ps_1_4", "ps_2_0", "ps_2_a", "ps_2_sw", "tx_1_0"
+// Flags
+// See D3D10_SHADER_xxx flags.
+// ppShader
+// Returns a buffer containing the created shader. This buffer contains
+// the compiled shader code, as well as any embedded debug and symbol
+// table info. (See D3D10GetShaderConstantTable)
+// ppErrorMsgs
+// Returns a buffer containing a listing of errors and warnings that were
+// encountered during the compile. If you are running in a debugger,
+// these are the same messages you will see in your debug output.
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI D3DX10CompileShaderFromFileA(LPCSTR pSrcFile,CONST D3D10_SHADER_MACRO* pDefines, LPD3D10INCLUDE pInclude,
+ LPCSTR pFunctionName, LPCSTR pProfile, UINT Flags, ID3DX10ThreadPump* pPump, ID3D10Blob** ppShader, ID3D10Blob** ppErrorMsgs);
+
+HRESULT WINAPI D3DX10CompileShaderFromFileW(LPCWSTR pSrcFile, CONST D3D10_SHADER_MACRO* pDefines, LPD3D10INCLUDE pInclude,
+ LPCSTR pFunctionName, LPCSTR pProfile, UINT Flags, ID3DX10ThreadPump* pPump, ID3D10Blob** ppShader, ID3D10Blob** ppErrorMsgs);
+
+#ifdef UNICODE
+#define D3DX10CompileShaderFromFile D3DX10CompileShaderFromFileW
+#else
+#define D3DX10CompileShaderFromFile D3DX10CompileShaderFromFileA
+#endif
+
+HRESULT WINAPI D3DX10CompileShaderFromResourceA(HMODULE hSrcModule, LPCSTR pSrcResource, LPCSTR pSrcFileName, CONST D3D10_SHADER_MACRO* pDefines,
+ LPD3D10INCLUDE pInclude, LPCSTR pFunctionName, LPCSTR pProfile, UINT Flags, ID3DX10ThreadPump* pPump, ID3D10Blob** ppShader, ID3D10Blob** ppErrorMsgs);
+
+HRESULT WINAPI D3DX10CompileShaderFromResourceW(HMODULE hSrcModule, LPCWSTR pSrcResource, LPCWSTR pSrcFileName, CONST D3D10_SHADER_MACRO* pDefines,
+ LPD3D10INCLUDE pInclude, LPCSTR pFunctionName, LPCSTR pProfile, UINT Flags, ID3DX10ThreadPump* pPump, ID3D10Blob** ppShader, ID3D10Blob** ppErrorMsgs);
+
+#ifdef UNICODE
+#define D3DX10CompileShaderFromResource D3DX10CompileShaderFromResourceW
+#else
+#define D3DX10CompileShaderFromResource D3DX10CompileShaderFromResourceA
+#endif
+
+HRESULT WINAPI D3DX10CompileShaderFromMemory(LPCSTR pSrcData, SIZE_T SrcDataLen, LPCSTR pFileName, CONST D3D10_SHADER_MACRO* pDefines, LPD3D10INCLUDE pInclude,
+ LPCSTR pFunctionName, LPCSTR pProfile, UINT Flags, ID3DX10ThreadPump* pPump, ID3D10Blob** ppShader, ID3D10Blob** ppErrorMsgs);
+
+//----------------------------------------------------------------------------
+// D3D10CreateEffectFromXXXX:
+// --------------------------
+// Creates an effect from a binary effect or file
+//
+// Parameters:
+//
+// [in]
+//
+// TODO: Unicode support
+// TODO: Support for binary (and not just ASCII)
+//
+// pFileName
+// Name of the ASCII (uncompiled) or binary (compiled) Effect file to load
+//
+// hModule
+// Handle to the module containing the resource to compile from
+// pResourceName
+// Name of the resource within hModule to compile from
+//
+// pData
+// Blob of effect data, either ASCII (uncompiled) or binary (compiled)
+// DataLength
+// Length of the data blob
+//
+// pDefines
+// Optional NULL-terminated array of preprocessor macro definitions.
+// pInclude
+// Optional interface pointer to use for handling #include directives.
+// If this parameter is NULL, #includes will be honored when compiling
+// from file, and will error when compiling from resource or memory.
+// HLSLFlags
+// Compilation flags pertaining to shaders and data types, honored by
+// the HLSL compiler
+// FXFlags
+// Compilation flags pertaining to Effect compilation, honored
+// by the Effect compiler
+// pDevice
+// Pointer to the D3D10 device on which to create Effect resources
+// pEffectPool
+// Pointer to an Effect pool to share variables with or NULL
+//
+// [out]
+//
+// ppEffect
+// Address of the newly created Effect interface
+// ppEffectPool
+// Address of the newly created Effect pool interface
+// ppErrors
+// If non-NULL, address of a buffer with error messages that occurred
+// during parsing or compilation
+//
+//----------------------------------------------------------------------------
+
+
+HRESULT WINAPI D3DX10CompileEffectFromFileA(LPCSTR pFileName, CONST D3D10_SHADER_MACRO *pDefines,
+ ID3D10Include *pInclude, UINT HLSLFlags, UINT FXFlags, ID3DX10ThreadPump* pPump,
+ ID3D10Blob **ppCompiledEffect, ID3D10Blob **ppErrors);
+
+HRESULT WINAPI D3DX10CompileEffectFromFileW(LPCWSTR pFileName, CONST D3D10_SHADER_MACRO *pDefines,
+ ID3D10Include *pInclude, UINT HLSLFlags, UINT FXFlags, ID3DX10ThreadPump* pPump,
+ ID3D10Blob **ppCompiledEffect, ID3D10Blob **ppErrors);
+
+HRESULT WINAPI D3DX10CompileEffectFromMemory(LPCVOID pData, SIZE_T DataLength, LPCSTR pSrcFileName, CONST D3D10_SHADER_MACRO *pDefines,
+ ID3D10Include *pInclude, UINT HLSLFlags, UINT FXFlags,
+ ID3DX10ThreadPump* pPump, ID3D10Blob **ppCompiledEffect, ID3D10Blob **ppErrors);
+
+HRESULT WINAPI D3DX10CompileEffectFromResourceA(HMODULE hModule, LPCSTR pResourceName, LPCSTR pSrcFileName, CONST D3D10_SHADER_MACRO *pDefines,
+ ID3D10Include *pInclude, UINT HLSLFlags, UINT FXFlags,
+ ID3DX10ThreadPump* pPump, ID3D10Blob **ppCompiledEffect, ID3D10Blob **ppErrors);
+
+HRESULT WINAPI D3DX10CompileEffectFromResourceW(HMODULE hModule, LPCWSTR pResourceName, LPCWSTR pSrcFileName, CONST D3D10_SHADER_MACRO *pDefines,
+ ID3D10Include *pInclude, UINT HLSLFlags, UINT FXFlags,
+ ID3DX10ThreadPump* pPump, ID3D10Blob **ppCompiledEffect, ID3D10Blob **ppErrors);
+
+#ifdef UNICODE
+#define D3DX10CompileEffectFromFile D3DX10CompileEffectFromFileW
+#define D3DX10CompileEffectFromResource D3DX10CompileEffectFromResourceW
+#else
+#define D3DX10CompileEffectFromFile D3DX10CompileEffectFromFileA
+#define D3DX10CompileEffectFromResource D3DX10CompileEffectFromResourceA
+#endif
+
+HRESULT WINAPI D3DX10CreateEffectFromFileA(LPCSTR pFileName, CONST D3D10_SHADER_MACRO *pDefines,
+ ID3D10Include *pInclude, UINT HLSLFlags, UINT FXFlags, ID3D10Device *pDevice,
+ ID3D10EffectPool *pEffectPool, ID3DX10ThreadPump* pPump, ID3D10Effect **ppEffect, ID3D10Blob **ppErrors);
+
+HRESULT WINAPI D3DX10CreateEffectFromFileW(LPCWSTR pFileName, CONST D3D10_SHADER_MACRO *pDefines,
+ ID3D10Include *pInclude, UINT HLSLFlags, UINT FXFlags, ID3D10Device *pDevice,
+ ID3D10EffectPool *pEffectPool, ID3DX10ThreadPump* pPump, ID3D10Effect **ppEffect, ID3D10Blob **ppErrors);
+
+HRESULT WINAPI D3DX10CreateEffectFromMemory(LPCVOID pData, SIZE_T DataLength, LPCSTR pSrcFileName, CONST D3D10_SHADER_MACRO *pDefines,
+ ID3D10Include *pInclude, UINT HLSLFlags, UINT FXFlags, ID3D10Device *pDevice,
+ ID3D10EffectPool *pEffectPool, ID3DX10ThreadPump* pPump, ID3D10Effect **ppEffect, ID3D10Blob **ppErrors);
+
+HRESULT WINAPI D3DX10CreateEffectFromResourceA(HMODULE hModule, LPCSTR pResourceName, LPCSTR pSrcFileName, CONST D3D10_SHADER_MACRO *pDefines,
+ ID3D10Include *pInclude, UINT HLSLFlags, UINT FXFlags, ID3D10Device *pDevice,
+ ID3D10EffectPool *pEffectPool, ID3DX10ThreadPump* pPump, ID3D10Effect **ppEffect, ID3D10Blob **ppErrors);
+
+HRESULT WINAPI D3DX10CreateEffectFromResourceW(HMODULE hModule, LPCWSTR pResourceName, LPCWSTR pSrcFileName, CONST D3D10_SHADER_MACRO *pDefines,
+ ID3D10Include *pInclude, UINT HLSLFlags, UINT FXFlags, ID3D10Device *pDevice,
+ ID3D10EffectPool *pEffectPool, ID3DX10ThreadPump* pPump, ID3D10Effect **ppEffect, ID3D10Blob **ppErrors);
+
+
+#ifdef UNICODE
+#define D3DX10CreateEffectFromFile D3DX10CreateEffectFromFileW
+#define D3DX10CreateEffectFromResource D3DX10CreateEffectFromResourceW
+#else
+#define D3DX10CreateEffectFromFile D3DX10CreateEffectFromFileA
+#define D3DX10CreateEffectFromResource D3DX10CreateEffectFromResourceA
+#endif
+
+HRESULT WINAPI D3DX10CreateEffectPoolFromFileA(LPCSTR pFileName, CONST D3D10_SHADER_MACRO *pDefines,
+ ID3D10Include *pInclude, UINT HLSLFlags, UINT FXFlags, ID3D10Device *pDevice, ID3DX10ThreadPump* pPump,
+ ID3D10EffectPool **ppEffectPool, ID3D10Blob **ppErrors);
+
+HRESULT WINAPI D3DX10CreateEffectPoolFromFileW(LPCWSTR pFileName, CONST D3D10_SHADER_MACRO *pDefines,
+ ID3D10Include *pInclude, UINT HLSLFlags, UINT FXFlags, ID3D10Device *pDevice, ID3DX10ThreadPump* pPump,
+ ID3D10EffectPool **ppEffectPool, ID3D10Blob **ppErrors);
+
+HRESULT WINAPI D3DX10CreateEffectPoolFromMemory(LPCVOID pData, SIZE_T DataLength, LPCSTR pSrcFileName, CONST D3D10_SHADER_MACRO *pDefines,
+ ID3D10Include *pInclude, UINT HLSLFlags, UINT FXFlags, ID3D10Device *pDevice,
+ ID3DX10ThreadPump* pPump, ID3D10EffectPool **ppEffectPool, ID3D10Blob **ppErrors);
+
+HRESULT WINAPI D3DX10CreateEffectPoolFromResourceA(HMODULE hModule, LPCSTR pResourceName, LPCSTR pSrcFileName, CONST D3D10_SHADER_MACRO *pDefines,
+ ID3D10Include *pInclude, UINT HLSLFlags, UINT FXFlags, ID3D10Device *pDevice,
+ ID3DX10ThreadPump* pPump, ID3D10EffectPool **ppEffectPool, ID3D10Blob **ppErrors);
+
+HRESULT WINAPI D3DX10CreateEffectPoolFromResourceW(HMODULE hModule, LPCWSTR pResourceName, LPCWSTR pSrcFileName, CONST D3D10_SHADER_MACRO *pDefines,
+ ID3D10Include *pInclude, UINT HLSLFlags, UINT FXFlags, ID3D10Device *pDevice,
+ ID3DX10ThreadPump* pPump, ID3D10EffectPool **ppEffectPool, ID3D10Blob **ppErrors);
+
+#ifdef UNICODE
+#define D3DX10CreateEffectPoolFromFile D3DX10CreateEffectPoolFromFileW
+#define D3DX10CreateEffectPoolFromResource D3DX10CreateEffectPoolFromResourceW
+#else
+#define D3DX10CreateEffectPoolFromFile D3DX10CreateEffectPoolFromFileA
+#define D3DX10CreateEffectPoolFromResource D3DX10CreateEffectPoolFromResourceA
+#endif
+
+HRESULT WINAPI D3DX10PreprocessShaderFromFileA(LPCSTR pFileName, CONST D3D10_SHADER_MACRO* pDefines,
+ LPD3D10INCLUDE pInclude, ID3DX10ThreadPump *pPump, ID3D10Blob** ppShaderText, ID3D10Blob** ppErrorMsgs);
+
+HRESULT WINAPI D3DX10PreprocessShaderFromFileW(LPCWSTR pFileName, CONST D3D10_SHADER_MACRO* pDefines,
+ LPD3D10INCLUDE pInclude, ID3DX10ThreadPump *pPump, ID3D10Blob** ppShaderText, ID3D10Blob** ppErrorMsgs);
+
+HRESULT WINAPI D3DX10PreprocessShaderFromMemory(LPCSTR pSrcData, SIZE_T SrcDataSize, LPCSTR pFileName, CONST D3D10_SHADER_MACRO* pDefines,
+ LPD3D10INCLUDE pInclude, ID3DX10ThreadPump *pPump, ID3D10Blob** ppShaderText, ID3D10Blob** ppErrorMsgs);
+
+HRESULT WINAPI D3DX10PreprocessShaderFromResourceA(HMODULE hModule, LPCSTR pResourceName, LPCSTR pSrcFileName, CONST D3D10_SHADER_MACRO* pDefines,
+ LPD3D10INCLUDE pInclude, ID3DX10ThreadPump *pPump, ID3D10Blob** ppShaderText, ID3D10Blob** ppErrorMsgs);
+
+HRESULT WINAPI D3DX10PreprocessShaderFromResourceW(HMODULE hModule, LPCWSTR pResourceName, LPCWSTR pSrcFileName, CONST D3D10_SHADER_MACRO* pDefines,
+ LPD3D10INCLUDE pInclude, ID3DX10ThreadPump *pPump, ID3D10Blob** ppShaderText, ID3D10Blob** ppErrorMsgs);
+
+#ifdef UNICODE
+#define D3DX10PreprocessShaderFromFile D3DX10PreprocessShaderFromFileW
+#define D3DX10PreprocessShaderFromResource D3DX10PreprocessShaderFromResourceW
+#else
+#define D3DX10PreprocessShaderFromFile D3DX10PreprocessShaderFromFileA
+#define D3DX10PreprocessShaderFromResource D3DX10PreprocessShaderFromResourceA
+#endif
+
+//----------------------------------------------------------------------------
+// Async processors
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI D3DX10CreateAsyncShaderCompilerProcessor(LPCSTR pFileName, CONST D3D10_SHADER_MACRO* pDefines, LPD3D10INCLUDE pInclude,
+ LPCSTR pFunctionName, LPCSTR pProfile, UINT Flags,
+ ID3D10Blob **ppCompiledShader, ID3D10Blob **ppErrorBuffer, ID3DX10DataProcessor **ppProcessor);
+
+HRESULT WINAPI D3DX10CreateAsyncEffectCompilerProcessor(LPCSTR pFileName, CONST D3D10_SHADER_MACRO* pDefines, LPD3D10INCLUDE pInclude,
+ UINT Flags, UINT FXFlags,
+ ID3D10Blob **ppCompiledShader, ID3D10Blob **ppErrorBuffer, ID3DX10DataProcessor **ppProcessor);
+
+HRESULT WINAPI D3DX10CreateAsyncEffectCreateProcessor(LPCSTR pFileName, CONST D3D10_SHADER_MACRO* pDefines, LPD3D10INCLUDE pInclude,
+ UINT Flags, UINT FXFlags, ID3D10Device *pDevice,
+ ID3D10EffectPool *pPool, ID3D10Blob **ppErrorBuffer, ID3DX10DataProcessor **ppProcessor);
+
+HRESULT WINAPI D3DX10CreateAsyncEffectPoolCreateProcessor(LPCSTR pFileName, CONST D3D10_SHADER_MACRO* pDefines, LPD3D10INCLUDE pInclude,
+ UINT Flags, UINT FXFlags, ID3D10Device *pDevice,
+ ID3D10Blob **ppErrorBuffer, ID3DX10DataProcessor **ppProcessor);
+
+HRESULT WINAPI D3DX10CreateAsyncShaderPreprocessProcessor(LPCSTR pFileName, CONST D3D10_SHADER_MACRO* pDefines, LPD3D10INCLUDE pInclude,
+ ID3D10Blob** ppShaderText, ID3D10Blob **ppErrorBuffer, ID3DX10DataProcessor **ppProcessor);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+#endif //__D3D10EFFECT_H__
+
+
diff --git a/src/dep/include/DXSDK/include/d3dx8.h b/src/dep/include/DXSDK/include/d3dx8.h
new file mode 100644
index 0000000..89f602d
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3dx8.h
@@ -0,0 +1,45 @@
+///////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dx8.h
+// Content: D3DX utility library
+//
+///////////////////////////////////////////////////////////////////////////
+
+#ifndef __D3DX8_H__
+#define __D3DX8_H__
+
+#include "d3d8.h"
+#include
+
+#ifndef D3DXINLINE
+#ifdef _MSC_VER
+ #if (_MSC_VER >= 1200)
+ #define D3DXINLINE __forceinline
+ #else
+ #define D3DXINLINE __inline
+ #endif
+#else
+ #ifdef __cplusplus
+ #define D3DXINLINE inline
+ #else
+ #define D3DXINLINE
+ #endif
+#endif
+#endif
+
+
+#define D3DX_DEFAULT ULONG_MAX
+#define D3DX_DEFAULT_FLOAT FLT_MAX
+
+#include "d3dx8math.h"
+#include "d3dx8core.h"
+#include "d3dx8tex.h"
+#include "d3dx8mesh.h"
+#include "d3dx8shape.h"
+#include "d3dx8effect.h"
+
+
+#endif //__D3DX8_H__
+
diff --git a/src/dep/include/DXSDK/include/d3dx8core.h b/src/dep/include/DXSDK/include/d3dx8core.h
new file mode 100644
index 0000000..7db338f
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3dx8core.h
@@ -0,0 +1,563 @@
+///////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dx8core.h
+// Content: D3DX core types and functions
+//
+///////////////////////////////////////////////////////////////////////////
+
+#include "d3dx8.h"
+
+#ifndef __D3DX8CORE_H__
+#define __D3DX8CORE_H__
+
+
+
+///////////////////////////////////////////////////////////////////////////
+// ID3DXBuffer:
+// ------------
+// The buffer object is used by D3DX to return arbitrary size data.
+//
+// GetBufferPointer -
+// Returns a pointer to the beginning of the buffer.
+//
+// GetBufferSize -
+// Returns the size of the buffer, in bytes.
+///////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3DXBuffer ID3DXBuffer;
+typedef interface ID3DXBuffer *LPD3DXBUFFER;
+
+// {932E6A7E-C68E-45dd-A7BF-53D19C86DB1F}
+DEFINE_GUID(IID_ID3DXBuffer,
+0x932e6a7e, 0xc68e, 0x45dd, 0xa7, 0xbf, 0x53, 0xd1, 0x9c, 0x86, 0xdb, 0x1f);
+
+#undef INTERFACE
+#define INTERFACE ID3DXBuffer
+
+DECLARE_INTERFACE_(ID3DXBuffer, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ // ID3DXBuffer
+ STDMETHOD_(LPVOID, GetBufferPointer)(THIS) PURE;
+ STDMETHOD_(DWORD, GetBufferSize)(THIS) PURE;
+};
+
+
+
+///////////////////////////////////////////////////////////////////////////
+// ID3DXFont:
+// ----------
+// Font objects contain the textures and resources needed to render
+// a specific font on a specific device.
+//
+// Begin -
+// Prepartes device for drawing text. This is optional.. if DrawText
+// is called outside of Begin/End, it will call Begin and End for you.
+//
+// DrawText -
+// Draws formatted text on a D3D device. Some parameters are
+// surprisingly similar to those of GDI's DrawText function. See GDI
+// documentation for a detailed description of these parameters.
+//
+// End -
+// Restores device state to how it was when Begin was called.
+//
+// OnLostDevice, OnResetDevice -
+// Call OnLostDevice() on this object before calling Reset() on the
+// device, so that this object can release any stateblocks and video
+// memory resources. After Reset(), the call OnResetDevice().
+//
+///////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3DXFont ID3DXFont;
+typedef interface ID3DXFont *LPD3DXFONT;
+
+
+// {89FAD6A5-024D-49af-8FE7-F51123B85E25}
+DEFINE_GUID( IID_ID3DXFont,
+0x89fad6a5, 0x24d, 0x49af, 0x8f, 0xe7, 0xf5, 0x11, 0x23, 0xb8, 0x5e, 0x25);
+
+
+#undef INTERFACE
+#define INTERFACE ID3DXFont
+
+DECLARE_INTERFACE_(ID3DXFont, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ // ID3DXFont
+ STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
+ STDMETHOD(GetLogFont)(THIS_ LOGFONT* pLogFont) PURE;
+
+ STDMETHOD(Begin)(THIS) PURE;
+ STDMETHOD_(INT, DrawTextA)(THIS_ LPCSTR pString, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color) PURE;
+ STDMETHOD_(INT, DrawTextW)(THIS_ LPCWSTR pString, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color) PURE;
+ STDMETHOD(End)(THIS) PURE;
+
+ STDMETHOD(OnLostDevice)(THIS) PURE;
+ STDMETHOD(OnResetDevice)(THIS) PURE;
+};
+
+#ifndef DrawText
+#ifdef UNICODE
+#define DrawText DrawTextW
+#else
+#define DrawText DrawTextA
+#endif
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+HRESULT WINAPI
+ D3DXCreateFont(
+ LPDIRECT3DDEVICE8 pDevice,
+ HFONT hFont,
+ LPD3DXFONT* ppFont);
+
+
+HRESULT WINAPI
+ D3DXCreateFontIndirect(
+ LPDIRECT3DDEVICE8 pDevice,
+ CONST LOGFONT* pLogFont,
+ LPD3DXFONT* ppFont);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+
+
+
+///////////////////////////////////////////////////////////////////////////
+// ID3DXSprite:
+// ------------
+// This object intends to provide an easy way to drawing sprites using D3D.
+//
+// Begin -
+// Prepares device for drawing sprites
+//
+// Draw, DrawAffine, DrawTransform -
+// Draws a sprite in screen-space. Before transformation, the sprite is
+// the size of SrcRect, with its top-left corner at the origin (0,0).
+// The color and alpha channels are modulated by Color.
+//
+// End -
+// Restores device state to how it was when Begin was called.
+//
+// OnLostDevice, OnResetDevice -
+// Call OnLostDevice() on this object before calling Reset() on the
+// device, so that this object can release any stateblocks and video
+// memory resources. After Reset(), the call OnResetDevice().
+///////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3DXSprite ID3DXSprite;
+typedef interface ID3DXSprite *LPD3DXSPRITE;
+
+
+// {13D69D15-F9B0-4e0f-B39E-C91EB33F6CE7}
+DEFINE_GUID( IID_ID3DXSprite,
+0x13d69d15, 0xf9b0, 0x4e0f, 0xb3, 0x9e, 0xc9, 0x1e, 0xb3, 0x3f, 0x6c, 0xe7);
+
+
+#undef INTERFACE
+#define INTERFACE ID3DXSprite
+
+DECLARE_INTERFACE_(ID3DXSprite, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ // ID3DXSprite
+ STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
+
+ STDMETHOD(Begin)(THIS) PURE;
+
+ STDMETHOD(Draw)(THIS_ LPDIRECT3DTEXTURE8 pSrcTexture,
+ CONST RECT* pSrcRect, CONST D3DXVECTOR2* pScaling,
+ CONST D3DXVECTOR2* pRotationCenter, FLOAT Rotation,
+ CONST D3DXVECTOR2* pTranslation, D3DCOLOR Color) PURE;
+
+ STDMETHOD(DrawTransform)(THIS_ LPDIRECT3DTEXTURE8 pSrcTexture,
+ CONST RECT* pSrcRect, CONST D3DXMATRIX* pTransform,
+ D3DCOLOR Color) PURE;
+
+ STDMETHOD(End)(THIS) PURE;
+
+ STDMETHOD(OnLostDevice)(THIS) PURE;
+ STDMETHOD(OnResetDevice)(THIS) PURE;
+};
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+
+HRESULT WINAPI
+ D3DXCreateSprite(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPD3DXSPRITE* ppSprite);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+
+
+
+///////////////////////////////////////////////////////////////////////////
+// ID3DXRenderToSurface:
+// ---------------------
+// This object abstracts rendering to surfaces. These surfaces do not
+// necessarily need to be render targets. If they are not, a compatible
+// render target is used, and the result copied into surface at end scene.
+//
+// BeginScene, EndScene -
+// Call BeginScene() and EndScene() at the beginning and ending of your
+// scene. These calls will setup and restore render targets, viewports,
+// etc..
+//
+// OnLostDevice, OnResetDevice -
+// Call OnLostDevice() on this object before calling Reset() on the
+// device, so that this object can release any stateblocks and video
+// memory resources. After Reset(), the call OnResetDevice().
+///////////////////////////////////////////////////////////////////////////
+
+typedef struct _D3DXRTS_DESC
+{
+ UINT Width;
+ UINT Height;
+ D3DFORMAT Format;
+ BOOL DepthStencil;
+ D3DFORMAT DepthStencilFormat;
+
+} D3DXRTS_DESC;
+
+
+typedef interface ID3DXRenderToSurface ID3DXRenderToSurface;
+typedef interface ID3DXRenderToSurface *LPD3DXRENDERTOSURFACE;
+
+
+// {82DF5B90-E34E-496e-AC1C-62117A6A5913}
+DEFINE_GUID( IID_ID3DXRenderToSurface,
+0x82df5b90, 0xe34e, 0x496e, 0xac, 0x1c, 0x62, 0x11, 0x7a, 0x6a, 0x59, 0x13);
+
+
+#undef INTERFACE
+#define INTERFACE ID3DXRenderToSurface
+
+DECLARE_INTERFACE_(ID3DXRenderToSurface, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ // ID3DXRenderToSurface
+ STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3DXRTS_DESC* pDesc) PURE;
+
+ STDMETHOD(BeginScene)(THIS_ LPDIRECT3DSURFACE8 pSurface, CONST D3DVIEWPORT8* pViewport) PURE;
+ STDMETHOD(EndScene)(THIS) PURE;
+
+ STDMETHOD(OnLostDevice)(THIS) PURE;
+ STDMETHOD(OnResetDevice)(THIS) PURE;
+};
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+HRESULT WINAPI
+ D3DXCreateRenderToSurface(
+ LPDIRECT3DDEVICE8 pDevice,
+ UINT Width,
+ UINT Height,
+ D3DFORMAT Format,
+ BOOL DepthStencil,
+ D3DFORMAT DepthStencilFormat,
+ LPD3DXRENDERTOSURFACE* ppRenderToSurface);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+
+
+///////////////////////////////////////////////////////////////////////////
+// ID3DXRenderToEnvMap:
+// --------------------
+// This object abstracts rendering to environment maps. These surfaces
+// do not necessarily need to be render targets. If they are not, a
+// compatible render target is used, and the result copied into the
+// environment map at end scene.
+//
+// BeginCube, BeginSphere, BeginHemisphere, BeginParabolic -
+// This function initiates the rendering of the environment map. As
+// parameters, you pass the textures in which will get filled in with
+// the resulting environment map.
+//
+// Face -
+// Call this function to initiate the drawing of each face. For each
+// environment map, you will call this six times.. once for each face
+// in D3DCUBEMAP_FACES.
+//
+// End -
+// This will restore all render targets, and if needed compose all the
+// rendered faces into the environment map surfaces.
+//
+// OnLostDevice, OnResetDevice -
+// Call OnLostDevice() on this object before calling Reset() on the
+// device, so that this object can release any stateblocks and video
+// memory resources. After Reset(), the call OnResetDevice().
+///////////////////////////////////////////////////////////////////////////
+
+typedef struct _D3DXRTE_DESC
+{
+ UINT Size;
+ D3DFORMAT Format;
+ BOOL DepthStencil;
+ D3DFORMAT DepthStencilFormat;
+} D3DXRTE_DESC;
+
+
+typedef interface ID3DXRenderToEnvMap ID3DXRenderToEnvMap;
+typedef interface ID3DXRenderToEnvMap *LPD3DXRenderToEnvMap;
+
+// {4E42C623-9451-44b7-8C86-ABCCDE5D52C8}
+DEFINE_GUID( IID_ID3DXRenderToEnvMap,
+0x4e42c623, 0x9451, 0x44b7, 0x8c, 0x86, 0xab, 0xcc, 0xde, 0x5d, 0x52, 0xc8);
+
+
+#undef INTERFACE
+#define INTERFACE ID3DXRenderToEnvMap
+
+DECLARE_INTERFACE_(ID3DXRenderToEnvMap, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ // ID3DXRenderToEnvMap
+ STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3DXRTE_DESC* pDesc) PURE;
+
+ STDMETHOD(BeginCube)(THIS_
+ LPDIRECT3DCUBETEXTURE8 pCubeTex) PURE;
+
+ STDMETHOD(BeginSphere)(THIS_
+ LPDIRECT3DTEXTURE8 pTex) PURE;
+
+ STDMETHOD(BeginHemisphere)(THIS_
+ LPDIRECT3DTEXTURE8 pTexZPos,
+ LPDIRECT3DTEXTURE8 pTexZNeg) PURE;
+
+ STDMETHOD(BeginParabolic)(THIS_
+ LPDIRECT3DTEXTURE8 pTexZPos,
+ LPDIRECT3DTEXTURE8 pTexZNeg) PURE;
+
+ STDMETHOD(Face)(THIS_ D3DCUBEMAP_FACES Face) PURE;
+ STDMETHOD(End)(THIS) PURE;
+
+ STDMETHOD(OnLostDevice)(THIS) PURE;
+ STDMETHOD(OnResetDevice)(THIS) PURE;
+};
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+HRESULT WINAPI
+ D3DXCreateRenderToEnvMap(
+ LPDIRECT3DDEVICE8 pDevice,
+ UINT Size,
+ D3DFORMAT Format,
+ BOOL DepthStencil,
+ D3DFORMAT DepthStencilFormat,
+ LPD3DXRenderToEnvMap* ppRenderToEnvMap);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+
+
+///////////////////////////////////////////////////////////////////////////
+// Shader assemblers:
+///////////////////////////////////////////////////////////////////////////
+
+//-------------------------------------------------------------------------
+// D3DXASM flags:
+// --------------
+//
+// D3DXASM_DEBUG
+// Generate debug info.
+//
+// D3DXASM_SKIPVALIDATION
+// Do not validate the generated code against known capabilities and
+// constraints. This option is only recommended when assembling shaders
+// you KNOW will work. (ie. have assembled before without this option.)
+//-------------------------------------------------------------------------
+
+#define D3DXASM_DEBUG (1 << 0)
+#define D3DXASM_SKIPVALIDATION (1 << 1)
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+//-------------------------------------------------------------------------
+// D3DXAssembleShader:
+// -------------------
+// Assembles an ascii description of a vertex or pixel shader into
+// binary form.
+//
+// Parameters:
+// pSrcFile
+// Source file name
+// hSrcModule
+// Module handle. if NULL, current module will be used.
+// pSrcResource
+// Resource name in module
+// pSrcData
+// Pointer to source code
+// SrcDataLen
+// Size of source code, in bytes
+// Flags
+// D3DXASM_xxx flags
+// ppConstants
+// Returns an ID3DXBuffer object containing constant declarations.
+// ppCompiledShader
+// Returns an ID3DXBuffer object containing the object code.
+// ppCompilationErrors
+// Returns an ID3DXBuffer object containing ascii error messages
+//-------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DXAssembleShaderFromFileA(
+ LPCSTR pSrcFile,
+ DWORD Flags,
+ LPD3DXBUFFER* ppConstants,
+ LPD3DXBUFFER* ppCompiledShader,
+ LPD3DXBUFFER* ppCompilationErrors);
+
+HRESULT WINAPI
+ D3DXAssembleShaderFromFileW(
+ LPCWSTR pSrcFile,
+ DWORD Flags,
+ LPD3DXBUFFER* ppConstants,
+ LPD3DXBUFFER* ppCompiledShader,
+ LPD3DXBUFFER* ppCompilationErrors);
+
+#ifdef UNICODE
+#define D3DXAssembleShaderFromFile D3DXAssembleShaderFromFileW
+#else
+#define D3DXAssembleShaderFromFile D3DXAssembleShaderFromFileA
+#endif
+
+HRESULT WINAPI
+ D3DXAssembleShaderFromResourceA(
+ HMODULE hSrcModule,
+ LPCSTR pSrcResource,
+ DWORD Flags,
+ LPD3DXBUFFER* ppConstants,
+ LPD3DXBUFFER* ppCompiledShader,
+ LPD3DXBUFFER* ppCompilationErrors);
+
+HRESULT WINAPI
+ D3DXAssembleShaderFromResourceW(
+ HMODULE hSrcModule,
+ LPCWSTR pSrcResource,
+ DWORD Flags,
+ LPD3DXBUFFER* ppConstants,
+ LPD3DXBUFFER* ppCompiledShader,
+ LPD3DXBUFFER* ppCompilationErrors);
+
+#ifdef UNICODE
+#define D3DXAssembleShaderFromResource D3DXAssembleShaderFromResourceW
+#else
+#define D3DXAssembleShaderFromResource D3DXAssembleShaderFromResourceA
+#endif
+
+HRESULT WINAPI
+ D3DXAssembleShader(
+ LPCVOID pSrcData,
+ UINT SrcDataLen,
+ DWORD Flags,
+ LPD3DXBUFFER* ppConstants,
+ LPD3DXBUFFER* ppCompiledShader,
+ LPD3DXBUFFER* ppCompilationErrors);
+
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+
+
+///////////////////////////////////////////////////////////////////////////
+// Misc APIs:
+///////////////////////////////////////////////////////////////////////////
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+//-------------------------------------------------------------------------
+// D3DXGetErrorString:
+// ------------------
+// Returns the error string for given an hresult. Interprets all D3DX and
+// D3D hresults.
+//
+// Parameters:
+// hr
+// The error code to be deciphered.
+// pBuffer
+// Pointer to the buffer to be filled in.
+// BufferLen
+// Count of characters in buffer. Any error message longer than this
+// length will be truncated to fit.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXGetErrorStringA(
+ HRESULT hr,
+ LPSTR pBuffer,
+ UINT BufferLen);
+
+HRESULT WINAPI
+ D3DXGetErrorStringW(
+ HRESULT hr,
+ LPWSTR pBuffer,
+ UINT BufferLen);
+
+#ifdef UNICODE
+#define D3DXGetErrorString D3DXGetErrorStringW
+#else
+#define D3DXGetErrorString D3DXGetErrorStringA
+#endif
+
+
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+#endif //__D3DX8CORE_H__
diff --git a/src/dep/include/DXSDK/include/d3dx8effect.h b/src/dep/include/DXSDK/include/d3dx8effect.h
new file mode 100644
index 0000000..96fc382
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3dx8effect.h
@@ -0,0 +1,226 @@
+///////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dx8effect.h
+// Content: D3DX effect types and functions
+//
+///////////////////////////////////////////////////////////////////////////
+
+#include "d3dx8.h"
+
+#ifndef __D3DX8EFFECT_H__
+#define __D3DX8EFFECT_H__
+
+
+#define D3DXFX_DONOTSAVESTATE (1 << 0)
+
+
+typedef enum _D3DXPARAMETERTYPE
+{
+ D3DXPT_DWORD = 0,
+ D3DXPT_FLOAT = 1,
+ D3DXPT_VECTOR = 2,
+ D3DXPT_MATRIX = 3,
+ D3DXPT_TEXTURE = 4,
+ D3DXPT_VERTEXSHADER = 5,
+ D3DXPT_PIXELSHADER = 6,
+ D3DXPT_CONSTANT = 7,
+ D3DXPT_STRING = 8,
+ D3DXPT_FORCE_DWORD = 0x7fffffff /* force 32-bit size enum */
+
+} D3DXPARAMETERTYPE;
+
+
+typedef struct _D3DXEFFECT_DESC
+{
+ UINT Parameters;
+ UINT Techniques;
+
+} D3DXEFFECT_DESC;
+
+
+typedef struct _D3DXPARAMETER_DESC
+{
+ LPCSTR Name;
+ LPCSTR Index;
+ D3DXPARAMETERTYPE Type;
+
+} D3DXPARAMETER_DESC;
+
+
+typedef struct _D3DXTECHNIQUE_DESC
+{
+ LPCSTR Name;
+ LPCSTR Index;
+ UINT Passes;
+
+} D3DXTECHNIQUE_DESC;
+
+
+typedef struct _D3DXPASS_DESC
+{
+ LPCSTR Name;
+ LPCSTR Index;
+
+} D3DXPASS_DESC;
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+// ID3DXEffect ///////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+typedef interface ID3DXEffect ID3DXEffect;
+typedef interface ID3DXEffect *LPD3DXEFFECT;
+
+// {648B1CEB-8D4E-4d66-B6FA-E44969E82E89}
+DEFINE_GUID( IID_ID3DXEffect,
+0x648b1ceb, 0x8d4e, 0x4d66, 0xb6, 0xfa, 0xe4, 0x49, 0x69, 0xe8, 0x2e, 0x89);
+
+
+#undef INTERFACE
+#define INTERFACE ID3DXEffect
+
+DECLARE_INTERFACE_(ID3DXEffect, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ // ID3DXEffect
+ STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
+ STDMETHOD(GetDesc)(THIS_ D3DXEFFECT_DESC* pDesc) PURE;
+ STDMETHOD(GetParameterDesc)(THIS_ LPCSTR pParameter, D3DXPARAMETER_DESC* pDesc) PURE;
+ STDMETHOD(GetTechniqueDesc)(THIS_ LPCSTR pTechnique, D3DXTECHNIQUE_DESC* pDesc) PURE;
+ STDMETHOD(GetPassDesc)(THIS_ LPCSTR pTechnique, LPCSTR pPass, D3DXPASS_DESC* pDesc) PURE;
+ STDMETHOD(FindNextValidTechnique)(THIS_ LPCSTR pTechnique, D3DXTECHNIQUE_DESC* pDesc) PURE;
+ STDMETHOD(CloneEffect)(THIS_ LPDIRECT3DDEVICE8 pDevice, LPD3DXEFFECT* ppEffect) PURE;
+ STDMETHOD(GetCompiledEffect)(THIS_ LPD3DXBUFFER* ppCompiledEffect) PURE;
+
+ STDMETHOD(SetTechnique)(THIS_ LPCSTR pTechnique) PURE;
+ STDMETHOD(GetTechnique)(THIS_ LPCSTR* ppTechnique) PURE;
+
+ STDMETHOD(SetDword)(THIS_ LPCSTR pParameter, DWORD dw) PURE;
+ STDMETHOD(GetDword)(THIS_ LPCSTR pParameter, DWORD* pdw) PURE;
+ STDMETHOD(SetFloat)(THIS_ LPCSTR pParameter, FLOAT f) PURE;
+ STDMETHOD(GetFloat)(THIS_ LPCSTR pParameter, FLOAT* pf) PURE;
+ STDMETHOD(SetVector)(THIS_ LPCSTR pParameter, CONST D3DXVECTOR4* pVector) PURE;
+ STDMETHOD(GetVector)(THIS_ LPCSTR pParameter, D3DXVECTOR4* pVector) PURE;
+ STDMETHOD(SetMatrix)(THIS_ LPCSTR pParameter, CONST D3DXMATRIX* pMatrix) PURE;
+ STDMETHOD(GetMatrix)(THIS_ LPCSTR pParameter, D3DXMATRIX* pMatrix) PURE;
+ STDMETHOD(SetTexture)(THIS_ LPCSTR pParameter, LPDIRECT3DBASETEXTURE8 pTexture) PURE;
+ STDMETHOD(GetTexture)(THIS_ LPCSTR pParameter, LPDIRECT3DBASETEXTURE8 *ppTexture) PURE;
+ STDMETHOD(SetVertexShader)(THIS_ LPCSTR pParameter, DWORD Handle) PURE;
+ STDMETHOD(GetVertexShader)(THIS_ LPCSTR pParameter, DWORD* pHandle) PURE;
+ STDMETHOD(SetPixelShader)(THIS_ LPCSTR pParameter, DWORD Handle) PURE;
+ STDMETHOD(GetPixelShader)(THIS_ LPCSTR pParameter, DWORD* pHandle) PURE;
+ STDMETHOD(SetString)(THIS_ LPCSTR pParameter, LPCSTR pString) PURE;
+ STDMETHOD(GetString)(THIS_ LPCSTR pParameter, LPCSTR* ppString) PURE;
+ STDMETHOD_(BOOL, IsParameterUsed)(THIS_ LPCSTR pParameter) PURE;
+
+ STDMETHOD(Validate)(THIS) PURE;
+ STDMETHOD(Begin)(THIS_ UINT *pPasses, DWORD Flags) PURE;
+ STDMETHOD(Pass)(THIS_ UINT Pass) PURE;
+ STDMETHOD(End)(THIS) PURE;
+ STDMETHOD(OnLostDevice)(THIS) PURE;
+ STDMETHOD(OnResetDevice)(THIS) PURE;
+};
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+// APIs //////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+
+//----------------------------------------------------------------------------
+// D3DXCreateEffect:
+// -----------------
+// Creates an effect from an ascii or binaray effect description.
+//
+// Parameters:
+// pDevice
+// Pointer of the device on which to create the effect
+// pSrcFile
+// Name of the file containing the effect description
+// hSrcModule
+// Module handle. if NULL, current module will be used.
+// pSrcResource
+// Resource name in module
+// pSrcData
+// Pointer to effect description
+// SrcDataSize
+// Size of the effect description in bytes
+// ppEffect
+// Returns a buffer containing created effect.
+// ppCompilationErrors
+// Returns a buffer containing any error messages which occurred during
+// compile. Or NULL if you do not care about the error messages.
+//
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DXCreateEffectFromFileA(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCSTR pSrcFile,
+ LPD3DXEFFECT* ppEffect,
+ LPD3DXBUFFER* ppCompilationErrors);
+
+HRESULT WINAPI
+ D3DXCreateEffectFromFileW(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCWSTR pSrcFile,
+ LPD3DXEFFECT* ppEffect,
+ LPD3DXBUFFER* ppCompilationErrors);
+
+#ifdef UNICODE
+#define D3DXCreateEffectFromFile D3DXCreateEffectFromFileW
+#else
+#define D3DXCreateEffectFromFile D3DXCreateEffectFromFileA
+#endif
+
+
+HRESULT WINAPI
+ D3DXCreateEffectFromResourceA(
+ LPDIRECT3DDEVICE8 pDevice,
+ HMODULE hSrcModule,
+ LPCSTR pSrcResource,
+ LPD3DXEFFECT* ppEffect,
+ LPD3DXBUFFER* ppCompilationErrors);
+
+HRESULT WINAPI
+ D3DXCreateEffectFromResourceW(
+ LPDIRECT3DDEVICE8 pDevice,
+ HMODULE hSrcModule,
+ LPCWSTR pSrcResource,
+ LPD3DXEFFECT* ppEffect,
+ LPD3DXBUFFER* ppCompilationErrors);
+
+#ifdef UNICODE
+#define D3DXCreateEffectFromResource D3DXCreateEffectFromResourceW
+#else
+#define D3DXCreateEffectFromResource D3DXCreateEffectFromResourceA
+#endif
+
+
+HRESULT WINAPI
+ D3DXCreateEffect(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCVOID pSrcData,
+ UINT SrcDataSize,
+ LPD3DXEFFECT* ppEffect,
+ LPD3DXBUFFER* ppCompilationErrors);
+
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+#endif //__D3DX8EFFECT_H__
diff --git a/src/dep/include/DXSDK/include/d3dx8math.h b/src/dep/include/DXSDK/include/d3dx8math.h
new file mode 100644
index 0000000..4677954
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3dx8math.h
@@ -0,0 +1,1215 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dx8math.h
+// Content: D3DX math types and functions
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#include "d3dx8.h"
+
+#ifndef __D3DX8MATH_H__
+#define __D3DX8MATH_H__
+
+#include
+#pragma warning(disable:4201) // anonymous unions warning
+
+
+
+//===========================================================================
+//
+// General purpose utilities
+//
+//===========================================================================
+#define D3DX_PI ((FLOAT) 3.141592654f)
+#define D3DX_1BYPI ((FLOAT) 0.318309886f)
+
+#define D3DXToRadian( degree ) ((degree) * (D3DX_PI / 180.0f))
+#define D3DXToDegree( radian ) ((radian) * (180.0f / D3DX_PI))
+
+
+
+//===========================================================================
+//
+// Vectors
+//
+//===========================================================================
+
+//--------------------------
+// 2D Vector
+//--------------------------
+typedef struct D3DXVECTOR2
+{
+#ifdef __cplusplus
+public:
+ D3DXVECTOR2() {};
+ D3DXVECTOR2( CONST FLOAT * );
+ D3DXVECTOR2( FLOAT x, FLOAT y );
+
+ // casting
+ operator FLOAT* ();
+ operator CONST FLOAT* () const;
+
+ // assignment operators
+ D3DXVECTOR2& operator += ( CONST D3DXVECTOR2& );
+ D3DXVECTOR2& operator -= ( CONST D3DXVECTOR2& );
+ D3DXVECTOR2& operator *= ( FLOAT );
+ D3DXVECTOR2& operator /= ( FLOAT );
+
+ // unary operators
+ D3DXVECTOR2 operator + () const;
+ D3DXVECTOR2 operator - () const;
+
+ // binary operators
+ D3DXVECTOR2 operator + ( CONST D3DXVECTOR2& ) const;
+ D3DXVECTOR2 operator - ( CONST D3DXVECTOR2& ) const;
+ D3DXVECTOR2 operator * ( FLOAT ) const;
+ D3DXVECTOR2 operator / ( FLOAT ) const;
+
+ friend D3DXVECTOR2 operator * ( FLOAT, CONST D3DXVECTOR2& );
+
+ BOOL operator == ( CONST D3DXVECTOR2& ) const;
+ BOOL operator != ( CONST D3DXVECTOR2& ) const;
+
+
+public:
+#endif //__cplusplus
+ FLOAT x, y;
+} D3DXVECTOR2, *LPD3DXVECTOR2;
+
+
+//--------------------------
+// 3D Vector
+//--------------------------
+#ifdef __cplusplus
+typedef struct D3DXVECTOR3 : public D3DVECTOR
+{
+public:
+ D3DXVECTOR3() {};
+ D3DXVECTOR3( CONST FLOAT * );
+ D3DXVECTOR3( CONST D3DVECTOR& );
+ D3DXVECTOR3( FLOAT x, FLOAT y, FLOAT z );
+
+ // casting
+ operator FLOAT* ();
+ operator CONST FLOAT* () const;
+
+ // assignment operators
+ D3DXVECTOR3& operator += ( CONST D3DXVECTOR3& );
+ D3DXVECTOR3& operator -= ( CONST D3DXVECTOR3& );
+ D3DXVECTOR3& operator *= ( FLOAT );
+ D3DXVECTOR3& operator /= ( FLOAT );
+
+ // unary operators
+ D3DXVECTOR3 operator + () const;
+ D3DXVECTOR3 operator - () const;
+
+ // binary operators
+ D3DXVECTOR3 operator + ( CONST D3DXVECTOR3& ) const;
+ D3DXVECTOR3 operator - ( CONST D3DXVECTOR3& ) const;
+ D3DXVECTOR3 operator * ( FLOAT ) const;
+ D3DXVECTOR3 operator / ( FLOAT ) const;
+
+ friend D3DXVECTOR3 operator * ( FLOAT, CONST struct D3DXVECTOR3& );
+
+ BOOL operator == ( CONST D3DXVECTOR3& ) const;
+ BOOL operator != ( CONST D3DXVECTOR3& ) const;
+
+} D3DXVECTOR3, *LPD3DXVECTOR3;
+
+#else //!__cplusplus
+typedef struct _D3DVECTOR D3DXVECTOR3, *LPD3DXVECTOR3;
+#endif //!__cplusplus
+
+
+//--------------------------
+// 4D Vector
+//--------------------------
+typedef struct D3DXVECTOR4
+{
+#ifdef __cplusplus
+public:
+ D3DXVECTOR4() {};
+ D3DXVECTOR4( CONST FLOAT* );
+ D3DXVECTOR4( FLOAT x, FLOAT y, FLOAT z, FLOAT w );
+
+ // casting
+ operator FLOAT* ();
+ operator CONST FLOAT* () const;
+
+ // assignment operators
+ D3DXVECTOR4& operator += ( CONST D3DXVECTOR4& );
+ D3DXVECTOR4& operator -= ( CONST D3DXVECTOR4& );
+ D3DXVECTOR4& operator *= ( FLOAT );
+ D3DXVECTOR4& operator /= ( FLOAT );
+
+ // unary operators
+ D3DXVECTOR4 operator + () const;
+ D3DXVECTOR4 operator - () const;
+
+ // binary operators
+ D3DXVECTOR4 operator + ( CONST D3DXVECTOR4& ) const;
+ D3DXVECTOR4 operator - ( CONST D3DXVECTOR4& ) const;
+ D3DXVECTOR4 operator * ( FLOAT ) const;
+ D3DXVECTOR4 operator / ( FLOAT ) const;
+
+ friend D3DXVECTOR4 operator * ( FLOAT, CONST D3DXVECTOR4& );
+
+ BOOL operator == ( CONST D3DXVECTOR4& ) const;
+ BOOL operator != ( CONST D3DXVECTOR4& ) const;
+
+public:
+#endif //__cplusplus
+ FLOAT x, y, z, w;
+} D3DXVECTOR4, *LPD3DXVECTOR4;
+
+
+//===========================================================================
+//
+// Matrices
+//
+//===========================================================================
+#ifdef __cplusplus
+typedef struct D3DXMATRIX : public D3DMATRIX
+{
+public:
+ D3DXMATRIX() {};
+ D3DXMATRIX( CONST FLOAT * );
+ D3DXMATRIX( CONST D3DMATRIX& );
+ D3DXMATRIX( FLOAT _11, FLOAT _12, FLOAT _13, FLOAT _14,
+ FLOAT _21, FLOAT _22, FLOAT _23, FLOAT _24,
+ FLOAT _31, FLOAT _32, FLOAT _33, FLOAT _34,
+ FLOAT _41, FLOAT _42, FLOAT _43, FLOAT _44 );
+
+
+ // access grants
+ FLOAT& operator () ( UINT Row, UINT Col );
+ FLOAT operator () ( UINT Row, UINT Col ) const;
+
+ // casting operators
+ operator FLOAT* ();
+ operator CONST FLOAT* () const;
+
+ // assignment operators
+ D3DXMATRIX& operator *= ( CONST D3DXMATRIX& );
+ D3DXMATRIX& operator += ( CONST D3DXMATRIX& );
+ D3DXMATRIX& operator -= ( CONST D3DXMATRIX& );
+ D3DXMATRIX& operator *= ( FLOAT );
+ D3DXMATRIX& operator /= ( FLOAT );
+
+ // unary operators
+ D3DXMATRIX operator + () const;
+ D3DXMATRIX operator - () const;
+
+ // binary operators
+ D3DXMATRIX operator * ( CONST D3DXMATRIX& ) const;
+ D3DXMATRIX operator + ( CONST D3DXMATRIX& ) const;
+ D3DXMATRIX operator - ( CONST D3DXMATRIX& ) const;
+ D3DXMATRIX operator * ( FLOAT ) const;
+ D3DXMATRIX operator / ( FLOAT ) const;
+
+ friend D3DXMATRIX operator * ( FLOAT, CONST D3DXMATRIX& );
+
+ BOOL operator == ( CONST D3DXMATRIX& ) const;
+ BOOL operator != ( CONST D3DXMATRIX& ) const;
+
+} D3DXMATRIX, *LPD3DXMATRIX;
+
+#else //!__cplusplus
+typedef struct _D3DMATRIX D3DXMATRIX, *LPD3DXMATRIX;
+#endif //!__cplusplus
+
+//===========================================================================
+//
+// Aligned Matrices
+//
+// This class helps keep matrices 16-byte aligned as preferred by P4 cpus.
+// It aligns matrices on the stack and on the heap or in global scope.
+// It does this using __declspec(align(16)) which works on VC7 and on VC 6
+// with the processor pack. Unfortunately there is no way to detect the
+// latter so this is turned on only on VC7. On other compilers this is the
+// the same as D3DXMATRIX.
+// Using this class on a compiler that does not actually do the alignment
+// can be dangerous since it will not expose bugs that ignore alignment.
+// E.g if an object of this class in inside a struct or class, and some code
+// memcopys data in it assuming tight packing. This could break on a compiler
+// that eventually start aligning the matrix.
+//
+//===========================================================================
+#ifdef __cplusplus
+typedef struct _D3DXMATRIXA16 : public D3DXMATRIX
+{
+ _D3DXMATRIXA16() {}
+ _D3DXMATRIXA16( CONST FLOAT * f): D3DXMATRIX(f) {}
+ _D3DXMATRIXA16( CONST D3DMATRIX& m): D3DXMATRIX(m) {}
+ _D3DXMATRIXA16( FLOAT _11, FLOAT _12, FLOAT _13, FLOAT _14,
+ FLOAT _21, FLOAT _22, FLOAT _23, FLOAT _24,
+ FLOAT _31, FLOAT _32, FLOAT _33, FLOAT _34,
+ FLOAT _41, FLOAT _42, FLOAT _43, FLOAT _44 ) :
+ D3DXMATRIX(_11, _12, _13, _14,
+ _21, _22, _23, _24,
+ _31, _32, _33, _34,
+ _41, _42, _43, _44) {}
+ void* operator new(size_t s)
+ {
+ LPBYTE p = ::new BYTE[s + 16];
+ if (p)
+ {
+ BYTE offset = (BYTE)(16 - ((UINT_PTR)p & 15));
+ p += offset;
+ p[-1] = offset;
+ }
+ return p;
+ };
+
+ void* operator new[](size_t s)
+ {
+ LPBYTE p = ::new BYTE[s + 16];
+ if (p)
+ {
+ BYTE offset = (BYTE)(16 - ((UINT_PTR)p & 15));
+ p += offset;
+ p[-1] = offset;
+ }
+ return p;
+ };
+
+ // This is NOT a virtual operator. If you cast
+ // to D3DXMATRIX, do not delete using that
+ void operator delete(void* p)
+ {
+ if(p)
+ {
+ BYTE* pb = static_cast(p);
+ pb -= pb[-1];
+ ::delete [] pb;
+ }
+ };
+
+ // This is NOT a virtual operator. If you cast
+ // to D3DXMATRIX, do not delete using that
+ void operator delete[](void* p)
+ {
+ if(p)
+ {
+ BYTE* pb = static_cast(p);
+ pb -= pb[-1];
+ ::delete [] pb;
+ }
+ };
+
+ struct _D3DXMATRIXA16& operator=(CONST D3DXMATRIX& rhs)
+ {
+ memcpy(&_11, &rhs, sizeof(D3DXMATRIX));
+ return *this;
+ };
+} _D3DXMATRIXA16;
+
+#else //!__cplusplus
+typedef D3DXMATRIX _D3DXMATRIXA16;
+#endif //!__cplusplus
+
+#if _MSC_VER >= 1300 // VC7
+#define _ALIGN_16 __declspec(align(16))
+#else
+#define _ALIGN_16 // Earlier compiler may not understand this, do nothing.
+#endif
+
+#define D3DXMATRIXA16 _ALIGN_16 _D3DXMATRIXA16
+
+typedef D3DXMATRIXA16 *LPD3DXMATRIXA16;
+
+//===========================================================================
+//
+// Quaternions
+//
+//===========================================================================
+typedef struct D3DXQUATERNION
+{
+#ifdef __cplusplus
+public:
+ D3DXQUATERNION() {}
+ D3DXQUATERNION( CONST FLOAT * );
+ D3DXQUATERNION( FLOAT x, FLOAT y, FLOAT z, FLOAT w );
+
+ // casting
+ operator FLOAT* ();
+ operator CONST FLOAT* () const;
+
+ // assignment operators
+ D3DXQUATERNION& operator += ( CONST D3DXQUATERNION& );
+ D3DXQUATERNION& operator -= ( CONST D3DXQUATERNION& );
+ D3DXQUATERNION& operator *= ( CONST D3DXQUATERNION& );
+ D3DXQUATERNION& operator *= ( FLOAT );
+ D3DXQUATERNION& operator /= ( FLOAT );
+
+ // unary operators
+ D3DXQUATERNION operator + () const;
+ D3DXQUATERNION operator - () const;
+
+ // binary operators
+ D3DXQUATERNION operator + ( CONST D3DXQUATERNION& ) const;
+ D3DXQUATERNION operator - ( CONST D3DXQUATERNION& ) const;
+ D3DXQUATERNION operator * ( CONST D3DXQUATERNION& ) const;
+ D3DXQUATERNION operator * ( FLOAT ) const;
+ D3DXQUATERNION operator / ( FLOAT ) const;
+
+ friend D3DXQUATERNION operator * (FLOAT, CONST D3DXQUATERNION& );
+
+ BOOL operator == ( CONST D3DXQUATERNION& ) const;
+ BOOL operator != ( CONST D3DXQUATERNION& ) const;
+
+#endif //__cplusplus
+ FLOAT x, y, z, w;
+} D3DXQUATERNION, *LPD3DXQUATERNION;
+
+
+//===========================================================================
+//
+// Planes
+//
+//===========================================================================
+typedef struct D3DXPLANE
+{
+#ifdef __cplusplus
+public:
+ D3DXPLANE() {}
+ D3DXPLANE( CONST FLOAT* );
+ D3DXPLANE( FLOAT a, FLOAT b, FLOAT c, FLOAT d );
+
+ // casting
+ operator FLOAT* ();
+ operator CONST FLOAT* () const;
+
+ // unary operators
+ D3DXPLANE operator + () const;
+ D3DXPLANE operator - () const;
+
+ // binary operators
+ BOOL operator == ( CONST D3DXPLANE& ) const;
+ BOOL operator != ( CONST D3DXPLANE& ) const;
+
+#endif //__cplusplus
+ FLOAT a, b, c, d;
+} D3DXPLANE, *LPD3DXPLANE;
+
+
+//===========================================================================
+//
+// Colors
+//
+//===========================================================================
+
+typedef struct D3DXCOLOR
+{
+#ifdef __cplusplus
+public:
+ D3DXCOLOR() {}
+ D3DXCOLOR( DWORD argb );
+ D3DXCOLOR( CONST FLOAT * );
+ D3DXCOLOR( CONST D3DCOLORVALUE& );
+ D3DXCOLOR( FLOAT r, FLOAT g, FLOAT b, FLOAT a );
+
+ // casting
+ operator DWORD () const;
+
+ operator FLOAT* ();
+ operator CONST FLOAT* () const;
+
+ operator D3DCOLORVALUE* ();
+ operator CONST D3DCOLORVALUE* () const;
+
+ operator D3DCOLORVALUE& ();
+ operator CONST D3DCOLORVALUE& () const;
+
+ // assignment operators
+ D3DXCOLOR& operator += ( CONST D3DXCOLOR& );
+ D3DXCOLOR& operator -= ( CONST D3DXCOLOR& );
+ D3DXCOLOR& operator *= ( FLOAT );
+ D3DXCOLOR& operator /= ( FLOAT );
+
+ // unary operators
+ D3DXCOLOR operator + () const;
+ D3DXCOLOR operator - () const;
+
+ // binary operators
+ D3DXCOLOR operator + ( CONST D3DXCOLOR& ) const;
+ D3DXCOLOR operator - ( CONST D3DXCOLOR& ) const;
+ D3DXCOLOR operator * ( FLOAT ) const;
+ D3DXCOLOR operator / ( FLOAT ) const;
+
+ friend D3DXCOLOR operator * (FLOAT, CONST D3DXCOLOR& );
+
+ BOOL operator == ( CONST D3DXCOLOR& ) const;
+ BOOL operator != ( CONST D3DXCOLOR& ) const;
+
+#endif //__cplusplus
+ FLOAT r, g, b, a;
+} D3DXCOLOR, *LPD3DXCOLOR;
+
+
+
+//===========================================================================
+//
+// D3DX math functions:
+//
+// NOTE:
+// * All these functions can take the same object as in and out parameters.
+//
+// * Out parameters are typically also returned as return values, so that
+// the output of one function may be used as a parameter to another.
+//
+//===========================================================================
+
+//--------------------------
+// 2D Vector
+//--------------------------
+
+// inline
+
+FLOAT D3DXVec2Length
+ ( CONST D3DXVECTOR2 *pV );
+
+FLOAT D3DXVec2LengthSq
+ ( CONST D3DXVECTOR2 *pV );
+
+FLOAT D3DXVec2Dot
+ ( CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
+
+// Z component of ((x1,y1,0) cross (x2,y2,0))
+FLOAT D3DXVec2CCW
+ ( CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
+
+D3DXVECTOR2* D3DXVec2Add
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
+
+D3DXVECTOR2* D3DXVec2Subtract
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
+
+// Minimize each component. x = min(x1, x2), y = min(y1, y2)
+D3DXVECTOR2* D3DXVec2Minimize
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
+
+// Maximize each component. x = max(x1, x2), y = max(y1, y2)
+D3DXVECTOR2* D3DXVec2Maximize
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 );
+
+D3DXVECTOR2* D3DXVec2Scale
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV, FLOAT s );
+
+// Linear interpolation. V1 + s(V2-V1)
+D3DXVECTOR2* D3DXVec2Lerp
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2,
+ FLOAT s );
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+D3DXVECTOR2* WINAPI D3DXVec2Normalize
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV );
+
+// Hermite interpolation between position V1, tangent T1 (when s == 0)
+// and position V2, tangent T2 (when s == 1).
+D3DXVECTOR2* WINAPI D3DXVec2Hermite
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pT1,
+ CONST D3DXVECTOR2 *pV2, CONST D3DXVECTOR2 *pT2, FLOAT s );
+
+// CatmullRom interpolation between V1 (when s == 0) and V2 (when s == 1)
+D3DXVECTOR2* WINAPI D3DXVec2CatmullRom
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV0, CONST D3DXVECTOR2 *pV1,
+ CONST D3DXVECTOR2 *pV2, CONST D3DXVECTOR2 *pV3, FLOAT s );
+
+// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1)
+D3DXVECTOR2* WINAPI D3DXVec2BaryCentric
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2,
+ CONST D3DXVECTOR2 *pV3, FLOAT f, FLOAT g);
+
+// Transform (x, y, 0, 1) by matrix.
+D3DXVECTOR4* WINAPI D3DXVec2Transform
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR2 *pV, CONST D3DXMATRIX *pM );
+
+// Transform (x, y, 0, 1) by matrix, project result back into w=1.
+D3DXVECTOR2* WINAPI D3DXVec2TransformCoord
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV, CONST D3DXMATRIX *pM );
+
+// Transform (x, y, 0, 0) by matrix.
+D3DXVECTOR2* WINAPI D3DXVec2TransformNormal
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV, CONST D3DXMATRIX *pM );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+//--------------------------
+// 3D Vector
+//--------------------------
+
+// inline
+
+FLOAT D3DXVec3Length
+ ( CONST D3DXVECTOR3 *pV );
+
+FLOAT D3DXVec3LengthSq
+ ( CONST D3DXVECTOR3 *pV );
+
+FLOAT D3DXVec3Dot
+ ( CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
+
+D3DXVECTOR3* D3DXVec3Cross
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
+
+D3DXVECTOR3* D3DXVec3Add
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
+
+D3DXVECTOR3* D3DXVec3Subtract
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
+
+// Minimize each component. x = min(x1, x2), y = min(y1, y2), ...
+D3DXVECTOR3* D3DXVec3Minimize
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
+
+// Maximize each component. x = max(x1, x2), y = max(y1, y2), ...
+D3DXVECTOR3* D3DXVec3Maximize
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 );
+
+D3DXVECTOR3* D3DXVec3Scale
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, FLOAT s);
+
+// Linear interpolation. V1 + s(V2-V1)
+D3DXVECTOR3* D3DXVec3Lerp
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2,
+ FLOAT s );
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+D3DXVECTOR3* WINAPI D3DXVec3Normalize
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV );
+
+// Hermite interpolation between position V1, tangent T1 (when s == 0)
+// and position V2, tangent T2 (when s == 1).
+D3DXVECTOR3* WINAPI D3DXVec3Hermite
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pT1,
+ CONST D3DXVECTOR3 *pV2, CONST D3DXVECTOR3 *pT2, FLOAT s );
+
+// CatmullRom interpolation between V1 (when s == 0) and V2 (when s == 1)
+D3DXVECTOR3* WINAPI D3DXVec3CatmullRom
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV0, CONST D3DXVECTOR3 *pV1,
+ CONST D3DXVECTOR3 *pV2, CONST D3DXVECTOR3 *pV3, FLOAT s );
+
+// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1)
+D3DXVECTOR3* WINAPI D3DXVec3BaryCentric
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2,
+ CONST D3DXVECTOR3 *pV3, FLOAT f, FLOAT g);
+
+// Transform (x, y, z, 1) by matrix.
+D3DXVECTOR4* WINAPI D3DXVec3Transform
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DXMATRIX *pM );
+
+// Transform (x, y, z, 1) by matrix, project result back into w=1.
+D3DXVECTOR3* WINAPI D3DXVec3TransformCoord
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DXMATRIX *pM );
+
+// Transform (x, y, z, 0) by matrix. If you transforming a normal by a
+// non-affine matrix, the matrix you pass to this function should be the
+// transpose of the inverse of the matrix you would use to transform a coord.
+D3DXVECTOR3* WINAPI D3DXVec3TransformNormal
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DXMATRIX *pM );
+
+// Project vector from object space into screen space
+D3DXVECTOR3* WINAPI D3DXVec3Project
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DVIEWPORT8 *pViewport,
+ CONST D3DXMATRIX *pProjection, CONST D3DXMATRIX *pView, CONST D3DXMATRIX *pWorld);
+
+// Project vector from screen space into object space
+D3DXVECTOR3* WINAPI D3DXVec3Unproject
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, CONST D3DVIEWPORT8 *pViewport,
+ CONST D3DXMATRIX *pProjection, CONST D3DXMATRIX *pView, CONST D3DXMATRIX *pWorld);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+//--------------------------
+// 4D Vector
+//--------------------------
+
+// inline
+
+FLOAT D3DXVec4Length
+ ( CONST D3DXVECTOR4 *pV );
+
+FLOAT D3DXVec4LengthSq
+ ( CONST D3DXVECTOR4 *pV );
+
+FLOAT D3DXVec4Dot
+ ( CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2 );
+
+D3DXVECTOR4* D3DXVec4Add
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2);
+
+D3DXVECTOR4* D3DXVec4Subtract
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2);
+
+// Minimize each component. x = min(x1, x2), y = min(y1, y2), ...
+D3DXVECTOR4* D3DXVec4Minimize
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2);
+
+// Maximize each component. x = max(x1, x2), y = max(y1, y2), ...
+D3DXVECTOR4* D3DXVec4Maximize
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2);
+
+D3DXVECTOR4* D3DXVec4Scale
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV, FLOAT s);
+
+// Linear interpolation. V1 + s(V2-V1)
+D3DXVECTOR4* D3DXVec4Lerp
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2,
+ FLOAT s );
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Cross-product in 4 dimensions.
+D3DXVECTOR4* WINAPI D3DXVec4Cross
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2,
+ CONST D3DXVECTOR4 *pV3);
+
+D3DXVECTOR4* WINAPI D3DXVec4Normalize
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV );
+
+// Hermite interpolation between position V1, tangent T1 (when s == 0)
+// and position V2, tangent T2 (when s == 1).
+D3DXVECTOR4* WINAPI D3DXVec4Hermite
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pT1,
+ CONST D3DXVECTOR4 *pV2, CONST D3DXVECTOR4 *pT2, FLOAT s );
+
+// CatmullRom interpolation between V1 (when s == 0) and V2 (when s == 1)
+D3DXVECTOR4* WINAPI D3DXVec4CatmullRom
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV0, CONST D3DXVECTOR4 *pV1,
+ CONST D3DXVECTOR4 *pV2, CONST D3DXVECTOR4 *pV3, FLOAT s );
+
+// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1)
+D3DXVECTOR4* WINAPI D3DXVec4BaryCentric
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2,
+ CONST D3DXVECTOR4 *pV3, FLOAT f, FLOAT g);
+
+// Transform vector by matrix.
+D3DXVECTOR4* WINAPI D3DXVec4Transform
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV, CONST D3DXMATRIX *pM );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+//--------------------------
+// 4D Matrix
+//--------------------------
+
+// inline
+
+D3DXMATRIX* D3DXMatrixIdentity
+ ( D3DXMATRIX *pOut );
+
+BOOL D3DXMatrixIsIdentity
+ ( CONST D3DXMATRIX *pM );
+
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+FLOAT WINAPI D3DXMatrixfDeterminant
+ ( CONST D3DXMATRIX *pM );
+
+D3DXMATRIX* WINAPI D3DXMatrixTranspose
+ ( D3DXMATRIX *pOut, CONST D3DXMATRIX *pM );
+
+// Matrix multiplication. The result represents the transformation M2
+// followed by the transformation M1. (Out = M1 * M2)
+D3DXMATRIX* WINAPI D3DXMatrixMultiply
+ ( D3DXMATRIX *pOut, CONST D3DXMATRIX *pM1, CONST D3DXMATRIX *pM2 );
+
+// Matrix multiplication, followed by a transpose. (Out = T(M1 * M2))
+D3DXMATRIX* WINAPI D3DXMatrixMultiplyTranspose
+ ( D3DXMATRIX *pOut, CONST D3DXMATRIX *pM1, CONST D3DXMATRIX *pM2 );
+
+// Calculate inverse of matrix. Inversion my fail, in which case NULL will
+// be returned. The determinant of pM is also returned it pfDeterminant
+// is non-NULL.
+D3DXMATRIX* WINAPI D3DXMatrixInverse
+ ( D3DXMATRIX *pOut, FLOAT *pDeterminant, CONST D3DXMATRIX *pM );
+
+// Build a matrix which scales by (sx, sy, sz)
+D3DXMATRIX* WINAPI D3DXMatrixScaling
+ ( D3DXMATRIX *pOut, FLOAT sx, FLOAT sy, FLOAT sz );
+
+// Build a matrix which translates by (x, y, z)
+D3DXMATRIX* WINAPI D3DXMatrixTranslation
+ ( D3DXMATRIX *pOut, FLOAT x, FLOAT y, FLOAT z );
+
+// Build a matrix which rotates around the X axis
+D3DXMATRIX* WINAPI D3DXMatrixRotationX
+ ( D3DXMATRIX *pOut, FLOAT Angle );
+
+// Build a matrix which rotates around the Y axis
+D3DXMATRIX* WINAPI D3DXMatrixRotationY
+ ( D3DXMATRIX *pOut, FLOAT Angle );
+
+// Build a matrix which rotates around the Z axis
+D3DXMATRIX* WINAPI D3DXMatrixRotationZ
+ ( D3DXMATRIX *pOut, FLOAT Angle );
+
+// Build a matrix which rotates around an arbitrary axis
+D3DXMATRIX* WINAPI D3DXMatrixRotationAxis
+ ( D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pV, FLOAT Angle );
+
+// Build a matrix from a quaternion
+D3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion
+ ( D3DXMATRIX *pOut, CONST D3DXQUATERNION *pQ);
+
+// Yaw around the Y axis, a pitch around the X axis,
+// and a roll around the Z axis.
+D3DXMATRIX* WINAPI D3DXMatrixRotationYawPitchRoll
+ ( D3DXMATRIX *pOut, FLOAT Yaw, FLOAT Pitch, FLOAT Roll );
+
+
+// Build transformation matrix. NULL arguments are treated as identity.
+// Mout = Msc-1 * Msr-1 * Ms * Msr * Msc * Mrc-1 * Mr * Mrc * Mt
+D3DXMATRIX* WINAPI D3DXMatrixTransformation
+ ( D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pScalingCenter,
+ CONST D3DXQUATERNION *pScalingRotation, CONST D3DXVECTOR3 *pScaling,
+ CONST D3DXVECTOR3 *pRotationCenter, CONST D3DXQUATERNION *pRotation,
+ CONST D3DXVECTOR3 *pTranslation);
+
+// Build affine transformation matrix. NULL arguments are treated as identity.
+// Mout = Ms * Mrc-1 * Mr * Mrc * Mt
+D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation
+ ( D3DXMATRIX *pOut, FLOAT Scaling, CONST D3DXVECTOR3 *pRotationCenter,
+ CONST D3DXQUATERNION *pRotation, CONST D3DXVECTOR3 *pTranslation);
+
+// Build a lookat matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixLookAtRH
+ ( D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pEye, CONST D3DXVECTOR3 *pAt,
+ CONST D3DXVECTOR3 *pUp );
+
+// Build a lookat matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixLookAtLH
+ ( D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pEye, CONST D3DXVECTOR3 *pAt,
+ CONST D3DXVECTOR3 *pUp );
+
+// Build a perspective projection matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveRH
+ ( D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf );
+
+// Build a perspective projection matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveLH
+ ( D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf );
+
+// Build a perspective projection matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovRH
+ ( D3DXMATRIX *pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf );
+
+// Build a perspective projection matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovLH
+ ( D3DXMATRIX *pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf );
+
+// Build a perspective projection matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterRH
+ ( D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn,
+ FLOAT zf );
+
+// Build a perspective projection matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterLH
+ ( D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn,
+ FLOAT zf );
+
+// Build an ortho projection matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixOrthoRH
+ ( D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf );
+
+// Build an ortho projection matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixOrthoLH
+ ( D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf );
+
+// Build an ortho projection matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterRH
+ ( D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn,
+ FLOAT zf );
+
+// Build an ortho projection matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterLH
+ ( D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn,
+ FLOAT zf );
+
+// Build a matrix which flattens geometry into a plane, as if casting
+// a shadow from a light.
+D3DXMATRIX* WINAPI D3DXMatrixShadow
+ ( D3DXMATRIX *pOut, CONST D3DXVECTOR4 *pLight,
+ CONST D3DXPLANE *pPlane );
+
+// Build a matrix which reflects the coordinate system about a plane
+D3DXMATRIX* WINAPI D3DXMatrixReflect
+ ( D3DXMATRIX *pOut, CONST D3DXPLANE *pPlane );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+//--------------------------
+// Quaternion
+//--------------------------
+
+// inline
+
+FLOAT D3DXQuaternionLength
+ ( CONST D3DXQUATERNION *pQ );
+
+// Length squared, or "norm"
+FLOAT D3DXQuaternionLengthSq
+ ( CONST D3DXQUATERNION *pQ );
+
+FLOAT D3DXQuaternionDot
+ ( CONST D3DXQUATERNION *pQ1, CONST D3DXQUATERNION *pQ2 );
+
+// (0, 0, 0, 1)
+D3DXQUATERNION* D3DXQuaternionIdentity
+ ( D3DXQUATERNION *pOut );
+
+BOOL D3DXQuaternionIsIdentity
+ ( CONST D3DXQUATERNION *pQ );
+
+// (-x, -y, -z, w)
+D3DXQUATERNION* D3DXQuaternionConjugate
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ );
+
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Compute a quaternin's axis and angle of rotation. Expects unit quaternions.
+void WINAPI D3DXQuaternionToAxisAngle
+ ( CONST D3DXQUATERNION *pQ, D3DXVECTOR3 *pAxis, FLOAT *pAngle );
+
+// Build a quaternion from a rotation matrix.
+D3DXQUATERNION* WINAPI D3DXQuaternionRotationMatrix
+ ( D3DXQUATERNION *pOut, CONST D3DXMATRIX *pM);
+
+// Rotation about arbitrary axis.
+D3DXQUATERNION* WINAPI D3DXQuaternionRotationAxis
+ ( D3DXQUATERNION *pOut, CONST D3DXVECTOR3 *pV, FLOAT Angle );
+
+// Yaw around the Y axis, a pitch around the X axis,
+// and a roll around the Z axis.
+D3DXQUATERNION* WINAPI D3DXQuaternionRotationYawPitchRoll
+ ( D3DXQUATERNION *pOut, FLOAT Yaw, FLOAT Pitch, FLOAT Roll );
+
+// Quaternion multiplication. The result represents the rotation Q2
+// followed by the rotation Q1. (Out = Q2 * Q1)
+D3DXQUATERNION* WINAPI D3DXQuaternionMultiply
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ1,
+ CONST D3DXQUATERNION *pQ2 );
+
+D3DXQUATERNION* WINAPI D3DXQuaternionNormalize
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ );
+
+// Conjugate and re-norm
+D3DXQUATERNION* WINAPI D3DXQuaternionInverse
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ );
+
+// Expects unit quaternions.
+// if q = (cos(theta), sin(theta) * v); ln(q) = (0, theta * v)
+D3DXQUATERNION* WINAPI D3DXQuaternionLn
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ );
+
+// Expects pure quaternions. (w == 0) w is ignored in calculation.
+// if q = (0, theta * v); exp(q) = (cos(theta), sin(theta) * v)
+D3DXQUATERNION* WINAPI D3DXQuaternionExp
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ );
+
+// Spherical linear interpolation between Q1 (t == 0) and Q2 (t == 1).
+// Expects unit quaternions.
+D3DXQUATERNION* WINAPI D3DXQuaternionSlerp
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ1,
+ CONST D3DXQUATERNION *pQ2, FLOAT t );
+
+// Spherical quadrangle interpolation.
+// Slerp(Slerp(Q1, C, t), Slerp(A, B, t), 2t(1-t))
+D3DXQUATERNION* WINAPI D3DXQuaternionSquad
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ1,
+ CONST D3DXQUATERNION *pA, CONST D3DXQUATERNION *pB,
+ CONST D3DXQUATERNION *pC, FLOAT t );
+
+// Setup control points for spherical quadrangle interpolation
+// from Q1 to Q2. The control points are chosen in such a way
+// to ensure the continuity of tangents with adjacent segments.
+void WINAPI D3DXQuaternionSquadSetup
+ ( D3DXQUATERNION *pAOut, D3DXQUATERNION *pBOut, D3DXQUATERNION *pCOut,
+ CONST D3DXQUATERNION *pQ0, CONST D3DXQUATERNION *pQ1,
+ CONST D3DXQUATERNION *pQ2, CONST D3DXQUATERNION *pQ3 );
+
+// Barycentric interpolation.
+// Slerp(Slerp(Q1, Q2, f+g), Slerp(Q1, Q3, f+g), g/(f+g))
+D3DXQUATERNION* WINAPI D3DXQuaternionBaryCentric
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ1,
+ CONST D3DXQUATERNION *pQ2, CONST D3DXQUATERNION *pQ3,
+ FLOAT f, FLOAT g );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+//--------------------------
+// Plane
+//--------------------------
+
+// inline
+
+// ax + by + cz + dw
+FLOAT D3DXPlaneDot
+ ( CONST D3DXPLANE *pP, CONST D3DXVECTOR4 *pV);
+
+// ax + by + cz + d
+FLOAT D3DXPlaneDotCoord
+ ( CONST D3DXPLANE *pP, CONST D3DXVECTOR3 *pV);
+
+// ax + by + cz
+FLOAT D3DXPlaneDotNormal
+ ( CONST D3DXPLANE *pP, CONST D3DXVECTOR3 *pV);
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Normalize plane (so that |a,b,c| == 1)
+D3DXPLANE* WINAPI D3DXPlaneNormalize
+ ( D3DXPLANE *pOut, CONST D3DXPLANE *pP);
+
+// Find the intersection between a plane and a line. If the line is
+// parallel to the plane, NULL is returned.
+D3DXVECTOR3* WINAPI D3DXPlaneIntersectLine
+ ( D3DXVECTOR3 *pOut, CONST D3DXPLANE *pP, CONST D3DXVECTOR3 *pV1,
+ CONST D3DXVECTOR3 *pV2);
+
+// Construct a plane from a point and a normal
+D3DXPLANE* WINAPI D3DXPlaneFromPointNormal
+ ( D3DXPLANE *pOut, CONST D3DXVECTOR3 *pPoint, CONST D3DXVECTOR3 *pNormal);
+
+// Construct a plane from 3 points
+D3DXPLANE* WINAPI D3DXPlaneFromPoints
+ ( D3DXPLANE *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2,
+ CONST D3DXVECTOR3 *pV3);
+
+// Transform a plane by a matrix. The vector (a,b,c) must be normal.
+// M should be the inverse transpose of the transformation desired.
+D3DXPLANE* WINAPI D3DXPlaneTransform
+ ( D3DXPLANE *pOut, CONST D3DXPLANE *pP, CONST D3DXMATRIX *pM );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+//--------------------------
+// Color
+//--------------------------
+
+// inline
+
+// (1-r, 1-g, 1-b, a)
+D3DXCOLOR* D3DXColorNegative
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC);
+
+D3DXCOLOR* D3DXColorAdd
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2);
+
+D3DXCOLOR* D3DXColorSubtract
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2);
+
+D3DXCOLOR* D3DXColorScale
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC, FLOAT s);
+
+// (r1*r2, g1*g2, b1*b2, a1*a2)
+D3DXCOLOR* D3DXColorModulate
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2);
+
+// Linear interpolation of r,g,b, and a. C1 + s(C2-C1)
+D3DXCOLOR* D3DXColorLerp
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2, FLOAT s);
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Interpolate r,g,b between desaturated color and color.
+// DesaturatedColor + s(Color - DesaturatedColor)
+D3DXCOLOR* WINAPI D3DXColorAdjustSaturation
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC, FLOAT s);
+
+// Interpolate r,g,b between 50% grey and color. Grey + s(Color - Grey)
+D3DXCOLOR* WINAPI D3DXColorAdjustContrast
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC, FLOAT c);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+
+//--------------------------
+// Misc
+//--------------------------
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Calculate Fresnel term given the cosine of theta (likely obtained by
+// taking the dot of two normals), and the refraction index of the material.
+FLOAT WINAPI D3DXFresnelTerm
+ (FLOAT CosTheta, FLOAT RefractionIndex);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+//===========================================================================
+//
+// Matrix Stack
+//
+//===========================================================================
+
+typedef interface ID3DXMatrixStack ID3DXMatrixStack;
+typedef interface ID3DXMatrixStack *LPD3DXMATRIXSTACK;
+
+// {E3357330-CC5E-11d2-A434-00A0C90629A8}
+DEFINE_GUID( IID_ID3DXMatrixStack,
+0xe3357330, 0xcc5e, 0x11d2, 0xa4, 0x34, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
+
+
+#undef INTERFACE
+#define INTERFACE ID3DXMatrixStack
+
+DECLARE_INTERFACE_(ID3DXMatrixStack, IUnknown)
+{
+ //
+ // IUnknown methods
+ //
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ //
+ // ID3DXMatrixStack methods
+ //
+
+ // Pops the top of the stack, returns the current top
+ // *after* popping the top.
+ STDMETHOD(Pop)(THIS) PURE;
+
+ // Pushes the stack by one, duplicating the current matrix.
+ STDMETHOD(Push)(THIS) PURE;
+
+ // Loads identity in the current matrix.
+ STDMETHOD(LoadIdentity)(THIS) PURE;
+
+ // Loads the given matrix into the current matrix
+ STDMETHOD(LoadMatrix)(THIS_ CONST D3DXMATRIX* pM ) PURE;
+
+ // Right-Multiplies the given matrix to the current matrix.
+ // (transformation is about the current world origin)
+ STDMETHOD(MultMatrix)(THIS_ CONST D3DXMATRIX* pM ) PURE;
+
+ // Left-Multiplies the given matrix to the current matrix
+ // (transformation is about the local origin of the object)
+ STDMETHOD(MultMatrixLocal)(THIS_ CONST D3DXMATRIX* pM ) PURE;
+
+ // Right multiply the current matrix with the computed rotation
+ // matrix, counterclockwise about the given axis with the given angle.
+ // (rotation is about the current world origin)
+ STDMETHOD(RotateAxis)
+ (THIS_ CONST D3DXVECTOR3* pV, FLOAT Angle) PURE;
+
+ // Left multiply the current matrix with the computed rotation
+ // matrix, counterclockwise about the given axis with the given angle.
+ // (rotation is about the local origin of the object)
+ STDMETHOD(RotateAxisLocal)
+ (THIS_ CONST D3DXVECTOR3* pV, FLOAT Angle) PURE;
+
+ // Right multiply the current matrix with the computed rotation
+ // matrix. All angles are counterclockwise. (rotation is about the
+ // current world origin)
+
+ // The rotation is composed of a yaw around the Y axis, a pitch around
+ // the X axis, and a roll around the Z axis.
+ STDMETHOD(RotateYawPitchRoll)
+ (THIS_ FLOAT Yaw, FLOAT Pitch, FLOAT Roll) PURE;
+
+ // Left multiply the current matrix with the computed rotation
+ // matrix. All angles are counterclockwise. (rotation is about the
+ // local origin of the object)
+
+ // The rotation is composed of a yaw around the Y axis, a pitch around
+ // the X axis, and a roll around the Z axis.
+ STDMETHOD(RotateYawPitchRollLocal)
+ (THIS_ FLOAT Yaw, FLOAT Pitch, FLOAT Roll) PURE;
+
+ // Right multiply the current matrix with the computed scale
+ // matrix. (transformation is about the current world origin)
+ STDMETHOD(Scale)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
+
+ // Left multiply the current matrix with the computed scale
+ // matrix. (transformation is about the local origin of the object)
+ STDMETHOD(ScaleLocal)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
+
+ // Right multiply the current matrix with the computed translation
+ // matrix. (transformation is about the current world origin)
+ STDMETHOD(Translate)(THIS_ FLOAT x, FLOAT y, FLOAT z ) PURE;
+
+ // Left multiply the current matrix with the computed translation
+ // matrix. (transformation is about the local origin of the object)
+ STDMETHOD(TranslateLocal)(THIS_ FLOAT x, FLOAT y, FLOAT z) PURE;
+
+ // Obtain the current matrix at the top of the stack
+ STDMETHOD_(D3DXMATRIX*, GetTop)(THIS) PURE;
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HRESULT WINAPI
+ D3DXCreateMatrixStack(
+ DWORD Flags,
+ LPD3DXMATRIXSTACK* ppStack);
+
+#ifdef __cplusplus
+}
+#endif
+
+#include "d3dx8math.inl"
+
+#pragma warning(default:4201)
+
+#endif // __D3DX8MATH_H__
diff --git a/src/dep/include/DXSDK/include/d3dx8math.inl b/src/dep/include/DXSDK/include/d3dx8math.inl
new file mode 100644
index 0000000..c1f465c
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3dx8math.inl
@@ -0,0 +1,1757 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dx8math.inl
+// Content: D3DX math inline functions
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef __D3DX8MATH_INL__
+#define __D3DX8MATH_INL__
+
+
+//===========================================================================
+//
+// Inline Class Methods
+//
+//===========================================================================
+
+#ifdef __cplusplus
+
+//--------------------------
+// 2D Vector
+//--------------------------
+
+D3DXINLINE
+D3DXVECTOR2::D3DXVECTOR2( CONST FLOAT *pf )
+{
+#ifdef D3DX_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ x = pf[0];
+ y = pf[1];
+}
+
+D3DXINLINE
+D3DXVECTOR2::D3DXVECTOR2( FLOAT fx, FLOAT fy )
+{
+ x = fx;
+ y = fy;
+}
+
+// casting
+D3DXINLINE
+D3DXVECTOR2::operator FLOAT* ()
+{
+ return (FLOAT *) &x;
+}
+
+D3DXINLINE
+D3DXVECTOR2::operator CONST FLOAT* () const
+{
+ return (CONST FLOAT *) &x;
+}
+
+// assignment operators
+D3DXINLINE D3DXVECTOR2&
+D3DXVECTOR2::operator += ( CONST D3DXVECTOR2& v )
+{
+ x += v.x;
+ y += v.y;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR2&
+D3DXVECTOR2::operator -= ( CONST D3DXVECTOR2& v )
+{
+ x -= v.x;
+ y -= v.y;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR2&
+D3DXVECTOR2::operator *= ( FLOAT f )
+{
+ x *= f;
+ y *= f;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR2&
+D3DXVECTOR2::operator /= ( FLOAT f )
+{
+ FLOAT fInv = 1.0f / f;
+ x *= fInv;
+ y *= fInv;
+ return *this;
+}
+
+// unary operators
+D3DXINLINE D3DXVECTOR2
+D3DXVECTOR2::operator + () const
+{
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR2
+D3DXVECTOR2::operator - () const
+{
+ return D3DXVECTOR2(-x, -y);
+}
+
+// binary operators
+D3DXINLINE D3DXVECTOR2
+D3DXVECTOR2::operator + ( CONST D3DXVECTOR2& v ) const
+{
+ return D3DXVECTOR2(x + v.x, y + v.y);
+}
+
+D3DXINLINE D3DXVECTOR2
+D3DXVECTOR2::operator - ( CONST D3DXVECTOR2& v ) const
+{
+ return D3DXVECTOR2(x - v.x, y - v.y);
+}
+
+D3DXINLINE D3DXVECTOR2
+D3DXVECTOR2::operator * ( FLOAT f ) const
+{
+ return D3DXVECTOR2(x * f, y * f);
+}
+
+D3DXINLINE D3DXVECTOR2
+D3DXVECTOR2::operator / ( FLOAT f ) const
+{
+ FLOAT fInv = 1.0f / f;
+ return D3DXVECTOR2(x * fInv, y * fInv);
+}
+
+
+D3DXINLINE D3DXVECTOR2
+operator * ( FLOAT f, CONST D3DXVECTOR2& v )
+{
+ return D3DXVECTOR2(f * v.x, f * v.y);
+}
+
+D3DXINLINE BOOL
+D3DXVECTOR2::operator == ( CONST D3DXVECTOR2& v ) const
+{
+ return x == v.x && y == v.y;
+}
+
+D3DXINLINE BOOL
+D3DXVECTOR2::operator != ( CONST D3DXVECTOR2& v ) const
+{
+ return x != v.x || y != v.y;
+}
+
+
+
+
+//--------------------------
+// 3D Vector
+//--------------------------
+D3DXINLINE
+D3DXVECTOR3::D3DXVECTOR3( CONST FLOAT *pf )
+{
+#ifdef D3DX_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ x = pf[0];
+ y = pf[1];
+ z = pf[2];
+}
+
+D3DXINLINE
+D3DXVECTOR3::D3DXVECTOR3( CONST D3DVECTOR& v )
+{
+ x = v.x;
+ y = v.y;
+ z = v.z;
+}
+
+D3DXINLINE
+D3DXVECTOR3::D3DXVECTOR3( FLOAT fx, FLOAT fy, FLOAT fz )
+{
+ x = fx;
+ y = fy;
+ z = fz;
+}
+
+
+// casting
+D3DXINLINE
+D3DXVECTOR3::operator FLOAT* ()
+{
+ return (FLOAT *) &x;
+}
+
+D3DXINLINE
+D3DXVECTOR3::operator CONST FLOAT* () const
+{
+ return (CONST FLOAT *) &x;
+}
+
+
+// assignment operators
+D3DXINLINE D3DXVECTOR3&
+D3DXVECTOR3::operator += ( CONST D3DXVECTOR3& v )
+{
+ x += v.x;
+ y += v.y;
+ z += v.z;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR3&
+D3DXVECTOR3::operator -= ( CONST D3DXVECTOR3& v )
+{
+ x -= v.x;
+ y -= v.y;
+ z -= v.z;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR3&
+D3DXVECTOR3::operator *= ( FLOAT f )
+{
+ x *= f;
+ y *= f;
+ z *= f;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR3&
+D3DXVECTOR3::operator /= ( FLOAT f )
+{
+ FLOAT fInv = 1.0f / f;
+ x *= fInv;
+ y *= fInv;
+ z *= fInv;
+ return *this;
+}
+
+
+// unary operators
+D3DXINLINE D3DXVECTOR3
+D3DXVECTOR3::operator + () const
+{
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR3
+D3DXVECTOR3::operator - () const
+{
+ return D3DXVECTOR3(-x, -y, -z);
+}
+
+
+// binary operators
+D3DXINLINE D3DXVECTOR3
+D3DXVECTOR3::operator + ( CONST D3DXVECTOR3& v ) const
+{
+ return D3DXVECTOR3(x + v.x, y + v.y, z + v.z);
+}
+
+D3DXINLINE D3DXVECTOR3
+D3DXVECTOR3::operator - ( CONST D3DXVECTOR3& v ) const
+{
+ return D3DXVECTOR3(x - v.x, y - v.y, z - v.z);
+}
+
+D3DXINLINE D3DXVECTOR3
+D3DXVECTOR3::operator * ( FLOAT f ) const
+{
+ return D3DXVECTOR3(x * f, y * f, z * f);
+}
+
+D3DXINLINE D3DXVECTOR3
+D3DXVECTOR3::operator / ( FLOAT f ) const
+{
+ FLOAT fInv = 1.0f / f;
+ return D3DXVECTOR3(x * fInv, y * fInv, z * fInv);
+}
+
+
+D3DXINLINE D3DXVECTOR3
+operator * ( FLOAT f, CONST struct D3DXVECTOR3& v )
+{
+ return D3DXVECTOR3(f * v.x, f * v.y, f * v.z);
+}
+
+
+D3DXINLINE BOOL
+D3DXVECTOR3::operator == ( CONST D3DXVECTOR3& v ) const
+{
+ return x == v.x && y == v.y && z == v.z;
+}
+
+D3DXINLINE BOOL
+D3DXVECTOR3::operator != ( CONST D3DXVECTOR3& v ) const
+{
+ return x != v.x || y != v.y || z != v.z;
+}
+
+
+
+//--------------------------
+// 4D Vector
+//--------------------------
+D3DXINLINE
+D3DXVECTOR4::D3DXVECTOR4( CONST FLOAT *pf )
+{
+#ifdef D3DX_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ x = pf[0];
+ y = pf[1];
+ z = pf[2];
+ w = pf[3];
+}
+
+D3DXINLINE
+D3DXVECTOR4::D3DXVECTOR4( FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw )
+{
+ x = fx;
+ y = fy;
+ z = fz;
+ w = fw;
+}
+
+
+// casting
+D3DXINLINE
+D3DXVECTOR4::operator FLOAT* ()
+{
+ return (FLOAT *) &x;
+}
+
+D3DXINLINE
+D3DXVECTOR4::operator CONST FLOAT* () const
+{
+ return (CONST FLOAT *) &x;
+}
+
+
+// assignment operators
+D3DXINLINE D3DXVECTOR4&
+D3DXVECTOR4::operator += ( CONST D3DXVECTOR4& v )
+{
+ x += v.x;
+ y += v.y;
+ z += v.z;
+ w += v.w;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR4&
+D3DXVECTOR4::operator -= ( CONST D3DXVECTOR4& v )
+{
+ x -= v.x;
+ y -= v.y;
+ z -= v.z;
+ w -= v.w;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR4&
+D3DXVECTOR4::operator *= ( FLOAT f )
+{
+ x *= f;
+ y *= f;
+ z *= f;
+ w *= f;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR4&
+D3DXVECTOR4::operator /= ( FLOAT f )
+{
+ FLOAT fInv = 1.0f / f;
+ x *= fInv;
+ y *= fInv;
+ z *= fInv;
+ w *= fInv;
+ return *this;
+}
+
+
+// unary operators
+D3DXINLINE D3DXVECTOR4
+D3DXVECTOR4::operator + () const
+{
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR4
+D3DXVECTOR4::operator - () const
+{
+ return D3DXVECTOR4(-x, -y, -z, -w);
+}
+
+
+// binary operators
+D3DXINLINE D3DXVECTOR4
+D3DXVECTOR4::operator + ( CONST D3DXVECTOR4& v ) const
+{
+ return D3DXVECTOR4(x + v.x, y + v.y, z + v.z, w + v.w);
+}
+
+D3DXINLINE D3DXVECTOR4
+D3DXVECTOR4::operator - ( CONST D3DXVECTOR4& v ) const
+{
+ return D3DXVECTOR4(x - v.x, y - v.y, z - v.z, w - v.w);
+}
+
+D3DXINLINE D3DXVECTOR4
+D3DXVECTOR4::operator * ( FLOAT f ) const
+{
+ return D3DXVECTOR4(x * f, y * f, z * f, w * f);
+}
+
+D3DXINLINE D3DXVECTOR4
+D3DXVECTOR4::operator / ( FLOAT f ) const
+{
+ FLOAT fInv = 1.0f / f;
+ return D3DXVECTOR4(x * fInv, y * fInv, z * fInv, w * fInv);
+}
+
+
+D3DXINLINE D3DXVECTOR4
+operator * ( FLOAT f, CONST D3DXVECTOR4& v )
+{
+ return D3DXVECTOR4(f * v.x, f * v.y, f * v.z, f * v.w);
+}
+
+
+D3DXINLINE BOOL
+D3DXVECTOR4::operator == ( CONST D3DXVECTOR4& v ) const
+{
+ return x == v.x && y == v.y && z == v.z && w == v.w;
+}
+
+D3DXINLINE BOOL
+D3DXVECTOR4::operator != ( CONST D3DXVECTOR4& v ) const
+{
+ return x != v.x || y != v.y || z != v.z || w != v.w;
+}
+
+
+//--------------------------
+// Matrix
+//--------------------------
+D3DXINLINE
+D3DXMATRIX::D3DXMATRIX( CONST FLOAT* pf )
+{
+#ifdef D3DX_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ memcpy(&_11, pf, sizeof(D3DXMATRIX));
+}
+
+D3DXINLINE
+D3DXMATRIX::D3DXMATRIX( CONST D3DMATRIX& mat )
+{
+ memcpy(&_11, &mat, sizeof(D3DXMATRIX));
+}
+
+D3DXINLINE
+D3DXMATRIX::D3DXMATRIX( FLOAT f11, FLOAT f12, FLOAT f13, FLOAT f14,
+ FLOAT f21, FLOAT f22, FLOAT f23, FLOAT f24,
+ FLOAT f31, FLOAT f32, FLOAT f33, FLOAT f34,
+ FLOAT f41, FLOAT f42, FLOAT f43, FLOAT f44 )
+{
+ _11 = f11; _12 = f12; _13 = f13; _14 = f14;
+ _21 = f21; _22 = f22; _23 = f23; _24 = f24;
+ _31 = f31; _32 = f32; _33 = f33; _34 = f34;
+ _41 = f41; _42 = f42; _43 = f43; _44 = f44;
+}
+
+
+
+// access grants
+D3DXINLINE FLOAT&
+D3DXMATRIX::operator () ( UINT iRow, UINT iCol )
+{
+ return m[iRow][iCol];
+}
+
+D3DXINLINE FLOAT
+D3DXMATRIX::operator () ( UINT iRow, UINT iCol ) const
+{
+ return m[iRow][iCol];
+}
+
+
+// casting operators
+D3DXINLINE
+D3DXMATRIX::operator FLOAT* ()
+{
+ return (FLOAT *) &_11;
+}
+
+D3DXINLINE
+D3DXMATRIX::operator CONST FLOAT* () const
+{
+ return (CONST FLOAT *) &_11;
+}
+
+
+// assignment operators
+D3DXINLINE D3DXMATRIX&
+D3DXMATRIX::operator *= ( CONST D3DXMATRIX& mat )
+{
+ D3DXMatrixMultiply(this, this, &mat);
+ return *this;
+}
+
+D3DXINLINE D3DXMATRIX&
+D3DXMATRIX::operator += ( CONST D3DXMATRIX& mat )
+{
+ _11 += mat._11; _12 += mat._12; _13 += mat._13; _14 += mat._14;
+ _21 += mat._21; _22 += mat._22; _23 += mat._23; _24 += mat._24;
+ _31 += mat._31; _32 += mat._32; _33 += mat._33; _34 += mat._34;
+ _41 += mat._41; _42 += mat._42; _43 += mat._43; _44 += mat._44;
+ return *this;
+}
+
+D3DXINLINE D3DXMATRIX&
+D3DXMATRIX::operator -= ( CONST D3DXMATRIX& mat )
+{
+ _11 -= mat._11; _12 -= mat._12; _13 -= mat._13; _14 -= mat._14;
+ _21 -= mat._21; _22 -= mat._22; _23 -= mat._23; _24 -= mat._24;
+ _31 -= mat._31; _32 -= mat._32; _33 -= mat._33; _34 -= mat._34;
+ _41 -= mat._41; _42 -= mat._42; _43 -= mat._43; _44 -= mat._44;
+ return *this;
+}
+
+D3DXINLINE D3DXMATRIX&
+D3DXMATRIX::operator *= ( FLOAT f )
+{
+ _11 *= f; _12 *= f; _13 *= f; _14 *= f;
+ _21 *= f; _22 *= f; _23 *= f; _24 *= f;
+ _31 *= f; _32 *= f; _33 *= f; _34 *= f;
+ _41 *= f; _42 *= f; _43 *= f; _44 *= f;
+ return *this;
+}
+
+D3DXINLINE D3DXMATRIX&
+D3DXMATRIX::operator /= ( FLOAT f )
+{
+ FLOAT fInv = 1.0f / f;
+ _11 *= fInv; _12 *= fInv; _13 *= fInv; _14 *= fInv;
+ _21 *= fInv; _22 *= fInv; _23 *= fInv; _24 *= fInv;
+ _31 *= fInv; _32 *= fInv; _33 *= fInv; _34 *= fInv;
+ _41 *= fInv; _42 *= fInv; _43 *= fInv; _44 *= fInv;
+ return *this;
+}
+
+
+// unary operators
+D3DXINLINE D3DXMATRIX
+D3DXMATRIX::operator + () const
+{
+ return *this;
+}
+
+D3DXINLINE D3DXMATRIX
+D3DXMATRIX::operator - () const
+{
+ return D3DXMATRIX(-_11, -_12, -_13, -_14,
+ -_21, -_22, -_23, -_24,
+ -_31, -_32, -_33, -_34,
+ -_41, -_42, -_43, -_44);
+}
+
+
+// binary operators
+D3DXINLINE D3DXMATRIX
+D3DXMATRIX::operator * ( CONST D3DXMATRIX& mat ) const
+{
+ D3DXMATRIX matT;
+ D3DXMatrixMultiply(&matT, this, &mat);
+ return matT;
+}
+
+D3DXINLINE D3DXMATRIX
+D3DXMATRIX::operator + ( CONST D3DXMATRIX& mat ) const
+{
+ return D3DXMATRIX(_11 + mat._11, _12 + mat._12, _13 + mat._13, _14 + mat._14,
+ _21 + mat._21, _22 + mat._22, _23 + mat._23, _24 + mat._24,
+ _31 + mat._31, _32 + mat._32, _33 + mat._33, _34 + mat._34,
+ _41 + mat._41, _42 + mat._42, _43 + mat._43, _44 + mat._44);
+}
+
+D3DXINLINE D3DXMATRIX
+D3DXMATRIX::operator - ( CONST D3DXMATRIX& mat ) const
+{
+ return D3DXMATRIX(_11 - mat._11, _12 - mat._12, _13 - mat._13, _14 - mat._14,
+ _21 - mat._21, _22 - mat._22, _23 - mat._23, _24 - mat._24,
+ _31 - mat._31, _32 - mat._32, _33 - mat._33, _34 - mat._34,
+ _41 - mat._41, _42 - mat._42, _43 - mat._43, _44 - mat._44);
+}
+
+D3DXINLINE D3DXMATRIX
+D3DXMATRIX::operator * ( FLOAT f ) const
+{
+ return D3DXMATRIX(_11 * f, _12 * f, _13 * f, _14 * f,
+ _21 * f, _22 * f, _23 * f, _24 * f,
+ _31 * f, _32 * f, _33 * f, _34 * f,
+ _41 * f, _42 * f, _43 * f, _44 * f);
+}
+
+D3DXINLINE D3DXMATRIX
+D3DXMATRIX::operator / ( FLOAT f ) const
+{
+ FLOAT fInv = 1.0f / f;
+ return D3DXMATRIX(_11 * fInv, _12 * fInv, _13 * fInv, _14 * fInv,
+ _21 * fInv, _22 * fInv, _23 * fInv, _24 * fInv,
+ _31 * fInv, _32 * fInv, _33 * fInv, _34 * fInv,
+ _41 * fInv, _42 * fInv, _43 * fInv, _44 * fInv);
+}
+
+
+D3DXINLINE D3DXMATRIX
+operator * ( FLOAT f, CONST D3DXMATRIX& mat )
+{
+ return D3DXMATRIX(f * mat._11, f * mat._12, f * mat._13, f * mat._14,
+ f * mat._21, f * mat._22, f * mat._23, f * mat._24,
+ f * mat._31, f * mat._32, f * mat._33, f * mat._34,
+ f * mat._41, f * mat._42, f * mat._43, f * mat._44);
+}
+
+
+D3DXINLINE BOOL
+D3DXMATRIX::operator == ( CONST D3DXMATRIX& mat ) const
+{
+ return 0 == memcmp(this, &mat, sizeof(D3DXMATRIX));
+}
+
+D3DXINLINE BOOL
+D3DXMATRIX::operator != ( CONST D3DXMATRIX& mat ) const
+{
+ return 0 != memcmp(this, &mat, sizeof(D3DXMATRIX));
+}
+
+
+
+//--------------------------
+// Quaternion
+//--------------------------
+
+D3DXINLINE
+D3DXQUATERNION::D3DXQUATERNION( CONST FLOAT* pf )
+{
+#ifdef D3DX_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ x = pf[0];
+ y = pf[1];
+ z = pf[2];
+ w = pf[3];
+}
+
+D3DXINLINE
+D3DXQUATERNION::D3DXQUATERNION( FLOAT fx, FLOAT fy, FLOAT fz, FLOAT fw )
+{
+ x = fx;
+ y = fy;
+ z = fz;
+ w = fw;
+}
+
+
+// casting
+D3DXINLINE
+D3DXQUATERNION::operator FLOAT* ()
+{
+ return (FLOAT *) &x;
+}
+
+D3DXINLINE
+D3DXQUATERNION::operator CONST FLOAT* () const
+{
+ return (CONST FLOAT *) &x;
+}
+
+
+// assignment operators
+D3DXINLINE D3DXQUATERNION&
+D3DXQUATERNION::operator += ( CONST D3DXQUATERNION& q )
+{
+ x += q.x;
+ y += q.y;
+ z += q.z;
+ w += q.w;
+ return *this;
+}
+
+D3DXINLINE D3DXQUATERNION&
+D3DXQUATERNION::operator -= ( CONST D3DXQUATERNION& q )
+{
+ x -= q.x;
+ y -= q.y;
+ z -= q.z;
+ w -= q.w;
+ return *this;
+}
+
+D3DXINLINE D3DXQUATERNION&
+D3DXQUATERNION::operator *= ( CONST D3DXQUATERNION& q )
+{
+ D3DXQuaternionMultiply(this, this, &q);
+ return *this;
+}
+
+D3DXINLINE D3DXQUATERNION&
+D3DXQUATERNION::operator *= ( FLOAT f )
+{
+ x *= f;
+ y *= f;
+ z *= f;
+ w *= f;
+ return *this;
+}
+
+D3DXINLINE D3DXQUATERNION&
+D3DXQUATERNION::operator /= ( FLOAT f )
+{
+ FLOAT fInv = 1.0f / f;
+ x *= fInv;
+ y *= fInv;
+ z *= fInv;
+ w *= fInv;
+ return *this;
+}
+
+
+// unary operators
+D3DXINLINE D3DXQUATERNION
+D3DXQUATERNION::operator + () const
+{
+ return *this;
+}
+
+D3DXINLINE D3DXQUATERNION
+D3DXQUATERNION::operator - () const
+{
+ return D3DXQUATERNION(-x, -y, -z, -w);
+}
+
+
+// binary operators
+D3DXINLINE D3DXQUATERNION
+D3DXQUATERNION::operator + ( CONST D3DXQUATERNION& q ) const
+{
+ return D3DXQUATERNION(x + q.x, y + q.y, z + q.z, w + q.w);
+}
+
+D3DXINLINE D3DXQUATERNION
+D3DXQUATERNION::operator - ( CONST D3DXQUATERNION& q ) const
+{
+ return D3DXQUATERNION(x - q.x, y - q.y, z - q.z, w - q.w);
+}
+
+D3DXINLINE D3DXQUATERNION
+D3DXQUATERNION::operator * ( CONST D3DXQUATERNION& q ) const
+{
+ D3DXQUATERNION qT;
+ D3DXQuaternionMultiply(&qT, this, &q);
+ return qT;
+}
+
+D3DXINLINE D3DXQUATERNION
+D3DXQUATERNION::operator * ( FLOAT f ) const
+{
+ return D3DXQUATERNION(x * f, y * f, z * f, w * f);
+}
+
+D3DXINLINE D3DXQUATERNION
+D3DXQUATERNION::operator / ( FLOAT f ) const
+{
+ FLOAT fInv = 1.0f / f;
+ return D3DXQUATERNION(x * fInv, y * fInv, z * fInv, w * fInv);
+}
+
+
+D3DXINLINE D3DXQUATERNION
+operator * (FLOAT f, CONST D3DXQUATERNION& q )
+{
+ return D3DXQUATERNION(f * q.x, f * q.y, f * q.z, f * q.w);
+}
+
+
+D3DXINLINE BOOL
+D3DXQUATERNION::operator == ( CONST D3DXQUATERNION& q ) const
+{
+ return x == q.x && y == q.y && z == q.z && w == q.w;
+}
+
+D3DXINLINE BOOL
+D3DXQUATERNION::operator != ( CONST D3DXQUATERNION& q ) const
+{
+ return x != q.x || y != q.y || z != q.z || w != q.w;
+}
+
+
+
+//--------------------------
+// Plane
+//--------------------------
+
+D3DXINLINE
+D3DXPLANE::D3DXPLANE( CONST FLOAT* pf )
+{
+#ifdef D3DX_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ a = pf[0];
+ b = pf[1];
+ c = pf[2];
+ d = pf[3];
+}
+
+D3DXINLINE
+D3DXPLANE::D3DXPLANE( FLOAT fa, FLOAT fb, FLOAT fc, FLOAT fd )
+{
+ a = fa;
+ b = fb;
+ c = fc;
+ d = fd;
+}
+
+
+// casting
+D3DXINLINE
+D3DXPLANE::operator FLOAT* ()
+{
+ return (FLOAT *) &a;
+}
+
+D3DXINLINE
+D3DXPLANE::operator CONST FLOAT* () const
+{
+ return (CONST FLOAT *) &a;
+}
+
+
+// unary operators
+D3DXINLINE D3DXPLANE
+D3DXPLANE::operator + () const
+{
+ return *this;
+}
+
+D3DXINLINE D3DXPLANE
+D3DXPLANE::operator - () const
+{
+ return D3DXPLANE(-a, -b, -c, -d);
+}
+
+
+// binary operators
+D3DXINLINE BOOL
+D3DXPLANE::operator == ( CONST D3DXPLANE& p ) const
+{
+ return a == p.a && b == p.b && c == p.c && d == p.d;
+}
+
+D3DXINLINE BOOL
+D3DXPLANE::operator != ( CONST D3DXPLANE& p ) const
+{
+ return a != p.a || b != p.b || c != p.c || d != p.d;
+}
+
+
+
+
+//--------------------------
+// Color
+//--------------------------
+
+D3DXINLINE
+D3DXCOLOR::D3DXCOLOR( DWORD dw )
+{
+ CONST FLOAT f = 1.0f / 255.0f;
+ r = f * (FLOAT) (unsigned char) (dw >> 16);
+ g = f * (FLOAT) (unsigned char) (dw >> 8);
+ b = f * (FLOAT) (unsigned char) (dw >> 0);
+ a = f * (FLOAT) (unsigned char) (dw >> 24);
+}
+
+D3DXINLINE
+D3DXCOLOR::D3DXCOLOR( CONST FLOAT* pf )
+{
+#ifdef D3DX_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ r = pf[0];
+ g = pf[1];
+ b = pf[2];
+ a = pf[3];
+}
+
+D3DXINLINE
+D3DXCOLOR::D3DXCOLOR( CONST D3DCOLORVALUE& c )
+{
+ r = c.r;
+ g = c.g;
+ b = c.b;
+ a = c.a;
+}
+
+D3DXINLINE
+D3DXCOLOR::D3DXCOLOR( FLOAT fr, FLOAT fg, FLOAT fb, FLOAT fa )
+{
+ r = fr;
+ g = fg;
+ b = fb;
+ a = fa;
+}
+
+
+// casting
+D3DXINLINE
+D3DXCOLOR::operator DWORD () const
+{
+ DWORD dwR = r >= 1.0f ? 0xff : r <= 0.0f ? 0x00 : (DWORD) (r * 255.0f + 0.5f);
+ DWORD dwG = g >= 1.0f ? 0xff : g <= 0.0f ? 0x00 : (DWORD) (g * 255.0f + 0.5f);
+ DWORD dwB = b >= 1.0f ? 0xff : b <= 0.0f ? 0x00 : (DWORD) (b * 255.0f + 0.5f);
+ DWORD dwA = a >= 1.0f ? 0xff : a <= 0.0f ? 0x00 : (DWORD) (a * 255.0f + 0.5f);
+
+ return (dwA << 24) | (dwR << 16) | (dwG << 8) | dwB;
+}
+
+
+D3DXINLINE
+D3DXCOLOR::operator FLOAT * ()
+{
+ return (FLOAT *) &r;
+}
+
+D3DXINLINE
+D3DXCOLOR::operator CONST FLOAT * () const
+{
+ return (CONST FLOAT *) &r;
+}
+
+
+D3DXINLINE
+D3DXCOLOR::operator D3DCOLORVALUE * ()
+{
+ return (D3DCOLORVALUE *) &r;
+}
+
+D3DXINLINE
+D3DXCOLOR::operator CONST D3DCOLORVALUE * () const
+{
+ return (CONST D3DCOLORVALUE *) &r;
+}
+
+
+D3DXINLINE
+D3DXCOLOR::operator D3DCOLORVALUE& ()
+{
+ return *((D3DCOLORVALUE *) &r);
+}
+
+D3DXINLINE
+D3DXCOLOR::operator CONST D3DCOLORVALUE& () const
+{
+ return *((CONST D3DCOLORVALUE *) &r);
+}
+
+
+// assignment operators
+D3DXINLINE D3DXCOLOR&
+D3DXCOLOR::operator += ( CONST D3DXCOLOR& c )
+{
+ r += c.r;
+ g += c.g;
+ b += c.b;
+ a += c.a;
+ return *this;
+}
+
+D3DXINLINE D3DXCOLOR&
+D3DXCOLOR::operator -= ( CONST D3DXCOLOR& c )
+{
+ r -= c.r;
+ g -= c.g;
+ b -= c.b;
+ a -= c.a;
+ return *this;
+}
+
+D3DXINLINE D3DXCOLOR&
+D3DXCOLOR::operator *= ( FLOAT f )
+{
+ r *= f;
+ g *= f;
+ b *= f;
+ a *= f;
+ return *this;
+}
+
+D3DXINLINE D3DXCOLOR&
+D3DXCOLOR::operator /= ( FLOAT f )
+{
+ FLOAT fInv = 1.0f / f;
+ r *= fInv;
+ g *= fInv;
+ b *= fInv;
+ a *= fInv;
+ return *this;
+}
+
+
+// unary operators
+D3DXINLINE D3DXCOLOR
+D3DXCOLOR::operator + () const
+{
+ return *this;
+}
+
+D3DXINLINE D3DXCOLOR
+D3DXCOLOR::operator - () const
+{
+ return D3DXCOLOR(-r, -g, -b, -a);
+}
+
+
+// binary operators
+D3DXINLINE D3DXCOLOR
+D3DXCOLOR::operator + ( CONST D3DXCOLOR& c ) const
+{
+ return D3DXCOLOR(r + c.r, g + c.g, b + c.b, a + c.a);
+}
+
+D3DXINLINE D3DXCOLOR
+D3DXCOLOR::operator - ( CONST D3DXCOLOR& c ) const
+{
+ return D3DXCOLOR(r - c.r, g - c.g, b - c.b, a - c.a);
+}
+
+D3DXINLINE D3DXCOLOR
+D3DXCOLOR::operator * ( FLOAT f ) const
+{
+ return D3DXCOLOR(r * f, g * f, b * f, a * f);
+}
+
+D3DXINLINE D3DXCOLOR
+D3DXCOLOR::operator / ( FLOAT f ) const
+{
+ FLOAT fInv = 1.0f / f;
+ return D3DXCOLOR(r * fInv, g * fInv, b * fInv, a * fInv);
+}
+
+
+D3DXINLINE D3DXCOLOR
+operator * (FLOAT f, CONST D3DXCOLOR& c )
+{
+ return D3DXCOLOR(f * c.r, f * c.g, f * c.b, f * c.a);
+}
+
+
+D3DXINLINE BOOL
+D3DXCOLOR::operator == ( CONST D3DXCOLOR& c ) const
+{
+ return r == c.r && g == c.g && b == c.b && a == c.a;
+}
+
+D3DXINLINE BOOL
+D3DXCOLOR::operator != ( CONST D3DXCOLOR& c ) const
+{
+ return r != c.r || g != c.g || b != c.b || a != c.a;
+}
+
+
+#endif //__cplusplus
+
+
+
+//===========================================================================
+//
+// Inline functions
+//
+//===========================================================================
+
+
+//--------------------------
+// 2D Vector
+//--------------------------
+
+D3DXINLINE FLOAT D3DXVec2Length
+ ( CONST D3DXVECTOR2 *pV )
+{
+#ifdef D3DX_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+#ifdef __cplusplus
+ return sqrtf(pV->x * pV->x + pV->y * pV->y);
+#else
+ return (FLOAT) sqrt(pV->x * pV->x + pV->y * pV->y);
+#endif
+}
+
+D3DXINLINE FLOAT D3DXVec2LengthSq
+ ( CONST D3DXVECTOR2 *pV )
+{
+#ifdef D3DX_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+ return pV->x * pV->x + pV->y * pV->y;
+}
+
+D3DXINLINE FLOAT D3DXVec2Dot
+ ( CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pV1 || !pV2)
+ return 0.0f;
+#endif
+
+ return pV1->x * pV2->x + pV1->y * pV2->y;
+}
+
+D3DXINLINE FLOAT D3DXVec2CCW
+ ( CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pV1 || !pV2)
+ return 0.0f;
+#endif
+
+ return pV1->x * pV2->y - pV1->y * pV2->x;
+}
+
+D3DXINLINE D3DXVECTOR2* D3DXVec2Add
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + pV2->x;
+ pOut->y = pV1->y + pV2->y;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR2* D3DXVec2Subtract
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x - pV2->x;
+ pOut->y = pV1->y - pV2->y;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR2* D3DXVec2Minimize
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x < pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y < pV2->y ? pV1->y : pV2->y;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR2* D3DXVec2Maximize
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x > pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y > pV2->y ? pV1->y : pV2->y;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR2* D3DXVec2Scale
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV, FLOAT s )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV)
+ return NULL;
+#endif
+
+ pOut->x = pV->x * s;
+ pOut->y = pV->y * s;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR2* D3DXVec2Lerp
+ ( D3DXVECTOR2 *pOut, CONST D3DXVECTOR2 *pV1, CONST D3DXVECTOR2 *pV2,
+ FLOAT s )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + s * (pV2->x - pV1->x);
+ pOut->y = pV1->y + s * (pV2->y - pV1->y);
+ return pOut;
+}
+
+
+//--------------------------
+// 3D Vector
+//--------------------------
+
+D3DXINLINE FLOAT D3DXVec3Length
+ ( CONST D3DXVECTOR3 *pV )
+{
+#ifdef D3DX_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+#ifdef __cplusplus
+ return sqrtf(pV->x * pV->x + pV->y * pV->y + pV->z * pV->z);
+#else
+ return (FLOAT) sqrt(pV->x * pV->x + pV->y * pV->y + pV->z * pV->z);
+#endif
+}
+
+D3DXINLINE FLOAT D3DXVec3LengthSq
+ ( CONST D3DXVECTOR3 *pV )
+{
+#ifdef D3DX_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+ return pV->x * pV->x + pV->y * pV->y + pV->z * pV->z;
+}
+
+D3DXINLINE FLOAT D3DXVec3Dot
+ ( CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pV1 || !pV2)
+ return 0.0f;
+#endif
+
+ return pV1->x * pV2->x + pV1->y * pV2->y + pV1->z * pV2->z;
+}
+
+D3DXINLINE D3DXVECTOR3* D3DXVec3Cross
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 )
+{
+ D3DXVECTOR3 v;
+
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ v.x = pV1->y * pV2->z - pV1->z * pV2->y;
+ v.y = pV1->z * pV2->x - pV1->x * pV2->z;
+ v.z = pV1->x * pV2->y - pV1->y * pV2->x;
+
+ *pOut = v;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR3* D3DXVec3Add
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + pV2->x;
+ pOut->y = pV1->y + pV2->y;
+ pOut->z = pV1->z + pV2->z;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR3* D3DXVec3Subtract
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x - pV2->x;
+ pOut->y = pV1->y - pV2->y;
+ pOut->z = pV1->z - pV2->z;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR3* D3DXVec3Minimize
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x < pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y < pV2->y ? pV1->y : pV2->y;
+ pOut->z = pV1->z < pV2->z ? pV1->z : pV2->z;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR3* D3DXVec3Maximize
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x > pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y > pV2->y ? pV1->y : pV2->y;
+ pOut->z = pV1->z > pV2->z ? pV1->z : pV2->z;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR3* D3DXVec3Scale
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV, FLOAT s)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV)
+ return NULL;
+#endif
+
+ pOut->x = pV->x * s;
+ pOut->y = pV->y * s;
+ pOut->z = pV->z * s;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR3* D3DXVec3Lerp
+ ( D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV1, CONST D3DXVECTOR3 *pV2,
+ FLOAT s )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + s * (pV2->x - pV1->x);
+ pOut->y = pV1->y + s * (pV2->y - pV1->y);
+ pOut->z = pV1->z + s * (pV2->z - pV1->z);
+ return pOut;
+}
+
+
+//--------------------------
+// 4D Vector
+//--------------------------
+
+D3DXINLINE FLOAT D3DXVec4Length
+ ( CONST D3DXVECTOR4 *pV )
+{
+#ifdef D3DX_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+#ifdef __cplusplus
+ return sqrtf(pV->x * pV->x + pV->y * pV->y + pV->z * pV->z + pV->w * pV->w);
+#else
+ return (FLOAT) sqrt(pV->x * pV->x + pV->y * pV->y + pV->z * pV->z + pV->w * pV->w);
+#endif
+}
+
+D3DXINLINE FLOAT D3DXVec4LengthSq
+ ( CONST D3DXVECTOR4 *pV )
+{
+#ifdef D3DX_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+ return pV->x * pV->x + pV->y * pV->y + pV->z * pV->z + pV->w * pV->w;
+}
+
+D3DXINLINE FLOAT D3DXVec4Dot
+ ( CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pV1 || !pV2)
+ return 0.0f;
+#endif
+
+ return pV1->x * pV2->x + pV1->y * pV2->y + pV1->z * pV2->z + pV1->w * pV2->w;
+}
+
+D3DXINLINE D3DXVECTOR4* D3DXVec4Add
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + pV2->x;
+ pOut->y = pV1->y + pV2->y;
+ pOut->z = pV1->z + pV2->z;
+ pOut->w = pV1->w + pV2->w;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR4* D3DXVec4Subtract
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x - pV2->x;
+ pOut->y = pV1->y - pV2->y;
+ pOut->z = pV1->z - pV2->z;
+ pOut->w = pV1->w - pV2->w;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR4* D3DXVec4Minimize
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x < pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y < pV2->y ? pV1->y : pV2->y;
+ pOut->z = pV1->z < pV2->z ? pV1->z : pV2->z;
+ pOut->w = pV1->w < pV2->w ? pV1->w : pV2->w;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR4* D3DXVec4Maximize
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x > pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y > pV2->y ? pV1->y : pV2->y;
+ pOut->z = pV1->z > pV2->z ? pV1->z : pV2->z;
+ pOut->w = pV1->w > pV2->w ? pV1->w : pV2->w;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR4* D3DXVec4Scale
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV, FLOAT s)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV)
+ return NULL;
+#endif
+
+ pOut->x = pV->x * s;
+ pOut->y = pV->y * s;
+ pOut->z = pV->z * s;
+ pOut->w = pV->w * s;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR4* D3DXVec4Lerp
+ ( D3DXVECTOR4 *pOut, CONST D3DXVECTOR4 *pV1, CONST D3DXVECTOR4 *pV2,
+ FLOAT s )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + s * (pV2->x - pV1->x);
+ pOut->y = pV1->y + s * (pV2->y - pV1->y);
+ pOut->z = pV1->z + s * (pV2->z - pV1->z);
+ pOut->w = pV1->w + s * (pV2->w - pV1->w);
+ return pOut;
+}
+
+
+//--------------------------
+// 4D Matrix
+//--------------------------
+
+D3DXINLINE D3DXMATRIX* D3DXMatrixIdentity
+ ( D3DXMATRIX *pOut )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut)
+ return NULL;
+#endif
+
+ pOut->m[0][1] = pOut->m[0][2] = pOut->m[0][3] =
+ pOut->m[1][0] = pOut->m[1][2] = pOut->m[1][3] =
+ pOut->m[2][0] = pOut->m[2][1] = pOut->m[2][3] =
+ pOut->m[3][0] = pOut->m[3][1] = pOut->m[3][2] = 0.0f;
+
+ pOut->m[0][0] = pOut->m[1][1] = pOut->m[2][2] = pOut->m[3][3] = 1.0f;
+ return pOut;
+}
+
+
+D3DXINLINE BOOL D3DXMatrixIsIdentity
+ ( CONST D3DXMATRIX *pM )
+{
+#ifdef D3DX_DEBUG
+ if(!pM)
+ return FALSE;
+#endif
+
+ return pM->m[0][0] == 1.0f && pM->m[0][1] == 0.0f && pM->m[0][2] == 0.0f && pM->m[0][3] == 0.0f &&
+ pM->m[1][0] == 0.0f && pM->m[1][1] == 1.0f && pM->m[1][2] == 0.0f && pM->m[1][3] == 0.0f &&
+ pM->m[2][0] == 0.0f && pM->m[2][1] == 0.0f && pM->m[2][2] == 1.0f && pM->m[2][3] == 0.0f &&
+ pM->m[3][0] == 0.0f && pM->m[3][1] == 0.0f && pM->m[3][2] == 0.0f && pM->m[3][3] == 1.0f;
+}
+
+
+//--------------------------
+// Quaternion
+//--------------------------
+
+D3DXINLINE FLOAT D3DXQuaternionLength
+ ( CONST D3DXQUATERNION *pQ )
+{
+#ifdef D3DX_DEBUG
+ if(!pQ)
+ return 0.0f;
+#endif
+
+#ifdef __cplusplus
+ return sqrtf(pQ->x * pQ->x + pQ->y * pQ->y + pQ->z * pQ->z + pQ->w * pQ->w);
+#else
+ return (FLOAT) sqrt(pQ->x * pQ->x + pQ->y * pQ->y + pQ->z * pQ->z + pQ->w * pQ->w);
+#endif
+}
+
+D3DXINLINE FLOAT D3DXQuaternionLengthSq
+ ( CONST D3DXQUATERNION *pQ )
+{
+#ifdef D3DX_DEBUG
+ if(!pQ)
+ return 0.0f;
+#endif
+
+ return pQ->x * pQ->x + pQ->y * pQ->y + pQ->z * pQ->z + pQ->w * pQ->w;
+}
+
+D3DXINLINE FLOAT D3DXQuaternionDot
+ ( CONST D3DXQUATERNION *pQ1, CONST D3DXQUATERNION *pQ2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pQ1 || !pQ2)
+ return 0.0f;
+#endif
+
+ return pQ1->x * pQ2->x + pQ1->y * pQ2->y + pQ1->z * pQ2->z + pQ1->w * pQ2->w;
+}
+
+
+D3DXINLINE D3DXQUATERNION* D3DXQuaternionIdentity
+ ( D3DXQUATERNION *pOut )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut)
+ return NULL;
+#endif
+
+ pOut->x = pOut->y = pOut->z = 0.0f;
+ pOut->w = 1.0f;
+ return pOut;
+}
+
+D3DXINLINE BOOL D3DXQuaternionIsIdentity
+ ( CONST D3DXQUATERNION *pQ )
+{
+#ifdef D3DX_DEBUG
+ if(!pQ)
+ return FALSE;
+#endif
+
+ return pQ->x == 0.0f && pQ->y == 0.0f && pQ->z == 0.0f && pQ->w == 1.0f;
+}
+
+
+D3DXINLINE D3DXQUATERNION* D3DXQuaternionConjugate
+ ( D3DXQUATERNION *pOut, CONST D3DXQUATERNION *pQ )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pQ)
+ return NULL;
+#endif
+
+ pOut->x = -pQ->x;
+ pOut->y = -pQ->y;
+ pOut->z = -pQ->z;
+ pOut->w = pQ->w;
+ return pOut;
+}
+
+
+//--------------------------
+// Plane
+//--------------------------
+
+D3DXINLINE FLOAT D3DXPlaneDot
+ ( CONST D3DXPLANE *pP, CONST D3DXVECTOR4 *pV)
+{
+#ifdef D3DX_DEBUG
+ if(!pP || !pV)
+ return 0.0f;
+#endif
+
+ return pP->a * pV->x + pP->b * pV->y + pP->c * pV->z + pP->d * pV->w;
+}
+
+D3DXINLINE FLOAT D3DXPlaneDotCoord
+ ( CONST D3DXPLANE *pP, CONST D3DXVECTOR3 *pV)
+{
+#ifdef D3DX_DEBUG
+ if(!pP || !pV)
+ return 0.0f;
+#endif
+
+ return pP->a * pV->x + pP->b * pV->y + pP->c * pV->z + pP->d;
+}
+
+D3DXINLINE FLOAT D3DXPlaneDotNormal
+ ( CONST D3DXPLANE *pP, CONST D3DXVECTOR3 *pV)
+{
+#ifdef D3DX_DEBUG
+ if(!pP || !pV)
+ return 0.0f;
+#endif
+
+ return pP->a * pV->x + pP->b * pV->y + pP->c * pV->z;
+}
+
+
+//--------------------------
+// Color
+//--------------------------
+
+D3DXINLINE D3DXCOLOR* D3DXColorNegative
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pC)
+ return NULL;
+#endif
+
+ pOut->r = 1.0f - pC->r;
+ pOut->g = 1.0f - pC->g;
+ pOut->b = 1.0f - pC->b;
+ pOut->a = pC->a;
+ return pOut;
+}
+
+D3DXINLINE D3DXCOLOR* D3DXColorAdd
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pC1 || !pC2)
+ return NULL;
+#endif
+
+ pOut->r = pC1->r + pC2->r;
+ pOut->g = pC1->g + pC2->g;
+ pOut->b = pC1->b + pC2->b;
+ pOut->a = pC1->a + pC2->a;
+ return pOut;
+}
+
+D3DXINLINE D3DXCOLOR* D3DXColorSubtract
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pC1 || !pC2)
+ return NULL;
+#endif
+
+ pOut->r = pC1->r - pC2->r;
+ pOut->g = pC1->g - pC2->g;
+ pOut->b = pC1->b - pC2->b;
+ pOut->a = pC1->a - pC2->a;
+ return pOut;
+}
+
+D3DXINLINE D3DXCOLOR* D3DXColorScale
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC, FLOAT s)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pC)
+ return NULL;
+#endif
+
+ pOut->r = pC->r * s;
+ pOut->g = pC->g * s;
+ pOut->b = pC->b * s;
+ pOut->a = pC->a * s;
+ return pOut;
+}
+
+D3DXINLINE D3DXCOLOR* D3DXColorModulate
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pC1 || !pC2)
+ return NULL;
+#endif
+
+ pOut->r = pC1->r * pC2->r;
+ pOut->g = pC1->g * pC2->g;
+ pOut->b = pC1->b * pC2->b;
+ pOut->a = pC1->a * pC2->a;
+ return pOut;
+}
+
+D3DXINLINE D3DXCOLOR* D3DXColorLerp
+ (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2, FLOAT s)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pC1 || !pC2)
+ return NULL;
+#endif
+
+ pOut->r = pC1->r + s * (pC2->r - pC1->r);
+ pOut->g = pC1->g + s * (pC2->g - pC1->g);
+ pOut->b = pC1->b + s * (pC2->b - pC1->b);
+ pOut->a = pC1->a + s * (pC2->a - pC1->a);
+ return pOut;
+}
+
+
+#endif // __D3DX8MATH_INL__
diff --git a/src/dep/include/DXSDK/include/d3dx8mesh.h b/src/dep/include/DXSDK/include/d3dx8mesh.h
new file mode 100644
index 0000000..d4cadd9
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3dx8mesh.h
@@ -0,0 +1,760 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dx8mesh.h
+// Content: D3DX mesh types and functions
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#include "d3dx8.h"
+
+#ifndef __D3DX8MESH_H__
+#define __D3DX8MESH_H__
+
+#include "dxfile.h" // defines LPDIRECTXFILEDATA
+
+// {2A835771-BF4D-43f4-8E14-82A809F17D8A}
+DEFINE_GUID(IID_ID3DXBaseMesh,
+0x2a835771, 0xbf4d, 0x43f4, 0x8e, 0x14, 0x82, 0xa8, 0x9, 0xf1, 0x7d, 0x8a);
+
+// {CCAE5C3B-4DD1-4d0f-997E-4684CA64557F}
+DEFINE_GUID(IID_ID3DXMesh,
+0xccae5c3b, 0x4dd1, 0x4d0f, 0x99, 0x7e, 0x46, 0x84, 0xca, 0x64, 0x55, 0x7f);
+
+// {19FBE386-C282-4659-97BD-CB869B084A6C}
+DEFINE_GUID(IID_ID3DXPMesh,
+0x19fbe386, 0xc282, 0x4659, 0x97, 0xbd, 0xcb, 0x86, 0x9b, 0x8, 0x4a, 0x6c);
+
+// {4E3CA05C-D4FF-4d11-8A02-16459E08F6F4}
+DEFINE_GUID(IID_ID3DXSPMesh,
+0x4e3ca05c, 0xd4ff, 0x4d11, 0x8a, 0x2, 0x16, 0x45, 0x9e, 0x8, 0xf6, 0xf4);
+
+// {8DB06ECC-EBFC-408a-9404-3074B4773515}
+DEFINE_GUID(IID_ID3DXSkinMesh,
+0x8db06ecc, 0xebfc, 0x408a, 0x94, 0x4, 0x30, 0x74, 0xb4, 0x77, 0x35, 0x15);
+
+// Mesh options - lower 3 bytes only, upper byte used by _D3DXMESHOPT option flags
+enum _D3DXMESH {
+ D3DXMESH_32BIT = 0x001, // If set, then use 32 bit indices, if not set use 16 bit indices.
+ D3DXMESH_DONOTCLIP = 0x002, // Use D3DUSAGE_DONOTCLIP for VB & IB.
+ D3DXMESH_POINTS = 0x004, // Use D3DUSAGE_POINTS for VB & IB.
+ D3DXMESH_RTPATCHES = 0x008, // Use D3DUSAGE_RTPATCHES for VB & IB.
+ D3DXMESH_NPATCHES = 0x4000,// Use D3DUSAGE_NPATCHES for VB & IB.
+ D3DXMESH_VB_SYSTEMMEM = 0x010, // Use D3DPOOL_SYSTEMMEM for VB. Overrides D3DXMESH_MANAGEDVERTEXBUFFER
+ D3DXMESH_VB_MANAGED = 0x020, // Use D3DPOOL_MANAGED for VB.
+ D3DXMESH_VB_WRITEONLY = 0x040, // Use D3DUSAGE_WRITEONLY for VB.
+ D3DXMESH_VB_DYNAMIC = 0x080, // Use D3DUSAGE_DYNAMIC for VB.
+ D3DXMESH_VB_SOFTWAREPROCESSING = 0x8000, // Use D3DUSAGE_SOFTWAREPROCESSING for VB.
+ D3DXMESH_IB_SYSTEMMEM = 0x100, // Use D3DPOOL_SYSTEMMEM for IB. Overrides D3DXMESH_MANAGEDINDEXBUFFER
+ D3DXMESH_IB_MANAGED = 0x200, // Use D3DPOOL_MANAGED for IB.
+ D3DXMESH_IB_WRITEONLY = 0x400, // Use D3DUSAGE_WRITEONLY for IB.
+ D3DXMESH_IB_DYNAMIC = 0x800, // Use D3DUSAGE_DYNAMIC for IB.
+ D3DXMESH_IB_SOFTWAREPROCESSING= 0x10000, // Use D3DUSAGE_SOFTWAREPROCESSING for IB.
+
+ D3DXMESH_VB_SHARE = 0x1000, // Valid for Clone* calls only, forces cloned mesh/pmesh to share vertex buffer
+
+ D3DXMESH_USEHWONLY = 0x2000, // Valid for ID3DXSkinMesh::ConvertToBlendedMesh
+
+ // Helper options
+ D3DXMESH_SYSTEMMEM = 0x110, // D3DXMESH_VB_SYSTEMMEM | D3DXMESH_IB_SYSTEMMEM
+ D3DXMESH_MANAGED = 0x220, // D3DXMESH_VB_MANAGED | D3DXMESH_IB_MANAGED
+ D3DXMESH_WRITEONLY = 0x440, // D3DXMESH_VB_WRITEONLY | D3DXMESH_IB_WRITEONLY
+ D3DXMESH_DYNAMIC = 0x880, // D3DXMESH_VB_DYNAMIC | D3DXMESH_IB_DYNAMIC
+ D3DXMESH_SOFTWAREPROCESSING = 0x18000, // D3DXMESH_VB_SOFTWAREPROCESSING | D3DXMESH_IB_SOFTWAREPROCESSING
+
+};
+
+// option field values for specifying min value in D3DXGeneratePMesh and D3DXSimplifyMesh
+enum _D3DXMESHSIMP
+{
+ D3DXMESHSIMP_VERTEX = 0x1,
+ D3DXMESHSIMP_FACE = 0x2,
+
+};
+
+enum _MAX_FVF_DECL_SIZE
+{
+ MAX_FVF_DECL_SIZE = 20
+};
+
+typedef struct ID3DXBaseMesh *LPD3DXBASEMESH;
+typedef struct ID3DXMesh *LPD3DXMESH;
+typedef struct ID3DXPMesh *LPD3DXPMESH;
+typedef struct ID3DXSPMesh *LPD3DXSPMESH;
+typedef struct ID3DXSkinMesh *LPD3DXSKINMESH;
+
+typedef struct _D3DXATTRIBUTERANGE
+{
+ DWORD AttribId;
+ DWORD FaceStart;
+ DWORD FaceCount;
+ DWORD VertexStart;
+ DWORD VertexCount;
+} D3DXATTRIBUTERANGE;
+
+typedef D3DXATTRIBUTERANGE* LPD3DXATTRIBUTERANGE;
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+struct D3DXMATERIAL
+{
+ D3DMATERIAL8 MatD3D;
+ LPSTR pTextureFilename;
+};
+typedef struct D3DXMATERIAL *LPD3DXMATERIAL;
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+typedef struct _D3DXATTRIBUTEWEIGHTS
+{
+ FLOAT Position;
+ FLOAT Boundary;
+ FLOAT Normal;
+ FLOAT Diffuse;
+ FLOAT Specular;
+ FLOAT Tex[8];
+} D3DXATTRIBUTEWEIGHTS;
+
+typedef D3DXATTRIBUTEWEIGHTS* LPD3DXATTRIBUTEWEIGHTS;
+
+enum _D3DXWELDEPSILONSFLAGS
+{
+ D3DXWELDEPSILONS_WELDALL = 0x1, // weld all vertices marked by adjacency as being overlapping
+
+ D3DXWELDEPSILONS_WELDPARTIALMATCHES = 0x2, // if a given vertex component is within epsilon, modify partial matched
+ // vertices so that both components identical AND if all components "equal"
+ // remove one of the vertices
+ D3DXWELDEPSILONS_DONOTREMOVEVERTICES = 0x4, // instructs weld to only allow modifications to vertices and not removal
+ // ONLY valid if D3DXWELDEPSILONS_WELDPARTIALMATCHES is set
+ // useful to modify vertices to be equal, but not allow vertices to be removed
+};
+
+typedef struct _D3DXWELDEPSILONS
+{
+ FLOAT SkinWeights;
+ FLOAT Normal;
+ FLOAT Tex[8];
+ DWORD Flags;
+} D3DXWELDEPSILONS;
+
+typedef D3DXWELDEPSILONS* LPD3DXWELDEPSILONS;
+
+
+#undef INTERFACE
+#define INTERFACE ID3DXBaseMesh
+
+DECLARE_INTERFACE_(ID3DXBaseMesh, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ // ID3DXBaseMesh
+ STDMETHOD(DrawSubset)(THIS_ DWORD AttribId) PURE;
+ STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
+ STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
+ STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
+ STDMETHOD(GetDeclaration)(THIS_ DWORD Declaration[MAX_FVF_DECL_SIZE]) PURE;
+ STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
+ STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
+ STDMETHOD(CloneMeshFVF)(THIS_ DWORD Options,
+ DWORD FVF, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
+ STDMETHOD(CloneMesh)(THIS_ DWORD Options,
+ CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
+ STDMETHOD(GetVertexBuffer)(THIS_ LPDIRECT3DVERTEXBUFFER8* ppVB) PURE;
+ STDMETHOD(GetIndexBuffer)(THIS_ LPDIRECT3DINDEXBUFFER8* ppIB) PURE;
+ STDMETHOD(LockVertexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
+ STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
+ STDMETHOD(LockIndexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
+ STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
+ STDMETHOD(GetAttributeTable)(
+ THIS_ D3DXATTRIBUTERANGE *pAttribTable, DWORD* pAttribTableSize) PURE;
+
+ STDMETHOD(ConvertPointRepsToAdjacency)(THIS_ CONST DWORD* pPRep, DWORD* pAdjacency) PURE;
+ STDMETHOD(ConvertAdjacencyToPointReps)(THIS_ CONST DWORD* pAdjacency, DWORD* pPRep) PURE;
+ STDMETHOD(GenerateAdjacency)(THIS_ FLOAT Epsilon, DWORD* pAdjacency) PURE;
+};
+
+
+#undef INTERFACE
+#define INTERFACE ID3DXMesh
+
+DECLARE_INTERFACE_(ID3DXMesh, ID3DXBaseMesh)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ // ID3DXBaseMesh
+ STDMETHOD(DrawSubset)(THIS_ DWORD AttribId) PURE;
+ STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
+ STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
+ STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
+ STDMETHOD(GetDeclaration)(THIS_ DWORD Declaration[MAX_FVF_DECL_SIZE]) PURE;
+ STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
+ STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
+ STDMETHOD(CloneMeshFVF)(THIS_ DWORD Options,
+ DWORD FVF, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
+ STDMETHOD(CloneMesh)(THIS_ DWORD Options,
+ CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
+ STDMETHOD(GetVertexBuffer)(THIS_ LPDIRECT3DVERTEXBUFFER8* ppVB) PURE;
+ STDMETHOD(GetIndexBuffer)(THIS_ LPDIRECT3DINDEXBUFFER8* ppIB) PURE;
+ STDMETHOD(LockVertexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
+ STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
+ STDMETHOD(LockIndexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
+ STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
+ STDMETHOD(GetAttributeTable)(
+ THIS_ D3DXATTRIBUTERANGE *pAttribTable, DWORD* pAttribTableSize) PURE;
+
+ STDMETHOD(ConvertPointRepsToAdjacency)(THIS_ CONST DWORD* pPRep, DWORD* pAdjacency) PURE;
+ STDMETHOD(ConvertAdjacencyToPointReps)(THIS_ CONST DWORD* pAdjacency, DWORD* pPRep) PURE;
+ STDMETHOD(GenerateAdjacency)(THIS_ FLOAT Epsilon, DWORD* pAdjacency) PURE;
+
+ // ID3DXMesh
+ STDMETHOD(LockAttributeBuffer)(THIS_ DWORD Flags, DWORD** ppData) PURE;
+ STDMETHOD(UnlockAttributeBuffer)(THIS) PURE;
+ STDMETHOD(Optimize)(THIS_ DWORD Flags, CONST DWORD* pAdjacencyIn, DWORD* pAdjacencyOut,
+ DWORD* pFaceRemap, LPD3DXBUFFER *ppVertexRemap,
+ LPD3DXMESH* ppOptMesh) PURE;
+ STDMETHOD(OptimizeInplace)(THIS_ DWORD Flags, CONST DWORD* pAdjacencyIn, DWORD* pAdjacencyOut,
+ DWORD* pFaceRemap, LPD3DXBUFFER *ppVertexRemap) PURE;
+
+};
+
+
+#undef INTERFACE
+#define INTERFACE ID3DXPMesh
+
+DECLARE_INTERFACE_(ID3DXPMesh, ID3DXBaseMesh)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ // ID3DXBaseMesh
+ STDMETHOD(DrawSubset)(THIS_ DWORD AttribId) PURE;
+ STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
+ STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
+ STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
+ STDMETHOD(GetDeclaration)(THIS_ DWORD Declaration[MAX_FVF_DECL_SIZE]) PURE;
+ STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
+ STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
+ STDMETHOD(CloneMeshFVF)(THIS_ DWORD Options,
+ DWORD FVF, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
+ STDMETHOD(CloneMesh)(THIS_ DWORD Options,
+ CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
+ STDMETHOD(GetVertexBuffer)(THIS_ LPDIRECT3DVERTEXBUFFER8* ppVB) PURE;
+ STDMETHOD(GetIndexBuffer)(THIS_ LPDIRECT3DINDEXBUFFER8* ppIB) PURE;
+ STDMETHOD(LockVertexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
+ STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
+ STDMETHOD(LockIndexBuffer)(THIS_ DWORD Flags, BYTE** ppData) PURE;
+ STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
+ STDMETHOD(GetAttributeTable)(
+ THIS_ D3DXATTRIBUTERANGE *pAttribTable, DWORD* pAttribTableSize) PURE;
+
+ STDMETHOD(ConvertPointRepsToAdjacency)(THIS_ CONST DWORD* pPRep, DWORD* pAdjacency) PURE;
+ STDMETHOD(ConvertAdjacencyToPointReps)(THIS_ CONST DWORD* pAdjacency, DWORD* pPRep) PURE;
+ STDMETHOD(GenerateAdjacency)(THIS_ FLOAT Epsilon, DWORD* pAdjacency) PURE;
+
+ // ID3DXPMesh
+ STDMETHOD(ClonePMeshFVF)(THIS_ DWORD Options,
+ DWORD FVF, LPDIRECT3DDEVICE8 pD3D, LPD3DXPMESH* ppCloneMesh) PURE;
+ STDMETHOD(ClonePMesh)(THIS_ DWORD Options,
+ CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3D, LPD3DXPMESH* ppCloneMesh) PURE;
+ STDMETHOD(SetNumFaces)(THIS_ DWORD Faces) PURE;
+ STDMETHOD(SetNumVertices)(THIS_ DWORD Vertices) PURE;
+ STDMETHOD_(DWORD, GetMaxFaces)(THIS) PURE;
+ STDMETHOD_(DWORD, GetMinFaces)(THIS) PURE;
+ STDMETHOD_(DWORD, GetMaxVertices)(THIS) PURE;
+ STDMETHOD_(DWORD, GetMinVertices)(THIS) PURE;
+ STDMETHOD(Save)(THIS_ IStream *pStream, LPD3DXMATERIAL pMaterials, DWORD NumMaterials) PURE;
+
+ STDMETHOD(Optimize)(THIS_ DWORD Flags, DWORD* pAdjacencyOut,
+ DWORD* pFaceRemap, LPD3DXBUFFER *ppVertexRemap,
+ LPD3DXMESH* ppOptMesh) PURE;
+
+ STDMETHOD(OptimizeBaseLOD)(THIS_ DWORD Flags, DWORD* pFaceRemap) PURE;
+ STDMETHOD(TrimByFaces)(THIS_ DWORD NewFacesMin, DWORD NewFacesMax, DWORD *rgiFaceRemap, DWORD *rgiVertRemap) PURE;
+ STDMETHOD(TrimByVertices)(THIS_ DWORD NewVerticesMin, DWORD NewVerticesMax, DWORD *rgiFaceRemap, DWORD *rgiVertRemap) PURE;
+
+ STDMETHOD(GetAdjacency)(THIS_ DWORD* pAdjacency) PURE;
+};
+
+
+#undef INTERFACE
+#define INTERFACE ID3DXSPMesh
+
+DECLARE_INTERFACE_(ID3DXSPMesh, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ // ID3DXSPMesh
+ STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
+ STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
+ STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
+ STDMETHOD(GetDeclaration)(THIS_ DWORD Declaration[MAX_FVF_DECL_SIZE]) PURE;
+ STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
+ STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
+ STDMETHOD(CloneMeshFVF)(THIS_ DWORD Options,
+ DWORD FVF, LPDIRECT3DDEVICE8 pD3D, DWORD *pAdjacencyOut, DWORD *pVertexRemapOut, LPD3DXMESH* ppCloneMesh) PURE;
+ STDMETHOD(CloneMesh)(THIS_ DWORD Options,
+ CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3DDevice, DWORD *pAdjacencyOut, DWORD *pVertexRemapOut, LPD3DXMESH* ppCloneMesh) PURE;
+ STDMETHOD(ClonePMeshFVF)(THIS_ DWORD Options,
+ DWORD FVF, LPDIRECT3DDEVICE8 pD3D, DWORD *pVertexRemapOut, LPD3DXPMESH* ppCloneMesh) PURE;
+ STDMETHOD(ClonePMesh)(THIS_ DWORD Options,
+ CONST DWORD *pDeclaration, LPDIRECT3DDEVICE8 pD3D, DWORD *pVertexRemapOut, LPD3DXPMESH* ppCloneMesh) PURE;
+ STDMETHOD(ReduceFaces)(THIS_ DWORD Faces) PURE;
+ STDMETHOD(ReduceVertices)(THIS_ DWORD Vertices) PURE;
+ STDMETHOD_(DWORD, GetMaxFaces)(THIS) PURE;
+ STDMETHOD_(DWORD, GetMaxVertices)(THIS) PURE;
+ STDMETHOD(GetVertexAttributeWeights)(THIS_ LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights) PURE;
+ STDMETHOD(GetVertexWeights)(THIS_ FLOAT *pVertexWeights) PURE;
+};
+
+#define UNUSED16 (0xffff)
+#define UNUSED32 (0xffffffff)
+
+// ID3DXMesh::Optimize options - upper byte only, lower 3 bytes used from _D3DXMESH option flags
+enum _D3DXMESHOPT {
+ D3DXMESHOPT_COMPACT = 0x01000000,
+ D3DXMESHOPT_ATTRSORT = 0x02000000,
+ D3DXMESHOPT_VERTEXCACHE = 0x04000000,
+ D3DXMESHOPT_STRIPREORDER = 0x08000000,
+ D3DXMESHOPT_IGNOREVERTS = 0x10000000, // optimize faces only, don't touch vertices
+ D3DXMESHOPT_SHAREVB = 0x1000, // same as D3DXMESH_VB_SHARE
+};
+
+// Subset of the mesh that has the same attribute and bone combination.
+// This subset can be rendered in a single draw call
+typedef struct _D3DXBONECOMBINATION
+{
+ DWORD AttribId;
+ DWORD FaceStart;
+ DWORD FaceCount;
+ DWORD VertexStart;
+ DWORD VertexCount;
+ DWORD* BoneId;
+} D3DXBONECOMBINATION, *LPD3DXBONECOMBINATION;
+
+
+#undef INTERFACE
+#define INTERFACE ID3DXSkinMesh
+
+DECLARE_INTERFACE_(ID3DXSkinMesh, IUnknown)
+{
+ // IUnknown
+ STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
+ STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+ // ID3DXMesh
+ STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
+ STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
+ STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
+ STDMETHOD(GetDeclaration)(THIS_ DWORD Declaration[MAX_FVF_DECL_SIZE]) PURE;
+ STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
+ STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE8* ppDevice) PURE;
+ STDMETHOD(GetVertexBuffer)(THIS_ LPDIRECT3DVERTEXBUFFER8* ppVB) PURE;
+ STDMETHOD(GetIndexBuffer)(THIS_ LPDIRECT3DINDEXBUFFER8* ppIB) PURE;
+ STDMETHOD(LockVertexBuffer)(THIS_ DWORD flags, BYTE** ppData) PURE;
+ STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
+ STDMETHOD(LockIndexBuffer)(THIS_ DWORD flags, BYTE** ppData) PURE;
+ STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
+ STDMETHOD(LockAttributeBuffer)(THIS_ DWORD flags, DWORD** ppData) PURE;
+ STDMETHOD(UnlockAttributeBuffer)(THIS) PURE;
+ // ID3DXSkinMesh
+ STDMETHOD_(DWORD, GetNumBones)(THIS) PURE;
+ STDMETHOD(GetOriginalMesh)(THIS_ LPD3DXMESH* ppMesh) PURE;
+ STDMETHOD(SetBoneInfluence)(THIS_ DWORD bone, DWORD numInfluences, CONST DWORD* vertices, CONST FLOAT* weights) PURE;
+ STDMETHOD_(DWORD, GetNumBoneInfluences)(THIS_ DWORD bone) PURE;
+ STDMETHOD(GetBoneInfluence)(THIS_ DWORD bone, DWORD* vertices, FLOAT* weights) PURE;
+ STDMETHOD(GetMaxVertexInfluences)(THIS_ DWORD* maxVertexInfluences) PURE;
+ STDMETHOD(GetMaxFaceInfluences)(THIS_ DWORD* maxFaceInfluences) PURE;
+
+ STDMETHOD(ConvertToBlendedMesh)(THIS_ DWORD Options,
+ CONST LPDWORD pAdjacencyIn,
+ LPDWORD pAdjacencyOut,
+ DWORD* pNumBoneCombinations,
+ LPD3DXBUFFER* ppBoneCombinationTable,
+ DWORD* pFaceRemap,
+ LPD3DXBUFFER *ppVertexRemap,
+ LPD3DXMESH* ppMesh) PURE;
+
+ STDMETHOD(ConvertToIndexedBlendedMesh)(THIS_ DWORD Options,
+ CONST LPDWORD pAdjacencyIn,
+ DWORD paletteSize,
+ LPDWORD pAdjacencyOut,
+ DWORD* pNumBoneCombinations,
+ LPD3DXBUFFER* ppBoneCombinationTable,
+ DWORD* pFaceRemap,
+ LPD3DXBUFFER *ppVertexRemap,
+ LPD3DXMESH* ppMesh) PURE;
+
+ STDMETHOD(GenerateSkinnedMesh)(THIS_ DWORD Options,
+ FLOAT minWeight,
+ CONST LPDWORD pAdjacencyIn,
+ LPDWORD pAdjacencyOut,
+ DWORD* pFaceRemap,
+ LPD3DXBUFFER *ppVertexRemap,
+ LPD3DXMESH* ppMesh) PURE;
+ STDMETHOD(UpdateSkinnedMesh)(THIS_ CONST D3DXMATRIX* pBoneTransforms, CONST D3DXMATRIX* pBoneInvTransforms, LPD3DXMESH pMesh) PURE;
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+HRESULT WINAPI
+ D3DXCreateMesh(
+ DWORD NumFaces,
+ DWORD NumVertices,
+ DWORD Options,
+ CONST DWORD *pDeclaration,
+ LPDIRECT3DDEVICE8 pD3D,
+ LPD3DXMESH* ppMesh);
+
+HRESULT WINAPI
+ D3DXCreateMeshFVF(
+ DWORD NumFaces,
+ DWORD NumVertices,
+ DWORD Options,
+ DWORD FVF,
+ LPDIRECT3DDEVICE8 pD3D,
+ LPD3DXMESH* ppMesh);
+
+HRESULT WINAPI
+ D3DXCreateSPMesh(
+ LPD3DXMESH pMesh,
+ CONST DWORD* pAdjacency,
+ CONST LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights,
+ CONST FLOAT *pVertexWeights,
+ LPD3DXSPMESH* ppSMesh);
+
+// clean a mesh up for simplification, try to make manifold
+HRESULT WINAPI
+ D3DXCleanMesh(
+ LPD3DXMESH pMeshIn,
+ CONST DWORD* pAdjacencyIn,
+ LPD3DXMESH* ppMeshOut,
+ DWORD* pAdjacencyOut,
+ LPD3DXBUFFER* ppErrorsAndWarnings);
+
+HRESULT WINAPI
+ D3DXValidMesh(
+ LPD3DXMESH pMeshIn,
+ CONST DWORD* pAdjacency,
+ LPD3DXBUFFER* ppErrorsAndWarnings);
+
+HRESULT WINAPI
+ D3DXGeneratePMesh(
+ LPD3DXMESH pMesh,
+ CONST DWORD* pAdjacency,
+ CONST LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights,
+ CONST FLOAT *pVertexWeights,
+ DWORD MinValue,
+ DWORD Options,
+ LPD3DXPMESH* ppPMesh);
+
+HRESULT WINAPI
+ D3DXSimplifyMesh(
+ LPD3DXMESH pMesh,
+ CONST DWORD* pAdjacency,
+ CONST LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights,
+ CONST FLOAT *pVertexWeights,
+ DWORD MinValue,
+ DWORD Options,
+ LPD3DXMESH* ppMesh);
+
+HRESULT WINAPI
+ D3DXComputeBoundingSphere(
+ PVOID pPointsFVF,
+ DWORD NumVertices,
+ DWORD FVF,
+ D3DXVECTOR3 *pCenter,
+ FLOAT *pRadius);
+
+HRESULT WINAPI
+ D3DXComputeBoundingBox(
+ PVOID pPointsFVF,
+ DWORD NumVertices,
+ DWORD FVF,
+ D3DXVECTOR3 *pMin,
+ D3DXVECTOR3 *pMax);
+
+HRESULT WINAPI
+ D3DXComputeNormals(
+ LPD3DXBASEMESH pMesh,
+ CONST DWORD *pAdjacency);
+
+HRESULT WINAPI
+ D3DXCreateBuffer(
+ DWORD NumBytes,
+ LPD3DXBUFFER *ppBuffer);
+
+
+HRESULT WINAPI
+ D3DXLoadMeshFromX(
+ LPSTR pFilename,
+ DWORD Options,
+ LPDIRECT3DDEVICE8 pD3D,
+ LPD3DXBUFFER *ppAdjacency,
+ LPD3DXBUFFER *ppMaterials,
+ DWORD *pNumMaterials,
+ LPD3DXMESH *ppMesh);
+
+HRESULT WINAPI
+ D3DXLoadMeshFromXInMemory(
+ PBYTE Memory,
+ DWORD SizeOfMemory,
+ DWORD Options,
+ LPDIRECT3DDEVICE8 pD3D,
+ LPD3DXBUFFER *ppAdjacency,
+ LPD3DXBUFFER *ppMaterials,
+ DWORD *pNumMaterials,
+ LPD3DXMESH *ppMesh);
+
+HRESULT WINAPI
+ D3DXLoadMeshFromXResource(
+ HMODULE Module,
+ LPCTSTR Name,
+ LPCTSTR Type,
+ DWORD Options,
+ LPDIRECT3DDEVICE8 pD3D,
+ LPD3DXBUFFER *ppAdjacency,
+ LPD3DXBUFFER *ppMaterials,
+ DWORD *pNumMaterials,
+ LPD3DXMESH *ppMesh);
+
+HRESULT WINAPI
+ D3DXSaveMeshToX(
+ LPSTR pFilename,
+ LPD3DXMESH pMesh,
+ CONST DWORD* pAdjacency,
+ CONST LPD3DXMATERIAL pMaterials,
+ DWORD NumMaterials,
+ DWORD Format
+ );
+
+HRESULT WINAPI
+ D3DXCreatePMeshFromStream(
+ IStream *pStream,
+ DWORD Options,
+ LPDIRECT3DDEVICE8 pD3DDevice,
+ LPD3DXBUFFER *ppMaterials,
+ DWORD* pNumMaterials,
+ LPD3DXPMESH *ppPMesh);
+
+HRESULT WINAPI
+ D3DXCreateSkinMesh(
+ DWORD NumFaces,
+ DWORD NumVertices,
+ DWORD NumBones,
+ DWORD Options,
+ CONST DWORD *pDeclaration,
+ LPDIRECT3DDEVICE8 pD3D,
+ LPD3DXSKINMESH* ppSkinMesh);
+
+HRESULT WINAPI
+ D3DXCreateSkinMeshFVF(
+ DWORD NumFaces,
+ DWORD NumVertices,
+ DWORD NumBones,
+ DWORD Options,
+ DWORD FVF,
+ LPDIRECT3DDEVICE8 pD3D,
+ LPD3DXSKINMESH* ppSkinMesh);
+
+HRESULT WINAPI
+ D3DXCreateSkinMeshFromMesh(
+ LPD3DXMESH pMesh,
+ DWORD numBones,
+ LPD3DXSKINMESH* ppSkinMesh);
+
+HRESULT WINAPI
+ D3DXLoadMeshFromXof(
+ LPDIRECTXFILEDATA pXofObjMesh,
+ DWORD Options,
+ LPDIRECT3DDEVICE8 pD3DDevice,
+ LPD3DXBUFFER *ppAdjacency,
+ LPD3DXBUFFER *ppMaterials,
+ DWORD *pNumMaterials,
+ LPD3DXMESH *ppMesh);
+
+HRESULT WINAPI
+ D3DXLoadSkinMeshFromXof(
+ LPDIRECTXFILEDATA pxofobjMesh,
+ DWORD Options,
+ LPDIRECT3DDEVICE8 pD3D,
+ LPD3DXBUFFER* ppAdjacency,
+ LPD3DXBUFFER* ppMaterials,
+ DWORD *pMatOut,
+ LPD3DXBUFFER* ppBoneNames,
+ LPD3DXBUFFER* ppBoneTransforms,
+ LPD3DXSKINMESH* ppMesh);
+
+HRESULT WINAPI
+ D3DXTessellateNPatches(
+ LPD3DXMESH pMeshIn,
+ CONST DWORD* pAdjacencyIn,
+ FLOAT NumSegs,
+ BOOL QuadraticInterpNormals, // if false use linear intrep for normals, if true use quadratic
+ LPD3DXMESH *ppMeshOut,
+ LPD3DXBUFFER *ppAdjacencyOut);
+
+UINT WINAPI
+ D3DXGetFVFVertexSize(DWORD FVF);
+
+HRESULT WINAPI
+ D3DXDeclaratorFromFVF(
+ DWORD FVF,
+ DWORD Declaration[MAX_FVF_DECL_SIZE]);
+
+HRESULT WINAPI
+ D3DXFVFFromDeclarator(
+ CONST DWORD *pDeclarator,
+ DWORD *pFVF);
+
+HRESULT WINAPI
+ D3DXWeldVertices(
+ CONST LPD3DXMESH pMesh,
+ LPD3DXWELDEPSILONS pEpsilons,
+ CONST DWORD *pAdjacencyIn,
+ DWORD *pAdjacencyOut,
+ DWORD* pFaceRemap,
+ LPD3DXBUFFER *ppVertexRemap);
+
+typedef struct _D3DXINTERSECTINFO
+{
+ DWORD FaceIndex; // index of face intersected
+ FLOAT U; // Barycentric Hit Coordinates
+ FLOAT V; // Barycentric Hit Coordinates
+ FLOAT Dist; // Ray-Intersection Parameter Distance
+} D3DXINTERSECTINFO, *LPD3DXINTERSECTINFO;
+
+
+HRESULT WINAPI
+ D3DXIntersect(
+ LPD3DXBASEMESH pMesh,
+ CONST D3DXVECTOR3 *pRayPos,
+ CONST D3DXVECTOR3 *pRayDir,
+ BOOL *pHit, // True if any faces were intersected
+ DWORD *pFaceIndex, // index of closest face intersected
+ FLOAT *pU, // Barycentric Hit Coordinates
+ FLOAT *pV, // Barycentric Hit Coordinates
+ FLOAT *pDist, // Ray-Intersection Parameter Distance
+ LPD3DXBUFFER *ppAllHits, // Array of D3DXINTERSECTINFOs for all hits (not just closest)
+ DWORD *pCountOfHits); // Number of entries in AllHits array
+
+HRESULT WINAPI
+ D3DXIntersectSubset(
+ LPD3DXBASEMESH pMesh,
+ DWORD AttribId,
+ CONST D3DXVECTOR3 *pRayPos,
+ CONST D3DXVECTOR3 *pRayDir,
+ BOOL *pHit, // True if any faces were intersected
+ DWORD *pFaceIndex, // index of closest face intersected
+ FLOAT *pU, // Barycentric Hit Coordinates
+ FLOAT *pV, // Barycentric Hit Coordinates
+ FLOAT *pDist, // Ray-Intersection Parameter Distance
+ LPD3DXBUFFER *ppAllHits, // Array of D3DXINTERSECTINFOs for all hits (not just closest)
+ DWORD *pCountOfHits); // Number of entries in AllHits array
+
+
+HRESULT WINAPI D3DXSplitMesh
+ (
+ CONST LPD3DXMESH pMeshIn,
+ CONST DWORD *pAdjacencyIn,
+ CONST DWORD MaxSize,
+ CONST DWORD Options,
+ DWORD *pMeshesOut,
+ LPD3DXBUFFER *ppMeshArrayOut,
+ LPD3DXBUFFER *ppAdjacencyArrayOut,
+ LPD3DXBUFFER *ppFaceRemapArrayOut,
+ LPD3DXBUFFER *ppVertRemapArrayOut
+ );
+
+BOOL D3DXIntersectTri
+(
+ CONST D3DXVECTOR3 *p0, // Triangle vertex 0 position
+ CONST D3DXVECTOR3 *p1, // Triangle vertex 1 position
+ CONST D3DXVECTOR3 *p2, // Triangle vertex 2 position
+ CONST D3DXVECTOR3 *pRayPos, // Ray origin
+ CONST D3DXVECTOR3 *pRayDir, // Ray direction
+ FLOAT *pU, // Barycentric Hit Coordinates
+ FLOAT *pV, // Barycentric Hit Coordinates
+ FLOAT *pDist); // Ray-Intersection Parameter Distance
+
+BOOL WINAPI
+ D3DXSphereBoundProbe(
+ CONST D3DXVECTOR3 *pCenter,
+ FLOAT Radius,
+ CONST D3DXVECTOR3 *pRayPosition,
+ CONST D3DXVECTOR3 *pRayDirection);
+
+BOOL WINAPI
+ D3DXBoxBoundProbe(
+ CONST D3DXVECTOR3 *pMin,
+ CONST D3DXVECTOR3 *pMax,
+ CONST D3DXVECTOR3 *pRayPosition,
+ CONST D3DXVECTOR3 *pRayDirection);
+
+enum _D3DXERR {
+ D3DXERR_CANNOTMODIFYINDEXBUFFER = MAKE_DDHRESULT(2900),
+ D3DXERR_INVALIDMESH = MAKE_DDHRESULT(2901),
+ D3DXERR_CANNOTATTRSORT = MAKE_DDHRESULT(2902),
+ D3DXERR_SKINNINGNOTSUPPORTED = MAKE_DDHRESULT(2903),
+ D3DXERR_TOOMANYINFLUENCES = MAKE_DDHRESULT(2904),
+ D3DXERR_INVALIDDATA = MAKE_DDHRESULT(2905),
+ D3DXERR_LOADEDMESHASNODATA = MAKE_DDHRESULT(2906),
+};
+
+
+#define D3DX_COMP_TANGENT_NONE 0xFFFFFFFF
+
+HRESULT WINAPI D3DXComputeTangent(LPD3DXMESH InMesh,
+ DWORD TexStage,
+ LPD3DXMESH OutMesh,
+ DWORD TexStageUVec,
+ DWORD TexStageVVec,
+ DWORD Wrap,
+ DWORD *Adjacency);
+
+HRESULT WINAPI
+D3DXConvertMeshSubsetToSingleStrip
+(
+ LPD3DXBASEMESH MeshIn,
+ DWORD AttribId,
+ DWORD IBOptions,
+ LPDIRECT3DINDEXBUFFER8 *ppIndexBuffer,
+ DWORD *pNumIndices
+);
+
+HRESULT WINAPI
+D3DXConvertMeshSubsetToStrips
+(
+ LPD3DXBASEMESH MeshIn,
+ DWORD AttribId,
+ DWORD IBOptions,
+ LPDIRECT3DINDEXBUFFER8 *ppIndexBuffer,
+ DWORD *pNumIndices,
+ LPD3DXBUFFER *ppStripLengths,
+ DWORD *pNumStrips
+);
+
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+#endif //__D3DX8MESH_H__
+
+
diff --git a/src/dep/include/DXSDK/include/d3dx8shape.h b/src/dep/include/DXSDK/include/d3dx8shape.h
new file mode 100644
index 0000000..c4d3630
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3dx8shape.h
@@ -0,0 +1,220 @@
+///////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dx8shapes.h
+// Content: D3DX simple shapes
+//
+///////////////////////////////////////////////////////////////////////////
+
+#include "d3dx8.h"
+
+#ifndef __D3DX8SHAPES_H__
+#define __D3DX8SHAPES_H__
+
+///////////////////////////////////////////////////////////////////////////
+// Functions:
+///////////////////////////////////////////////////////////////////////////
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+
+//-------------------------------------------------------------------------
+// D3DXCreatePolygon:
+// ------------------
+// Creates a mesh containing an n-sided polygon. The polygon is centered
+// at the origin.
+//
+// Parameters:
+//
+// pDevice The D3D device with which the mesh is going to be used.
+// Length Length of each side.
+// Sides Number of sides the polygon has. (Must be >= 3)
+// ppMesh The mesh object which will be created
+// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCreatePolygon(
+ LPDIRECT3DDEVICE8 pDevice,
+ FLOAT Length,
+ UINT Sides,
+ LPD3DXMESH* ppMesh,
+ LPD3DXBUFFER* ppAdjacency);
+
+
+//-------------------------------------------------------------------------
+// D3DXCreateBox:
+// --------------
+// Creates a mesh containing an axis-aligned box. The box is centered at
+// the origin.
+//
+// Parameters:
+//
+// pDevice The D3D device with which the mesh is going to be used.
+// Width Width of box (along X-axis)
+// Height Height of box (along Y-axis)
+// Depth Depth of box (along Z-axis)
+// ppMesh The mesh object which will be created
+// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCreateBox(
+ LPDIRECT3DDEVICE8 pDevice,
+ FLOAT Width,
+ FLOAT Height,
+ FLOAT Depth,
+ LPD3DXMESH* ppMesh,
+ LPD3DXBUFFER* ppAdjacency);
+
+
+//-------------------------------------------------------------------------
+// D3DXCreateCylinder:
+// -------------------
+// Creates a mesh containing a cylinder. The generated cylinder is
+// centered at the origin, and its axis is aligned with the Z-axis.
+//
+// Parameters:
+//
+// pDevice The D3D device with which the mesh is going to be used.
+// Radius1 Radius at -Z end (should be >= 0.0f)
+// Radius2 Radius at +Z end (should be >= 0.0f)
+// Length Length of cylinder (along Z-axis)
+// Slices Number of slices about the main axis
+// Stacks Number of stacks along the main axis
+// ppMesh The mesh object which will be created
+// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCreateCylinder(
+ LPDIRECT3DDEVICE8 pDevice,
+ FLOAT Radius1,
+ FLOAT Radius2,
+ FLOAT Length,
+ UINT Slices,
+ UINT Stacks,
+ LPD3DXMESH* ppMesh,
+ LPD3DXBUFFER* ppAdjacency);
+
+
+//-------------------------------------------------------------------------
+// D3DXCreateSphere:
+// -----------------
+// Creates a mesh containing a sphere. The sphere is centered at the
+// origin.
+//
+// Parameters:
+//
+// pDevice The D3D device with which the mesh is going to be used.
+// Radius Radius of the sphere (should be >= 0.0f)
+// Slices Number of slices about the main axis
+// Stacks Number of stacks along the main axis
+// ppMesh The mesh object which will be created
+// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCreateSphere(
+ LPDIRECT3DDEVICE8 pDevice,
+ FLOAT Radius,
+ UINT Slices,
+ UINT Stacks,
+ LPD3DXMESH* ppMesh,
+ LPD3DXBUFFER* ppAdjacency);
+
+
+//-------------------------------------------------------------------------
+// D3DXCreateTorus:
+// ----------------
+// Creates a mesh containing a torus. The generated torus is centered at
+// the origin, and its axis is aligned with the Z-axis.
+//
+// Parameters:
+//
+// pDevice The D3D device with which the mesh is going to be used.
+// InnerRadius Inner radius of the torus (should be >= 0.0f)
+// OuterRadius Outer radius of the torue (should be >= 0.0f)
+// Sides Number of sides in a cross-section (must be >= 3)
+// Rings Number of rings making up the torus (must be >= 3)
+// ppMesh The mesh object which will be created
+// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCreateTorus(
+ LPDIRECT3DDEVICE8 pDevice,
+ FLOAT InnerRadius,
+ FLOAT OuterRadius,
+ UINT Sides,
+ UINT Rings,
+ LPD3DXMESH* ppMesh,
+ LPD3DXBUFFER* ppAdjacency);
+
+
+//-------------------------------------------------------------------------
+// D3DXCreateTeapot:
+// -----------------
+// Creates a mesh containing a teapot.
+//
+// Parameters:
+//
+// pDevice The D3D device with which the mesh is going to be used.
+// ppMesh The mesh object which will be created
+// ppAdjacency Returns a buffer containing adjacency info. Can be NULL.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCreateTeapot(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPD3DXMESH* ppMesh,
+ LPD3DXBUFFER* ppAdjacency);
+
+
+//-------------------------------------------------------------------------
+// D3DXCreateText:
+// ---------------
+// Creates a mesh containing the specified text using the font associated
+// with the device context.
+//
+// Parameters:
+//
+// pDevice The D3D device with which the mesh is going to be used.
+// hDC Device context, with desired font selected
+// pText Text to generate
+// Deviation Maximum chordal deviation from true font outlines
+// Extrusion Amount to extrude text in -Z direction
+// ppMesh The mesh object which will be created
+// pGlyphMetrics Address of buffer to receive glyph metric data (or NULL)
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCreateTextA(
+ LPDIRECT3DDEVICE8 pDevice,
+ HDC hDC,
+ LPCSTR pText,
+ FLOAT Deviation,
+ FLOAT Extrusion,
+ LPD3DXMESH* ppMesh,
+ LPD3DXBUFFER* ppAdjacency,
+ LPGLYPHMETRICSFLOAT pGlyphMetrics);
+
+HRESULT WINAPI
+ D3DXCreateTextW(
+ LPDIRECT3DDEVICE8 pDevice,
+ HDC hDC,
+ LPCWSTR pText,
+ FLOAT Deviation,
+ FLOAT Extrusion,
+ LPD3DXMESH* ppMesh,
+ LPD3DXBUFFER* ppAdjacency,
+ LPGLYPHMETRICSFLOAT pGlyphMetrics);
+
+#ifdef UNICODE
+#define D3DXCreateText D3DXCreateTextW
+#else
+#define D3DXCreateText D3DXCreateTextA
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+#endif //__D3DX8SHAPES_H__
diff --git a/src/dep/include/DXSDK/include/d3dx8tex.h b/src/dep/include/DXSDK/include/d3dx8tex.h
new file mode 100644
index 0000000..2bdfce8
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3dx8tex.h
@@ -0,0 +1,1592 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dx8tex.h
+// Content: D3DX texturing APIs
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#include "d3dx8.h"
+
+#ifndef __D3DX8TEX_H__
+#define __D3DX8TEX_H__
+
+
+//----------------------------------------------------------------------------
+// D3DX_FILTER flags:
+// ------------------
+//
+// A valid filter must contain one of these values:
+//
+// D3DX_FILTER_NONE
+// No scaling or filtering will take place. Pixels outside the bounds
+// of the source image are assumed to be transparent black.
+// D3DX_FILTER_POINT
+// Each destination pixel is computed by sampling the nearest pixel
+// from the source image.
+// D3DX_FILTER_LINEAR
+// Each destination pixel is computed by linearly interpolating between
+// the nearest pixels in the source image. This filter works best
+// when the scale on each axis is less than 2.
+// D3DX_FILTER_TRIANGLE
+// Every pixel in the source image contributes equally to the
+// destination image. This is the slowest of all the filters.
+// D3DX_FILTER_BOX
+// Each pixel is computed by averaging a 2x2(x2) box pixels from
+// the source image. Only works when the dimensions of the
+// destination are half those of the source. (as with mip maps)
+//
+// And can be OR'd with any of these optional flags:
+//
+// D3DX_FILTER_MIRROR_U
+// Indicates that pixels off the edge of the texture on the U-axis
+// should be mirrored, not wraped.
+// D3DX_FILTER_MIRROR_V
+// Indicates that pixels off the edge of the texture on the V-axis
+// should be mirrored, not wraped.
+// D3DX_FILTER_MIRROR_W
+// Indicates that pixels off the edge of the texture on the W-axis
+// should be mirrored, not wraped.
+// D3DX_FILTER_MIRROR
+// Same as specifying D3DX_FILTER_MIRROR_U | D3DX_FILTER_MIRROR_V |
+// D3DX_FILTER_MIRROR_V
+// D3DX_FILTER_DITHER
+// Dithers the resulting image.
+//
+//----------------------------------------------------------------------------
+
+#define D3DX_FILTER_NONE (1 << 0)
+#define D3DX_FILTER_POINT (2 << 0)
+#define D3DX_FILTER_LINEAR (3 << 0)
+#define D3DX_FILTER_TRIANGLE (4 << 0)
+#define D3DX_FILTER_BOX (5 << 0)
+
+#define D3DX_FILTER_MIRROR_U (1 << 16)
+#define D3DX_FILTER_MIRROR_V (2 << 16)
+#define D3DX_FILTER_MIRROR_W (4 << 16)
+#define D3DX_FILTER_MIRROR (7 << 16)
+#define D3DX_FILTER_DITHER (8 << 16)
+
+
+//----------------------------------------------------------------------------
+// D3DX_NORMALMAP flags:
+// ---------------------
+// These flags are used to control how D3DXComputeNormalMap generates normal
+// maps. Any number of these flags may be OR'd together in any combination.
+//
+// D3DX_NORMALMAP_MIRROR_U
+// Indicates that pixels off the edge of the texture on the U-axis
+// should be mirrored, not wraped.
+// D3DX_NORMALMAP_MIRROR_V
+// Indicates that pixels off the edge of the texture on the V-axis
+// should be mirrored, not wraped.
+// D3DX_NORMALMAP_MIRROR
+// Same as specifying D3DX_NORMALMAP_MIRROR_U | D3DX_NORMALMAP_MIRROR_V
+// D3DX_NORMALMAP_INVERTSIGN
+// Inverts the direction of each normal
+// D3DX_NORMALMAP_COMPUTE_OCCLUSION
+// Compute the per pixel Occlusion term and encodes it into the alpha.
+// An Alpha of 1 means that the pixel is not obscured in anyway, and
+// an alpha of 0 would mean that the pixel is completly obscured.
+//
+//----------------------------------------------------------------------------
+
+//----------------------------------------------------------------------------
+
+#define D3DX_NORMALMAP_MIRROR_U (1 << 16)
+#define D3DX_NORMALMAP_MIRROR_V (2 << 16)
+#define D3DX_NORMALMAP_MIRROR (3 << 16)
+#define D3DX_NORMALMAP_INVERTSIGN (8 << 16)
+#define D3DX_NORMALMAP_COMPUTE_OCCLUSION (16 << 16)
+
+
+
+
+//----------------------------------------------------------------------------
+// D3DX_CHANNEL flags:
+// -------------------
+// These flags are used by functions which operate on or more channels
+// in a texture.
+//
+// D3DX_CHANNEL_RED
+// Indicates the red channel should be used
+// D3DX_CHANNEL_BLUE
+// Indicates the blue channel should be used
+// D3DX_CHANNEL_GREEN
+// Indicates the green channel should be used
+// D3DX_CHANNEL_ALPHA
+// Indicates the alpha channel should be used
+// D3DX_CHANNEL_LUMINANCE
+// Indicates the luminaces of the red green and blue channels should be
+// used.
+//
+//----------------------------------------------------------------------------
+
+#define D3DX_CHANNEL_RED (1 << 0)
+#define D3DX_CHANNEL_BLUE (1 << 1)
+#define D3DX_CHANNEL_GREEN (1 << 2)
+#define D3DX_CHANNEL_ALPHA (1 << 3)
+#define D3DX_CHANNEL_LUMINANCE (1 << 4)
+
+
+
+
+//----------------------------------------------------------------------------
+// D3DXIMAGE_FILEFORMAT:
+// ---------------------
+// This enum is used to describe supported image file formats.
+//
+//----------------------------------------------------------------------------
+
+typedef enum _D3DXIMAGE_FILEFORMAT
+{
+ D3DXIFF_BMP = 0,
+ D3DXIFF_JPG = 1,
+ D3DXIFF_TGA = 2,
+ D3DXIFF_PNG = 3,
+ D3DXIFF_DDS = 4,
+ D3DXIFF_PPM = 5,
+ D3DXIFF_DIB = 6,
+ D3DXIFF_FORCE_DWORD = 0x7fffffff
+
+} D3DXIMAGE_FILEFORMAT;
+
+
+//----------------------------------------------------------------------------
+// LPD3DXFILL2D and LPD3DXFILL3D:
+// ------------------------------
+// Function types used by the texture fill functions.
+//
+// Parameters:
+// pOut
+// Pointer to a vector which the function uses to return its result.
+// X,Y,Z,W will be mapped to R,G,B,A respectivly.
+// pTexCoord
+// Pointer to a vector containing the coordinates of the texel currently
+// being evaluated. Textures and VolumeTexture texcoord components
+// range from 0 to 1. CubeTexture texcoord component range from -1 to 1.
+// pTexelSize
+// Pointer to a vector containing the dimensions of the current texel.
+// pData
+// Pointer to user data.
+//
+//----------------------------------------------------------------------------
+
+typedef VOID (*LPD3DXFILL2D)(D3DXVECTOR4 *pOut, D3DXVECTOR2 *pTexCoord, D3DXVECTOR2 *pTexelSize, LPVOID pData);
+typedef VOID (*LPD3DXFILL3D)(D3DXVECTOR4 *pOut, D3DXVECTOR3 *pTexCoord, D3DXVECTOR3 *pTexelSize, LPVOID pData);
+
+
+
+//----------------------------------------------------------------------------
+// D3DXIMAGE_INFO:
+// ---------------
+// This structure is used to return a rough description of what the
+// the original contents of an image file looked like.
+//
+// Width
+// Width of original image in pixels
+// Height
+// Height of original image in pixels
+// Depth
+// Depth of original image in pixels
+// MipLevels
+// Number of mip levels in original image
+// Format
+// D3D format which most closely describes the data in original image
+// ResourceType
+// D3DRESOURCETYPE representing the type of texture stored in the file.
+// D3DRTYPE_TEXTURE, D3DRTYPE_VOLUMETEXTURE, or D3DRTYPE_CUBETEXTURE.
+// ImageFileFormat
+// D3DXIMAGE_FILEFORMAT representing the format of the image file.
+//
+//----------------------------------------------------------------------------
+
+typedef struct _D3DXIMAGE_INFO
+{
+ UINT Width;
+ UINT Height;
+ UINT Depth;
+ UINT MipLevels;
+ D3DFORMAT Format;
+ D3DRESOURCETYPE ResourceType;
+ D3DXIMAGE_FILEFORMAT ImageFileFormat;
+
+} D3DXIMAGE_INFO;
+
+
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Image File APIs ///////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+;
+//----------------------------------------------------------------------------
+// GetImageInfoFromFile/Resource:
+// ------------------------------
+// Fills in a D3DXIMAGE_INFO struct with information about an image file.
+//
+// Parameters:
+// pSrcFile
+// File name of the source image.
+// pSrcModule
+// Module where resource is located, or NULL for module associated
+// with image the os used to create the current process.
+// pSrcResource
+// Resource name
+// pSrcData
+// Pointer to file in memory.
+// SrcDataSize
+// Size in bytes of file in memory.
+// pSrcInfo
+// Pointer to a D3DXIMAGE_INFO structure to be filled in with the
+// description of the data in the source image file.
+//
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DXGetImageInfoFromFileA(
+ LPCSTR pSrcFile,
+ D3DXIMAGE_INFO* pSrcInfo);
+
+HRESULT WINAPI
+ D3DXGetImageInfoFromFileW(
+ LPCWSTR pSrcFile,
+ D3DXIMAGE_INFO* pSrcInfo);
+
+#ifdef UNICODE
+#define D3DXGetImageInfoFromFile D3DXGetImageInfoFromFileW
+#else
+#define D3DXGetImageInfoFromFile D3DXGetImageInfoFromFileA
+#endif
+
+
+HRESULT WINAPI
+ D3DXGetImageInfoFromResourceA(
+ HMODULE hSrcModule,
+ LPCSTR pSrcResource,
+ D3DXIMAGE_INFO* pSrcInfo);
+
+HRESULT WINAPI
+ D3DXGetImageInfoFromResourceW(
+ HMODULE hSrcModule,
+ LPCWSTR pSrcResource,
+ D3DXIMAGE_INFO* pSrcInfo);
+
+#ifdef UNICODE
+#define D3DXGetImageInfoFromResource D3DXGetImageInfoFromResourceW
+#else
+#define D3DXGetImageInfoFromResource D3DXGetImageInfoFromResourceA
+#endif
+
+
+HRESULT WINAPI
+ D3DXGetImageInfoFromFileInMemory(
+ LPCVOID pSrcData,
+ UINT SrcDataSize,
+ D3DXIMAGE_INFO* pSrcInfo);
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Load/Save Surface APIs ////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+//----------------------------------------------------------------------------
+// D3DXLoadSurfaceFromFile/Resource:
+// ---------------------------------
+// Load surface from a file or resource
+//
+// Parameters:
+// pDestSurface
+// Destination surface, which will receive the image.
+// pDestPalette
+// Destination palette of 256 colors, or NULL
+// pDestRect
+// Destination rectangle, or NULL for entire surface
+// pSrcFile
+// File name of the source image.
+// pSrcModule
+// Module where resource is located, or NULL for module associated
+// with image the os used to create the current process.
+// pSrcResource
+// Resource name
+// pSrcData
+// Pointer to file in memory.
+// SrcDataSize
+// Size in bytes of file in memory.
+// pSrcRect
+// Source rectangle, or NULL for entire image
+// Filter
+// D3DX_FILTER flags controlling how the image is filtered.
+// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE.
+// ColorKey
+// Color to replace with transparent black, or 0 to disable colorkey.
+// This is always a 32-bit ARGB color, independent of the source image
+// format. Alpha is significant, and should usually be set to FF for
+// opaque colorkeys. (ex. Opaque black == 0xff000000)
+// pSrcInfo
+// Pointer to a D3DXIMAGE_INFO structure to be filled in with the
+// description of the data in the source image file, or NULL.
+//
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DXLoadSurfaceFromFileA(
+ LPDIRECT3DSURFACE8 pDestSurface,
+ CONST PALETTEENTRY* pDestPalette,
+ CONST RECT* pDestRect,
+ LPCSTR pSrcFile,
+ CONST RECT* pSrcRect,
+ DWORD Filter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo);
+
+HRESULT WINAPI
+ D3DXLoadSurfaceFromFileW(
+ LPDIRECT3DSURFACE8 pDestSurface,
+ CONST PALETTEENTRY* pDestPalette,
+ CONST RECT* pDestRect,
+ LPCWSTR pSrcFile,
+ CONST RECT* pSrcRect,
+ DWORD Filter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo);
+
+#ifdef UNICODE
+#define D3DXLoadSurfaceFromFile D3DXLoadSurfaceFromFileW
+#else
+#define D3DXLoadSurfaceFromFile D3DXLoadSurfaceFromFileA
+#endif
+
+
+
+HRESULT WINAPI
+ D3DXLoadSurfaceFromResourceA(
+ LPDIRECT3DSURFACE8 pDestSurface,
+ CONST PALETTEENTRY* pDestPalette,
+ CONST RECT* pDestRect,
+ HMODULE hSrcModule,
+ LPCSTR pSrcResource,
+ CONST RECT* pSrcRect,
+ DWORD Filter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo);
+
+HRESULT WINAPI
+ D3DXLoadSurfaceFromResourceW(
+ LPDIRECT3DSURFACE8 pDestSurface,
+ CONST PALETTEENTRY* pDestPalette,
+ CONST RECT* pDestRect,
+ HMODULE hSrcModule,
+ LPCWSTR pSrcResource,
+ CONST RECT* pSrcRect,
+ DWORD Filter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo);
+
+
+#ifdef UNICODE
+#define D3DXLoadSurfaceFromResource D3DXLoadSurfaceFromResourceW
+#else
+#define D3DXLoadSurfaceFromResource D3DXLoadSurfaceFromResourceA
+#endif
+
+
+
+HRESULT WINAPI
+ D3DXLoadSurfaceFromFileInMemory(
+ LPDIRECT3DSURFACE8 pDestSurface,
+ CONST PALETTEENTRY* pDestPalette,
+ CONST RECT* pDestRect,
+ LPCVOID pSrcData,
+ UINT SrcDataSize,
+ CONST RECT* pSrcRect,
+ DWORD Filter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo);
+
+
+
+//----------------------------------------------------------------------------
+// D3DXLoadSurfaceFromSurface:
+// ---------------------------
+// Load surface from another surface (with color conversion)
+//
+// Parameters:
+// pDestSurface
+// Destination surface, which will receive the image.
+// pDestPalette
+// Destination palette of 256 colors, or NULL
+// pDestRect
+// Destination rectangle, or NULL for entire surface
+// pSrcSurface
+// Source surface
+// pSrcPalette
+// Source palette of 256 colors, or NULL
+// pSrcRect
+// Source rectangle, or NULL for entire surface
+// Filter
+// D3DX_FILTER flags controlling how the image is filtered.
+// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE.
+// ColorKey
+// Color to replace with transparent black, or 0 to disable colorkey.
+// This is always a 32-bit ARGB color, independent of the source image
+// format. Alpha is significant, and should usually be set to FF for
+// opaque colorkeys. (ex. Opaque black == 0xff000000)
+//
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DXLoadSurfaceFromSurface(
+ LPDIRECT3DSURFACE8 pDestSurface,
+ CONST PALETTEENTRY* pDestPalette,
+ CONST RECT* pDestRect,
+ LPDIRECT3DSURFACE8 pSrcSurface,
+ CONST PALETTEENTRY* pSrcPalette,
+ CONST RECT* pSrcRect,
+ DWORD Filter,
+ D3DCOLOR ColorKey);
+
+
+//----------------------------------------------------------------------------
+// D3DXLoadSurfaceFromMemory:
+// --------------------------
+// Load surface from memory.
+//
+// Parameters:
+// pDestSurface
+// Destination surface, which will receive the image.
+// pDestPalette
+// Destination palette of 256 colors, or NULL
+// pDestRect
+// Destination rectangle, or NULL for entire surface
+// pSrcMemory
+// Pointer to the top-left corner of the source image in memory
+// SrcFormat
+// Pixel format of the source image.
+// SrcPitch
+// Pitch of source image, in bytes. For DXT formats, this number
+// should represent the width of one row of cells, in bytes.
+// pSrcPalette
+// Source palette of 256 colors, or NULL
+// pSrcRect
+// Source rectangle.
+// Filter
+// D3DX_FILTER flags controlling how the image is filtered.
+// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE.
+// ColorKey
+// Color to replace with transparent black, or 0 to disable colorkey.
+// This is always a 32-bit ARGB color, independent of the source image
+// format. Alpha is significant, and should usually be set to FF for
+// opaque colorkeys. (ex. Opaque black == 0xff000000)
+//
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DXLoadSurfaceFromMemory(
+ LPDIRECT3DSURFACE8 pDestSurface,
+ CONST PALETTEENTRY* pDestPalette,
+ CONST RECT* pDestRect,
+ LPCVOID pSrcMemory,
+ D3DFORMAT SrcFormat,
+ UINT SrcPitch,
+ CONST PALETTEENTRY* pSrcPalette,
+ CONST RECT* pSrcRect,
+ DWORD Filter,
+ D3DCOLOR ColorKey);
+
+
+//----------------------------------------------------------------------------
+// D3DXSaveSurfaceToFile:
+// ----------------------
+// Save a surface to a image file.
+//
+// Parameters:
+// pDestFile
+// File name of the destination file
+// DestFormat
+// D3DXIMAGE_FILEFORMAT specifying file format to use when saving.
+// pSrcSurface
+// Source surface, containing the image to be saved
+// pSrcPalette
+// Source palette of 256 colors, or NULL
+// pSrcRect
+// Source rectangle, or NULL for the entire image
+//
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DXSaveSurfaceToFileA(
+ LPCSTR pDestFile,
+ D3DXIMAGE_FILEFORMAT DestFormat,
+ LPDIRECT3DSURFACE8 pSrcSurface,
+ CONST PALETTEENTRY* pSrcPalette,
+ CONST RECT* pSrcRect);
+
+HRESULT WINAPI
+ D3DXSaveSurfaceToFileW(
+ LPCWSTR pDestFile,
+ D3DXIMAGE_FILEFORMAT DestFormat,
+ LPDIRECT3DSURFACE8 pSrcSurface,
+ CONST PALETTEENTRY* pSrcPalette,
+ CONST RECT* pSrcRect);
+
+#ifdef UNICODE
+#define D3DXSaveSurfaceToFile D3DXSaveSurfaceToFileW
+#else
+#define D3DXSaveSurfaceToFile D3DXSaveSurfaceToFileA
+#endif
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Load/Save Volume APIs /////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+//----------------------------------------------------------------------------
+// D3DXLoadVolumeFromFile/Resource:
+// --------------------------------
+// Load volume from a file or resource
+//
+// Parameters:
+// pDestVolume
+// Destination volume, which will receive the image.
+// pDestPalette
+// Destination palette of 256 colors, or NULL
+// pDestBox
+// Destination box, or NULL for entire volume
+// pSrcFile
+// File name of the source image.
+// pSrcModule
+// Module where resource is located, or NULL for module associated
+// with image the os used to create the current process.
+// pSrcResource
+// Resource name
+// pSrcData
+// Pointer to file in memory.
+// SrcDataSize
+// Size in bytes of file in memory.
+// pSrcBox
+// Source box, or NULL for entire image
+// Filter
+// D3DX_FILTER flags controlling how the image is filtered.
+// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE.
+// ColorKey
+// Color to replace with transparent black, or 0 to disable colorkey.
+// This is always a 32-bit ARGB color, independent of the source image
+// format. Alpha is significant, and should usually be set to FF for
+// opaque colorkeys. (ex. Opaque black == 0xff000000)
+// pSrcInfo
+// Pointer to a D3DXIMAGE_INFO structure to be filled in with the
+// description of the data in the source image file, or NULL.
+//
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DXLoadVolumeFromFileA(
+ LPDIRECT3DVOLUME8 pDestVolume,
+ CONST PALETTEENTRY* pDestPalette,
+ CONST D3DBOX* pDestBox,
+ LPCSTR pSrcFile,
+ CONST D3DBOX* pSrcBox,
+ DWORD Filter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo);
+
+HRESULT WINAPI
+ D3DXLoadVolumeFromFileW(
+ LPDIRECT3DVOLUME8 pDestVolume,
+ CONST PALETTEENTRY* pDestPalette,
+ CONST D3DBOX* pDestBox,
+ LPCWSTR pSrcFile,
+ CONST D3DBOX* pSrcBox,
+ DWORD Filter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo);
+
+#ifdef UNICODE
+#define D3DXLoadVolumeFromFile D3DXLoadVolumeFromFileW
+#else
+#define D3DXLoadVolumeFromFile D3DXLoadVolumeFromFileA
+#endif
+
+
+HRESULT WINAPI
+ D3DXLoadVolumeFromResourceA(
+ LPDIRECT3DVOLUME8 pDestVolume,
+ CONST PALETTEENTRY* pDestPalette,
+ CONST D3DBOX* pDestBox,
+ HMODULE hSrcModule,
+ LPCSTR pSrcResource,
+ CONST D3DBOX* pSrcBox,
+ DWORD Filter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo);
+
+HRESULT WINAPI
+ D3DXLoadVolumeFromResourceW(
+ LPDIRECT3DVOLUME8 pDestVolume,
+ CONST PALETTEENTRY* pDestPalette,
+ CONST D3DBOX* pDestBox,
+ HMODULE hSrcModule,
+ LPCWSTR pSrcResource,
+ CONST D3DBOX* pSrcBox,
+ DWORD Filter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo);
+
+#ifdef UNICODE
+#define D3DXLoadVolumeFromResource D3DXLoadVolumeFromResourceW
+#else
+#define D3DXLoadVolumeFromResource D3DXLoadVolumeFromResourceA
+#endif
+
+
+
+HRESULT WINAPI
+ D3DXLoadVolumeFromFileInMemory(
+ LPDIRECT3DVOLUME8 pDestVolume,
+ CONST PALETTEENTRY* pDestPalette,
+ CONST D3DBOX* pDestBox,
+ LPCVOID pSrcData,
+ UINT SrcDataSize,
+ CONST D3DBOX* pSrcBox,
+ DWORD Filter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo);
+
+
+
+//----------------------------------------------------------------------------
+// D3DXLoadVolumeFromVolume:
+// -------------------------
+// Load volume from another volume (with color conversion)
+//
+// Parameters:
+// pDestVolume
+// Destination volume, which will receive the image.
+// pDestPalette
+// Destination palette of 256 colors, or NULL
+// pDestBox
+// Destination box, or NULL for entire volume
+// pSrcVolume
+// Source volume
+// pSrcPalette
+// Source palette of 256 colors, or NULL
+// pSrcBox
+// Source box, or NULL for entire volume
+// Filter
+// D3DX_FILTER flags controlling how the image is filtered.
+// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE.
+// ColorKey
+// Color to replace with transparent black, or 0 to disable colorkey.
+// This is always a 32-bit ARGB color, independent of the source image
+// format. Alpha is significant, and should usually be set to FF for
+// opaque colorkeys. (ex. Opaque black == 0xff000000)
+//
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DXLoadVolumeFromVolume(
+ LPDIRECT3DVOLUME8 pDestVolume,
+ CONST PALETTEENTRY* pDestPalette,
+ CONST D3DBOX* pDestBox,
+ LPDIRECT3DVOLUME8 pSrcVolume,
+ CONST PALETTEENTRY* pSrcPalette,
+ CONST D3DBOX* pSrcBox,
+ DWORD Filter,
+ D3DCOLOR ColorKey);
+
+
+
+//----------------------------------------------------------------------------
+// D3DXLoadVolumeFromMemory:
+// -------------------------
+// Load volume from memory.
+//
+// Parameters:
+// pDestVolume
+// Destination volume, which will receive the image.
+// pDestPalette
+// Destination palette of 256 colors, or NULL
+// pDestBox
+// Destination box, or NULL for entire volume
+// pSrcMemory
+// Pointer to the top-left corner of the source volume in memory
+// SrcFormat
+// Pixel format of the source volume.
+// SrcRowPitch
+// Pitch of source image, in bytes. For DXT formats, this number
+// should represent the size of one row of cells, in bytes.
+// SrcSlicePitch
+// Pitch of source image, in bytes. For DXT formats, this number
+// should represent the size of one slice of cells, in bytes.
+// pSrcPalette
+// Source palette of 256 colors, or NULL
+// pSrcBox
+// Source box.
+// Filter
+// D3DX_FILTER flags controlling how the image is filtered.
+// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE.
+// ColorKey
+// Color to replace with transparent black, or 0 to disable colorkey.
+// This is always a 32-bit ARGB color, independent of the source image
+// format. Alpha is significant, and should usually be set to FF for
+// opaque colorkeys. (ex. Opaque black == 0xff000000)
+//
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DXLoadVolumeFromMemory(
+ LPDIRECT3DVOLUME8 pDestVolume,
+ CONST PALETTEENTRY* pDestPalette,
+ CONST D3DBOX* pDestBox,
+ LPCVOID pSrcMemory,
+ D3DFORMAT SrcFormat,
+ UINT SrcRowPitch,
+ UINT SrcSlicePitch,
+ CONST PALETTEENTRY* pSrcPalette,
+ CONST D3DBOX* pSrcBox,
+ DWORD Filter,
+ D3DCOLOR ColorKey);
+
+
+
+//----------------------------------------------------------------------------
+// D3DXSaveVolumeToFile:
+// ---------------------
+// Save a volume to a image file.
+//
+// Parameters:
+// pDestFile
+// File name of the destination file
+// DestFormat
+// D3DXIMAGE_FILEFORMAT specifying file format to use when saving.
+// pSrcVolume
+// Source volume, containing the image to be saved
+// pSrcPalette
+// Source palette of 256 colors, or NULL
+// pSrcBox
+// Source box, or NULL for the entire volume
+//
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DXSaveVolumeToFileA(
+ LPCSTR pDestFile,
+ D3DXIMAGE_FILEFORMAT DestFormat,
+ LPDIRECT3DVOLUME8 pSrcVolume,
+ CONST PALETTEENTRY* pSrcPalette,
+ CONST D3DBOX* pSrcBox);
+
+HRESULT WINAPI
+ D3DXSaveVolumeToFileW(
+ LPCWSTR pDestFile,
+ D3DXIMAGE_FILEFORMAT DestFormat,
+ LPDIRECT3DVOLUME8 pSrcVolume,
+ CONST PALETTEENTRY* pSrcPalette,
+ CONST D3DBOX* pSrcBox);
+
+#ifdef UNICODE
+#define D3DXSaveVolumeToFile D3DXSaveVolumeToFileW
+#else
+#define D3DXSaveVolumeToFile D3DXSaveVolumeToFileA
+#endif
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Create/Save Texture APIs //////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+//----------------------------------------------------------------------------
+// D3DXCheckTextureRequirements:
+// -----------------------------
+// Checks texture creation parameters. If parameters are invalid, this
+// function returns corrected parameters.
+//
+// Parameters:
+//
+// pDevice
+// The D3D device to be used
+// pWidth, pHeight, pDepth, pSize
+// Desired size in pixels, or NULL. Returns corrected size.
+// pNumMipLevels
+// Number of desired mipmap levels, or NULL. Returns corrected number.
+// Usage
+// Texture usage flags
+// pFormat
+// Desired pixel format, or NULL. Returns corrected format.
+// Pool
+// Memory pool to be used to create texture
+//
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DXCheckTextureRequirements(
+ LPDIRECT3DDEVICE8 pDevice,
+ UINT* pWidth,
+ UINT* pHeight,
+ UINT* pNumMipLevels,
+ DWORD Usage,
+ D3DFORMAT* pFormat,
+ D3DPOOL Pool);
+
+HRESULT WINAPI
+ D3DXCheckCubeTextureRequirements(
+ LPDIRECT3DDEVICE8 pDevice,
+ UINT* pSize,
+ UINT* pNumMipLevels,
+ DWORD Usage,
+ D3DFORMAT* pFormat,
+ D3DPOOL Pool);
+
+HRESULT WINAPI
+ D3DXCheckVolumeTextureRequirements(
+ LPDIRECT3DDEVICE8 pDevice,
+ UINT* pWidth,
+ UINT* pHeight,
+ UINT* pDepth,
+ UINT* pNumMipLevels,
+ DWORD Usage,
+ D3DFORMAT* pFormat,
+ D3DPOOL Pool);
+
+
+//----------------------------------------------------------------------------
+// D3DXCreateTexture:
+// ------------------
+// Create an empty texture
+//
+// Parameters:
+//
+// pDevice
+// The D3D device with which the texture is going to be used.
+// Width, Height, Depth, Size
+// size in pixels; these must be non-zero
+// MipLevels
+// number of mip levels desired; if zero or D3DX_DEFAULT, a complete
+// mipmap chain will be created.
+// Usage
+// Texture usage flags
+// Format
+// Pixel format.
+// Pool
+// Memory pool to be used to create texture
+// ppTexture, ppCubeTexture, ppVolumeTexture
+// The texture object that will be created
+//
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DXCreateTexture(
+ LPDIRECT3DDEVICE8 pDevice,
+ UINT Width,
+ UINT Height,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ LPDIRECT3DTEXTURE8* ppTexture);
+
+HRESULT WINAPI
+ D3DXCreateCubeTexture(
+ LPDIRECT3DDEVICE8 pDevice,
+ UINT Size,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ LPDIRECT3DCUBETEXTURE8* ppCubeTexture);
+
+HRESULT WINAPI
+ D3DXCreateVolumeTexture(
+ LPDIRECT3DDEVICE8 pDevice,
+ UINT Width,
+ UINT Height,
+ UINT Depth,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ LPDIRECT3DVOLUMETEXTURE8* ppVolumeTexture);
+
+
+
+//----------------------------------------------------------------------------
+// D3DXCreateTextureFromFile/Resource:
+// -----------------------------------
+// Create a texture object from a file or resource.
+//
+// Parameters:
+//
+// pDevice
+// The D3D device with which the texture is going to be used.
+// pSrcFile
+// File name.
+// hSrcModule
+// Module handle. if NULL, current module will be used.
+// pSrcResource
+// Resource name in module
+// pvSrcData
+// Pointer to file in memory.
+// SrcDataSize
+// Size in bytes of file in memory.
+// Width, Height, Depth, Size
+// Size in pixels; if zero or D3DX_DEFAULT, the size will be taken
+// from the file.
+// MipLevels
+// Number of mip levels; if zero or D3DX_DEFAULT, a complete mipmap
+// chain will be created.
+// Usage
+// Texture usage flags
+// Format
+// Desired pixel format. If D3DFMT_UNKNOWN, the format will be
+// taken from the file.
+// Pool
+// Memory pool to be used to create texture
+// Filter
+// D3DX_FILTER flags controlling how the image is filtered.
+// Or D3DX_DEFAULT for D3DX_FILTER_TRIANGLE.
+// MipFilter
+// D3DX_FILTER flags controlling how each miplevel is filtered.
+// Or D3DX_DEFAULT for D3DX_FILTER_BOX,
+// ColorKey
+// Color to replace with transparent black, or 0 to disable colorkey.
+// This is always a 32-bit ARGB color, independent of the source image
+// format. Alpha is significant, and should usually be set to FF for
+// opaque colorkeys. (ex. Opaque black == 0xff000000)
+// pSrcInfo
+// Pointer to a D3DXIMAGE_INFO structure to be filled in with the
+// description of the data in the source image file, or NULL.
+// pPalette
+// 256 color palette to be filled in, or NULL
+// ppTexture, ppCubeTexture, ppVolumeTexture
+// The texture object that will be created
+//
+//----------------------------------------------------------------------------
+
+
+// FromFile
+
+HRESULT WINAPI
+ D3DXCreateTextureFromFileA(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCSTR pSrcFile,
+ LPDIRECT3DTEXTURE8* ppTexture);
+
+HRESULT WINAPI
+ D3DXCreateTextureFromFileW(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCWSTR pSrcFile,
+ LPDIRECT3DTEXTURE8* ppTexture);
+
+#ifdef UNICODE
+#define D3DXCreateTextureFromFile D3DXCreateTextureFromFileW
+#else
+#define D3DXCreateTextureFromFile D3DXCreateTextureFromFileA
+#endif
+
+
+HRESULT WINAPI
+ D3DXCreateCubeTextureFromFileA(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCSTR pSrcFile,
+ LPDIRECT3DCUBETEXTURE8* ppCubeTexture);
+
+HRESULT WINAPI
+ D3DXCreateCubeTextureFromFileW(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCWSTR pSrcFile,
+ LPDIRECT3DCUBETEXTURE8* ppCubeTexture);
+
+#ifdef UNICODE
+#define D3DXCreateCubeTextureFromFile D3DXCreateCubeTextureFromFileW
+#else
+#define D3DXCreateCubeTextureFromFile D3DXCreateCubeTextureFromFileA
+#endif
+
+
+HRESULT WINAPI
+ D3DXCreateVolumeTextureFromFileA(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCSTR pSrcFile,
+ LPDIRECT3DVOLUMETEXTURE8* ppVolumeTexture);
+
+HRESULT WINAPI
+ D3DXCreateVolumeTextureFromFileW(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCWSTR pSrcFile,
+ LPDIRECT3DVOLUMETEXTURE8* ppVolumeTexture);
+
+#ifdef UNICODE
+#define D3DXCreateVolumeTextureFromFile D3DXCreateVolumeTextureFromFileW
+#else
+#define D3DXCreateVolumeTextureFromFile D3DXCreateVolumeTextureFromFileA
+#endif
+
+
+// FromResource
+
+HRESULT WINAPI
+ D3DXCreateTextureFromResourceA(
+ LPDIRECT3DDEVICE8 pDevice,
+ HMODULE hSrcModule,
+ LPCSTR pSrcResource,
+ LPDIRECT3DTEXTURE8* ppTexture);
+
+HRESULT WINAPI
+ D3DXCreateTextureFromResourceW(
+ LPDIRECT3DDEVICE8 pDevice,
+ HMODULE hSrcModule,
+ LPCWSTR pSrcResource,
+ LPDIRECT3DTEXTURE8* ppTexture);
+
+#ifdef UNICODE
+#define D3DXCreateTextureFromResource D3DXCreateTextureFromResourceW
+#else
+#define D3DXCreateTextureFromResource D3DXCreateTextureFromResourceA
+#endif
+
+
+HRESULT WINAPI
+ D3DXCreateCubeTextureFromResourceA(
+ LPDIRECT3DDEVICE8 pDevice,
+ HMODULE hSrcModule,
+ LPCSTR pSrcResource,
+ LPDIRECT3DCUBETEXTURE8* ppCubeTexture);
+
+HRESULT WINAPI
+ D3DXCreateCubeTextureFromResourceW(
+ LPDIRECT3DDEVICE8 pDevice,
+ HMODULE hSrcModule,
+ LPCWSTR pSrcResource,
+ LPDIRECT3DCUBETEXTURE8* ppCubeTexture);
+
+#ifdef UNICODE
+#define D3DXCreateCubeTextureFromResource D3DXCreateCubeTextureFromResourceW
+#else
+#define D3DXCreateCubeTextureFromResource D3DXCreateCubeTextureFromResourceA
+#endif
+
+
+HRESULT WINAPI
+ D3DXCreateVolumeTextureFromResourceA(
+ LPDIRECT3DDEVICE8 pDevice,
+ HMODULE hSrcModule,
+ LPCSTR pSrcResource,
+ LPDIRECT3DVOLUMETEXTURE8* ppVolumeTexture);
+
+HRESULT WINAPI
+ D3DXCreateVolumeTextureFromResourceW(
+ LPDIRECT3DDEVICE8 pDevice,
+ HMODULE hSrcModule,
+ LPCWSTR pSrcResource,
+ LPDIRECT3DVOLUMETEXTURE8* ppVolumeTexture);
+
+#ifdef UNICODE
+#define D3DXCreateVolumeTextureFromResource D3DXCreateVolumeTextureFromResourceW
+#else
+#define D3DXCreateVolumeTextureFromResource D3DXCreateVolumeTextureFromResourceA
+#endif
+
+
+// FromFileEx
+
+HRESULT WINAPI
+ D3DXCreateTextureFromFileExA(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCSTR pSrcFile,
+ UINT Width,
+ UINT Height,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ DWORD Filter,
+ DWORD MipFilter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo,
+ PALETTEENTRY* pPalette,
+ LPDIRECT3DTEXTURE8* ppTexture);
+
+HRESULT WINAPI
+ D3DXCreateTextureFromFileExW(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCWSTR pSrcFile,
+ UINT Width,
+ UINT Height,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ DWORD Filter,
+ DWORD MipFilter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo,
+ PALETTEENTRY* pPalette,
+ LPDIRECT3DTEXTURE8* ppTexture);
+
+#ifdef UNICODE
+#define D3DXCreateTextureFromFileEx D3DXCreateTextureFromFileExW
+#else
+#define D3DXCreateTextureFromFileEx D3DXCreateTextureFromFileExA
+#endif
+
+
+HRESULT WINAPI
+ D3DXCreateCubeTextureFromFileExA(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCSTR pSrcFile,
+ UINT Size,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ DWORD Filter,
+ DWORD MipFilter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo,
+ PALETTEENTRY* pPalette,
+ LPDIRECT3DCUBETEXTURE8* ppCubeTexture);
+
+HRESULT WINAPI
+ D3DXCreateCubeTextureFromFileExW(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCWSTR pSrcFile,
+ UINT Size,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ DWORD Filter,
+ DWORD MipFilter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo,
+ PALETTEENTRY* pPalette,
+ LPDIRECT3DCUBETEXTURE8* ppCubeTexture);
+
+#ifdef UNICODE
+#define D3DXCreateCubeTextureFromFileEx D3DXCreateCubeTextureFromFileExW
+#else
+#define D3DXCreateCubeTextureFromFileEx D3DXCreateCubeTextureFromFileExA
+#endif
+
+
+HRESULT WINAPI
+ D3DXCreateVolumeTextureFromFileExA(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCSTR pSrcFile,
+ UINT Width,
+ UINT Height,
+ UINT Depth,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ DWORD Filter,
+ DWORD MipFilter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo,
+ PALETTEENTRY* pPalette,
+ LPDIRECT3DVOLUMETEXTURE8* ppVolumeTexture);
+
+HRESULT WINAPI
+ D3DXCreateVolumeTextureFromFileExW(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCWSTR pSrcFile,
+ UINT Width,
+ UINT Height,
+ UINT Depth,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ DWORD Filter,
+ DWORD MipFilter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo,
+ PALETTEENTRY* pPalette,
+ LPDIRECT3DVOLUMETEXTURE8* ppVolumeTexture);
+
+#ifdef UNICODE
+#define D3DXCreateVolumeTextureFromFileEx D3DXCreateVolumeTextureFromFileExW
+#else
+#define D3DXCreateVolumeTextureFromFileEx D3DXCreateVolumeTextureFromFileExA
+#endif
+
+
+// FromResourceEx
+
+HRESULT WINAPI
+ D3DXCreateTextureFromResourceExA(
+ LPDIRECT3DDEVICE8 pDevice,
+ HMODULE hSrcModule,
+ LPCSTR pSrcResource,
+ UINT Width,
+ UINT Height,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ DWORD Filter,
+ DWORD MipFilter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo,
+ PALETTEENTRY* pPalette,
+ LPDIRECT3DTEXTURE8* ppTexture);
+
+HRESULT WINAPI
+ D3DXCreateTextureFromResourceExW(
+ LPDIRECT3DDEVICE8 pDevice,
+ HMODULE hSrcModule,
+ LPCWSTR pSrcResource,
+ UINT Width,
+ UINT Height,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ DWORD Filter,
+ DWORD MipFilter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo,
+ PALETTEENTRY* pPalette,
+ LPDIRECT3DTEXTURE8* ppTexture);
+
+#ifdef UNICODE
+#define D3DXCreateTextureFromResourceEx D3DXCreateTextureFromResourceExW
+#else
+#define D3DXCreateTextureFromResourceEx D3DXCreateTextureFromResourceExA
+#endif
+
+
+HRESULT WINAPI
+ D3DXCreateCubeTextureFromResourceExA(
+ LPDIRECT3DDEVICE8 pDevice,
+ HMODULE hSrcModule,
+ LPCSTR pSrcResource,
+ UINT Size,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ DWORD Filter,
+ DWORD MipFilter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo,
+ PALETTEENTRY* pPalette,
+ LPDIRECT3DCUBETEXTURE8* ppCubeTexture);
+
+HRESULT WINAPI
+ D3DXCreateCubeTextureFromResourceExW(
+ LPDIRECT3DDEVICE8 pDevice,
+ HMODULE hSrcModule,
+ LPCWSTR pSrcResource,
+ UINT Size,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ DWORD Filter,
+ DWORD MipFilter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo,
+ PALETTEENTRY* pPalette,
+ LPDIRECT3DCUBETEXTURE8* ppCubeTexture);
+
+#ifdef UNICODE
+#define D3DXCreateCubeTextureFromResourceEx D3DXCreateCubeTextureFromResourceExW
+#else
+#define D3DXCreateCubeTextureFromResourceEx D3DXCreateCubeTextureFromResourceExA
+#endif
+
+
+HRESULT WINAPI
+ D3DXCreateVolumeTextureFromResourceExA(
+ LPDIRECT3DDEVICE8 pDevice,
+ HMODULE hSrcModule,
+ LPCSTR pSrcResource,
+ UINT Width,
+ UINT Height,
+ UINT Depth,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ DWORD Filter,
+ DWORD MipFilter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo,
+ PALETTEENTRY* pPalette,
+ LPDIRECT3DVOLUMETEXTURE8* ppVolumeTexture);
+
+HRESULT WINAPI
+ D3DXCreateVolumeTextureFromResourceExW(
+ LPDIRECT3DDEVICE8 pDevice,
+ HMODULE hSrcModule,
+ LPCWSTR pSrcResource,
+ UINT Width,
+ UINT Height,
+ UINT Depth,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ DWORD Filter,
+ DWORD MipFilter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo,
+ PALETTEENTRY* pPalette,
+ LPDIRECT3DVOLUMETEXTURE8* ppVolumeTexture);
+
+#ifdef UNICODE
+#define D3DXCreateVolumeTextureFromResourceEx D3DXCreateVolumeTextureFromResourceExW
+#else
+#define D3DXCreateVolumeTextureFromResourceEx D3DXCreateVolumeTextureFromResourceExA
+#endif
+
+
+// FromFileInMemory
+
+HRESULT WINAPI
+ D3DXCreateTextureFromFileInMemory(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCVOID pSrcData,
+ UINT SrcDataSize,
+ LPDIRECT3DTEXTURE8* ppTexture);
+
+HRESULT WINAPI
+ D3DXCreateCubeTextureFromFileInMemory(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCVOID pSrcData,
+ UINT SrcDataSize,
+ LPDIRECT3DCUBETEXTURE8* ppCubeTexture);
+
+HRESULT WINAPI
+ D3DXCreateVolumeTextureFromFileInMemory(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCVOID pSrcData,
+ UINT SrcDataSize,
+ LPDIRECT3DVOLUMETEXTURE8* ppVolumeTexture);
+
+
+// FromFileInMemoryEx
+
+HRESULT WINAPI
+ D3DXCreateTextureFromFileInMemoryEx(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCVOID pSrcData,
+ UINT SrcDataSize,
+ UINT Width,
+ UINT Height,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ DWORD Filter,
+ DWORD MipFilter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo,
+ PALETTEENTRY* pPalette,
+ LPDIRECT3DTEXTURE8* ppTexture);
+
+HRESULT WINAPI
+ D3DXCreateCubeTextureFromFileInMemoryEx(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCVOID pSrcData,
+ UINT SrcDataSize,
+ UINT Size,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ DWORD Filter,
+ DWORD MipFilter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo,
+ PALETTEENTRY* pPalette,
+ LPDIRECT3DCUBETEXTURE8* ppCubeTexture);
+
+HRESULT WINAPI
+ D3DXCreateVolumeTextureFromFileInMemoryEx(
+ LPDIRECT3DDEVICE8 pDevice,
+ LPCVOID pSrcData,
+ UINT SrcDataSize,
+ UINT Width,
+ UINT Height,
+ UINT Depth,
+ UINT MipLevels,
+ DWORD Usage,
+ D3DFORMAT Format,
+ D3DPOOL Pool,
+ DWORD Filter,
+ DWORD MipFilter,
+ D3DCOLOR ColorKey,
+ D3DXIMAGE_INFO* pSrcInfo,
+ PALETTEENTRY* pPalette,
+ LPDIRECT3DVOLUMETEXTURE8* ppVolumeTexture);
+
+
+
+//----------------------------------------------------------------------------
+// D3DXSaveTextureToFile:
+// ----------------------
+// Save a texture to a file.
+//
+// Parameters:
+// pDestFile
+// File name of the destination file
+// DestFormat
+// D3DXIMAGE_FILEFORMAT specifying file format to use when saving.
+// pSrcTexture
+// Source texture, containing the image to be saved
+// pSrcPalette
+// Source palette of 256 colors, or NULL
+//
+//----------------------------------------------------------------------------
+
+
+HRESULT WINAPI
+ D3DXSaveTextureToFileA(
+ LPCSTR pDestFile,
+ D3DXIMAGE_FILEFORMAT DestFormat,
+ LPDIRECT3DBASETEXTURE8 pSrcTexture,
+ CONST PALETTEENTRY* pSrcPalette);
+
+HRESULT WINAPI
+ D3DXSaveTextureToFileW(
+ LPCWSTR pDestFile,
+ D3DXIMAGE_FILEFORMAT DestFormat,
+ LPDIRECT3DBASETEXTURE8 pSrcTexture,
+ CONST PALETTEENTRY* pSrcPalette);
+
+#ifdef UNICODE
+#define D3DXSaveTextureToFile D3DXSaveTextureToFileW
+#else
+#define D3DXSaveTextureToFile D3DXSaveTextureToFileA
+#endif
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+// Misc Texture APIs /////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+
+//----------------------------------------------------------------------------
+// D3DXFilterTexture:
+// ------------------
+// Filters mipmaps levels of a texture.
+//
+// Parameters:
+// pBaseTexture
+// The texture object to be filtered
+// pPalette
+// 256 color palette to be used, or NULL for non-palettized formats
+// SrcLevel
+// The level whose image is used to generate the subsequent levels.
+// Filter
+// D3DX_FILTER flags controlling how each miplevel is filtered.
+// Or D3DX_DEFAULT for D3DX_FILTER_BOX,
+//
+//----------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DXFilterTexture(
+ LPDIRECT3DBASETEXTURE8 pBaseTexture,
+ CONST PALETTEENTRY* pPalette,
+ UINT SrcLevel,
+ DWORD Filter);
+
+#define D3DXFilterCubeTexture D3DXFilterTexture
+#define D3DXFilterVolumeTexture D3DXFilterTexture
+
+
+
+//----------------------------------------------------------------------------
+// D3DXFillTexture:
+// ----------------
+// Uses a user provided function to fill each texel of each mip level of a
+// given texture.
+//
+// Paramters:
+// pTexture, pCubeTexture, pVolumeTexture
+// Pointer to the texture to be filled.
+// pFunction
+// Pointer to user provided evalutor function which will be used to
+// compute the value of each texel.
+// pData
+// Pointer to an arbitrary block of user defined data. This pointer
+// will be passed to the function provided in pFunction
+//-----------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DXFillTexture(
+ LPDIRECT3DTEXTURE8 pTexture,
+ LPD3DXFILL2D pFunction,
+ LPVOID pData);
+
+HRESULT WINAPI
+ D3DXFillCubeTexture(
+ LPDIRECT3DCUBETEXTURE8 pCubeTexture,
+ LPD3DXFILL3D pFunction,
+ LPVOID pData);
+
+HRESULT WINAPI
+ D3DXFillVolumeTexture(
+ LPDIRECT3DVOLUMETEXTURE8 pVolumeTexture,
+ LPD3DXFILL3D pFunction,
+ LPVOID pData);
+
+
+
+//----------------------------------------------------------------------------
+// D3DXComputeNormalMap:
+// ---------------------
+// Converts a height map into a normal map. The (x,y,z) components of each
+// normal are mapped to the (r,g,b) channels of the output texture.
+//
+// Parameters
+// pTexture
+// Pointer to the destination texture
+// pSrcTexture
+// Pointer to the source heightmap texture
+// pSrcPalette
+// Source palette of 256 colors, or NULL
+// Flags
+// D3DX_NORMALMAP flags
+// Channel
+// D3DX_CHANNEL specifying source of height information
+// Amplitude
+// The constant value which the height information is multiplied by.
+//---------------------------------------------------------------------------
+
+HRESULT WINAPI
+ D3DXComputeNormalMap(
+ LPDIRECT3DTEXTURE8 pTexture,
+ LPDIRECT3DTEXTURE8 pSrcTexture,
+ CONST PALETTEENTRY* pSrcPalette,
+ DWORD Flags,
+ DWORD Channel,
+ FLOAT Amplitude);
+
+
+
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+#endif //__D3DX8TEX_H__
diff --git a/src/dep/include/DXSDK/include/d3dxcore.h b/src/dep/include/DXSDK/include/d3dxcore.h
new file mode 100644
index 0000000..84f992c
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3dxcore.h
@@ -0,0 +1,1027 @@
+///////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dxcore.h
+// Content: D3DX core types and functions
+//
+///////////////////////////////////////////////////////////////////////////
+
+#ifndef __D3DXCORE_H__
+#define __D3DXCORE_H__
+
+#include
+#include
+#include "d3dxerr.h"
+
+
+typedef struct ID3DXContext *LPD3DXCONTEXT;
+
+// {9B74ED7A-BBEF-11d2-9F8E-0000F8080835}
+DEFINE_GUID(IID_ID3DXContext,
+ 0x9b74ed7a, 0xbbef, 0x11d2, 0x9f, 0x8e, 0x0, 0x0, 0xf8, 0x8, 0x8, 0x35);
+
+
+///////////////////////////////////////////////////////////////////////////
+// Defines and Enumerators used below:
+///////////////////////////////////////////////////////////////////////////
+
+//-------------------------------------------------------------------------
+// D3DX_DEFAULT:
+// ---------
+// A predefined value that could be used for any parameter in D3DX APIs or
+// member functions that is an enumerant or a handle. The D3DX
+// documentation indicates wherever D3DX_DEFAULT may be used,
+// and how it will be interpreted in each situation.
+//-------------------------------------------------------------------------
+#define D3DX_DEFAULT ULONG_MAX
+
+//-------------------------------------------------------------------------
+// D3DX_DEFAULT_FLOAT:
+// ------------------
+// Similar to D3DX_DEFAULT, but used for floating point parameters.
+// The D3DX documentation indicates wherever D3DX_DEFAULT_FLOAT may be used,
+// and how it will be interpreted in each situation.
+//-------------------------------------------------------------------------
+#define D3DX_DEFAULT_FLOAT FLT_MAX
+
+//-------------------------------------------------------------------------
+// Hardware Acceleration Level:
+// ---------------------------
+// These constants represent pre-defined hardware acceleration levels,
+// and may be used as a default anywhere a (DWORD) deviceIndex is required.
+// Each pre-define indicates a different level of hardware acceleration.
+// They are an alternative to using explicit deviceIndices retrieved by
+// D3DXGetDeviceDescription().
+//
+// The only case these pre-defines should be used as device indices is if
+// a particular level of acceleration is required, and given more than
+// one capable device on the computer, it does not matter which one
+// is used.
+//
+// The method of selection is as follows: If one of the D3DX devices on
+// the primary DDraw device supports a requested hardware acceleration
+// level, it will be used. Otherwise, the first matching device discovered
+// by D3DX will be used.
+//
+// Of course, it is possible for no match to exist for any of the
+// pre-defines on a particular computer. Passing such a value into the
+// D3DX apis will simply cause them to fail, reporting that no match
+// is available.
+//
+// D3DX_HWLEVEL_NULL: Null implementation (draws nothing)
+// D3DX_HWLEVEL_REFERENCE: Reference implementation (slowest)
+// D3DX_HWLEVEL_2D: 2D acceleration only (RGB rasterizer used)
+// D3DX_HWLEVEL_RASTER: Rasterization acceleration (likely most useful)
+// D3DX_HWLEVEL_TL: Transform and lighting acceleration
+// D3DX_DEFAULT: The highest level of acceleration available
+// on the primary DDraw device.
+//-------------------------------------------------------------------------
+#define D3DX_HWLEVEL_NULL (D3DX_DEFAULT - 1)
+#define D3DX_HWLEVEL_REFERENCE (D3DX_DEFAULT - 2)
+#define D3DX_HWLEVEL_2D (D3DX_DEFAULT - 3)
+#define D3DX_HWLEVEL_RASTER (D3DX_DEFAULT - 4)
+#define D3DX_HWLEVEL_TL (D3DX_DEFAULT - 5)
+
+//-------------------------------------------------------------------------
+// Surface Class:
+// -------------
+// These are the various types of 2D-surfaces classified according to their
+// usage. Note that a number of them overlap. e.g. STENCILBUFFERS and
+// DEPTHBUFFERS overlap (since in DX7 implementation the stencil and depth
+// bits are part of the same pixel format).
+//
+// Mapping to the DX7 DDPIXELFORMAT concepts:
+// -----------------------------------------
+// D3DX_SC_DEPTHBUFFER: All ddpfs which have the DDPF_ZPIXELS or the
+// DDPF_ZBUFFER flags set.
+// D3DX_SC_STENCILBUFFER: All ddpfs which have the DDPF_STENCILBUFFER
+// flag set.
+// D3DX_SC_BUMPMAP: All ddpfs which have the DDPF_BUMPLUMINANCE
+// or the DDPF_BUMPDUDV flags set.
+// D3DX_SC_LUMINANCEMAP: All ddpfs which have the DDPF_BUMPLUMINANCE
+// or the DDPF_LUMINANCE flags set.
+// D3DX_SC_COLORTEXTURE: All the surfaces that have color information in
+// them and can be used for texturing.
+// D3DX_SC_COLORRENDERTGT: All the surfaces that contain color
+// information and can be used as render targets.
+//-------------------------------------------------------------------------
+#define D3DX_SC_DEPTHBUFFER 0x01
+#define D3DX_SC_STENCILBUFFER 0x02
+#define D3DX_SC_COLORTEXTURE 0x04
+#define D3DX_SC_BUMPMAP 0x08
+#define D3DX_SC_LUMINANCEMAP 0x10
+#define D3DX_SC_COLORRENDERTGT 0x20
+
+//-------------------------------------------------------------------------
+// Surface Formats:
+// ---------------
+// These are the various types of surface formats that can be enumerated,
+// there is no DDPIXELFORMAT structure in D3DX, the enums carry the meaning
+// (like FOURCCs).
+//
+// All the surface classes are represented here.
+//
+//-------------------------------------------------------------------------
+typedef enum _D3DX_SURFACEFORMAT
+{
+ D3DX_SF_UNKNOWN = 0,
+ D3DX_SF_R8G8B8 = 1,
+ D3DX_SF_A8R8G8B8 = 2,
+ D3DX_SF_X8R8G8B8 = 3,
+ D3DX_SF_R5G6B5 = 4,
+ D3DX_SF_R5G5B5 = 5,
+ D3DX_SF_PALETTE4 = 6,
+ D3DX_SF_PALETTE8 = 7,
+ D3DX_SF_A1R5G5B5 = 8,
+ D3DX_SF_X4R4G4B4 = 9,
+ D3DX_SF_A4R4G4B4 =10,
+ D3DX_SF_L8 =11, // 8 bit luminance-only
+ D3DX_SF_A8L8 =12, // 16 bit alpha-luminance
+ D3DX_SF_U8V8 =13, // 16 bit bump map format
+ D3DX_SF_U5V5L6 =14, // 16 bit bump map format with luminance
+ D3DX_SF_U8V8L8 =15, // 24 bit bump map format with luminance
+ D3DX_SF_UYVY =16, // UYVY format (PC98 compliance)
+ D3DX_SF_YUY2 =17, // YUY2 format (PC98 compliance)
+ D3DX_SF_DXT1 =18, // S3 texture compression technique 1
+ D3DX_SF_DXT3 =19, // S3 texture compression technique 3
+ D3DX_SF_DXT5 =20, // S3 texture compression technique 5
+ D3DX_SF_R3G3B2 =21, // 8 bit RGB texture format
+ D3DX_SF_A8 =22, // 8 bit alpha-only
+ D3DX_SF_TEXTUREMAX =23, // Last texture format
+
+ D3DX_SF_Z16S0 =256,
+ D3DX_SF_Z32S0 =257,
+ D3DX_SF_Z15S1 =258,
+ D3DX_SF_Z24S8 =259,
+ D3DX_SF_S1Z15 =260,
+ D3DX_SF_S8Z24 =261,
+ D3DX_SF_DEPTHMAX =262, // Last depth format
+
+ D3DX_SF_FORCEMAX = (DWORD)(-1)
+} D3DX_SURFACEFORMAT;
+
+//-------------------------------------------------------------------------
+// Filtering types for Texture APIs
+//
+// -------------
+// These are the various filter types for generation of mip-maps
+//
+// D3DX_FILTERTYPE
+// -----------------------------------------
+// D3DX_FT_POINT: Point sampling only - no filtering
+// D3DX_FT_LINEAR: Bi-linear filtering
+//
+//-------------------------------------------------------------------------
+typedef enum _D3DX_FILTERTYPE
+{
+ D3DX_FT_POINT = 0x01,
+ D3DX_FT_LINEAR = 0x02,
+ D3DX_FT_DEFAULT = D3DX_DEFAULT
+} D3DX_FILTERTYPE;
+
+///////////////////////////////////////////////////////////////////////////
+// Structures used below:
+///////////////////////////////////////////////////////////////////////////
+
+//-------------------------------------------------------------------------
+// D3DX_VIDMODEDESC: Display mode description.
+// ----------------
+// width: Screen Width
+// height: Screen Height
+// bpp: Bits per pixel
+// refreshRate: Refresh rate
+//-------------------------------------------------------------------------
+typedef struct _D3DX_VIDMODEDESC
+{
+ DWORD width;
+ DWORD height;
+ DWORD bpp;
+ DWORD refreshRate;
+} D3DX_VIDMODEDESC;
+
+//-------------------------------------------------------------------------
+// D3DX_DEVICEDESC: Description of a device that can do 3D
+// ---------------
+// deviceIndex: Unique (DWORD) number for the device.
+// hwLevel: Level of acceleration afforded. This is one of the
+// predefined Device Indices, and exists in this
+// structure for informational purposes only. More than
+// one device on the system may have the same hwLevel.
+// To refer to a particular device with the D3DX apis,
+// use the value in the deviceIndex member instead.
+// ddGuid: The ddraw GUID
+// d3dDeviceGuid: Direct3D Device GUID
+// ddDeviceID: DDraw's GetDeviceIdentifier GUID. This GUID is unique to
+// a particular driver revision on a particular video card.
+// driverDesc: String describing the driver
+// monitor: Handle to the video monitor used by this device (multimon
+// specific). Devices that use different monitors on a
+// multimon system report different values in this field.
+// Therefore, to test for a multimon system, an application
+// should look for more than one different monitor handle in
+// the list of D3DX devices.
+// onPrimary: Indicates if this device is on the primary monitor
+// (multimon specific).
+//-------------------------------------------------------------------------
+#define D3DX_DRIVERDESC_LENGTH 256
+
+typedef struct _D3DX_DEVICEDESC
+{
+ DWORD deviceIndex;
+ DWORD hwLevel;
+ GUID ddGuid;
+ GUID d3dDeviceGuid;
+ GUID ddDeviceID;
+ char driverDesc[D3DX_DRIVERDESC_LENGTH];
+ HMONITOR monitor;
+ BOOL onPrimary;
+} D3DX_DEVICEDESC;
+
+///////////////////////////////////////////////////////////////////////////
+// APIs:
+///////////////////////////////////////////////////////////////////////////
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+//-------------------------------------------------------------------------
+// D3DXInitialize: The very first call a D3DX app must make.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXInitialize();
+
+//-------------------------------------------------------------------------
+// D3DXUninitialize: The very last call a D3DX app must make.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXUninitialize();
+
+//-------------------------------------------------------------------------
+// D3DXGetDeviceCount: Returns the maximum number of D3DXdevices
+// ------------------ available.
+//
+// D3DXGetDeviceDescription: Lists the 2D and 3D capabilities of the devices.
+// ------------------------ Also, the various guids needed by ddraw and d3d.
+//
+// Params:
+// [in] DWORD deviceIndex: Which device? Starts at 0.
+// [in] D3DX_DEVICEDESC* pd3dxDevice: Pointer to the D3DX_DEVICEDESC
+// structure to be filled in.
+//-------------------------------------------------------------------------
+DWORD WINAPI
+ D3DXGetDeviceCount();
+
+HRESULT WINAPI
+ D3DXGetDeviceDescription(DWORD deviceIndex,
+ D3DX_DEVICEDESC* pd3dxDeviceDesc);
+
+//-------------------------------------------------------------------------
+// D3DXGetMaxNumVideoModes: Returns the maximum number of video-modes .
+// -----------------------
+//
+// Params:
+// [in] DWORD deviceIndex: The device being referred to.
+// [in] DWORD flags: If D3DX_GVM_REFRESHRATE is set, then the refresh
+// rates are not ignored.
+//
+// D3DXGetVideoMode: Describes a particular video mode for this device
+// ----------------
+//
+// Note: These queries will simply give you a list of modes that the
+// display adapter tells DirectX that it supports.
+// There is no guarantee that D3DXCreateContext(Ex) will succeed
+// with all listed video modes. This is a fundamental limitation
+// of the current DirectX architecture which D3DX cannot hide in
+// any clean way.
+//
+// Params:
+// [in] DWORD deviceIndex: The device being referred to.
+// [in] DWORD flags: If D3DX_GVM_REFRESHRATE is set, then the refresh
+// rates are returned
+// [in] DWORD which: Which VideoMode ? Starts at 0.
+// [out] D3DX_VIDMODEDESC* pModeList: Pointer to the D3DX_VIDMODEDESC
+// structure that will be filled in.
+//-------------------------------------------------------------------------
+DWORD WINAPI
+ D3DXGetMaxNumVideoModes(DWORD deviceIndex,
+ DWORD flags);
+
+HRESULT WINAPI
+ D3DXGetVideoMode(DWORD deviceIndex,
+ DWORD flags,
+ DWORD modeIndex,
+ D3DX_VIDMODEDESC* pModeDesc);
+
+#define D3DX_GVM_REFRESHRATE 0x00000001
+//-------------------------------------------------------------------------
+// D3DXGetMaxSurfaceFormats: Returns the maximum number of surface
+// ------------------------ formats supported by the device at that
+// video mode.
+//
+// D3DXGetSurfaceFormat: Describes one of the supported surface formats.
+// ---------------------
+//
+// Params:
+// [in] DWORD deviceIndex: The device being referred to.
+// [in] D3DX_VIDMODEDESC* pDesc: The display mode at which the supported
+// surface formats are requested. If it is
+// NULL, the current display mode is
+// assumed.
+// [in] DWORD surfClassFlags: Required surface classes. Only surface
+// formats which support all specified
+// surface classes will be returned.
+// (Multiple surface classes may be specified
+// using bitwise OR.)
+// [in] DWORD which: Which surface formats to retrieve. Starts at 0.
+// [out] D3DX_SURFACEFORMAT* pFormat: The surface format
+//-------------------------------------------------------------------------
+DWORD WINAPI
+ D3DXGetMaxSurfaceFormats(DWORD deviceIndex,
+ D3DX_VIDMODEDESC* pDesc,
+ DWORD surfClassFlags);
+HRESULT WINAPI
+ D3DXGetSurfaceFormat(DWORD deviceIndex,
+ D3DX_VIDMODEDESC* pDesc,
+ DWORD surfClassFlags,
+ DWORD surfaceIndex,
+ D3DX_SURFACEFORMAT* pFormat);
+
+
+//-------------------------------------------------------------------------
+// D3DXGetCurrentVideoMode: Retrieves the current video mode for this device.
+// -------------------
+//
+// Params:
+// [in] DWORD deviceIndex: The device being referred to.
+// [out] D3DX_VIDMODEDESC* pVidMode: The current video mode
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXGetCurrentVideoMode(DWORD deviceIndex,
+ D3DX_VIDMODEDESC* pVidMode);
+
+//-------------------------------------------------------------------------
+// D3DXGetDeviceCaps: Lists all the capabilities of a device at a display
+// mode.
+// ----------------
+//
+// Params:
+// [in] DWORD deviceIndex: The device being referred to.
+// [in] D3DX_VIDMODEDESC* pDesc: If this is NULL, we will return the
+// caps at the current display mode of
+// the device.
+// [out] D3DDEVICEDESC7* pD3DDeviceDesc7: D3D Caps ( NULL to ignore
+// parameter)
+// [out] DDCAPS7* pDDHalCaps: DDraw HAL Caps (NULL to ignore parameter)
+// [out] DDCAPS7* pDDHelCaps: DDraw HEL Caps (NULL to ignore paramter)
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXGetDeviceCaps(DWORD deviceIndex,
+ D3DX_VIDMODEDESC* pVidMode,
+ D3DDEVICEDESC7* pD3DCaps,
+ DDCAPS* pDDHALCaps,
+ DDCAPS* pDDHELCaps);
+
+//-------------------------------------------------------------------------
+// D3DXCreateContext: Initializes the chosen device. It is the simplest init
+// ----------------- function available. Parameters are treated the same
+// as the matching subset of parameters in
+// D3DXCreateContextEx, documented below.
+// Remaining D3DXCreateContextEx parameters that are
+// not present in D3DXCreateContext are treated as
+// D3DX_DEFAULT. Note that multimon is not supported
+// with D3DXCreateContext.
+//
+// D3DXCreateContextEx: A more advanced function to initialize the device.
+// ------------------- Also accepts D3DX_DEFAULT for most of the parameters
+// and then will do what D3DXCreateContext did.
+//
+// Note: Do not expect D3DXCreateContext(Ex) to be fail-safe (as with any
+// API). Supported device capablilites should be used as a guide
+// for choosing parameter values. Keep in mind that there will
+// inevitably be some combinations of parameters that just do not work.
+//
+// Params:
+// [in] DWORD deviceIndex: The device being referred to.
+// [in] DWORD flags: The valid flags are D3DX_CONTEXT_FULLSCREEN, and
+// D3DX_CONTEXT_OFFSCREEN. These flags cannot both
+// be specified. If no flags are specified, the
+// context defaults to windowed mode.
+//
+// [in] HWND hwnd: Device window. See note.
+// [in] HWND hwndFocus: Window which receives keyboard messages from
+// the device window. The device window should be
+// a child of focus window. Useful for multimon
+// applications. See note.
+// NOTE:
+// windowed:
+// hwnd must be a valid window. hwndFocus must be NULL or
+// D3DX_DEFAULT.
+//
+// fullscreen:
+// Either hwnd or hwndFocus must be a valid window. (Both cannot
+// be NULL or D3DX_DEFAULT). If hwnd is NULL or D3DX_DEFAULT,
+// a default device window will be created as a child of hwndFocus.
+//
+// offscreen:
+// Both hwnd and hwndFocus must be NULL or D3DX_DEFAULT
+//
+// [in] DWORD numColorBits: If D3DX_DEFAULT is passed for windowed mode,
+// the current desktop's color depth is chosen.
+// For full screen mode, D3DX_DEFAULT causes 16
+// bit color to be used.
+// [in] DWORD numAlphaBits: If D3DX_DEFAULT is passed, 0 is chosen.
+// [in] DWORD numDepthbits: If D3DX_DEFAULT is passed,
+// the highest available number of depth bits
+// is chosen. See note.
+// [in] DWORD numStencilBits: If D3DX_DEFAULT is passed, the highest
+// available number of stencil bits is chosen.
+// See note.
+//
+// NOTE: If both numDepthBits and numStencilBits are D3DX_DEFAULT,
+// D3DX first picks the highest available number of stencil
+// bits. Then, for the chosen number of stencil bits,
+// the highest available number of depth bits is chosen.
+// If only one of numStencilBits or numDepthBits
+// is D3DX_DEFAULT, the highest number of bits available
+// for this parameter is chosen out of only the formats
+// that support the number of bits requested for the
+// fixed parameter.
+//
+// [in] DWORD numBackBuffers: Number of back buffers, or D3DX_DEFAULT.
+// See note.
+//
+// NOTE:
+// windowed: D3DX_DEFAULT means 1. You must specify one back buffer.
+//
+// fullscreen: D3DX_DEFAULT means 1. Any number of back buffers can be
+// specified.
+//
+// offscreen: D3DX_DEFAULT means 0. You cannot specify additional back
+// buffers.
+//
+// [in] DWORD width: Width, in pixels, or D3DX_DEFAULT. See note.
+// [in] DWORD height: Height, in pixels, or D3DX_DEFAULT. See note.
+//
+// NOTE:
+// windowed: If either width or height is D3DX_DEFAULT, both values
+// default to the dimensions of the client area of hwnd.
+//
+// fullscreen: If either width or height is D3DX_DEFAULT, width
+// defaults to 640, and height defaults to 480.
+//
+// offscreen: An error is returned if either width or height is
+// D3DX_DEFAULT.
+//
+// [in] DWORD refreshRate: D3DX_DEFAULT means we let ddraw choose for
+// us. Ignored for windowed and offscreen modes.
+// [out] LPD3DXCONTEXT* ppCtx: This is the Context object that is used for
+// rendering on that device.
+//
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCreateContext(DWORD deviceIndex,
+ DWORD flags,
+ HWND hwnd,
+ DWORD width,
+ DWORD height,
+ LPD3DXCONTEXT* ppCtx);
+
+HRESULT WINAPI
+ D3DXCreateContextEx(DWORD deviceIndex,
+ DWORD flags,
+ HWND hwnd,
+ HWND hwndFocus,
+ DWORD numColorBits,
+ DWORD numAlphaBits,
+ DWORD numDepthbits,
+ DWORD numStencilBits,
+ DWORD numBackBuffers,
+ DWORD width,
+ DWORD height,
+ DWORD refreshRate,
+ LPD3DXCONTEXT* ppCtx);
+
+// The D3DXCreateContext(Ex) flags are:
+#define D3DX_CONTEXT_FULLSCREEN 0x00000001
+#define D3DX_CONTEXT_OFFSCREEN 0x00000002
+
+//-------------------------------------------------------------------------
+// D3DXGetErrorString: Prints out the error string given an hresult. Prints
+// ------------------ Win32 as well as DX6 error messages besides the D3DX
+// messages.
+//
+// Params:
+// [in] HRESULT hr: The error code to be deciphered.
+// [in] DWORD strLength: Length of the string passed in.
+// [out] LPSTR pStr: The string output. This string of appropriate
+// size needs to be passed in.
+//-------------------------------------------------------------------------
+void WINAPI
+ D3DXGetErrorString(HRESULT hr,
+ DWORD strLength,
+ LPSTR pStr);
+
+//-------------------------------------------------------------------------
+// D3DXMakeDDPixelFormat: Fills in a DDPIXELFORMAT structure based on the
+// --------------------- D3DX surface format requested.
+//
+// Params:
+// [in] D3DX_SURFACEFORMAT d3dxFormat: Surface format.
+// [out] DDPIXELFORMAT* pddpf: Pixel format matching the given
+// surface format.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXMakeDDPixelFormat(D3DX_SURFACEFORMAT d3dxFormat,
+ DDPIXELFORMAT* pddpf);
+
+//-------------------------------------------------------------------------
+// D3DXMakeSurfaceFormat: Determines the surface format corresponding to
+// --------------------- a given DDPIXELFORMAT.
+//
+// Params:
+// [in] DDPIXELFORMAT* pddpf: Pixel format.
+// Return Value:
+// D3DX_SURFACEFORMAT: Surface format matching the given pixel format.
+// D3DX_SF_UNKNOWN if the format is not supported
+//-------------------------------------------------------------------------
+D3DX_SURFACEFORMAT WINAPI
+ D3DXMakeSurfaceFormat(DDPIXELFORMAT* pddpf);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+///////////////////////////////////////////////////////////////////////////
+// Interfaces:
+///////////////////////////////////////////////////////////////////////////
+
+//-------------------------------------------------------------------------
+// ID3DXContext interface:
+//
+// This encapsulates all the stuff that the app might
+// want to do at initialization time and any global control over d3d and
+// ddraw.
+//-------------------------------------------------------------------------
+
+
+DECLARE_INTERFACE_(ID3DXContext, IUnknown)
+{
+ //
+ // IUnknown methods
+ //
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ // Get the DDraw and Direct3D objects to call DirectDraw or
+ // Direct3D Immediate Mode functions.
+ // If the objects don't exist (because they have not
+ // been created for some reason) NULL is returned.
+ // All the objects returned in the following Get* functions
+ // are addref'ed. It is the application's responsibility to
+ // release them when no longer needed.
+ STDMETHOD_(LPDIRECTDRAW7,GetDD)(THIS) PURE;
+ STDMETHOD_(LPDIRECT3D7,GetD3D)(THIS) PURE;
+ STDMETHOD_(LPDIRECT3DDEVICE7,GetD3DDevice)(THIS) PURE;
+
+ // Get the various buffers that get created at the init time
+ // These are addref'ed as well. It is the application's responsibility
+ // to release them before the app quits or when it needs a resize.
+ STDMETHOD_(LPDIRECTDRAWSURFACE7,GetPrimary)(THIS) PURE;
+ STDMETHOD_(LPDIRECTDRAWSURFACE7,GetZBuffer)(THIS) PURE;
+ STDMETHOD_(LPDIRECTDRAWSURFACE7,GetBackBuffer)(THIS_ DWORD which) PURE;
+
+ // Get the associated window handles
+ STDMETHOD_(HWND,GetWindow)(THIS) PURE;
+ STDMETHOD_(HWND,GetFocusWindow)(THIS) PURE;
+
+ //
+ // Various Get methods, in case the user had specified default
+ // parameters
+ //
+ STDMETHOD(GetDeviceIndex)(THIS_
+ LPDWORD pDeviceIndex,
+ LPDWORD pHwLevel) PURE;
+
+ STDMETHOD_(DWORD, GetNumBackBuffers)(THIS) PURE;
+
+ STDMETHOD(GetNumBits)(THIS_
+ LPDWORD pColorBits,
+ LPDWORD pDepthBits,
+ LPDWORD pAlphaBits,
+ LPDWORD pStencilBits) PURE;
+
+ STDMETHOD(GetBufferSize)(THIS_
+ LPDWORD pWidth,
+ LPDWORD pHeight) PURE;
+
+ // Get the flags that were used to create this context
+ STDMETHOD_(DWORD, GetCreationFlags)(THIS) PURE;
+ STDMETHOD_(DWORD, GetRefreshRate)(THIS) PURE;
+
+ // Restoring surfaces in case stuff is lost
+ STDMETHOD(RestoreSurfaces)(THIS) PURE;
+
+ // Resize all the buffers to the new width and height
+ STDMETHOD(Resize)(THIS_ DWORD width, DWORD height) PURE;
+
+ // Update the frame using a flip or a blit,
+ // If the D3DX_UPDATE_NOVSYNC flag is set, blit is used if the
+ // driver cannot flip without waiting for vsync in full-screen mode.
+ STDMETHOD(UpdateFrame)(THIS_ DWORD flags) PURE;
+
+ // Render a string at the specified coordinates, with the specified
+ // colour. This is only provided as a convenience for
+ // debugging/information during development.
+ // topLeftX and topLeftY represent the location of the top left corner
+ // of the string, on the render target.
+ // The coordinate and color parameters each have a range of 0.0-1.0
+ STDMETHOD(DrawDebugText)(THIS_
+ float topLeftX,
+ float topLeftY,
+ D3DCOLOR color,
+ LPSTR pString) PURE;
+
+ // Clears to the current viewport
+ // The following are the valid flags:
+ // D3DCLEAR_TARGET (to clear the render target )
+ // D3DCLEAR_ZBUFFER (to clear the depth-buffer )
+ // D3DCLEAR_STENCIL (to clear the stencil-buffer )
+ STDMETHOD(Clear)(THIS_ DWORD ClearFlags) PURE;
+
+ STDMETHOD(SetClearColor)(THIS_ D3DCOLOR color ) PURE;
+ STDMETHOD(SetClearDepth)(THIS_ float z) PURE;
+ STDMETHOD(SetClearStencil)(THIS_ DWORD stencil) PURE;
+};
+
+
+//-------------------------------------------------------------------------
+// Flags for Update member function:
+//
+
+// Flag to indicate that blit should be used instead of a flip
+// for full-screen rendering.
+#define D3DX_UPDATE_NOVSYNC (1<<0)
+
+///////////////////////////////////////////////////////////////////////////
+// Texturing APIs:
+///////////////////////////////////////////////////////////////////////////
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+//-------------------------------------------------------------------------
+// D3DXCheckTextureRequirements: Return information about texture creation
+// ---------------------------- (used by CreateTexture, CreateTextureFromFile
+// and CreateCubeMapTexture)
+//
+// Parameters:
+//
+// pd3dDevice
+// The D3D device with which the texture is going to be used.
+// pFlags
+// allows specification of D3DX_TEXTURE_NOMIPMAP
+// D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation
+// is not supported.
+// pWidth
+// width in pixels or NULL
+// returns corrected width
+// pHeight
+// height in pixels or NULL
+// returns corrected height
+// pPixelFormat
+// surface format
+// returns best match to input format
+//
+// Notes: 1. Unless the flags is set to specifically prevent creating
+// mipmaps, mipmaps are generated all the way till 1x1 surface.
+// 2. width, height and pixelformat are altered based on available
+// hardware. For example:
+// a. Texture dimensions may be required to be powers of 2
+// b. We may require width == height for some devices
+// c. If PixelFormat is unavailable, a best fit is made
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCheckTextureRequirements( LPDIRECT3DDEVICE7 pd3dDevice,
+ LPDWORD pFlags,
+ LPDWORD pWidth,
+ LPDWORD pHeight,
+ D3DX_SURFACEFORMAT* pPixelFormat);
+
+//-------------------------------------------------------------------------
+// D3DXCreateTexture: Create an empty texture object
+// -----------------
+//
+// Parameters:
+//
+// pd3dDevice
+// The D3D device with which the texture is going to be used.
+// pFlags
+// allows specification of D3DX_TEXTURE_NOMIPMAP
+// D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation
+// is not supported. Additionally, D3DX_TEXTURE_STAGE can be specified
+// to indicate which texture stage the texture is for e.g.
+// D3D_TEXTURE_STAGE1 indicates that the texture is for use with texture
+// stage one. Stage Zero is the default if no TEXTURE_STAGE flags are
+// set.
+// pWidth
+// width in pixels; 0 or NULL is unacceptable
+// returns corrected width
+// pHeight
+// height in pixels; 0 or NULL is unacceptable
+// returns corrected height
+// pPixelFormat
+// surface format. D3DX_DEFAULT is unacceptable.
+// returns actual format that was used
+// pDDPal
+// DDraw palette that is set (if present) on paletted surfaces.
+// It is ignored even if it is set, for non-paletted surfaces.
+// ppDDSurf
+// The ddraw surface that will be created
+// pNumMipMaps
+// the number of mipmaps actually generated
+//
+// Notes: See notes for D3DXCheckTextureRequirements.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCreateTexture( LPDIRECT3DDEVICE7 pd3dDevice,
+ LPDWORD pFlags,
+ LPDWORD pWidth,
+ LPDWORD pHeight,
+ D3DX_SURFACEFORMAT* pPixelFormat,
+ LPDIRECTDRAWPALETTE pDDPal,
+ LPDIRECTDRAWSURFACE7* ppDDSurf,
+ LPDWORD pNumMipMaps);
+
+//-------------------------------------------------------------------------
+// D3DXCreateCubeMapTexture: Create blank cube-map texture
+// ------------------------
+//
+// Parameters:
+//
+// pd3dDevice
+// The D3D device with which the texture is going to be used.
+// pFlags
+// allows specification of D3DX_TEXTURE_NOMIPMAP
+// D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation
+// is not supported. Additionally, D3DX_TEXTURE_STAGE can be specified
+// to indicate which texture stage the texture is for e.g.
+// D3D_TEXTURE_STAGE1 indicates that the texture is for use with texture
+// stage one. Stage Zero is the default if no TEXTURE_STAGE flags are
+// set.
+// cubefaces
+// allows specification of which faces of the cube-map to generate.
+// D3DX_DEFAULT, 0, and DDSCAPS2_CUBEMAP_ALLFACES all mean
+// "create all 6 faces of the cubemap". Any combination of
+// DDSCAPS2_CUBEMAP_POSITIVEX, DDSCAPS2_CUBEMAP_NEGATIVEX,
+// DDSCAPS2_CUBEMAP_POSITIVEY, DDSCAPS2_CUBEMAP_NEGATIVEY,
+// DDSCAPS2_CUBEMAP_POSITIVEZ, or DDSCAPS2_CUBEMAP_NEGATIVEZ, is
+// valid.
+// colorEmptyFaces
+// allows specification of the color to use for the faces that were not
+// specified in the cubefaces parameter.
+// pWidth
+// width in pixels; 0 or NULL is unacceptable
+// returns corrected width
+// pHeight
+// height in pixels; 0 or NULL is unacceptable
+// returns corrected height
+// pPixelFormat
+// surface format. D3DX_DEFAULT is unacceptable.
+// returns actual format that was used
+// pDDPal
+// DDraw palette that is set (if present) on paletted surfaces.
+// It is ignored even if it is set, for non-paletted surfaces.
+// ppDDSurf
+// the ddraw surface that will be created
+// pNumMipMaps
+// the number of mipmaps generated for a particular face of the
+// cubemap.
+//
+// Notes: See notes for D3DXCheckTextureRequirements.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCreateCubeMapTexture( LPDIRECT3DDEVICE7 pd3dDevice,
+ LPDWORD pFlags,
+ DWORD cubefaces,
+ D3DCOLOR colorEmptyFaces,
+ LPDWORD pWidth,
+ LPDWORD pHeight,
+ D3DX_SURFACEFORMAT *pPixelFormat,
+ LPDIRECTDRAWPALETTE pDDPal,
+ LPDIRECTDRAWSURFACE7* ppDDSurf,
+ LPDWORD pNumMipMaps);
+
+
+//-------------------------------------------------------------------------
+// D3DXCreateTextureFromFile: Create a texture object from a file or from the
+// ------------------------- resource. Only BMP and DIB are supported from the
+// resource portion of the executable.
+//
+// Parameters:
+//
+// pd3dDevice
+// The D3D device with which the texture is going to be used.
+// pFlags
+// allows specification of D3DX_TEXTURE_NOMIPMAP
+// D3DX_TEXTURE_NOMIPMAP may be returned in the case where mipmap creation
+// is not supported. Additionally, D3DX_TEXTURE_STAGE can be specified
+// to indicate which texture stage the texture is for e.g.
+// D3D_TEXTURE_STAGE1 indicates that the texture is for use with texture
+// stage one. Stage Zero is the default if no TEXTURE_STAGE flags are
+// set.
+// pWidth
+// Width in pixels. If 0 or D3DX_DEFAULT, the width will be taken
+// from the file
+// returns corrected width
+// pHeight
+// Height in pixels. If 0 or D3DX_DEFAULT, the height will be taken
+// from the file
+// returns corrected height
+// pPixelFormat
+// If D3DX_SF_UNKNOWN is passed in, pixel format closest to the bitmap
+// will be chosen
+// returns actual format that was used
+// pDDPal
+// DDraw palette that is set (if present) on paletted surfaces.
+// It is ignored even if it is set, for non-paletted surfaces.
+// ppDDSurf
+// The ddraw surface that will be created.
+// pNumMipMaps
+// The number of mipmaps generated.
+// pSrcName
+// File name. BMP, DIB, DDS, are supported.
+//
+// TGA is supported for the following cases: 16, 24, 32bpp direct color and 8bpp palettized.
+// Also, 8, 16bpp grayscale is supported. RLE versions of the above
+// TGA formats are also supported. ColorKey and Premultiplied Alpha
+// are not currently supported for TGA files.
+// returns created format
+//
+// Notes: See notes for D3DXCheckTextureRequirements.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCreateTextureFromFile( LPDIRECT3DDEVICE7 pd3dDevice,
+ LPDWORD pFlags,
+ LPDWORD pWidth,
+ LPDWORD pHeight,
+ D3DX_SURFACEFORMAT* pPixelFormat,
+ LPDIRECTDRAWPALETTE pDDPal,
+ LPDIRECTDRAWSURFACE7* ppDDSurf,
+ LPDWORD pNumMipMaps,
+ LPSTR pSrcName,
+ D3DX_FILTERTYPE filterType);
+
+//-------------------------------------------------------------------------
+// D3DXLoadTextureFromFile: Load from a file into a mipmap level. Doing the
+// ----------------------- necessary color conversion and rescaling. File
+// format support is identical to
+// D3DXCreateTextureFromFile's.
+//
+// pd3dDevice
+// The D3D device with which the texture is going to be used.
+// pTexture
+// a pointer to a DD7Surface which was created with either
+// CreateTextureFromFile or CreateTexture.
+// mipMapLevel
+// indicates mipmap level
+// Note:
+// 1. Error if mipmap level doesn't exist
+// 2. If D3DX_DEFAULT and equal number of mipmap levels exist
+// then all the source mip-levels are loaded
+// 3. If the source has mipmaps and the dest doesn't, use the top one
+// 4. If the dest has miplevels and source doesn't, we expand
+// 5. If there are unequal numbers of miplevels, we expand
+// pSrcName
+// File name. BMP, DIB, DDS, are supported.
+// For details on TGA support, refer to the comments for
+// D3DXCreateTextureFromFile
+// pSrcRect
+// the source rectangle or null (whole surface)
+// pDestRect
+// the destination rectangle or null (whole surface)
+// filterType
+// filter used for mipmap generation
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXLoadTextureFromFile( LPDIRECT3DDEVICE7 pd3dDevice,
+ LPDIRECTDRAWSURFACE7 pTexture,
+ DWORD mipMapLevel,
+ LPSTR pSrcName,
+ RECT* pSrcRect,
+ RECT* pDestRect,
+ D3DX_FILTERTYPE filterType);
+
+//-------------------------------------------------------------------------
+// D3DXLoadTextureFromSurface: Load from a DDraw Surface into a mipmap level.
+// -------------------------- Doing the necessary color conversion.
+//
+// pd3dDevice
+// The D3D device with which the texture is going to be used.
+// pTexture
+// a pointer to a DD7Surface which was created with either
+// CreateTextureFromFile or CreateTexture.
+// mipMapLevel
+// indicates mipmap level
+// Note:
+// 1. Error if mipmap level doesn't exist
+// 2. If D3DX_DEFAULT and equal number of mipmap levels exist
+// then all the source mip-levels are loaded
+// 3. If the source has mipmaps and the dest doesn't, use the top one
+// 4. If the dest has miplevels and source doesn't, we expand
+// 5. If there are unequal numbers of miplevels, we expand
+// pSurfaceSrc
+// the source surface
+// pSrcRect
+// the source rectangle or null (whole surface)
+// pDestRect
+// the destination rectangle or null (whole surface)
+// filterType
+// filter used for mipmap generation
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXLoadTextureFromSurface( LPDIRECT3DDEVICE7 pd3dDevice,
+ LPDIRECTDRAWSURFACE7 pTexture,
+ DWORD mipMapLevel,
+ LPDIRECTDRAWSURFACE7 pSurfaceSrc,
+ RECT* pSrcRect,
+ RECT* pDestRect,
+ D3DX_FILTERTYPE filterType);
+
+//-------------------------------------------------------------------------
+// D3DXLoadTextureFromMemory: Load a mip level from memory. Doing the necessary
+// ------------------------- color conversion.
+//
+// pd3dDevice
+// The D3D device with which the texture is going to be used.
+// pTexture
+// a pointer to a DD7Surface which was created with either
+// CreateTextureFromFile or CreateTexture.
+// mipMapLevel
+// indicates mipmap level
+// Note:
+// 1. Error if mipmap level doesn't exist
+// 2. If D3DX_DEFAULT and equal number of mipmap levels exist
+// then all the source mip-levels are loaded
+// 3. If the source has mipmaps and the dest doesn't, use the top one
+// 4. If the dest has miplevels and source doesn't, we expand
+// 5. If there are unequal numbers of miplevels, we expand
+// pMemory
+// pointer to source memory from which the texture will be loaded
+// pDDPal
+// DirectDraw Palette, that the app passes in optionally if the memory is
+// supposed to be paletteized.
+// srcPixelFormat
+// PixelFormat of the source.
+// srcPitch
+// The pitch of the memory or D3DX_DEFAULT (based on srcPixelFormat)
+// pDestRect
+// The destination rectangle or null (whole surface)
+// filterType
+// filter used for mipmap generation
+//
+// Assumptions: The source (memory) is loaded in full
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXLoadTextureFromMemory( LPDIRECT3DDEVICE7 pd3dDevice,
+ LPDIRECTDRAWSURFACE7 pTexture,
+ DWORD mipMapLevel,
+ LPVOID pMemory,
+ LPDIRECTDRAWPALETTE pDDPal,
+ D3DX_SURFACEFORMAT srcPixelFormat,
+ DWORD srcPitch,
+ RECT* pDestRect,
+ D3DX_FILTERTYPE filterType);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+//-------------------------------------------------------------------------
+// Flags for texture create functions; applies to
+// D3DXCreateTexture, D3DXCreateCubeMapTexture and D3DXCreateTextureFromFile.
+//
+
+// Flag to indicate that mipmap generation is not desired.
+#define D3DX_TEXTURE_NOMIPMAP (1 << 8)
+
+// Flags to indicate which texture stage the texture is
+// intended for use with. Specifying the stage is necessary at
+// texture creation time for HW devices that expose the
+// D3DDEVCAPS_SEPARATETEXTUREMEMORIES bit in their D3DDEVICEDESC
+// structure.
+#define D3DX_TEXTURE_STAGE0 (0)
+#define D3DX_TEXTURE_STAGE1 (1)
+#define D3DX_TEXTURE_STAGE2 (2)
+#define D3DX_TEXTURE_STAGE3 (3)
+#define D3DX_TEXTURE_STAGE4 (4)
+#define D3DX_TEXTURE_STAGE5 (5)
+#define D3DX_TEXTURE_STAGE6 (6)
+#define D3DX_TEXTURE_STAGE7 (7)
+
+// Mask to extract the texture stage value out of the flags to
+// the texture create functions.
+#define D3DX_TEXTURE_STAGE_MASK (0x7)
+
+#endif //__D3DXCORE_H__
diff --git a/src/dep/include/DXSDK/include/d3dxerr.h b/src/dep/include/DXSDK/include/d3dxerr.h
new file mode 100644
index 0000000..dc97f56
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3dxerr.h
@@ -0,0 +1,407 @@
+//----------------------------------------------------------------------
+//
+// d3dxerr.h -- 0xC code definitions for the D3DX API
+//
+// Copyright (c) Microsoft Corp. All rights reserved.
+//
+//----------------------------------------------------------------------
+#ifndef __D3DXERR_H__
+#define __D3DXERR_H__
+
+//
+//
+// Values are 32 bit values layed out as follows:
+//
+// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+// +---+-+-+-----------------------+-------------------------------+
+// |Sev|C|R| Facility | Code |
+// +---+-+-+-----------------------+-------------------------------+
+//
+// where
+//
+// Sev - is the severity code
+//
+// 00 - Success
+// 01 - Informational
+// 10 - Warning
+// 11 - Error
+//
+// C - is the Customer code flag
+//
+// R - is a reserved bit
+//
+// Facility - is the facility code
+//
+// Code - is the facility's status code
+//
+//
+// Define the facility codes
+//
+#define FACILITY_D3DX 0x877
+
+
+
+//
+// MessageId: D3DXERR_NOMEMORY
+//
+// MessageText:
+//
+// Out of memory.
+//
+#define D3DXERR_NOMEMORY ((HRESULT)0xC8770BB8L)
+
+
+//
+// MessageId: D3DXERR_NULLPOINTER
+//
+// MessageText:
+//
+// A NULL pointer was passed as a parameter.
+//
+#define D3DXERR_NULLPOINTER ((HRESULT)0xC8770BB9L)
+
+
+//
+// MessageId: D3DXERR_INVALIDD3DXDEVICEINDEX
+//
+// MessageText:
+//
+// The Device Index passed in is invalid.
+//
+#define D3DXERR_INVALIDD3DXDEVICEINDEX ((HRESULT)0xC8770BBAL)
+
+
+//
+// MessageId: D3DXERR_NODIRECTDRAWAVAILABLE
+//
+// MessageText:
+//
+// DirectDraw has not been created.
+//
+#define D3DXERR_NODIRECTDRAWAVAILABLE ((HRESULT)0xC8770BBBL)
+
+
+//
+// MessageId: D3DXERR_NODIRECT3DAVAILABLE
+//
+// MessageText:
+//
+// Direct3D has not been created.
+//
+#define D3DXERR_NODIRECT3DAVAILABLE ((HRESULT)0xC8770BBCL)
+
+
+//
+// MessageId: D3DXERR_NODIRECT3DDEVICEAVAILABLE
+//
+// MessageText:
+//
+// Direct3D device has not been created.
+//
+#define D3DXERR_NODIRECT3DDEVICEAVAILABLE ((HRESULT)0xC8770BBDL)
+
+
+//
+// MessageId: D3DXERR_NOPRIMARYAVAILABLE
+//
+// MessageText:
+//
+// Primary surface has not been created.
+//
+#define D3DXERR_NOPRIMARYAVAILABLE ((HRESULT)0xC8770BBEL)
+
+
+//
+// MessageId: D3DXERR_NOZBUFFERAVAILABLE
+//
+// MessageText:
+//
+// Z buffer has not been created.
+//
+#define D3DXERR_NOZBUFFERAVAILABLE ((HRESULT)0xC8770BBFL)
+
+
+//
+// MessageId: D3DXERR_NOBACKBUFFERAVAILABLE
+//
+// MessageText:
+//
+// Backbuffer has not been created.
+//
+#define D3DXERR_NOBACKBUFFERAVAILABLE ((HRESULT)0xC8770BC0L)
+
+
+//
+// MessageId: D3DXERR_COULDNTUPDATECAPS
+//
+// MessageText:
+//
+// Failed to update caps database after changing display mode.
+//
+#define D3DXERR_COULDNTUPDATECAPS ((HRESULT)0xC8770BC1L)
+
+
+//
+// MessageId: D3DXERR_NOZBUFFER
+//
+// MessageText:
+//
+// Could not create Z buffer.
+//
+#define D3DXERR_NOZBUFFER ((HRESULT)0xC8770BC2L)
+
+
+//
+// MessageId: D3DXERR_INVALIDMODE
+//
+// MessageText:
+//
+// Display mode is not valid.
+//
+#define D3DXERR_INVALIDMODE ((HRESULT)0xC8770BC3L)
+
+
+//
+// MessageId: D3DXERR_INVALIDPARAMETER
+//
+// MessageText:
+//
+// One or more of the parameters passed is invalid.
+//
+#define D3DXERR_INVALIDPARAMETER ((HRESULT)0xC8770BC4L)
+
+
+//
+// MessageId: D3DXERR_INITFAILED
+//
+// MessageText:
+//
+// D3DX failed to initialize itself.
+//
+#define D3DXERR_INITFAILED ((HRESULT)0xC8770BC5L)
+
+
+//
+// MessageId: D3DXERR_STARTUPFAILED
+//
+// MessageText:
+//
+// D3DX failed to start up.
+//
+#define D3DXERR_STARTUPFAILED ((HRESULT)0xC8770BC6L)
+
+
+//
+// MessageId: D3DXERR_D3DXNOTSTARTEDYET
+//
+// MessageText:
+//
+// D3DXInitialize() must be called first.
+//
+#define D3DXERR_D3DXNOTSTARTEDYET ((HRESULT)0xC8770BC7L)
+
+
+//
+// MessageId: D3DXERR_NOTINITIALIZED
+//
+// MessageText:
+//
+// D3DX is not initialized yet.
+//
+#define D3DXERR_NOTINITIALIZED ((HRESULT)0xC8770BC8L)
+
+
+//
+// MessageId: D3DXERR_FAILEDDRAWTEXT
+//
+// MessageText:
+//
+// Failed to render text to the surface.
+//
+#define D3DXERR_FAILEDDRAWTEXT ((HRESULT)0xC8770BC9L)
+
+
+//
+// MessageId: D3DXERR_BADD3DXCONTEXT
+//
+// MessageText:
+//
+// Bad D3DX context.
+//
+#define D3DXERR_BADD3DXCONTEXT ((HRESULT)0xC8770BCAL)
+
+
+//
+// MessageId: D3DXERR_CAPSNOTSUPPORTED
+//
+// MessageText:
+//
+// The requested device capabilities are not supported.
+//
+#define D3DXERR_CAPSNOTSUPPORTED ((HRESULT)0xC8770BCBL)
+
+
+//
+// MessageId: D3DXERR_UNSUPPORTEDFILEFORMAT
+//
+// MessageText:
+//
+// The image file format is unrecognized.
+//
+#define D3DXERR_UNSUPPORTEDFILEFORMAT ((HRESULT)0xC8770BCCL)
+
+
+//
+// MessageId: D3DXERR_IFLERROR
+//
+// MessageText:
+//
+// The image file loading library error.
+//
+#define D3DXERR_IFLERROR ((HRESULT)0xC8770BCDL)
+
+
+//
+// MessageId: D3DXERR_FAILEDGETCAPS
+//
+// MessageText:
+//
+// Could not obtain device caps.
+//
+#define D3DXERR_FAILEDGETCAPS ((HRESULT)0xC8770BCEL)
+
+
+//
+// MessageId: D3DXERR_CANNOTRESIZEFULLSCREEN
+//
+// MessageText:
+//
+// Resize does not work for full-screen.
+//
+#define D3DXERR_CANNOTRESIZEFULLSCREEN ((HRESULT)0xC8770BCFL)
+
+
+//
+// MessageId: D3DXERR_CANNOTRESIZENONWINDOWED
+//
+// MessageText:
+//
+// Resize does not work for non-windowed contexts.
+//
+#define D3DXERR_CANNOTRESIZENONWINDOWED ((HRESULT)0xC8770BD0L)
+
+
+//
+// MessageId: D3DXERR_FRONTBUFFERALREADYEXISTS
+//
+// MessageText:
+//
+// Front buffer already exists.
+//
+#define D3DXERR_FRONTBUFFERALREADYEXISTS ((HRESULT)0xC8770BD1L)
+
+
+//
+// MessageId: D3DXERR_FULLSCREENPRIMARYEXISTS
+//
+// MessageText:
+//
+// The app is using the primary in full-screen mode.
+//
+#define D3DXERR_FULLSCREENPRIMARYEXISTS ((HRESULT)0xC8770BD2L)
+
+
+//
+// MessageId: D3DXERR_GETDCFAILED
+//
+// MessageText:
+//
+// Could not get device context.
+//
+#define D3DXERR_GETDCFAILED ((HRESULT)0xC8770BD3L)
+
+
+//
+// MessageId: D3DXERR_BITBLTFAILED
+//
+// MessageText:
+//
+// Could not bitBlt.
+//
+#define D3DXERR_BITBLTFAILED ((HRESULT)0xC8770BD4L)
+
+
+//
+// MessageId: D3DXERR_NOTEXTURE
+//
+// MessageText:
+//
+// There is no surface backing up this texture.
+//
+#define D3DXERR_NOTEXTURE ((HRESULT)0xC8770BD5L)
+
+
+//
+// MessageId: D3DXERR_MIPLEVELABSENT
+//
+// MessageText:
+//
+// There is no such miplevel for this surface.
+//
+#define D3DXERR_MIPLEVELABSENT ((HRESULT)0xC8770BD6L)
+
+
+//
+// MessageId: D3DXERR_SURFACENOTPALETTED
+//
+// MessageText:
+//
+// The surface is not paletted.
+//
+#define D3DXERR_SURFACENOTPALETTED ((HRESULT)0xC8770BD7L)
+
+
+//
+// MessageId: D3DXERR_ENUMFORMATSFAILED
+//
+// MessageText:
+//
+// An error occured while enumerating surface formats.
+//
+#define D3DXERR_ENUMFORMATSFAILED ((HRESULT)0xC8770BD8L)
+
+
+//
+// MessageId: D3DXERR_COLORDEPTHTOOLOW
+//
+// MessageText:
+//
+// D3DX only supports color depths of 16 bit or greater.
+//
+#define D3DXERR_COLORDEPTHTOOLOW ((HRESULT)0xC8770BD9L)
+
+
+//
+// MessageId: D3DXERR_INVALIDFILEFORMAT
+//
+// MessageText:
+//
+// The file format is invalid.
+//
+#define D3DXERR_INVALIDFILEFORMAT ((HRESULT)0xC8770BDAL)
+
+
+//
+// MessageId: D3DXERR_NOMATCHFOUND
+//
+// MessageText:
+//
+// No suitable match found.
+//
+#define D3DXERR_NOMATCHFOUND ((HRESULT)0xC8770BDBL)
+
+
+
+#endif //__D3DXERR_H__
+
diff --git a/src/dep/include/DXSDK/include/d3dxmath.h b/src/dep/include/DXSDK/include/d3dxmath.h
new file mode 100644
index 0000000..9491bbc
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3dxmath.h
@@ -0,0 +1,1085 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dxmath.h
+// Content: D3DX math types and functions
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef __D3DXMATH_H__
+#define __D3DXMATH_H__
+
+#include
+#include
+#include
+#include "d3dxerr.h"
+
+#ifndef D3DXINLINE
+#ifdef __cplusplus
+#define D3DXINLINE inline
+#else
+#define D3DXINLINE _inline
+#endif
+#endif
+
+#pragma warning(disable:4201) // anonymous unions warning
+
+
+
+typedef struct ID3DXMatrixStack *LPD3DXMATRIXSTACK;
+
+// {E3357330-CC5E-11d2-A434-00A0C90629A8}
+DEFINE_GUID( IID_ID3DXMatrixStack,
+ 0xe3357330, 0xcc5e, 0x11d2, 0xa4, 0x34, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8);
+
+
+//===========================================================================
+//
+// General purpose utilities
+//
+//===========================================================================
+#define D3DX_PI ((float) 3.141592654f)
+#define D3DX_1BYPI ((float) 0.318309886f)
+
+#define D3DXToRadian( degree ) ((degree) * (D3DX_PI / 180.0f))
+#define D3DXToDegree( radian ) ((radian) * (180.0f / D3DX_PI))
+
+
+
+//===========================================================================
+//
+// Vectors
+//
+//===========================================================================
+
+//--------------------------
+// 2D Vector
+//--------------------------
+typedef struct D3DXVECTOR2
+{
+#ifdef __cplusplus
+public:
+ D3DXVECTOR2() {};
+ D3DXVECTOR2( const float * );
+ D3DXVECTOR2( float x, float y );
+
+ // casting
+ operator float* ();
+ operator const float* () const;
+
+ // assignment operators
+ D3DXVECTOR2& operator += ( const D3DXVECTOR2& );
+ D3DXVECTOR2& operator -= ( const D3DXVECTOR2& );
+ D3DXVECTOR2& operator *= ( float );
+ D3DXVECTOR2& operator /= ( float );
+
+ // unary operators
+ D3DXVECTOR2 operator + () const;
+ D3DXVECTOR2 operator - () const;
+
+ // binary operators
+ D3DXVECTOR2 operator + ( const D3DXVECTOR2& ) const;
+ D3DXVECTOR2 operator - ( const D3DXVECTOR2& ) const;
+ D3DXVECTOR2 operator * ( float ) const;
+ D3DXVECTOR2 operator / ( float ) const;
+
+ friend D3DXVECTOR2 operator * ( float, const D3DXVECTOR2& );
+
+ BOOL operator == ( const D3DXVECTOR2& ) const;
+ BOOL operator != ( const D3DXVECTOR2& ) const;
+
+
+public:
+#endif //__cplusplus
+ float x, y;
+} D3DXVECTOR2, *LPD3DXVECTOR2;
+
+
+//--------------------------
+// 3D Vector
+//--------------------------
+typedef struct D3DXVECTOR3
+{
+#ifdef __cplusplus
+public:
+ D3DXVECTOR3() {};
+ D3DXVECTOR3( const float * );
+ D3DXVECTOR3( const D3DVECTOR& );
+ D3DXVECTOR3( float x, float y, float z );
+
+ // casting
+ operator float* ();
+ operator const float* () const;
+
+ operator D3DVECTOR* ();
+ operator const D3DVECTOR* () const;
+
+ operator D3DVECTOR& ();
+ operator const D3DVECTOR& () const;
+
+ // assignment operators
+ D3DXVECTOR3& operator += ( const D3DXVECTOR3& );
+ D3DXVECTOR3& operator -= ( const D3DXVECTOR3& );
+ D3DXVECTOR3& operator *= ( float );
+ D3DXVECTOR3& operator /= ( float );
+
+ // unary operators
+ D3DXVECTOR3 operator + () const;
+ D3DXVECTOR3 operator - () const;
+
+ // binary operators
+ D3DXVECTOR3 operator + ( const D3DXVECTOR3& ) const;
+ D3DXVECTOR3 operator - ( const D3DXVECTOR3& ) const;
+ D3DXVECTOR3 operator * ( float ) const;
+ D3DXVECTOR3 operator / ( float ) const;
+
+ friend D3DXVECTOR3 operator * ( float, const struct D3DXVECTOR3& );
+
+ BOOL operator == ( const D3DXVECTOR3& ) const;
+ BOOL operator != ( const D3DXVECTOR3& ) const;
+
+public:
+#endif //__cplusplus
+ float x, y, z;
+} D3DXVECTOR3, *LPD3DXVECTOR3;
+
+
+//--------------------------
+// 4D Vector
+//--------------------------
+typedef struct D3DXVECTOR4
+{
+#ifdef __cplusplus
+public:
+ D3DXVECTOR4() {};
+ D3DXVECTOR4( const float* );
+ D3DXVECTOR4( float x, float y, float z, float w );
+
+ // casting
+ operator float* ();
+ operator const float* () const;
+
+ // assignment operators
+ D3DXVECTOR4& operator += ( const D3DXVECTOR4& );
+ D3DXVECTOR4& operator -= ( const D3DXVECTOR4& );
+ D3DXVECTOR4& operator *= ( float );
+ D3DXVECTOR4& operator /= ( float );
+
+ // unary operators
+ D3DXVECTOR4 operator + () const;
+ D3DXVECTOR4 operator - () const;
+
+ // binary operators
+ D3DXVECTOR4 operator + ( const D3DXVECTOR4& ) const;
+ D3DXVECTOR4 operator - ( const D3DXVECTOR4& ) const;
+ D3DXVECTOR4 operator * ( float ) const;
+ D3DXVECTOR4 operator / ( float ) const;
+
+ friend D3DXVECTOR4 operator * ( float, const D3DXVECTOR4& );
+
+ BOOL operator == ( const D3DXVECTOR4& ) const;
+ BOOL operator != ( const D3DXVECTOR4& ) const;
+
+public:
+#endif //__cplusplus
+ float x, y, z, w;
+} D3DXVECTOR4, *LPD3DXVECTOR4;
+
+
+//===========================================================================
+//
+// Matrices
+//
+//===========================================================================
+typedef struct D3DXMATRIX
+{
+#ifdef __cplusplus
+public:
+ D3DXMATRIX() {};
+ D3DXMATRIX( const float * );
+ D3DXMATRIX( const D3DMATRIX& );
+ D3DXMATRIX( float m00, float m01, float m02, float m03,
+ float m10, float m11, float m12, float m13,
+ float m20, float m21, float m22, float m23,
+ float m30, float m31, float m32, float m33 );
+
+
+ // access grants
+ float& operator () ( UINT iRow, UINT iCol );
+ float operator () ( UINT iRow, UINT iCol ) const;
+
+ // casting operators
+ operator float* ();
+ operator const float* () const;
+
+ operator D3DMATRIX* ();
+ operator const D3DMATRIX* () const;
+
+ operator D3DMATRIX& ();
+ operator const D3DMATRIX& () const;
+
+ // assignment operators
+ D3DXMATRIX& operator *= ( const D3DXMATRIX& );
+ D3DXMATRIX& operator += ( const D3DXMATRIX& );
+ D3DXMATRIX& operator -= ( const D3DXMATRIX& );
+ D3DXMATRIX& operator *= ( float );
+ D3DXMATRIX& operator /= ( float );
+
+ // unary operators
+ D3DXMATRIX operator + () const;
+ D3DXMATRIX operator - () const;
+
+ // binary operators
+ D3DXMATRIX operator * ( const D3DXMATRIX& ) const;
+ D3DXMATRIX operator + ( const D3DXMATRIX& ) const;
+ D3DXMATRIX operator - ( const D3DXMATRIX& ) const;
+ D3DXMATRIX operator * ( float ) const;
+ D3DXMATRIX operator / ( float ) const;
+
+ friend D3DXMATRIX operator * ( float, const D3DXMATRIX& );
+
+ BOOL operator == ( const D3DXMATRIX& ) const;
+ BOOL operator != ( const D3DXMATRIX& ) const;
+
+
+#endif //__cplusplus
+
+ union
+ {
+ float m[4][4];
+#ifdef __cplusplus
+ struct
+ {
+ float m00, m01, m02, m03;
+ float m10, m11, m12, m13;
+ float m20, m21, m22, m23;
+ float m30, m31, m32, m33;
+ };
+#endif //__cplusplus
+ };
+} D3DXMATRIX, *LPD3DXMATRIX;
+
+
+//===========================================================================
+//
+// Quaternions
+//
+//===========================================================================
+typedef struct D3DXQUATERNION
+{
+#ifdef __cplusplus
+public:
+ D3DXQUATERNION() {}
+ D3DXQUATERNION( const float * );
+ D3DXQUATERNION( float x, float y, float z, float w );
+
+ // casting
+ operator float* ();
+ operator const float* () const;
+
+ // assignment operators
+ D3DXQUATERNION& operator += ( const D3DXQUATERNION& );
+ D3DXQUATERNION& operator -= ( const D3DXQUATERNION& );
+ D3DXQUATERNION& operator *= ( const D3DXQUATERNION& );
+ D3DXQUATERNION& operator *= ( float );
+ D3DXQUATERNION& operator /= ( float );
+
+ // unary operators
+ D3DXQUATERNION operator + () const;
+ D3DXQUATERNION operator - () const;
+
+ // binary operators
+ D3DXQUATERNION operator + ( const D3DXQUATERNION& ) const;
+ D3DXQUATERNION operator - ( const D3DXQUATERNION& ) const;
+ D3DXQUATERNION operator * ( const D3DXQUATERNION& ) const;
+ D3DXQUATERNION operator * ( float ) const;
+ D3DXQUATERNION operator / ( float ) const;
+
+ friend D3DXQUATERNION operator * (float, const D3DXQUATERNION& );
+
+ BOOL operator == ( const D3DXQUATERNION& ) const;
+ BOOL operator != ( const D3DXQUATERNION& ) const;
+
+#endif //__cplusplus
+ float x, y, z, w;
+} D3DXQUATERNION, *LPD3DXQUATERNION;
+
+
+//===========================================================================
+//
+// Planes
+//
+//===========================================================================
+typedef struct D3DXPLANE
+{
+#ifdef __cplusplus
+public:
+ D3DXPLANE() {}
+ D3DXPLANE( const float* );
+ D3DXPLANE( float a, float b, float c, float d );
+
+ // casting
+ operator float* ();
+ operator const float* () const;
+
+ // unary operators
+ D3DXPLANE operator + () const;
+ D3DXPLANE operator - () const;
+
+ // binary operators
+ BOOL operator == ( const D3DXPLANE& ) const;
+ BOOL operator != ( const D3DXPLANE& ) const;
+
+#endif //__cplusplus
+ float a, b, c, d;
+} D3DXPLANE, *LPD3DXPLANE;
+
+
+//===========================================================================
+//
+// Colors
+//
+//===========================================================================
+
+typedef struct D3DXCOLOR
+{
+#ifdef __cplusplus
+public:
+ D3DXCOLOR() {}
+ D3DXCOLOR( DWORD argb );
+ D3DXCOLOR( const float * );
+ D3DXCOLOR( const D3DCOLORVALUE& );
+ D3DXCOLOR( float r, float g, float b, float a );
+
+ // casting
+ operator DWORD () const;
+
+ operator float* ();
+ operator const float* () const;
+
+ operator D3DCOLORVALUE* ();
+ operator const D3DCOLORVALUE* () const;
+
+ operator D3DCOLORVALUE& ();
+ operator const D3DCOLORVALUE& () const;
+
+ // assignment operators
+ D3DXCOLOR& operator += ( const D3DXCOLOR& );
+ D3DXCOLOR& operator -= ( const D3DXCOLOR& );
+ D3DXCOLOR& operator *= ( float );
+ D3DXCOLOR& operator /= ( float );
+
+ // unary operators
+ D3DXCOLOR operator + () const;
+ D3DXCOLOR operator - () const;
+
+ // binary operators
+ D3DXCOLOR operator + ( const D3DXCOLOR& ) const;
+ D3DXCOLOR operator - ( const D3DXCOLOR& ) const;
+ D3DXCOLOR operator * ( float ) const;
+ D3DXCOLOR operator / ( float ) const;
+
+ friend D3DXCOLOR operator * (float, const D3DXCOLOR& );
+
+ BOOL operator == ( const D3DXCOLOR& ) const;
+ BOOL operator != ( const D3DXCOLOR& ) const;
+
+#endif //__cplusplus
+ FLOAT r, g, b, a;
+} D3DXCOLOR, *LPD3DXCOLOR;
+
+
+
+//===========================================================================
+//
+// D3DX math functions:
+//
+// NOTE:
+// * All these functions can take the same object as in and out parameters.
+//
+// * Out parameters are typically also returned as return values, so that
+// the output of one function may be used as a parameter to another.
+//
+//===========================================================================
+
+//--------------------------
+// 2D Vector
+//--------------------------
+
+// inline
+
+float D3DXVec2Length
+ ( const D3DXVECTOR2 *pV );
+
+float D3DXVec2LengthSq
+ ( const D3DXVECTOR2 *pV );
+
+float D3DXVec2Dot
+ ( const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 );
+
+// Z component of ((x1,y1,0) cross (x2,y2,0))
+float D3DXVec2CCW
+ ( const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 );
+
+D3DXVECTOR2* D3DXVec2Add
+ ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 );
+
+D3DXVECTOR2* D3DXVec2Subtract
+ ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 );
+
+// Minimize each component. x = min(x1, x2), y = min(y1, y2)
+D3DXVECTOR2* D3DXVec2Minimize
+ ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 );
+
+// Maximize each component. x = max(x1, x2), y = max(y1, y2)
+D3DXVECTOR2* D3DXVec2Maximize
+ ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 );
+
+D3DXVECTOR2* D3DXVec2Scale
+ ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV, float s );
+
+// Linear interpolation. V1 + s(V2-V1)
+D3DXVECTOR2* D3DXVec2Lerp
+ ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2,
+ float s );
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+D3DXVECTOR2* WINAPI D3DXVec2Normalize
+ ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV );
+
+// Hermite interpolation between position V1, tangent T1 (when s == 0)
+// and position V2, tangent T2 (when s == 1).
+D3DXVECTOR2* WINAPI D3DXVec2Hermite
+ ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pT1,
+ const D3DXVECTOR2 *pV2, const D3DXVECTOR2 *pT2, float s );
+
+// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1)
+D3DXVECTOR2* WINAPI D3DXVec2BaryCentric
+ ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2,
+ D3DXVECTOR2 *pV3, float f, float g);
+
+// Transform (x, y, 0, 1) by matrix.
+D3DXVECTOR4* WINAPI D3DXVec2Transform
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR2 *pV, const D3DXMATRIX *pM );
+
+// Transform (x, y, 0, 1) by matrix, project result back into w=1.
+D3DXVECTOR2* WINAPI D3DXVec2TransformCoord
+ ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV, const D3DXMATRIX *pM );
+
+// Transform (x, y, 0, 0) by matrix.
+D3DXVECTOR2* WINAPI D3DXVec2TransformNormal
+ ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV, const D3DXMATRIX *pM );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+//--------------------------
+// 3D Vector
+//--------------------------
+
+// inline
+
+float D3DXVec3Length
+ ( const D3DXVECTOR3 *pV );
+
+float D3DXVec3LengthSq
+ ( const D3DXVECTOR3 *pV );
+
+float D3DXVec3Dot
+ ( const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 );
+
+D3DXVECTOR3* D3DXVec3Cross
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 );
+
+D3DXVECTOR3* D3DXVec3Add
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 );
+
+D3DXVECTOR3* D3DXVec3Subtract
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 );
+
+// Minimize each component. x = min(x1, x2), y = min(y1, y2), ...
+D3DXVECTOR3* D3DXVec3Minimize
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 );
+
+// Maximize each component. x = max(x1, x2), y = max(y1, y2), ...
+D3DXVECTOR3* D3DXVec3Maximize
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 );
+
+D3DXVECTOR3* D3DXVec3Scale
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV, float s);
+
+// Linear interpolation. V1 + s(V2-V1)
+D3DXVECTOR3* D3DXVec3Lerp
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2,
+ float s );
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+D3DXVECTOR3* WINAPI D3DXVec3Normalize
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV );
+
+// Hermite interpolation between position V1, tangent T1 (when s == 0)
+// and position V2, tangent T2 (when s == 1).
+D3DXVECTOR3* WINAPI D3DXVec3Hermite
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pT1,
+ const D3DXVECTOR3 *pV2, const D3DXVECTOR3 *pT2, float s );
+
+// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1)
+D3DXVECTOR3* WINAPI D3DXVec3BaryCentric
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2,
+ const D3DXVECTOR3 *pV3, float f, float g);
+
+// Transform (x, y, z, 1) by matrix.
+D3DXVECTOR4* WINAPI D3DXVec3Transform
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR3 *pV, const D3DXMATRIX *pM );
+
+// Transform (x, y, z, 1) by matrix, project result back into w=1.
+D3DXVECTOR3* WINAPI D3DXVec3TransformCoord
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV, const D3DXMATRIX *pM );
+
+// Transform (x, y, z, 0) by matrix.
+D3DXVECTOR3* WINAPI D3DXVec3TransformNormal
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV, const D3DXMATRIX *pM );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+//--------------------------
+// 4D Vector
+//--------------------------
+
+// inline
+
+float D3DXVec4Length
+ ( const D3DXVECTOR4 *pV );
+
+float D3DXVec4LengthSq
+ ( const D3DXVECTOR4 *pV );
+
+float D3DXVec4Dot
+ ( const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2 );
+
+D3DXVECTOR4* D3DXVec4Add
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2);
+
+D3DXVECTOR4* D3DXVec4Subtract
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2);
+
+// Minimize each component. x = min(x1, x2), y = min(y1, y2), ...
+D3DXVECTOR4* D3DXVec4Minimize
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2);
+
+// Maximize each component. x = max(x1, x2), y = max(y1, y2), ...
+D3DXVECTOR4* D3DXVec4Maximize
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2);
+
+D3DXVECTOR4* D3DXVec4Scale
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV, float s);
+
+// Linear interpolation. V1 + s(V2-V1)
+D3DXVECTOR4* D3DXVec4Lerp
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2,
+ float s );
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Cross-product in 4 dimensions.
+D3DXVECTOR4* WINAPI D3DXVec4Cross
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2,
+ const D3DXVECTOR4 *pV3);
+
+D3DXVECTOR4* WINAPI D3DXVec4Normalize
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV );
+
+// Hermite interpolation between position V1, tangent T1 (when s == 0)
+// and position V2, tangent T2 (when s == 1).
+D3DXVECTOR4* WINAPI D3DXVec4Hermite
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pT1,
+ const D3DXVECTOR4 *pV2, const D3DXVECTOR4 *pT2, float s );
+
+// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1)
+D3DXVECTOR4* WINAPI D3DXVec4BaryCentric
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2,
+ const D3DXVECTOR4 *pV3, float f, float g);
+
+// Transform vector by matrix.
+D3DXVECTOR4* WINAPI D3DXVec4Transform
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV, const D3DXMATRIX *pM );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+//--------------------------
+// 4D Matrix
+//--------------------------
+
+// inline
+
+D3DXMATRIX* D3DXMatrixIdentity
+ ( D3DXMATRIX *pOut );
+
+BOOL D3DXMatrixIsIdentity
+ ( const D3DXMATRIX *pM );
+
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+float WINAPI D3DXMatrixfDeterminant
+ ( const D3DXMATRIX *pM );
+
+// Matrix multiplication. The result represents the transformation M2
+// followed by the transformation M1. (Out = M1 * M2)
+D3DXMATRIX* WINAPI D3DXMatrixMultiply
+ ( D3DXMATRIX *pOut, const D3DXMATRIX *pM1, const D3DXMATRIX *pM2 );
+
+D3DXMATRIX* WINAPI D3DXMatrixTranspose
+ ( D3DXMATRIX *pOut, const D3DXMATRIX *pM );
+
+// Calculate inverse of matrix. Inversion my fail, in which case NULL will
+// be returned. The determinant of pM is also returned it pfDeterminant
+// is non-NULL.
+D3DXMATRIX* WINAPI D3DXMatrixInverse
+ ( D3DXMATRIX *pOut, float *pfDeterminant, const D3DXMATRIX *pM );
+
+// Build a matrix which scales by (sx, sy, sz)
+D3DXMATRIX* WINAPI D3DXMatrixScaling
+ ( D3DXMATRIX *pOut, float sx, float sy, float sz );
+
+// Build a matrix which translates by (x, y, z)
+D3DXMATRIX* WINAPI D3DXMatrixTranslation
+ ( D3DXMATRIX *pOut, float x, float y, float z );
+
+// Build a matrix which rotates around the X axis
+D3DXMATRIX* WINAPI D3DXMatrixRotationX
+ ( D3DXMATRIX *pOut, float angle );
+
+// Build a matrix which rotates around the Y axis
+D3DXMATRIX* WINAPI D3DXMatrixRotationY
+ ( D3DXMATRIX *pOut, float angle );
+
+// Build a matrix which rotates around the Z axis
+D3DXMATRIX* WINAPI D3DXMatrixRotationZ
+ ( D3DXMATRIX *pOut, float angle );
+
+// Build a matrix which rotates around an arbitrary axis
+D3DXMATRIX* WINAPI D3DXMatrixRotationAxis
+ ( D3DXMATRIX *pOut, const D3DXVECTOR3 *pV, float angle );
+
+// Build a matrix from a quaternion
+D3DXMATRIX* WINAPI D3DXMatrixRotationQuaternion
+ ( D3DXMATRIX *pOut, const D3DXQUATERNION *pQ);
+
+// Yaw around the Y axis, a pitch around the X axis,
+// and a roll around the Z axis.
+D3DXMATRIX* WINAPI D3DXMatrixRotationYawPitchRoll
+ ( D3DXMATRIX *pOut, float yaw, float pitch, float roll );
+
+
+// Build transformation matrix. NULL arguments are treated as identity.
+// Mout = Msc-1 * Msr-1 * Ms * Msr * Msc * Mrc-1 * Mr * Mrc * Mt
+D3DXMATRIX* WINAPI D3DXMatrixTransformation
+ ( D3DXMATRIX *pOut, const D3DXVECTOR3 *pScalingCenter,
+ const D3DXQUATERNION *pScalingRotation, const D3DXVECTOR3 *pScaling,
+ const D3DXVECTOR3 *pRotationCenter, const D3DXQUATERNION *pRotation,
+ const D3DXVECTOR3 *pTranslation);
+
+// Build affine transformation matrix. NULL arguments are treated as identity.
+// Mout = Ms * Mrc-1 * Mr * Mrc * Mt
+D3DXMATRIX* WINAPI D3DXMatrixAffineTransformation
+ ( D3DXMATRIX *pOut, float Scaling, const D3DXVECTOR3 *pRotationCenter,
+ const D3DXQUATERNION *pRotation, const D3DXVECTOR3 *pTranslation);
+
+// Build a lookat matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixLookAt
+ ( D3DXMATRIX *pOut, const D3DXVECTOR3 *pEye, const D3DXVECTOR3 *pAt,
+ const D3DXVECTOR3 *pUp );
+
+// Build a lookat matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixLookAtLH
+ ( D3DXMATRIX *pOut, const D3DXVECTOR3 *pEye, const D3DXVECTOR3 *pAt,
+ const D3DXVECTOR3 *pUp );
+
+// Build a perspective projection matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspective
+ ( D3DXMATRIX *pOut, float w, float h, float zn, float zf );
+
+// Build a perspective projection matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveLH
+ ( D3DXMATRIX *pOut, float w, float h, float zn, float zf );
+
+// Build a perspective projection matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFov
+ ( D3DXMATRIX *pOut, float fovy, float aspect, float zn, float zf );
+
+// Build a perspective projection matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveFovLH
+ ( D3DXMATRIX *pOut, float fovy, float aspect, float zn, float zf );
+
+// Build a perspective projection matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenter
+ ( D3DXMATRIX *pOut, float l, float r, float b, float t, float zn,
+ float zf );
+
+// Build a perspective projection matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixPerspectiveOffCenterLH
+ ( D3DXMATRIX *pOut, float l, float r, float b, float t, float zn,
+ float zf );
+
+// Build an ortho projection matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixOrtho
+ ( D3DXMATRIX *pOut, float w, float h, float zn, float zf );
+
+// Build an ortho projection matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixOrthoLH
+ ( D3DXMATRIX *pOut, float w, float h, float zn, float zf );
+
+// Build an ortho projection matrix. (right-handed)
+D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenter
+ ( D3DXMATRIX *pOut, float l, float r, float b, float t, float zn,
+ float zf );
+
+// Build an ortho projection matrix. (left-handed)
+D3DXMATRIX* WINAPI D3DXMatrixOrthoOffCenterLH
+ ( D3DXMATRIX *pOut, float l, float r, float b, float t, float zn,
+ float zf );
+
+// Build a matrix which flattens geometry into a plane, as if casting
+// a shadow from a light.
+D3DXMATRIX* WINAPI D3DXMatrixShadow
+ ( D3DXMATRIX *pOut, const D3DXVECTOR4 *pLight,
+ const D3DXPLANE *pPlane );
+
+// Build a matrix which reflects the coordinate system about a plane
+D3DXMATRIX* WINAPI D3DXMatrixReflect
+ ( D3DXMATRIX *pOut, const D3DXPLANE *pPlane );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+//--------------------------
+// Quaternion
+//--------------------------
+
+// inline
+
+float D3DXQuaternionLength
+ ( const D3DXQUATERNION *pQ );
+
+// Length squared, or "norm"
+float D3DXQuaternionLengthSq
+ ( const D3DXQUATERNION *pQ );
+
+float D3DXQuaternionDot
+ ( const D3DXQUATERNION *pQ1, const D3DXQUATERNION *pQ2 );
+
+// (0, 0, 0, 1)
+D3DXQUATERNION* D3DXQuaternionIdentity
+ ( D3DXQUATERNION *pOut );
+
+BOOL D3DXQuaternionIsIdentity
+ ( const D3DXQUATERNION *pQ );
+
+// (-x, -y, -z, w)
+D3DXQUATERNION* D3DXQuaternionConjugate
+ ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ );
+
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Compute a quaternin's axis and angle of rotation. Expects unit quaternions.
+void WINAPI D3DXQuaternionToAxisAngle
+ ( const D3DXQUATERNION *pQ, D3DXVECTOR3 *pAxis, float *pAngle );
+
+// Build a quaternion from a rotation matrix.
+D3DXQUATERNION* WINAPI D3DXQuaternionRotationMatrix
+ ( D3DXQUATERNION *pOut, const D3DXMATRIX *pM);
+
+// Rotation about arbitrary axis.
+D3DXQUATERNION* WINAPI D3DXQuaternionRotationAxis
+ ( D3DXQUATERNION *pOut, const D3DXVECTOR3 *pV, float angle );
+
+// Yaw around the Y axis, a pitch around the X axis,
+// and a roll around the Z axis.
+D3DXQUATERNION* WINAPI D3DXQuaternionRotationYawPitchRoll
+ ( D3DXQUATERNION *pOut, float yaw, float pitch, float roll );
+
+// Quaternion multiplication. The result represents the rotation Q2
+// followed by the rotation Q1. (Out = Q2 * Q1)
+D3DXQUATERNION* WINAPI D3DXQuaternionMultiply
+ ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ1,
+ const D3DXQUATERNION *pQ2 );
+
+D3DXQUATERNION* WINAPI D3DXQuaternionNormalize
+ ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ );
+
+// Conjugate and re-norm
+D3DXQUATERNION* WINAPI D3DXQuaternionInverse
+ ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ );
+
+// Expects unit quaternions.
+// if q = (cos(theta), sin(theta) * v); ln(q) = (0, theta * v)
+D3DXQUATERNION* WINAPI D3DXQuaternionLn
+ ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ );
+
+// Expects pure quaternions. (w == 0) w is ignored in calculation.
+// if q = (0, theta * v); exp(q) = (cos(theta), sin(theta) * v)
+D3DXQUATERNION* WINAPI D3DXQuaternionExp
+ ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ );
+
+// Spherical linear interpolation between Q1 (s == 0) and Q2 (s == 1).
+// Expects unit quaternions.
+D3DXQUATERNION* WINAPI D3DXQuaternionSlerp
+ ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ1,
+ const D3DXQUATERNION *pQ2, float t );
+
+// Spherical quadrangle interpolation.
+// Slerp(Slerp(Q1, Q4, t), Slerp(Q2, Q3, t), 2t(1-t))
+D3DXQUATERNION* WINAPI D3DXQuaternionSquad
+ ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ1,
+ const D3DXQUATERNION *pQ2, const D3DXQUATERNION *pQ3,
+ const D3DXQUATERNION *pQ4, float t );
+
+// Slerp(Slerp(Q1, Q2, f+g), Slerp(Q1, Q3, f+g), g/(f+g))
+D3DXQUATERNION* WINAPI D3DXQuaternionBaryCentric
+ ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ1,
+ const D3DXQUATERNION *pQ2, const D3DXQUATERNION *pQ3,
+ float f, float g );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+//--------------------------
+// Plane
+//--------------------------
+
+// inline
+
+// ax + by + cz + dw
+float D3DXPlaneDot
+ ( const D3DXPLANE *pP, const D3DXVECTOR4 *pV);
+
+// ax + by + cz + d
+float D3DXPlaneDotCoord
+ ( const D3DXPLANE *pP, const D3DXVECTOR3 *pV);
+
+// ax + by + cz
+float D3DXPlaneDotNormal
+ ( const D3DXPLANE *pP, const D3DXVECTOR3 *pV);
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Normalize plane (so that |a,b,c| == 1)
+D3DXPLANE* WINAPI D3DXPlaneNormalize
+ ( D3DXPLANE *pOut, const D3DXPLANE *pP);
+
+// Find the intersection between a plane and a line. If the line is
+// parallel to the plane, NULL is returned.
+D3DXVECTOR3* WINAPI D3DXPlaneIntersectLine
+ ( D3DXVECTOR3 *pOut, const D3DXPLANE *pP, const D3DXVECTOR3 *pV1,
+ const D3DXVECTOR3 *pV2);
+
+// Construct a plane from a point and a normal
+D3DXPLANE* WINAPI D3DXPlaneFromPointNormal
+ ( D3DXPLANE *pOut, const D3DXVECTOR3 *pPoint, const D3DXVECTOR3 *pNormal);
+
+// Construct a plane from 3 points
+D3DXPLANE* WINAPI D3DXPlaneFromPoints
+ ( D3DXPLANE *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2,
+ const D3DXVECTOR3 *pV3);
+
+// Transform a plane by a matrix. The vector (a,b,c) must be normal.
+// M must be an affine transform.
+D3DXPLANE* WINAPI D3DXPlaneTransform
+ ( D3DXPLANE *pOut, const D3DXPLANE *pP, const D3DXMATRIX *pM );
+
+#ifdef __cplusplus
+}
+#endif
+
+
+//--------------------------
+// Color
+//--------------------------
+
+// inline
+
+// (1-r, 1-g, 1-b, a)
+D3DXCOLOR* D3DXColorNegative
+ (D3DXCOLOR *pOut, const D3DXCOLOR *pC);
+
+D3DXCOLOR* D3DXColorAdd
+ (D3DXCOLOR *pOut, const D3DXCOLOR *pC1, const D3DXCOLOR *pC2);
+
+D3DXCOLOR* D3DXColorSubtract
+ (D3DXCOLOR *pOut, const D3DXCOLOR *pC1, const D3DXCOLOR *pC2);
+
+D3DXCOLOR* D3DXColorScale
+ (D3DXCOLOR *pOut, const D3DXCOLOR *pC, float s);
+
+// (r1*r2, g1*g2, b1*b2, a1*a2)
+D3DXCOLOR* D3DXColorModulate
+ (D3DXCOLOR *pOut, const D3DXCOLOR *pC1, const D3DXCOLOR *pC2);
+
+// Linear interpolation of r,g,b, and a. C1 + s(C2-C1)
+D3DXCOLOR* D3DXColorLerp
+ (D3DXCOLOR *pOut, const D3DXCOLOR *pC1, const D3DXCOLOR *pC2, float s);
+
+// non-inline
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Interpolate r,g,b between desaturated color and color.
+// DesaturatedColor + s(Color - DesaturatedColor)
+D3DXCOLOR* WINAPI D3DXColorAdjustSaturation
+ (D3DXCOLOR *pOut, const D3DXCOLOR *pC, float s);
+
+// Interpolate r,g,b between 50% grey and color. Grey + s(Color - Grey)
+D3DXCOLOR* WINAPI D3DXColorAdjustContrast
+ (D3DXCOLOR *pOut, const D3DXCOLOR *pC, float c);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+
+
+
+//===========================================================================
+//
+// Matrix Stack
+//
+//===========================================================================
+
+DECLARE_INTERFACE_(ID3DXMatrixStack, IUnknown)
+{
+ //
+ // IUnknown methods
+ //
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ //
+ // ID3DXMatrixStack methods
+ //
+
+ // Pops the top of the stack, returns the current top
+ // *after* popping the top.
+ STDMETHOD(Pop)(THIS) PURE;
+
+ // Pushes the stack by one, duplicating the current matrix.
+ STDMETHOD(Push)(THIS) PURE;
+
+ // Loads identity in the current matrix.
+ STDMETHOD(LoadIdentity)(THIS) PURE;
+
+ // Loads the given matrix into the current matrix
+ STDMETHOD(LoadMatrix)(THIS_ const D3DXMATRIX* pM ) PURE;
+
+ // Right-Multiplies the given matrix to the current matrix.
+ // (transformation is about the current world origin)
+ STDMETHOD(MultMatrix)(THIS_ const D3DXMATRIX* pM ) PURE;
+
+ // Left-Multiplies the given matrix to the current matrix
+ // (transformation is about the local origin of the object)
+ STDMETHOD(MultMatrixLocal)(THIS_ const D3DXMATRIX* pM ) PURE;
+
+ // Right multiply the current matrix with the computed rotation
+ // matrix, counterclockwise about the given axis with the given angle.
+ // (rotation is about the current world origin)
+ STDMETHOD(RotateAxis)
+ (THIS_ const D3DXVECTOR3* pV, float angle) PURE;
+
+ // Left multiply the current matrix with the computed rotation
+ // matrix, counterclockwise about the given axis with the given angle.
+ // (rotation is about the local origin of the object)
+ STDMETHOD(RotateAxisLocal)
+ (THIS_ const D3DXVECTOR3* pV, float angle) PURE;
+
+ // Right multiply the current matrix with the computed rotation
+ // matrix. All angles are counterclockwise. (rotation is about the
+ // current world origin)
+
+ // The rotation is composed of a yaw around the Y axis, a pitch around
+ // the X axis, and a roll around the Z axis.
+ STDMETHOD(RotateYawPitchRoll)
+ (THIS_ float yaw, float pitch, float roll) PURE;
+
+ // Left multiply the current matrix with the computed rotation
+ // matrix. All angles are counterclockwise. (rotation is about the
+ // local origin of the object)
+
+ // The rotation is composed of a yaw around the Y axis, a pitch around
+ // the X axis, and a roll around the Z axis.
+ STDMETHOD(RotateYawPitchRollLocal)
+ (THIS_ float yaw, float pitch, float roll) PURE;
+
+ // Right multiply the current matrix with the computed scale
+ // matrix. (transformation is about the current world origin)
+ STDMETHOD(Scale)(THIS_ float x, float y, float z) PURE;
+
+ // Left multiply the current matrix with the computed scale
+ // matrix. (transformation is about the local origin of the object)
+ STDMETHOD(ScaleLocal)(THIS_ float x, float y, float z) PURE;
+
+ // Right multiply the current matrix with the computed translation
+ // matrix. (transformation is about the current world origin)
+ STDMETHOD(Translate)(THIS_ float x, float y, float z ) PURE;
+
+ // Left multiply the current matrix with the computed translation
+ // matrix. (transformation is about the local origin of the object)
+ STDMETHOD(TranslateLocal)(THIS_ float x, float y, float z) PURE;
+
+ // Obtain the current matrix at the top of the stack
+ STDMETHOD_(D3DXMATRIX*, GetTop)(THIS) PURE;
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HRESULT WINAPI D3DXCreateMatrixStack( DWORD flags, LPD3DXMATRIXSTACK *ppStack );
+
+#ifdef __cplusplus
+}
+#endif
+
+#include "d3dxmath.inl"
+
+#pragma warning(default:4201)
+
+#endif // __D3DXMATH_H__
diff --git a/src/dep/include/DXSDK/include/d3dxmath.inl b/src/dep/include/DXSDK/include/d3dxmath.inl
new file mode 100644
index 0000000..32b3b5f
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3dxmath.inl
@@ -0,0 +1,1809 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dxmath.inl
+// Content: D3DX math inline functions
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef __D3DXMATH_INL__
+#define __D3DXMATH_INL__
+
+
+//===========================================================================
+//
+// Inline Class Methods
+//
+//===========================================================================
+
+#ifdef __cplusplus
+
+//--------------------------
+// 2D Vector
+//--------------------------
+
+D3DXINLINE
+D3DXVECTOR2::D3DXVECTOR2( const float *pf )
+{
+#ifdef D3DX_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ x = pf[0];
+ y = pf[1];
+}
+
+D3DXINLINE
+D3DXVECTOR2::D3DXVECTOR2( float fx, float fy )
+{
+ x = fx;
+ y = fy;
+}
+
+// casting
+D3DXINLINE
+D3DXVECTOR2::operator float* ()
+{
+ return (float *) &x;
+}
+
+D3DXINLINE
+D3DXVECTOR2::operator const float* () const
+{
+ return (const float *) &x;
+}
+
+// assignment operators
+D3DXINLINE D3DXVECTOR2&
+D3DXVECTOR2::operator += ( const D3DXVECTOR2& v )
+{
+ x += v.x;
+ y += v.y;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR2&
+D3DXVECTOR2::operator -= ( const D3DXVECTOR2& v )
+{
+ x -= v.x;
+ y -= v.y;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR2&
+D3DXVECTOR2::operator *= ( float f )
+{
+ x *= f;
+ y *= f;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR2&
+D3DXVECTOR2::operator /= ( float f )
+{
+ float fInv = 1.0f / f;
+ x *= fInv;
+ y *= fInv;
+ return *this;
+}
+
+// unary operators
+D3DXINLINE D3DXVECTOR2
+D3DXVECTOR2::operator + () const
+{
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR2
+D3DXVECTOR2::operator - () const
+{
+ return D3DXVECTOR2(-x, -y);
+}
+
+// binary operators
+D3DXINLINE D3DXVECTOR2
+D3DXVECTOR2::operator + ( const D3DXVECTOR2& v ) const
+{
+ return D3DXVECTOR2(x + v.x, y + v.y);
+}
+
+D3DXINLINE D3DXVECTOR2
+D3DXVECTOR2::operator - ( const D3DXVECTOR2& v ) const
+{
+ return D3DXVECTOR2(x - v.x, y - v.y);
+}
+
+D3DXINLINE D3DXVECTOR2
+D3DXVECTOR2::operator * ( float f ) const
+{
+ return D3DXVECTOR2(x * f, y * f);
+}
+
+D3DXINLINE D3DXVECTOR2
+D3DXVECTOR2::operator / ( float f ) const
+{
+ float fInv = 1.0f / f;
+ return D3DXVECTOR2(x * fInv, y * fInv);
+}
+
+
+D3DXINLINE D3DXVECTOR2
+operator * ( float f, const D3DXVECTOR2& v )
+{
+ return D3DXVECTOR2(f * v.x, f * v.y);
+}
+
+D3DXINLINE BOOL
+D3DXVECTOR2::operator == ( const D3DXVECTOR2& v ) const
+{
+ return x == v.x && y == v.y;
+}
+
+D3DXINLINE BOOL
+D3DXVECTOR2::operator != ( const D3DXVECTOR2& v ) const
+{
+ return x != v.x || y != v.y;
+}
+
+
+
+
+//--------------------------
+// 3D Vector
+//--------------------------
+D3DXINLINE
+D3DXVECTOR3::D3DXVECTOR3( const float *pf )
+{
+#ifdef D3DX_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ x = pf[0];
+ y = pf[1];
+ z = pf[2];
+}
+
+D3DXINLINE
+D3DXVECTOR3::D3DXVECTOR3( const D3DVECTOR& v )
+{
+ x = v.x;
+ y = v.y;
+ z = v.z;
+}
+
+D3DXINLINE
+D3DXVECTOR3::D3DXVECTOR3( float fx, float fy, float fz )
+{
+ x = fx;
+ y = fy;
+ z = fz;
+}
+
+
+// casting
+D3DXINLINE
+D3DXVECTOR3::operator float* ()
+{
+ return (float *) &x;
+}
+
+D3DXINLINE
+D3DXVECTOR3::operator const float* () const
+{
+ return (const float *) &x;
+}
+
+
+D3DXINLINE
+D3DXVECTOR3::operator D3DVECTOR* ()
+{
+ return (D3DVECTOR *) &x;
+}
+
+D3DXINLINE
+D3DXVECTOR3::operator const D3DVECTOR* () const
+{
+ return (const D3DVECTOR *) &x;
+}
+
+
+D3DXINLINE
+D3DXVECTOR3::operator D3DVECTOR& ()
+{
+ return *((D3DVECTOR *) &x);
+}
+
+D3DXINLINE
+D3DXVECTOR3::operator const D3DVECTOR& () const
+{
+ return *((const D3DVECTOR *) &x);
+}
+
+
+// assignment operators
+D3DXINLINE D3DXVECTOR3&
+D3DXVECTOR3::operator += ( const D3DXVECTOR3& v )
+{
+ x += v.x;
+ y += v.y;
+ z += v.z;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR3&
+D3DXVECTOR3::operator -= ( const D3DXVECTOR3& v )
+{
+ x -= v.x;
+ y -= v.y;
+ z -= v.z;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR3&
+D3DXVECTOR3::operator *= ( float f )
+{
+ x *= f;
+ y *= f;
+ z *= f;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR3&
+D3DXVECTOR3::operator /= ( float f )
+{
+ float fInv = 1.0f / f;
+ x *= fInv;
+ y *= fInv;
+ z *= fInv;
+ return *this;
+}
+
+
+// unary operators
+D3DXINLINE D3DXVECTOR3
+D3DXVECTOR3::operator + () const
+{
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR3
+D3DXVECTOR3::operator - () const
+{
+ return D3DXVECTOR3(-x, -y, -z);
+}
+
+
+// binary operators
+D3DXINLINE D3DXVECTOR3
+D3DXVECTOR3::operator + ( const D3DXVECTOR3& v ) const
+{
+ return D3DXVECTOR3(x + v.x, y + v.y, z + v.z);
+}
+
+D3DXINLINE D3DXVECTOR3
+D3DXVECTOR3::operator - ( const D3DXVECTOR3& v ) const
+{
+ return D3DXVECTOR3(x - v.x, y - v.y, z - v.z);
+}
+
+D3DXINLINE D3DXVECTOR3
+D3DXVECTOR3::operator * ( float f ) const
+{
+ return D3DXVECTOR3(x * f, y * f, z * f);
+}
+
+D3DXINLINE D3DXVECTOR3
+D3DXVECTOR3::operator / ( float f ) const
+{
+ float fInv = 1.0f / f;
+ return D3DXVECTOR3(x * fInv, y * fInv, z * fInv);
+}
+
+
+D3DXINLINE D3DXVECTOR3
+operator * ( float f, const struct D3DXVECTOR3& v )
+{
+ return D3DXVECTOR3(f * v.x, f * v.y, f * v.z);
+}
+
+
+D3DXINLINE BOOL
+D3DXVECTOR3::operator == ( const D3DXVECTOR3& v ) const
+{
+ return x == v.x && y == v.y && z == v.z;
+}
+
+D3DXINLINE BOOL
+D3DXVECTOR3::operator != ( const D3DXVECTOR3& v ) const
+{
+ return x != v.x || y != v.y || z != v.z;
+}
+
+
+
+//--------------------------
+// 4D Vector
+//--------------------------
+D3DXINLINE
+D3DXVECTOR4::D3DXVECTOR4( const float *pf )
+{
+#ifdef D3DX_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ x = pf[0];
+ y = pf[1];
+ z = pf[2];
+ w = pf[3];
+}
+
+D3DXINLINE
+D3DXVECTOR4::D3DXVECTOR4( float fx, float fy, float fz, float fw )
+{
+ x = fx;
+ y = fy;
+ z = fz;
+ w = fw;
+}
+
+
+// casting
+D3DXINLINE
+D3DXVECTOR4::operator float* ()
+{
+ return (float *) &x;
+}
+
+D3DXINLINE
+D3DXVECTOR4::operator const float* () const
+{
+ return (const float *) &x;
+}
+
+
+// assignment operators
+D3DXINLINE D3DXVECTOR4&
+D3DXVECTOR4::operator += ( const D3DXVECTOR4& v )
+{
+ x += v.x;
+ y += v.y;
+ z += v.z;
+ w += v.w;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR4&
+D3DXVECTOR4::operator -= ( const D3DXVECTOR4& v )
+{
+ x -= v.x;
+ y -= v.y;
+ z -= v.z;
+ w -= v.w;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR4&
+D3DXVECTOR4::operator *= ( float f )
+{
+ x *= f;
+ y *= f;
+ z *= f;
+ w *= f;
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR4&
+D3DXVECTOR4::operator /= ( float f )
+{
+ float fInv = 1.0f / f;
+ x *= fInv;
+ y *= fInv;
+ z *= fInv;
+ w *= fInv;
+ return *this;
+}
+
+
+// unary operators
+D3DXINLINE D3DXVECTOR4
+D3DXVECTOR4::operator + () const
+{
+ return *this;
+}
+
+D3DXINLINE D3DXVECTOR4
+D3DXVECTOR4::operator - () const
+{
+ return D3DXVECTOR4(-x, -y, -z, -w);
+}
+
+
+// binary operators
+D3DXINLINE D3DXVECTOR4
+D3DXVECTOR4::operator + ( const D3DXVECTOR4& v ) const
+{
+ return D3DXVECTOR4(x + v.x, y + v.y, z + v.z, w + v.w);
+}
+
+D3DXINLINE D3DXVECTOR4
+D3DXVECTOR4::operator - ( const D3DXVECTOR4& v ) const
+{
+ return D3DXVECTOR4(x - v.x, y - v.y, z - v.z, w - v.w);
+}
+
+D3DXINLINE D3DXVECTOR4
+D3DXVECTOR4::operator * ( float f ) const
+{
+ return D3DXVECTOR4(x * f, y * f, z * f, w * f);
+}
+
+D3DXINLINE D3DXVECTOR4
+D3DXVECTOR4::operator / ( float f ) const
+{
+ float fInv = 1.0f / f;
+ return D3DXVECTOR4(x * fInv, y * fInv, z * fInv, w * fInv);
+}
+
+
+D3DXINLINE D3DXVECTOR4
+operator * ( float f, const D3DXVECTOR4& v )
+{
+ return D3DXVECTOR4(f * v.x, f * v.y, f * v.z, f * v.w);
+}
+
+
+D3DXINLINE BOOL
+D3DXVECTOR4::operator == ( const D3DXVECTOR4& v ) const
+{
+ return x == v.x && y == v.y && z == v.z && w == v.w;
+}
+
+D3DXINLINE BOOL
+D3DXVECTOR4::operator != ( const D3DXVECTOR4& v ) const
+{
+ return x != v.x || y != v.y || z != v.z || w != v.w;
+}
+
+
+//--------------------------
+// Matrix
+//--------------------------
+D3DXINLINE
+D3DXMATRIX::D3DXMATRIX( const float* pf )
+{
+#ifdef D3DX_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ memcpy(&m00, pf, sizeof(D3DXMATRIX));
+}
+
+D3DXINLINE
+D3DXMATRIX::D3DXMATRIX( const D3DMATRIX& mat )
+{
+ memcpy(&m00, &mat, sizeof(D3DXMATRIX));
+}
+
+D3DXINLINE
+D3DXMATRIX::D3DXMATRIX( float f00, float f01, float f02, float f03,
+ float f10, float f11, float f12, float f13,
+ float f20, float f21, float f22, float f23,
+ float f30, float f31, float f32, float f33 )
+{
+ m00 = f00; m01 = f01; m02 = f02; m03 = f03;
+ m10 = f10; m11 = f11; m12 = f12; m13 = f13;
+ m20 = f20; m21 = f21; m22 = f22; m23 = f23;
+ m30 = f30; m31 = f31; m32 = f32; m33 = f33;
+}
+
+
+
+// access grants
+D3DXINLINE float&
+D3DXMATRIX::operator () ( UINT iRow, UINT iCol )
+{
+ return m[iRow][iCol];
+}
+
+D3DXINLINE float
+D3DXMATRIX::operator () ( UINT iRow, UINT iCol ) const
+{
+ return m[iRow][iCol];
+}
+
+
+// casting operators
+D3DXINLINE
+D3DXMATRIX::operator float* ()
+{
+ return (float *) &m00;
+}
+
+D3DXINLINE
+D3DXMATRIX::operator const float* () const
+{
+ return (const float *) &m00;
+}
+
+
+D3DXINLINE
+D3DXMATRIX::operator D3DMATRIX* ()
+{
+ return (D3DMATRIX *) &m00;
+}
+
+D3DXINLINE
+D3DXMATRIX::operator const D3DMATRIX* () const
+{
+ return (const D3DMATRIX *) &m00;
+}
+
+
+D3DXINLINE
+D3DXMATRIX::operator D3DMATRIX& ()
+{
+ return *((D3DMATRIX *) &m00);
+}
+
+D3DXINLINE
+D3DXMATRIX::operator const D3DMATRIX& () const
+{
+ return *((const D3DMATRIX *) &m00);
+}
+
+
+// assignment operators
+D3DXINLINE D3DXMATRIX&
+D3DXMATRIX::operator *= ( const D3DXMATRIX& mat )
+{
+ D3DXMatrixMultiply(this, this, &mat);
+ return *this;
+}
+
+D3DXINLINE D3DXMATRIX&
+D3DXMATRIX::operator += ( const D3DXMATRIX& mat )
+{
+ m00 += mat.m00; m01 += mat.m01; m02 += mat.m02; m03 += mat.m03;
+ m10 += mat.m10; m11 += mat.m11; m12 += mat.m12; m13 += mat.m13;
+ m20 += mat.m20; m21 += mat.m21; m22 += mat.m22; m23 += mat.m23;
+ m30 += mat.m30; m31 += mat.m31; m32 += mat.m32; m33 += mat.m33;
+ return *this;
+}
+
+D3DXINLINE D3DXMATRIX&
+D3DXMATRIX::operator -= ( const D3DXMATRIX& mat )
+{
+ m00 -= mat.m00; m01 -= mat.m01; m02 -= mat.m02; m03 -= mat.m03;
+ m10 -= mat.m10; m11 -= mat.m11; m12 -= mat.m12; m13 -= mat.m13;
+ m20 -= mat.m20; m21 -= mat.m21; m22 -= mat.m22; m23 -= mat.m23;
+ m30 -= mat.m30; m31 -= mat.m31; m32 -= mat.m32; m33 -= mat.m33;
+ return *this;
+}
+
+D3DXINLINE D3DXMATRIX&
+D3DXMATRIX::operator *= ( float f )
+{
+ m00 *= f; m01 *= f; m02 *= f; m03 *= f;
+ m10 *= f; m11 *= f; m12 *= f; m13 *= f;
+ m20 *= f; m21 *= f; m22 *= f; m23 *= f;
+ m30 *= f; m31 *= f; m32 *= f; m33 *= f;
+ return *this;
+}
+
+D3DXINLINE D3DXMATRIX&
+D3DXMATRIX::operator /= ( float f )
+{
+ float fInv = 1.0f / f;
+ m00 *= fInv; m01 *= fInv; m02 *= fInv; m03 *= fInv;
+ m10 *= fInv; m11 *= fInv; m12 *= fInv; m13 *= fInv;
+ m20 *= fInv; m21 *= fInv; m22 *= fInv; m23 *= fInv;
+ m30 *= fInv; m31 *= fInv; m32 *= fInv; m33 *= fInv;
+ return *this;
+}
+
+
+// unary operators
+D3DXINLINE D3DXMATRIX
+D3DXMATRIX::operator + () const
+{
+ return *this;
+}
+
+D3DXINLINE D3DXMATRIX
+D3DXMATRIX::operator - () const
+{
+ return D3DXMATRIX(-m00, -m01, -m02, -m03,
+ -m10, -m11, -m12, -m13,
+ -m20, -m21, -m22, -m23,
+ -m30, -m31, -m32, -m33);
+}
+
+
+// binary operators
+D3DXINLINE D3DXMATRIX
+D3DXMATRIX::operator * ( const D3DXMATRIX& mat ) const
+{
+ D3DXMATRIX matT;
+ D3DXMatrixMultiply(&matT, this, &mat);
+ return matT;
+}
+
+D3DXINLINE D3DXMATRIX
+D3DXMATRIX::operator + ( const D3DXMATRIX& mat ) const
+{
+ return D3DXMATRIX(m00 + mat.m00, m01 + mat.m01, m02 + mat.m02, m03 + mat.m03,
+ m10 + mat.m10, m11 + mat.m11, m12 + mat.m12, m13 + mat.m13,
+ m20 + mat.m20, m21 + mat.m21, m22 + mat.m22, m23 + mat.m23,
+ m30 + mat.m30, m31 + mat.m31, m32 + mat.m32, m33 + mat.m33);
+}
+
+D3DXINLINE D3DXMATRIX
+D3DXMATRIX::operator - ( const D3DXMATRIX& mat ) const
+{
+ return D3DXMATRIX(m00 - mat.m00, m01 - mat.m01, m02 - mat.m02, m03 - mat.m03,
+ m10 - mat.m10, m11 - mat.m11, m12 - mat.m12, m13 - mat.m13,
+ m20 - mat.m20, m21 - mat.m21, m22 - mat.m22, m23 - mat.m23,
+ m30 - mat.m30, m31 - mat.m31, m32 - mat.m32, m33 - mat.m33);
+}
+
+D3DXINLINE D3DXMATRIX
+D3DXMATRIX::operator * ( float f ) const
+{
+ return D3DXMATRIX(m00 * f, m01 * f, m02 * f, m03 * f,
+ m10 * f, m11 * f, m12 * f, m13 * f,
+ m20 * f, m21 * f, m22 * f, m23 * f,
+ m30 * f, m31 * f, m32 * f, m33 * f);
+}
+
+D3DXINLINE D3DXMATRIX
+D3DXMATRIX::operator / ( float f ) const
+{
+ float fInv = 1.0f / f;
+ return D3DXMATRIX(m00 * fInv, m01 * fInv, m02 * fInv, m03 * fInv,
+ m10 * fInv, m11 * fInv, m12 * fInv, m13 * fInv,
+ m20 * fInv, m21 * fInv, m22 * fInv, m23 * fInv,
+ m30 * fInv, m31 * fInv, m32 * fInv, m33 * fInv);
+}
+
+
+D3DXINLINE D3DXMATRIX
+operator * ( float f, const D3DXMATRIX& mat )
+{
+ return D3DXMATRIX(f * mat.m00, f * mat.m01, f * mat.m02, f * mat.m03,
+ f * mat.m10, f * mat.m11, f * mat.m12, f * mat.m13,
+ f * mat.m20, f * mat.m21, f * mat.m22, f * mat.m23,
+ f * mat.m30, f * mat.m31, f * mat.m32, f * mat.m33);
+}
+
+
+D3DXINLINE BOOL
+D3DXMATRIX::operator == ( const D3DXMATRIX& mat ) const
+{
+ return 0 == memcmp(this, &mat, sizeof(D3DXMATRIX));
+}
+
+D3DXINLINE BOOL
+D3DXMATRIX::operator != ( const D3DXMATRIX& mat ) const
+{
+ return 0 != memcmp(this, &mat, sizeof(D3DXMATRIX));
+}
+
+
+
+//--------------------------
+// Quaternion
+//--------------------------
+
+D3DXINLINE
+D3DXQUATERNION::D3DXQUATERNION( const float* pf )
+{
+#ifdef D3DX_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ x = pf[0];
+ y = pf[1];
+ z = pf[2];
+ w = pf[3];
+}
+
+D3DXINLINE
+D3DXQUATERNION::D3DXQUATERNION( float fx, float fy, float fz, float fw )
+{
+ x = fx;
+ y = fy;
+ z = fz;
+ w = fw;
+}
+
+
+// casting
+D3DXINLINE
+D3DXQUATERNION::operator float* ()
+{
+ return (float *) &x;
+}
+
+D3DXINLINE
+D3DXQUATERNION::operator const float* () const
+{
+ return (const float *) &x;
+}
+
+
+// assignment operators
+D3DXINLINE D3DXQUATERNION&
+D3DXQUATERNION::operator += ( const D3DXQUATERNION& q )
+{
+ x += q.x;
+ y += q.y;
+ z += q.z;
+ w += q.w;
+ return *this;
+}
+
+D3DXINLINE D3DXQUATERNION&
+D3DXQUATERNION::operator -= ( const D3DXQUATERNION& q )
+{
+ x -= q.x;
+ y -= q.y;
+ z -= q.z;
+ w -= q.w;
+ return *this;
+}
+
+D3DXINLINE D3DXQUATERNION&
+D3DXQUATERNION::operator *= ( const D3DXQUATERNION& q )
+{
+ D3DXQuaternionMultiply(this, this, &q);
+ return *this;
+}
+
+D3DXINLINE D3DXQUATERNION&
+D3DXQUATERNION::operator *= ( float f )
+{
+ x *= f;
+ y *= f;
+ z *= f;
+ w *= f;
+ return *this;
+}
+
+D3DXINLINE D3DXQUATERNION&
+D3DXQUATERNION::operator /= ( float f )
+{
+ float fInv = 1.0f / f;
+ x *= fInv;
+ y *= fInv;
+ z *= fInv;
+ w *= fInv;
+ return *this;
+}
+
+
+// unary operators
+D3DXINLINE D3DXQUATERNION
+D3DXQUATERNION::operator + () const
+{
+ return *this;
+}
+
+D3DXINLINE D3DXQUATERNION
+D3DXQUATERNION::operator - () const
+{
+ return D3DXQUATERNION(-x, -y, -z, -w);
+}
+
+
+// binary operators
+D3DXINLINE D3DXQUATERNION
+D3DXQUATERNION::operator + ( const D3DXQUATERNION& q ) const
+{
+ return D3DXQUATERNION(x + q.x, y + q.y, z + q.z, w + q.w);
+}
+
+D3DXINLINE D3DXQUATERNION
+D3DXQUATERNION::operator - ( const D3DXQUATERNION& q ) const
+{
+ return D3DXQUATERNION(x - q.x, y - q.y, z - q.z, w - q.w);
+}
+
+D3DXINLINE D3DXQUATERNION
+D3DXQUATERNION::operator * ( const D3DXQUATERNION& q ) const
+{
+ D3DXQUATERNION qT;
+ D3DXQuaternionMultiply(&qT, this, &q);
+ return qT;
+}
+
+D3DXINLINE D3DXQUATERNION
+D3DXQUATERNION::operator * ( float f ) const
+{
+ return D3DXQUATERNION(x * f, y * f, z * f, w * f);
+}
+
+D3DXINLINE D3DXQUATERNION
+D3DXQUATERNION::operator / ( float f ) const
+{
+ float fInv = 1.0f / f;
+ return D3DXQUATERNION(x * fInv, y * fInv, z * fInv, w * fInv);
+}
+
+
+D3DXINLINE D3DXQUATERNION
+operator * (float f, const D3DXQUATERNION& q )
+{
+ return D3DXQUATERNION(f * q.x, f * q.y, f * q.z, f * q.w);
+}
+
+
+D3DXINLINE BOOL
+D3DXQUATERNION::operator == ( const D3DXQUATERNION& q ) const
+{
+ return x == q.x && y == q.y && z == q.z && w == q.w;
+}
+
+D3DXINLINE BOOL
+D3DXQUATERNION::operator != ( const D3DXQUATERNION& q ) const
+{
+ return x != q.x || y != q.y || z != q.z || w != q.w;
+}
+
+
+
+//--------------------------
+// Plane
+//--------------------------
+
+D3DXINLINE
+D3DXPLANE::D3DXPLANE( const float* pf )
+{
+#ifdef D3DX_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ a = pf[0];
+ b = pf[1];
+ c = pf[2];
+ d = pf[3];
+}
+
+D3DXINLINE
+D3DXPLANE::D3DXPLANE( float fa, float fb, float fc, float fd )
+{
+ a = fa;
+ b = fb;
+ c = fc;
+ d = fd;
+}
+
+
+// casting
+D3DXINLINE
+D3DXPLANE::operator float* ()
+{
+ return (float *) &a;
+}
+
+D3DXINLINE
+D3DXPLANE::operator const float* () const
+{
+ return (const float *) &a;
+}
+
+
+// unary operators
+D3DXINLINE D3DXPLANE
+D3DXPLANE::operator + () const
+{
+ return *this;
+}
+
+D3DXINLINE D3DXPLANE
+D3DXPLANE::operator - () const
+{
+ return D3DXPLANE(-a, -b, -c, -d);
+}
+
+
+// binary operators
+D3DXINLINE BOOL
+D3DXPLANE::operator == ( const D3DXPLANE& p ) const
+{
+ return a == p.a && b == p.b && c == p.c && d == p.d;
+}
+
+D3DXINLINE BOOL
+D3DXPLANE::operator != ( const D3DXPLANE& p ) const
+{
+ return a != p.a || b != p.b || c != p.c || d != p.d;
+}
+
+
+
+
+//--------------------------
+// Color
+//--------------------------
+
+D3DXINLINE
+D3DXCOLOR::D3DXCOLOR( DWORD dw )
+{
+ const float f = 1.0f / 255.0f;
+ r = f * (float) (unsigned char) (dw >> 16);
+ g = f * (float) (unsigned char) (dw >> 8);
+ b = f * (float) (unsigned char) (dw >> 0);
+ a = f * (float) (unsigned char) (dw >> 24);
+}
+
+D3DXINLINE
+D3DXCOLOR::D3DXCOLOR( const float* pf )
+{
+#ifdef D3DX_DEBUG
+ if(!pf)
+ return;
+#endif
+
+ r = pf[0];
+ g = pf[1];
+ b = pf[2];
+ a = pf[3];
+}
+
+D3DXINLINE
+D3DXCOLOR::D3DXCOLOR( const D3DCOLORVALUE& c )
+{
+ r = c.r;
+ g = c.g;
+ b = c.b;
+ a = c.a;
+}
+
+D3DXINLINE
+D3DXCOLOR::D3DXCOLOR( float fr, float fg, float fb, float fa )
+{
+ r = fr;
+ g = fg;
+ b = fb;
+ a = fa;
+}
+
+
+// casting
+D3DXINLINE
+D3DXCOLOR::operator DWORD () const
+{
+ DWORD dwR = r >= 1.0f ? 0xff : r <= 0.0f ? 0x00 : (DWORD) (r * 255.0f + 0.5f);
+ DWORD dwG = g >= 1.0f ? 0xff : g <= 0.0f ? 0x00 : (DWORD) (g * 255.0f + 0.5f);
+ DWORD dwB = b >= 1.0f ? 0xff : b <= 0.0f ? 0x00 : (DWORD) (b * 255.0f + 0.5f);
+ DWORD dwA = a >= 1.0f ? 0xff : a <= 0.0f ? 0x00 : (DWORD) (a * 255.0f + 0.5f);
+
+ return (dwA << 24) | (dwR << 16) | (dwG << 8) | dwB;
+}
+
+
+D3DXINLINE
+D3DXCOLOR::operator float * ()
+{
+ return (float *) &r;
+}
+
+D3DXINLINE
+D3DXCOLOR::operator const float * () const
+{
+ return (const float *) &r;
+}
+
+
+D3DXINLINE
+D3DXCOLOR::operator D3DCOLORVALUE * ()
+{
+ return (D3DCOLORVALUE *) &r;
+}
+
+D3DXINLINE
+D3DXCOLOR::operator const D3DCOLORVALUE * () const
+{
+ return (const D3DCOLORVALUE *) &r;
+}
+
+
+D3DXINLINE
+D3DXCOLOR::operator D3DCOLORVALUE& ()
+{
+ return *((D3DCOLORVALUE *) &r);
+}
+
+D3DXINLINE
+D3DXCOLOR::operator const D3DCOLORVALUE& () const
+{
+ return *((const D3DCOLORVALUE *) &r);
+}
+
+
+// assignment operators
+D3DXINLINE D3DXCOLOR&
+D3DXCOLOR::operator += ( const D3DXCOLOR& c )
+{
+ r += c.r;
+ g += c.g;
+ b += c.b;
+ a += c.a;
+ return *this;
+}
+
+D3DXINLINE D3DXCOLOR&
+D3DXCOLOR::operator -= ( const D3DXCOLOR& c )
+{
+ r -= c.r;
+ g -= c.g;
+ b -= c.b;
+ a -= c.a;
+ return *this;
+}
+
+D3DXINLINE D3DXCOLOR&
+D3DXCOLOR::operator *= ( float f )
+{
+ r *= f;
+ g *= f;
+ b *= f;
+ a *= f;
+ return *this;
+}
+
+D3DXINLINE D3DXCOLOR&
+D3DXCOLOR::operator /= ( float f )
+{
+ float fInv = 1.0f / f;
+ r *= fInv;
+ g *= fInv;
+ b *= fInv;
+ a *= fInv;
+ return *this;
+}
+
+
+// unary operators
+D3DXINLINE D3DXCOLOR
+D3DXCOLOR::operator + () const
+{
+ return *this;
+}
+
+D3DXINLINE D3DXCOLOR
+D3DXCOLOR::operator - () const
+{
+ return D3DXCOLOR(-r, -g, -b, -a);
+}
+
+
+// binary operators
+D3DXINLINE D3DXCOLOR
+D3DXCOLOR::operator + ( const D3DXCOLOR& c ) const
+{
+ return D3DXCOLOR(r + c.r, g + c.g, b + c.b, a + c.a);
+}
+
+D3DXINLINE D3DXCOLOR
+D3DXCOLOR::operator - ( const D3DXCOLOR& c ) const
+{
+ return D3DXCOLOR(r - c.r, g - c.g, b - c.b, a - c.a);
+}
+
+D3DXINLINE D3DXCOLOR
+D3DXCOLOR::operator * ( float f ) const
+{
+ return D3DXCOLOR(r * f, g * f, b * f, a * f);
+}
+
+D3DXINLINE D3DXCOLOR
+D3DXCOLOR::operator / ( float f ) const
+{
+ float fInv = 1.0f / f;
+ return D3DXCOLOR(r * fInv, g * fInv, b * fInv, a * fInv);
+}
+
+
+D3DXINLINE D3DXCOLOR
+operator * (float f, const D3DXCOLOR& c )
+{
+ return D3DXCOLOR(f * c.r, f * c.g, f * c.b, f * c.a);
+}
+
+
+D3DXINLINE BOOL
+D3DXCOLOR::operator == ( const D3DXCOLOR& c ) const
+{
+ return r == c.r && g == c.g && b == c.b && a == c.a;
+}
+
+D3DXINLINE BOOL
+D3DXCOLOR::operator != ( const D3DXCOLOR& c ) const
+{
+ return r != c.r || g != c.g || b != c.b || a != c.a;
+}
+
+
+#endif //__cplusplus
+
+
+
+//===========================================================================
+//
+// Inline functions
+//
+//===========================================================================
+
+
+//--------------------------
+// 2D Vector
+//--------------------------
+
+D3DXINLINE float D3DXVec2Length
+ ( const D3DXVECTOR2 *pV )
+{
+#ifdef D3DX_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+#ifdef __cplusplus
+ return sqrtf(pV->x * pV->x + pV->y * pV->y);
+#else
+ return (float) sqrt(pV->x * pV->x + pV->y * pV->y);
+#endif
+}
+
+D3DXINLINE float D3DXVec2LengthSq
+ ( const D3DXVECTOR2 *pV )
+{
+#ifdef D3DX_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+ return pV->x * pV->x + pV->y * pV->y;
+}
+
+D3DXINLINE float D3DXVec2Dot
+ ( const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pV1 || !pV2)
+ return 0.0f;
+#endif
+
+ return pV1->x * pV2->x + pV1->y * pV2->y;
+}
+
+D3DXINLINE float D3DXVec2CCW
+ ( const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pV1 || !pV2)
+ return 0.0f;
+#endif
+
+ return pV1->x * pV2->y - pV1->y * pV2->x;
+}
+
+D3DXINLINE D3DXVECTOR2* D3DXVec2Add
+ ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + pV2->x;
+ pOut->y = pV1->y + pV2->y;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR2* D3DXVec2Subtract
+ ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x - pV2->x;
+ pOut->y = pV1->y - pV2->y;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR2* D3DXVec2Minimize
+ ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x < pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y < pV2->y ? pV1->y : pV2->y;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR2* D3DXVec2Maximize
+ ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x > pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y > pV2->y ? pV1->y : pV2->y;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR2* D3DXVec2Scale
+ ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV, float s )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV)
+ return NULL;
+#endif
+
+ pOut->x = pV->x * s;
+ pOut->y = pV->y * s;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR2* D3DXVec2Lerp
+ ( D3DXVECTOR2 *pOut, const D3DXVECTOR2 *pV1, const D3DXVECTOR2 *pV2,
+ float s )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + s * (pV2->x - pV1->x);
+ pOut->y = pV1->y + s * (pV2->y - pV1->y);
+ return pOut;
+}
+
+
+//--------------------------
+// 3D Vector
+//--------------------------
+
+D3DXINLINE float D3DXVec3Length
+ ( const D3DXVECTOR3 *pV )
+{
+#ifdef D3DX_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+#ifdef __cplusplus
+ return sqrtf(pV->x * pV->x + pV->y * pV->y + pV->z * pV->z);
+#else
+ return (float) sqrt(pV->x * pV->x + pV->y * pV->y + pV->z * pV->z);
+#endif
+}
+
+D3DXINLINE float D3DXVec3LengthSq
+ ( const D3DXVECTOR3 *pV )
+{
+#ifdef D3DX_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+ return pV->x * pV->x + pV->y * pV->y + pV->z * pV->z;
+}
+
+D3DXINLINE float D3DXVec3Dot
+ ( const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pV1 || !pV2)
+ return 0.0f;
+#endif
+
+ return pV1->x * pV2->x + pV1->y * pV2->y + pV1->z * pV2->z;
+}
+
+D3DXINLINE D3DXVECTOR3* D3DXVec3Cross
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 )
+{
+ D3DXVECTOR3 v;
+
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ v.x = pV1->y * pV2->z - pV1->z * pV2->y;
+ v.y = pV1->z * pV2->x - pV1->x * pV2->z;
+ v.z = pV1->x * pV2->y - pV1->y * pV2->x;
+
+ *pOut = v;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR3* D3DXVec3Add
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + pV2->x;
+ pOut->y = pV1->y + pV2->y;
+ pOut->z = pV1->z + pV2->z;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR3* D3DXVec3Subtract
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x - pV2->x;
+ pOut->y = pV1->y - pV2->y;
+ pOut->z = pV1->z - pV2->z;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR3* D3DXVec3Minimize
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x < pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y < pV2->y ? pV1->y : pV2->y;
+ pOut->z = pV1->z < pV2->z ? pV1->z : pV2->z;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR3* D3DXVec3Maximize
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x > pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y > pV2->y ? pV1->y : pV2->y;
+ pOut->z = pV1->z > pV2->z ? pV1->z : pV2->z;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR3* D3DXVec3Scale
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV, float s)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV)
+ return NULL;
+#endif
+
+ pOut->x = pV->x * s;
+ pOut->y = pV->y * s;
+ pOut->z = pV->z * s;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR3* D3DXVec3Lerp
+ ( D3DXVECTOR3 *pOut, const D3DXVECTOR3 *pV1, const D3DXVECTOR3 *pV2,
+ float s )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + s * (pV2->x - pV1->x);
+ pOut->y = pV1->y + s * (pV2->y - pV1->y);
+ pOut->z = pV1->z + s * (pV2->z - pV1->z);
+ return pOut;
+}
+
+
+//--------------------------
+// 4D Vector
+//--------------------------
+
+D3DXINLINE float D3DXVec4Length
+ ( const D3DXVECTOR4 *pV )
+{
+#ifdef D3DX_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+#ifdef __cplusplus
+ return sqrtf(pV->x * pV->x + pV->y * pV->y + pV->z * pV->z + pV->w * pV->w);
+#else
+ return (float) sqrt(pV->x * pV->x + pV->y * pV->y + pV->z * pV->z + pV->w * pV->w);
+#endif
+}
+
+D3DXINLINE float D3DXVec4LengthSq
+ ( const D3DXVECTOR4 *pV )
+{
+#ifdef D3DX_DEBUG
+ if(!pV)
+ return 0.0f;
+#endif
+
+ return pV->x * pV->x + pV->y * pV->y + pV->z * pV->z + pV->w * pV->w;
+}
+
+D3DXINLINE float D3DXVec4Dot
+ ( const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pV1 || !pV2)
+ return 0.0f;
+#endif
+
+ return pV1->x * pV2->x + pV1->y * pV2->y + pV1->z * pV2->z + pV1->w * pV2->w;
+}
+
+D3DXINLINE D3DXVECTOR4* D3DXVec4Add
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + pV2->x;
+ pOut->y = pV1->y + pV2->y;
+ pOut->z = pV1->z + pV2->z;
+ pOut->w = pV1->w + pV2->w;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR4* D3DXVec4Subtract
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x - pV2->x;
+ pOut->y = pV1->y - pV2->y;
+ pOut->z = pV1->z - pV2->z;
+ pOut->w = pV1->w - pV2->w;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR4* D3DXVec4Minimize
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x < pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y < pV2->y ? pV1->y : pV2->y;
+ pOut->z = pV1->z < pV2->z ? pV1->z : pV2->z;
+ pOut->w = pV1->w < pV2->w ? pV1->w : pV2->w;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR4* D3DXVec4Maximize
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x > pV2->x ? pV1->x : pV2->x;
+ pOut->y = pV1->y > pV2->y ? pV1->y : pV2->y;
+ pOut->z = pV1->z > pV2->z ? pV1->z : pV2->z;
+ pOut->w = pV1->w > pV2->w ? pV1->w : pV2->w;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR4* D3DXVec4Scale
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV, float s)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV)
+ return NULL;
+#endif
+
+ pOut->x = pV->x * s;
+ pOut->y = pV->y * s;
+ pOut->z = pV->z * s;
+ pOut->w = pV->w * s;
+ return pOut;
+}
+
+D3DXINLINE D3DXVECTOR4* D3DXVec4Lerp
+ ( D3DXVECTOR4 *pOut, const D3DXVECTOR4 *pV1, const D3DXVECTOR4 *pV2,
+ float s )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pV1 || !pV2)
+ return NULL;
+#endif
+
+ pOut->x = pV1->x + s * (pV2->x - pV1->x);
+ pOut->y = pV1->y + s * (pV2->y - pV1->y);
+ pOut->z = pV1->z + s * (pV2->z - pV1->z);
+ pOut->w = pV1->w + s * (pV2->w - pV1->w);
+ return pOut;
+}
+
+
+//--------------------------
+// 4D Matrix
+//--------------------------
+
+D3DXINLINE D3DXMATRIX* D3DXMatrixIdentity
+ ( D3DXMATRIX *pOut )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut)
+ return NULL;
+#endif
+
+ pOut->m[0][1] = pOut->m[0][2] = pOut->m[0][3] =
+ pOut->m[1][0] = pOut->m[1][2] = pOut->m[1][3] =
+ pOut->m[2][0] = pOut->m[2][1] = pOut->m[2][3] =
+ pOut->m[3][0] = pOut->m[3][1] = pOut->m[3][2] = 0.0f;
+
+ pOut->m[0][0] = pOut->m[1][1] = pOut->m[2][2] = pOut->m[3][3] = 1.0f;
+ return pOut;
+}
+
+
+D3DXINLINE BOOL D3DXMatrixIsIdentity
+ ( const D3DXMATRIX *pM )
+{
+#ifdef D3DX_DEBUG
+ if(!pM)
+ return FALSE;
+#endif
+
+ return pM->m[0][0] == 1.0f && pM->m[0][1] == 0.0f && pM->m[0][2] == 0.0f && pM->m[0][3] == 0.0f &&
+ pM->m[1][0] == 0.0f && pM->m[1][1] == 1.0f && pM->m[1][2] == 0.0f && pM->m[1][3] == 0.0f &&
+ pM->m[2][0] == 0.0f && pM->m[2][1] == 0.0f && pM->m[2][2] == 1.0f && pM->m[2][3] == 0.0f &&
+ pM->m[3][0] == 0.0f && pM->m[3][1] == 0.0f && pM->m[3][2] == 0.0f && pM->m[3][3] == 1.0f;
+}
+
+
+//--------------------------
+// Quaternion
+//--------------------------
+
+D3DXINLINE float D3DXQuaternionLength
+ ( const D3DXQUATERNION *pQ )
+{
+#ifdef D3DX_DEBUG
+ if(!pQ)
+ return 0.0f;
+#endif
+
+#ifdef __cplusplus
+ return sqrtf(pQ->x * pQ->x + pQ->y * pQ->y + pQ->z * pQ->z + pQ->w * pQ->w);
+#else
+ return (float) sqrt(pQ->x * pQ->x + pQ->y * pQ->y + pQ->z * pQ->z + pQ->w * pQ->w);
+#endif
+}
+
+D3DXINLINE float D3DXQuaternionLengthSq
+ ( const D3DXQUATERNION *pQ )
+{
+#ifdef D3DX_DEBUG
+ if(!pQ)
+ return 0.0f;
+#endif
+
+ return pQ->x * pQ->x + pQ->y * pQ->y + pQ->z * pQ->z + pQ->w * pQ->w;
+}
+
+D3DXINLINE float D3DXQuaternionDot
+ ( const D3DXQUATERNION *pQ1, const D3DXQUATERNION *pQ2 )
+{
+#ifdef D3DX_DEBUG
+ if(!pQ1 || !pQ2)
+ return 0.0f;
+#endif
+
+ return pQ1->x * pQ2->x + pQ1->y * pQ2->y + pQ1->z * pQ2->z + pQ1->w * pQ2->w;
+}
+
+
+D3DXINLINE D3DXQUATERNION* D3DXQuaternionIdentity
+ ( D3DXQUATERNION *pOut )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut)
+ return NULL;
+#endif
+
+ pOut->x = pOut->y = pOut->z = 0.0f;
+ pOut->w = 1.0f;
+ return pOut;
+}
+
+D3DXINLINE BOOL D3DXQuaternionIsIdentity
+ ( const D3DXQUATERNION *pQ )
+{
+#ifdef D3DX_DEBUG
+ if(!pQ)
+ return FALSE;
+#endif
+
+ return pQ->x == 0.0f && pQ->y == 0.0f && pQ->z == 0.0f && pQ->w == 1.0f;
+}
+
+
+D3DXINLINE D3DXQUATERNION* D3DXQuaternionConjugate
+ ( D3DXQUATERNION *pOut, const D3DXQUATERNION *pQ )
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pQ)
+ return NULL;
+#endif
+
+ pOut->x = -pQ->x;
+ pOut->y = -pQ->y;
+ pOut->z = -pQ->z;
+ pOut->w = pQ->w;
+ return pOut;
+}
+
+
+//--------------------------
+// Plane
+//--------------------------
+
+D3DXINLINE float D3DXPlaneDot
+ ( const D3DXPLANE *pP, const D3DXVECTOR4 *pV)
+{
+#ifdef D3DX_DEBUG
+ if(!pP || !pV)
+ return 0.0f;
+#endif
+
+ return pP->a * pV->x + pP->b * pV->y + pP->c * pV->z + pP->d * pV->w;
+}
+
+D3DXINLINE float D3DXPlaneDotCoord
+ ( const D3DXPLANE *pP, const D3DXVECTOR3 *pV)
+{
+#ifdef D3DX_DEBUG
+ if(!pP || !pV)
+ return 0.0f;
+#endif
+
+ return pP->a * pV->x + pP->b * pV->y + pP->c * pV->z + pP->d;
+}
+
+D3DXINLINE float D3DXPlaneDotNormal
+ ( const D3DXPLANE *pP, const D3DXVECTOR3 *pV)
+{
+#ifdef D3DX_DEBUG
+ if(!pP || !pV)
+ return 0.0f;
+#endif
+
+ return pP->a * pV->x + pP->b * pV->y + pP->c * pV->z;
+}
+
+
+//--------------------------
+// Color
+//--------------------------
+
+D3DXINLINE D3DXCOLOR* D3DXColorNegative
+ (D3DXCOLOR *pOut, const D3DXCOLOR *pC)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pC)
+ return NULL;
+#endif
+
+ pOut->r = 1.0f - pC->r;
+ pOut->g = 1.0f - pC->g;
+ pOut->b = 1.0f - pC->b;
+ pOut->a = pC->a;
+ return pOut;
+}
+
+D3DXINLINE D3DXCOLOR* D3DXColorAdd
+ (D3DXCOLOR *pOut, const D3DXCOLOR *pC1, const D3DXCOLOR *pC2)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pC1 || !pC2)
+ return NULL;
+#endif
+
+ pOut->r = pC1->r + pC2->r;
+ pOut->g = pC1->g + pC2->g;
+ pOut->b = pC1->b + pC2->b;
+ pOut->a = pC1->a + pC2->a;
+ return pOut;
+}
+
+D3DXINLINE D3DXCOLOR* D3DXColorSubtract
+ (D3DXCOLOR *pOut, const D3DXCOLOR *pC1, const D3DXCOLOR *pC2)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pC1 || !pC2)
+ return NULL;
+#endif
+
+ pOut->r = pC1->r - pC2->r;
+ pOut->g = pC1->g - pC2->g;
+ pOut->b = pC1->b - pC2->b;
+ pOut->a = pC1->a - pC2->a;
+ return pOut;
+}
+
+D3DXINLINE D3DXCOLOR* D3DXColorScale
+ (D3DXCOLOR *pOut, const D3DXCOLOR *pC, float s)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pC)
+ return NULL;
+#endif
+
+ pOut->r = pC->r * s;
+ pOut->g = pC->g * s;
+ pOut->b = pC->b * s;
+ pOut->a = pC->a * s;
+ return pOut;
+}
+
+D3DXINLINE D3DXCOLOR* D3DXColorModulate
+ (D3DXCOLOR *pOut, const D3DXCOLOR *pC1, const D3DXCOLOR *pC2)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pC1 || !pC2)
+ return NULL;
+#endif
+
+ pOut->r = pC1->r * pC2->r;
+ pOut->g = pC1->g * pC2->g;
+ pOut->b = pC1->b * pC2->b;
+ pOut->a = pC1->a * pC2->a;
+ return pOut;
+}
+
+D3DXINLINE D3DXCOLOR* D3DXColorLerp
+ (D3DXCOLOR *pOut, const D3DXCOLOR *pC1, const D3DXCOLOR *pC2, float s)
+{
+#ifdef D3DX_DEBUG
+ if(!pOut || !pC1 || !pC2)
+ return NULL;
+#endif
+
+ pOut->r = pC1->r + s * (pC2->r - pC1->r);
+ pOut->g = pC1->g + s * (pC2->g - pC1->g);
+ pOut->b = pC1->b + s * (pC2->b - pC1->b);
+ pOut->a = pC1->a + s * (pC2->a - pC1->a);
+ return pOut;
+}
+
+
+#endif // __D3DXMATH_INL__
diff --git a/src/dep/include/DXSDK/include/d3dxshapes.h b/src/dep/include/DXSDK/include/d3dxshapes.h
new file mode 100644
index 0000000..b4ef209
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3dxshapes.h
@@ -0,0 +1,209 @@
+///////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dxshapes.h
+// Content: D3DX simple shapes
+//
+///////////////////////////////////////////////////////////////////////////
+
+#ifndef __D3DXSHAPES_H__
+#define __D3DXSHAPES_H__
+
+#include
+#include
+#include "d3dxerr.h"
+
+
+typedef struct ID3DXSimpleShape *LPD3DXSIMPLESHAPE;
+
+// {CFCD4602-EB7B-11d2-A440-00A0C90629A8}
+DEFINE_GUID( IID_ID3DXSimpleShape,
+0xcfcd4602, 0xeb7b, 0x11d2, 0xa4, 0x40, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0xa8 );
+
+
+///////////////////////////////////////////////////////////////////////////
+// Interfaces:
+///////////////////////////////////////////////////////////////////////////
+
+//-------------------------------------------------------------------------
+// ID3DXSimpleShape interface:
+//-------------------------------------------------------------------------
+
+DECLARE_INTERFACE_(ID3DXSimpleShape, IUnknown)
+{
+ // IUnknown methods
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID* ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ // ID3DXSimpleShape methods
+ STDMETHOD_(LPDIRECT3DVERTEXBUFFER7, GetVB)(THIS) PURE;
+ STDMETHOD_(DWORD, GetIndices)(THIS_ LPWORD *ppIndices) PURE;
+ STDMETHOD(Draw)(THIS) PURE;
+};
+
+
+
+///////////////////////////////////////////////////////////////////////////
+// Functions:
+///////////////////////////////////////////////////////////////////////////
+
+#ifdef __cplusplus
+extern "C" {
+#endif //__cplusplus
+
+
+//-------------------------------------------------------------------------
+// D3DXCreatePolygon: Creates an 'n' sided polygon using the device
+// ---------------- specified. It returns a vertex buffer that can be used
+// for drawing or manipulation by the program later on.
+//
+// Params:
+// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
+// [in] float sideSize: Length of a side.
+// [in] DWORD numTexCoords: The number of texture coordinates desired
+// in the vertex-buffer. (Default is 1)
+// D3DX_DEFAULT is a valid input.
+// [out] IDirect3DVertexBuffer7** ppVB: The output shape interface.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCreatePolygon(LPDIRECT3DDEVICE7 pDevice,
+ float sideSize,
+ DWORD numSides,
+ DWORD numTexCoords,
+ LPD3DXSIMPLESHAPE* ppShape );
+
+//-------------------------------------------------------------------------
+// D3DXCreateBox: Creates a box (cuboid) of given dimensions using the
+// ------------ device. It returns a vertex buffer that can
+// be used for drawing or manipulation by the program later on.
+//
+// Params:
+// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
+// [in] float width: Width of the box (along x-axis)
+// [in] float height: Height of the box (along y-axis)
+// [in] float depth: Depth of the box (along z-axis)
+// [in] DWORD numTexCoords: The number of texture coordinates desired
+// in the vertex-buffer. Default is 1.
+// D3DX_DEFAULT is a valid input here.
+// [out] LPD3DXSIMPLESHAPE* ppShape: The output vertex-buffer.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCreateBox(LPDIRECT3DDEVICE7 pDevice,
+ float width,
+ float height,
+ float depth,
+ DWORD numTexCoords,
+ LPD3DXSIMPLESHAPE* ppShape );
+
+//-------------------------------------------------------------------------
+// D3DXCreateCylinder: Creates a cylinder of given dimensions using the
+// ----------------- device. It returns a vertex buffer that
+// can be used for drawing or manipulation by the program
+// later on.
+//
+// Params:
+// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
+// [in] float baseRadius: Base-radius (default is 1.0f, shd be >= 0.0f)
+// [in] float topRadius: Top-radius (default is 1.0f, shd be >= 0.0f)
+// [in] float height: Height (default is 1.0f, shd be >= 0.0f)
+// [in] DWORD numSlices: Number of slices about the main axis.
+// (default is 8) D3DX_DEFAULT is a valid input.
+// [in] DWORD numStacks: Number of stacks along the main axis.
+// (default is 8) D3DX_DEFAULT is a valid input.
+// [in] DWORD numTexCoords: The number of texture coordinates desired
+// in the vertex-buffer. Default is 1.
+// D3DX_DEFAULT is a valid input here.
+// [out] LPD3DXSIMPLESHAPE* ppShape: The output shape interface.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCreateCylinder(LPDIRECT3DDEVICE7 pDevice,
+ float baseRadius,
+ float topRadius,
+ float height,
+ DWORD numSlices,
+ DWORD numStacks,
+ DWORD numTexCoords,
+ LPD3DXSIMPLESHAPE* ppShape );
+
+
+//-------------------------------------------------------------------------
+// D3DXCreateTorus: Creates a torus of given dimensions using the
+// -------------- device specified. It returns a vertex buffer that can
+// be used for drawing or manipulation by the program later
+// on. It draws a doughnut, centered at (0, 0, 0) whose axis
+// is aligned with the z-axis. With the innerRadius used
+// as the radius of the cross-section (minor-Radius) and
+// the outerRadius used as the radius of the central 'hole'.
+//
+// Params:
+// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
+// [in] float innerRadius: inner radius (default is 1.0f, shd be >= 0.0f)
+// [in] float outerRadius: outer radius (default is 2.0f, shd be >= 0.0f)
+// [in] DWORD numSides: Number of sides in the cross-section
+// (default is 8). D3DX_DEFAULT is a valid input.
+// [in] DWORD numRings: Number of rings making up the torus
+// (default is 8) D3DX_DEFAULT is a valid input.
+// [in] DWORD numTexCoords: The number of texture coordinates desired
+// in the vertex-buffer. Default is 1.
+// D3DX_DEFAULT is a valid input here.
+// [out] LPD3DXSIMPLESHAPE* ppShape: The output shape interface.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCreateTorus(LPDIRECT3DDEVICE7 pDevice,
+ float innerRadius,
+ float outerRadius,
+ DWORD numSides,
+ DWORD numRings,
+ DWORD numTexCoords,
+ LPD3DXSIMPLESHAPE* ppShape );
+
+//-------------------------------------------------------------------------
+// D3DXCreateTeapot: Creates a teapot using the device specified.
+// ---------------- It returns a vertex buffer that can be used for
+// drawing or manipulation by the program later on.
+//
+// Params:
+// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
+// [in] DWORD numTexCoords: The number of texture coordinates desired
+// in the vertex-buffer. Default is 1.
+// D3DX_DEFAULT is a valid input here.
+// [out] LPD3DXSIMPLESHAPE* ppShape: The output shape interface.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCreateTeapot(LPDIRECT3DDEVICE7 pDevice,
+ DWORD numTexCoords,
+ LPD3DXSIMPLESHAPE* ppShape);
+
+//-------------------------------------------------------------------------
+// D3DXCreateSphere: Creates a cylinder of given dimensions using the
+// ---------------- device specified.
+// It returns a vertex buffer that can be used for
+// drawing or manipulation by the program later on.
+//
+// Params:
+// [in] LPDIRECT3DDEVICE7 pDevice: The device to create off.
+// [in] float radius: radius (default is 1.0f, shd be >= 0.0f)
+// [in] float height: Height (default is 1.0f, shd be >= 0.0f)
+// [in] DWORD numSlices: Number of slices about the main axis
+// (default is 8) D3DX_DEFAULT is a valid input.
+// [in] DWORD numStacks: Number of stacks along the main axis
+// (default is 8) D3DX_DEFAULT is a valid input.
+// [in] DWORD numTexCoords: The number of texture coordinates desired
+// in the vertex-buffer. Default is 1.
+// D3DX_DEFAULT is a valid input here.
+// [out] LPD3DXSIMPLESHAPE* ppShape: The output shape interface.
+//-------------------------------------------------------------------------
+HRESULT WINAPI
+ D3DXCreateSphere(LPDIRECT3DDEVICE7 pDevice,
+ float radius,
+ DWORD numSlices,
+ DWORD numStacks,
+ DWORD numTexCoords,
+ LPD3DXSIMPLESHAPE* ppShape);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+#endif //__D3DXSHAPES_H__
diff --git a/src/dep/include/DXSDK/include/d3dxsprite.h b/src/dep/include/DXSDK/include/d3dxsprite.h
new file mode 100644
index 0000000..2e08d30
--- /dev/null
+++ b/src/dep/include/DXSDK/include/d3dxsprite.h
@@ -0,0 +1,321 @@
+///////////////////////////////////////////////////////////////////////////
+//
+// Copyright (C) Microsoft Corporation. All Rights Reserved.
+//
+// File: d3dxsprite.h
+// Content: D3DX sprite helper functions
+//
+// These functions allow you to use sprites with D3DX. A "sprite" is
+// loosely defined as a 2D image that you want to transfer to the
+// rendering target. The source image can be a texture created
+// with the help of the D3DX texture loader; though advanced users may
+// want to create their own. A helper function (PrepareDeviceForSprite)
+// is provided to make it easy to set up render states on a device.
+// (Again, advanced users can use their own created devices.)
+//
+// There are two general techniques for sprites; the simpler one just
+// specifies a destination rectangle and a rotation anlge. A more
+// powerful technique supports rendering to non-rectangular quads.
+//
+// Both techniques support clipping, alpha, and rotation. More
+// details are below.
+//
+///////////////////////////////////////////////////////////////////////////
+
+#ifndef __D3DXSPRITE_H__
+#define __D3DXSPRITE_H__
+
+#include
+#include
+#include "d3dxerr.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+//-------------------------------------------------------------------------
+// D3DXPrepareDeviceForSprite:
+//
+// Call this function to set up all the render states necessary for
+// BltSprite/WarpSprite to work correctly. (Advanced users may opt to
+// not call this function first; in which case Blt/WarpSprite functions
+// will use whatever render/texture states were set up on the device when
+// they are called.)
+//
+// Warning: This function modifies render states and may impact performance
+// negatively on some 3D hardware if it is called too often per frame.
+//
+// Warning: If the render state changes (other than through calls to
+// BltSprite or WarpSprite), you will need to call this function again before
+// calling BltSprite or WarpSprite.
+//
+// Details: This function modifies the the rendering first texture stage and
+// it modifies some renderstates for the entire device. Here is the exact
+// list:
+//
+// SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
+// SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
+// SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
+// SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
+// SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
+// SetTextureStageState(0, D3DTSS_MINFILTER, D3DTFN_LINEAR);
+// SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTFG_LINEAR);
+//
+// SetRenderState(D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA);
+// SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_INVSRCALPHA);
+// SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, TRUE);
+//
+// Depending on the value of ZEnable parameter, this function will
+// will either call
+// SetRenderState(D3DRENDERSTATE_ZENABLE, FALSE);
+// - or -
+// SetRenderState(D3DRENDERSTATE_ZENABLE, TRUE);
+//
+// Parameters:
+// pd3dDevice - a pointer to the d3d device that you wish to prepare
+// for use with D3DX Sprite Services
+// ZEnable - a flag indicating whether you want the sprites to
+// check and update the Z buffer as part of rendering.
+// If ZEnable is FALSE, OR you are using
+// alpha-blending, then it is necessary to render your
+// sprites from back-to-front.
+//
+//-------------------------------------------------------------------------
+
+#ifdef __cplusplus
+HRESULT WINAPI
+ D3DXPrepareDeviceForSprite( LPDIRECT3DDEVICE7 pd3dDevice,
+ BOOL ZEnable = FALSE);
+#else
+HRESULT WINAPI
+ D3DXPrepareDeviceForSprite( LPDIRECT3DDEVICE7 pd3dDevice,
+ BOOL ZEnable);
+#endif
+
+
+
+//-------------------------------------------------------------------------
+// The D3DXDrawBasicSprite() function performs blitting of source images onto
+// a 3D rendering device. This function only calls SetTexture on the first
+// renderstage with the parameter (pd3dTexture) if that parameter is non-null.
+// This function assumes that D3DXPrepareDeviceForSprite has been called on
+// the device or that caller has in some other way correctly prepared the
+// renderstates.
+//
+// This function supports scaling, rotations, alpha-blending, and choosing
+// a source sub-rect.
+//
+// Rotation angle is specified in radians. Both rotations and scales
+// are applied around the center of the sprite; where the center of the
+// sprite is half the width/height of the sprite, plus the offset parameter.
+//
+// Use the offset parameter if you want the sprite's center to be something
+// other than the image center.
+//
+// The destination point indicates where you would like the center of
+// the sprite to draw to.
+//
+// Parameters:
+// pd3dTexture - a pointer to the surface containing the texture
+// pd3dDevice - a pointer to the d3d device to render to. It is
+// assumed that render states are set up. (See
+// D3DXPrepareDeviceForSprite)
+// ppointDest - a pointer to the target point for the sprite. The
+// components of the vector must be in screen
+// space.
+// alpha - alpha value to apply to sprite. 1.0 means totally
+// opaque; and 0.0 means totally transparent.
+// WARNING: If you are using alpha, then you should render
+// from back to front in order to avoid rendering
+// artifacts.
+// angleRad - angle of rotation around the 'center' of the rect
+// scale - a uniform scale that is applied to the source rect
+// to specify the size of the image that is rendered
+// pOffset - offset from the center of the source rect to use as the
+// center of rotation
+// pSourceRect - a rect that indicates what portion of the source
+// source texture to use. If NULL is passed, then the
+// entire source is used. If the source texture was
+// created via D3DX, then the rect should be specified
+// in the coordinates of the original image (so that you
+// don't have to worry about stretching/scaling that D3DX
+// may have done to make the image work with your current
+// 3D Device.) Note that horizontal or vertical mirroring
+// may be simply accomplished by swapping the left/right
+// or top/bottom fields of this RECT.
+//-------------------------------------------------------------------------
+
+#ifdef __cplusplus
+HRESULT WINAPI
+ D3DXDrawSpriteSimple(LPDIRECTDRAWSURFACE7 pd3dTexture,
+ LPDIRECT3DDEVICE7 pd3dDevice,
+ const D3DXVECTOR3 *ppointDest,
+ float alpha = 1.0f,
+ float scale = 1.0f,
+ float angleRad = 0.0f,
+ const D3DXVECTOR2 *pOffset = NULL,
+ const RECT *pSourceRect = NULL);
+#else
+HRESULT WINAPI
+ D3DXDrawSpriteSimple(LPDIRECTDRAWSURFACE7 pd3dTexture,
+ LPDIRECT3DDEVICE7 pd3dDevice,
+ D3DXVECTOR3 *ppointDest,
+ float alpha,
+ float scale,
+ float angleRad,
+ D3DXVECTOR2 *pOffset,
+ RECT *pSourceRect);
+#endif
+
+//-------------------------------------------------------------------------
+// The D3DXDrawSprite() function transforms source images onto a 3D
+// rendering device. It takes a general 4x4 matrix which is use to transform
+// the points of a default rect: (left=-.5, top=-.5, right=+.5, bottom=+.5).
+// (This default rect was chosen so that it was centered around the origin
+// to ease setting up rotations. And it was chosen to have a width/height of one
+// to ease setting up scales.)
+//
+// This function only calls SetTexture on the first
+// renderstage with the parameter (pd3dTexture) if that parameter is non-null.
+// This function assumes that D3DXPrepareDeviceForSprite has been called on
+// the device or that caller has in some other way correctly prepared the
+// renderstates.
+//
+// This function supports alpha-blending, and choosing
+// a source sub-rect. (A value of NULL for source sub-rect means the entire
+// texture is used.)
+//
+// Note that if the transformed points have a value for w (the homogenous
+// coordinate) that is not 1, then this function will invert it and pass
+// that value to D3D as the rhw field of a TLVERTEX. If the value for w is
+// zero, then it use 1 as the rhw.
+//
+// Parameters:
+// pd3dTexture - a pointer to the surface containing the texture
+// pd3dDevice - a pointer to the d3d device to render to. It is
+// assumed that render states are set up. (See
+// D3DXPrepareDeviceForSprite)
+// pMatrixTransform - 4x4 matrix that specifies the transformation
+// that will be applied to the default -.5 to +.5
+// rectangle.
+// alpha - alpha value to apply to sprite. 1.0 means totally
+// opaque; and 0.0 means totally transparent.
+// WARNING: If you are using alpha, then you should render
+// from back to front in order to avoid rendering
+// artifacts.Furthermore, you should avoid scenarios where
+// semi-transparent objects intersect.
+// pSourceRect - a rect that indicates what portion of the source
+// source texture to use. If NULL is passed, then the
+// entire source is used. If the source texture was
+// created via D3DX, then the rect should be specified
+// in the coordinates of the original image (so that you
+// don't have to worry about stretching/scaling that D3DX
+// may have done to make the image work with your current
+// 3D Device.) Note that mirroring may be simply accomplished
+// by swapping the left/right or top/bottom fields of
+// this RECT.
+//
+//-------------------------------------------------------------------------
+
+#ifdef __cplusplus
+HRESULT WINAPI
+ D3DXDrawSpriteTransform(LPDIRECTDRAWSURFACE7 pd3dTexture,
+ LPDIRECT3DDEVICE7 pd3dDevice,
+ const D3DXMATRIX *pMatrixTransform,
+ float alpha = 1.0f,
+ const RECT *pSourceRect = NULL);
+#else
+HRESULT WINAPI
+ D3DXDrawSpriteTransform(LPDIRECTDRAWSURFACE7 pd3dTexture,
+ LPDIRECT3DDEVICE7 pd3dDevice,
+ D3DXMATRIX *pMatrixTransform,
+ float alpha,
+ RECT *pSourceRect);
+#endif
+
+//-------------------------------------------------------------------------
+// The D3DXBuildSpriteTransform() function is a helper provided which
+// creates a matrix corresponding to simple properties. This matrix is
+// set up to pass directly to D3DXTransformSprite.
+//
+// Parameters:
+// pMatrix - a pointer to the result matrix
+// prectDest - a pointer to the target rectangle for the sprite
+// angleRad - angle of rotation around the 'center' of the rect
+// pOffset - offset from the center of the source rect to use as the
+// center of rotation
+//
+//-------------------------------------------------------------------------
+
+#ifdef __cplusplus
+void WINAPI
+ D3DXBuildSpriteTransform(D3DXMATRIX *pMatrix,
+ const RECT *prectDest,
+ float angleRad = 0.0f,
+ const D3DXVECTOR2 *pOffset = NULL);
+#else
+void WINAPI
+ D3DXBuildSpriteTransform(D3DXMATRIX *pMatrix,
+ RECT *prectDest,
+ float angleRad,
+ D3DXVECTOR2 *pOffset);
+#endif
+
+
+//-------------------------------------------------------------------------
+// The D3DXDrawSprite3D() function renders a texture onto a 3D quad. The
+// quad ABCD is broken into two triangles ABC and ACD which are rendered
+// via DrawPrim.
+//
+// Parameters:
+// pd3dTexture - a pointer to the surface containing the texture
+// pd3dDevice - a pointer to the d3d device to render to. It is
+// assumed that render states are set up. (See
+// D3DXPrepareDeviceForSprite)
+// quad - array of 4 points in the following order:
+// upper-left, upper-right, lower-right, lower-left.
+// If these vectors contain a W, then this function
+// will take the reciprocal of that value to pass as
+// as the rhw (i.e. reciprocal homogenous w).
+// alpha - alpha value to apply to sprite. 1.0 means totally
+// opaque; and 0.0 means totally transparent.
+// WARNING: If you are using alpha, then you should render
+// from back to front in order to avoid rendering
+// artifacts.Furthermore, you should avoid scenarios where
+// semi-transparent objects intersect.
+// pSourceRect - a rect that indicates what portion of the source
+// source texture to use. If NULL is passed, then the
+// entire source is used. If the source texture was
+// created via D3DX, then the rect should be specified
+// in the coordinates of the original image (so that you
+// don't have to worry about stretching/scaling that D3DX
+// may have done to make the image work with your current
+// 3D Device.) Note that mirroring may be simply accomplished
+// by swapping the left/right or top/bottom fields of
+// this RECT.
+//-------------------------------------------------------------------------
+
+#ifdef __cplusplus
+HRESULT WINAPI
+ D3DXDrawSprite3D(LPDIRECTDRAWSURFACE7 pd3dTexture,
+ LPDIRECT3DDEVICE7 pd3dDevice,
+ const D3DXVECTOR4 quad[4],
+ float alpha = 1.0f,
+ const RECT *pSourceRect = NULL);
+#else
+HRESULT WINAPI
+ D3DXDrawSprite3D(LPDIRECTDRAWSURFACE7 pd3dTexture,
+ LPDIRECT3DDEVICE7 pd3dDevice,
+ D3DXVECTOR4 quad[4],
+ float alpha,
+ RECT *pSourceRect);
+#endif
+
+
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif // __D3DXSPRITE_H__
diff --git a/src/dep/include/DXSDK/include/ddraw.h b/src/dep/include/DXSDK/include/ddraw.h
new file mode 100644
index 0000000..0f204f8
--- /dev/null
+++ b/src/dep/include/DXSDK/include/ddraw.h
@@ -0,0 +1,5792 @@
+/*==========================================================================;
+ *
+ * Copyright (C) Microsoft Corporation. All Rights Reserved.
+ *
+ * File: ddraw.h
+ * Content: DirectDraw include file
+ *
+ ***************************************************************************/
+
+#ifndef __DDRAW_INCLUDED__
+#define __DDRAW_INCLUDED__
+
+//Disable the nameless union warning when building internally
+#undef ENABLE_NAMELESS_UNION_PRAGMA
+#ifdef DIRECTX_REDIST
+#define ENABLE_NAMELESS_UNION_PRAGMA
+#endif
+
+#ifdef ENABLE_NAMELESS_UNION_PRAGMA
+#pragma warning(disable:4201)
+#endif
+
+/*
+ * If you wish an application built against the newest version of DirectDraw
+ * to run against an older DirectDraw run time then define DIRECTDRAW_VERSION
+ * to be the earlies version of DirectDraw you wish to run against. For,
+ * example if you wish an application to run against a DX 3 runtime define
+ * DIRECTDRAW_VERSION to be 0x0300.
+ */
+#ifndef DIRECTDRAW_VERSION
+#define DIRECTDRAW_VERSION 0x0700
+#endif /* DIRECTDRAW_VERSION */
+
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#define COM_NO_WINDOWS_H
+#include
+#else
+#define IUnknown void
+#if !defined( NT_BUILD_ENVIRONMENT ) && !defined(WINNT)
+ #define CO_E_NOTINITIALIZED 0x800401F0L
+#endif
+#endif
+
+#define _FACDD 0x876
+#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// For compilers that don't support nameless unions, do a
+//
+// #define NONAMELESSUNION
+//
+// before #include
+//
+#ifndef DUMMYUNIONNAMEN
+#if defined(__cplusplus) || !defined(NONAMELESSUNION)
+#define DUMMYUNIONNAMEN(n)
+#else
+#define DUMMYUNIONNAMEN(n) u##n
+#endif
+#endif
+
+#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)
+
+/*
+ * FOURCC codes for DX compressed-texture pixel formats
+ */
+#define FOURCC_DXT1 (MAKEFOURCC('D','X','T','1'))
+#define FOURCC_DXT2 (MAKEFOURCC('D','X','T','2'))
+#define FOURCC_DXT3 (MAKEFOURCC('D','X','T','3'))
+#define FOURCC_DXT4 (MAKEFOURCC('D','X','T','4'))
+#define FOURCC_DXT5 (MAKEFOURCC('D','X','T','5'))
+
+/*
+ * GUIDS used by DirectDraw objects
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+
+DEFINE_GUID( CLSID_DirectDraw, 0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35 );
+DEFINE_GUID( CLSID_DirectDraw7, 0x3c305196,0x50db,0x11d3,0x9c,0xfe,0x00,0xc0,0x4f,0xd9,0x30,0xc5 );
+DEFINE_GUID( CLSID_DirectDrawClipper, 0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56 );
+DEFINE_GUID( IID_IDirectDraw, 0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDraw2, 0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 );
+DEFINE_GUID( IID_IDirectDraw4, 0x9c59509a,0x39bd,0x11d1,0x8c,0x4a,0x00,0xc0,0x4f,0xd9,0x30,0xc5 );
+DEFINE_GUID( IID_IDirectDraw7, 0x15e65ec0,0x3b9c,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b );
+DEFINE_GUID( IID_IDirectDrawSurface, 0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDrawSurface2, 0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27 );
+DEFINE_GUID( IID_IDirectDrawSurface3, 0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB );
+DEFINE_GUID( IID_IDirectDrawSurface4, 0x0B2B8630,0xAD35,0x11D0,0x8E,0xA6,0x00,0x60,0x97,0x97,0xEA,0x5B );
+DEFINE_GUID( IID_IDirectDrawSurface7, 0x06675a80,0x3b9b,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b );
+DEFINE_GUID( IID_IDirectDrawPalette, 0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDrawClipper, 0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDrawColorControl, 0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 );
+DEFINE_GUID( IID_IDirectDrawGammaControl, 0x69C11C3E,0xB46B,0x11D1,0xAD,0x7A,0x00,0xC0,0x4F,0xC2,0x9B,0x4E );
+
+#endif
+
+/*============================================================================
+ *
+ * DirectDraw Structures
+ *
+ * Various structures used to invoke DirectDraw.
+ *
+ *==========================================================================*/
+
+struct IDirectDraw;
+struct IDirectDrawSurface;
+struct IDirectDrawPalette;
+struct IDirectDrawClipper;
+
+typedef struct IDirectDraw FAR *LPDIRECTDRAW;
+typedef struct IDirectDraw2 FAR *LPDIRECTDRAW2;
+typedef struct IDirectDraw4 FAR *LPDIRECTDRAW4;
+typedef struct IDirectDraw7 FAR *LPDIRECTDRAW7;
+typedef struct IDirectDrawSurface FAR *LPDIRECTDRAWSURFACE;
+typedef struct IDirectDrawSurface2 FAR *LPDIRECTDRAWSURFACE2;
+typedef struct IDirectDrawSurface3 FAR *LPDIRECTDRAWSURFACE3;
+typedef struct IDirectDrawSurface4 FAR *LPDIRECTDRAWSURFACE4;
+typedef struct IDirectDrawSurface7 FAR *LPDIRECTDRAWSURFACE7;
+typedef struct IDirectDrawPalette FAR *LPDIRECTDRAWPALETTE;
+typedef struct IDirectDrawClipper FAR *LPDIRECTDRAWCLIPPER;
+typedef struct IDirectDrawColorControl FAR *LPDIRECTDRAWCOLORCONTROL;
+typedef struct IDirectDrawGammaControl FAR *LPDIRECTDRAWGAMMACONTROL;
+
+typedef struct _DDFXROP FAR *LPDDFXROP;
+typedef struct _DDSURFACEDESC FAR *LPDDSURFACEDESC;
+typedef struct _DDSURFACEDESC2 FAR *LPDDSURFACEDESC2;
+typedef struct _DDCOLORCONTROL FAR *LPDDCOLORCONTROL;
+
+/*
+ * API's
+ */
+#if (defined (WIN32) || defined( _WIN32 ) ) && !defined( _NO_COM )
+//#if defined( _WIN32 ) && !defined( _NO_ENUM )
+ typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKA)(GUID FAR *, LPSTR, LPSTR, LPVOID);
+ typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID);
+ extern HRESULT WINAPI DirectDrawEnumerateW( LPDDENUMCALLBACKW lpCallback, LPVOID lpContext );
+ extern HRESULT WINAPI DirectDrawEnumerateA( LPDDENUMCALLBACKA lpCallback, LPVOID lpContext );
+ /*
+ * Protect against old SDKs
+ */
+ #if !defined(HMONITOR_DECLARED) && (WINVER < 0x0500)
+ #define HMONITOR_DECLARED
+ DECLARE_HANDLE(HMONITOR);
+ #endif
+ typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXA)(GUID FAR *, LPSTR, LPSTR, LPVOID, HMONITOR);
+ typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXW)(GUID FAR *, LPWSTR, LPWSTR, LPVOID, HMONITOR);
+ extern HRESULT WINAPI DirectDrawEnumerateExW( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
+ extern HRESULT WINAPI DirectDrawEnumerateExA( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
+ typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)( LPDDENUMCALLBACKEXA lpCallback, LPVOID lpContext, DWORD dwFlags);
+ typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXW)( LPDDENUMCALLBACKEXW lpCallback, LPVOID lpContext, DWORD dwFlags);
+
+ #ifdef UNICODE
+ typedef LPDDENUMCALLBACKW LPDDENUMCALLBACK;
+ #define DirectDrawEnumerate DirectDrawEnumerateW
+ typedef LPDDENUMCALLBACKEXW LPDDENUMCALLBACKEX;
+ typedef LPDIRECTDRAWENUMERATEEXW LPDIRECTDRAWENUMERATEEX;
+ #define DirectDrawEnumerateEx DirectDrawEnumerateExW
+ #else
+ typedef LPDDENUMCALLBACKA LPDDENUMCALLBACK;
+ #define DirectDrawEnumerate DirectDrawEnumerateA
+ typedef LPDDENUMCALLBACKEXA LPDDENUMCALLBACKEX;
+ typedef LPDIRECTDRAWENUMERATEEXA LPDIRECTDRAWENUMERATEEX;
+ #define DirectDrawEnumerateEx DirectDrawEnumerateExA
+ #endif
+ extern HRESULT WINAPI DirectDrawCreate( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter );
+ extern HRESULT WINAPI DirectDrawCreateEx( GUID FAR * lpGuid, LPVOID *lplpDD, REFIID iid,IUnknown FAR *pUnkOuter );
+ extern HRESULT WINAPI DirectDrawCreateClipper( DWORD dwFlags, LPDIRECTDRAWCLIPPER FAR *lplpDDClipper, IUnknown FAR *pUnkOuter );
+#endif
+/*
+ * Flags for DirectDrawEnumerateEx
+ * DirectDrawEnumerateEx supercedes DirectDrawEnumerate. You must use GetProcAddress to
+ * obtain a function pointer (of type LPDIRECTDRAWENUMERATEEX) to DirectDrawEnumerateEx.
+ * By default, only the primary display device is enumerated.
+ * DirectDrawEnumerate is equivalent to DirectDrawEnumerate(,,DDENUM_NONDISPLAYDEVICES)
+ */
+
+/*
+ * This flag causes enumeration of any GDI display devices which are part of
+ * the Windows Desktop
+ */
+#define DDENUM_ATTACHEDSECONDARYDEVICES 0x00000001L
+
+/*
+ * This flag causes enumeration of any GDI display devices which are not
+ * part of the Windows Desktop
+ */
+#define DDENUM_DETACHEDSECONDARYDEVICES 0x00000002L
+
+/*
+ * This flag causes enumeration of non-display devices
+ */
+#define DDENUM_NONDISPLAYDEVICES 0x00000004L
+
+
+#define REGSTR_KEY_DDHW_DESCRIPTION "Description"
+#define REGSTR_KEY_DDHW_DRIVERNAME "DriverName"
+#define REGSTR_PATH_DDHW "Hardware\\DirectDrawDrivers"
+
+#define DDCREATE_HARDWAREONLY 0x00000001l
+#define DDCREATE_EMULATIONONLY 0x00000002l
+
+#if defined(WINNT) || !defined(WIN32)
+typedef long HRESULT;
+#endif
+
+//#ifndef WINNT
+typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID);
+typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK2)(LPDDSURFACEDESC2, LPVOID);
+typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID);
+typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK2)(LPDIRECTDRAWSURFACE4, LPDDSURFACEDESC2, LPVOID);
+typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK7)(LPDIRECTDRAWSURFACE7, LPDDSURFACEDESC2, LPVOID);
+//#endif
+
+/*
+ * Generic pixel format with 8-bit RGB and alpha components
+ */
+typedef struct _DDARGB
+{
+ BYTE blue;
+ BYTE green;
+ BYTE red;
+ BYTE alpha;
+} DDARGB;
+
+typedef DDARGB FAR *LPDDARGB;
+
+/*
+ * This version of the structure remains for backwards source compatibility.
+ * The DDARGB structure is the one that should be used for all DirectDraw APIs.
+ */
+typedef struct _DDRGBA
+{
+ BYTE red;
+ BYTE green;
+ BYTE blue;
+ BYTE alpha;
+} DDRGBA;
+
+typedef DDRGBA FAR *LPDDRGBA;
+
+
+/*
+ * DDCOLORKEY
+ */
+typedef struct _DDCOLORKEY
+{
+ DWORD dwColorSpaceLowValue; // low boundary of color space that is to
+ // be treated as Color Key, inclusive
+ DWORD dwColorSpaceHighValue; // high boundary of color space that is
+ // to be treated as Color Key, inclusive
+} DDCOLORKEY;
+
+typedef DDCOLORKEY FAR* LPDDCOLORKEY;
+
+/*
+ * DDBLTFX
+ * Used to pass override information to the DIRECTDRAWSURFACE callback Blt.
+ */
+typedef struct _DDBLTFX
+{
+ DWORD dwSize; // size of structure
+ DWORD dwDDFX; // FX operations
+ DWORD dwROP; // Win32 raster operations
+ DWORD dwDDROP; // Raster operations new for DirectDraw
+ DWORD dwRotationAngle; // Rotation angle for blt
+ DWORD dwZBufferOpCode; // ZBuffer compares
+ DWORD dwZBufferLow; // Low limit of Z buffer
+ DWORD dwZBufferHigh; // High limit of Z buffer
+ DWORD dwZBufferBaseDest; // Destination base value
+ DWORD dwZDestConstBitDepth; // Bit depth used to specify Z constant for destination
+ union
+ {
+ DWORD dwZDestConst; // Constant to use as Z buffer for dest
+ LPDIRECTDRAWSURFACE lpDDSZBufferDest; // Surface to use as Z buffer for dest
+ } DUMMYUNIONNAMEN(1);
+ DWORD dwZSrcConstBitDepth; // Bit depth used to specify Z constant for source
+ union
+ {
+ DWORD dwZSrcConst; // Constant to use as Z buffer for src
+ LPDIRECTDRAWSURFACE lpDDSZBufferSrc; // Surface to use as Z buffer for src
+ } DUMMYUNIONNAMEN(2);
+ DWORD dwAlphaEdgeBlendBitDepth; // Bit depth used to specify constant for alpha edge blend
+ DWORD dwAlphaEdgeBlend; // Alpha for edge blending
+ DWORD dwReserved;
+ DWORD dwAlphaDestConstBitDepth; // Bit depth used to specify alpha constant for destination
+ union
+ {
+ DWORD dwAlphaDestConst; // Constant to use as Alpha Channel
+ LPDIRECTDRAWSURFACE lpDDSAlphaDest; // Surface to use as Alpha Channel
+ } DUMMYUNIONNAMEN(3);
+ DWORD dwAlphaSrcConstBitDepth; // Bit depth used to specify alpha constant for source
+ union
+ {
+ DWORD dwAlphaSrcConst; // Constant to use as Alpha Channel
+ LPDIRECTDRAWSURFACE lpDDSAlphaSrc; // Surface to use as Alpha Channel
+ } DUMMYUNIONNAMEN(4);
+ union
+ {
+ DWORD dwFillColor; // color in RGB or Palettized
+ DWORD dwFillDepth; // depth value for z-buffer
+ DWORD dwFillPixel; // pixel value for RGBA or RGBZ
+ LPDIRECTDRAWSURFACE lpDDSPattern; // Surface to use as pattern
+ } DUMMYUNIONNAMEN(5);
+ DDCOLORKEY ddckDestColorkey; // DestColorkey override
+ DDCOLORKEY ddckSrcColorkey; // SrcColorkey override
+} DDBLTFX;
+
+typedef DDBLTFX FAR* LPDDBLTFX;
+
+
+
+/*
+ * DDSCAPS
+ */
+typedef struct _DDSCAPS
+{
+ DWORD dwCaps; // capabilities of surface wanted
+} DDSCAPS;
+
+typedef DDSCAPS FAR* LPDDSCAPS;
+
+
+/*
+ * DDOSCAPS
+ */
+typedef struct _DDOSCAPS
+{
+ DWORD dwCaps; // capabilities of surface wanted
+} DDOSCAPS;
+
+typedef DDOSCAPS FAR* LPDDOSCAPS;
+
+/*
+ * This structure is used internally by DirectDraw.
+ */
+typedef struct _DDSCAPSEX
+{
+ DWORD dwCaps2;
+ DWORD dwCaps3;
+ union
+ {
+ DWORD dwCaps4;
+ DWORD dwVolumeDepth;
+ } DUMMYUNIONNAMEN(1);
+} DDSCAPSEX, FAR * LPDDSCAPSEX;
+
+/*
+ * DDSCAPS2
+ */
+typedef struct _DDSCAPS2
+{
+ DWORD dwCaps; // capabilities of surface wanted
+ DWORD dwCaps2;
+ DWORD dwCaps3;
+ union
+ {
+ DWORD dwCaps4;
+ DWORD dwVolumeDepth;
+ } DUMMYUNIONNAMEN(1);
+} DDSCAPS2;
+
+typedef DDSCAPS2 FAR* LPDDSCAPS2;
+
+/*
+ * DDCAPS
+ */
+#define DD_ROP_SPACE (256/32) // space required to store ROP array
+/*
+ * NOTE: Our choosen structure number scheme is to append a single digit to
+ * the end of the structure giving the version that structure is associated
+ * with.
+ */
+
+/*
+ * This structure represents the DDCAPS structure released in DirectDraw 1.0. It is used internally
+ * by DirectDraw to interpret caps passed into ddraw by drivers written prior to the release of DirectDraw 2.0.
+ * New applications should use the DDCAPS structure defined below.
+ */
+typedef struct _DDCAPS_DX1
+{
+ DWORD dwSize; // size of the DDDRIVERCAPS structure
+ DWORD dwCaps; // driver specific capabilities
+ DWORD dwCaps2; // more driver specific capabilites
+ DWORD dwCKeyCaps; // color key capabilities of the surface
+ DWORD dwFXCaps; // driver specific stretching and effects capabilites
+ DWORD dwFXAlphaCaps; // alpha driver specific capabilities
+ DWORD dwPalCaps; // palette capabilities
+ DWORD dwSVCaps; // stereo vision capabilities
+ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8
+ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8
+ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8
+ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8
+ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8
+ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
+ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32
+ DWORD dwVidMemTotal; // total amount of video memory
+ DWORD dwVidMemFree; // amount of free video memory
+ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays
+ DWORD dwCurrVisibleOverlays; // current number of visible overlays
+ DWORD dwNumFourCCCodes; // number of four cc codes
+ DWORD dwAlignBoundarySrc; // source rectangle alignment
+ DWORD dwAlignSizeSrc; // source rectangle byte size
+ DWORD dwAlignBoundaryDest; // dest rectangle alignment
+ DWORD dwAlignSizeDest; // dest rectangle byte size
+ DWORD dwAlignStrideAlign; // stride alignment
+ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported
+ DDSCAPS ddsCaps; // DDSCAPS structure has all the general capabilities
+ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMinLiveVideoStretch; // OBSOLETE! This field remains for compatability reasons only
+ DWORD dwMaxLiveVideoStretch; // OBSOLETE! This field remains for compatability reasons only
+ DWORD dwMinHwCodecStretch; // OBSOLETE! This field remains for compatability reasons only
+ DWORD dwMaxHwCodecStretch; // OBSOLETE! This field remains for compatability reasons only
+ DWORD dwReserved1; // reserved
+ DWORD dwReserved2; // reserved
+ DWORD dwReserved3; // reserved
+} DDCAPS_DX1;
+
+typedef DDCAPS_DX1 FAR* LPDDCAPS_DX1;
+
+/*
+ * This structure is the DDCAPS structure as it was in version 2 and 3 of Direct X.
+ * It is present for back compatability.
+ */
+typedef struct _DDCAPS_DX3
+{
+ DWORD dwSize; // size of the DDDRIVERCAPS structure
+ DWORD dwCaps; // driver specific capabilities
+ DWORD dwCaps2; // more driver specific capabilites
+ DWORD dwCKeyCaps; // color key capabilities of the surface
+ DWORD dwFXCaps; // driver specific stretching and effects capabilites
+ DWORD dwFXAlphaCaps; // alpha driver specific capabilities
+ DWORD dwPalCaps; // palette capabilities
+ DWORD dwSVCaps; // stereo vision capabilities
+ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8
+ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8
+ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8
+ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8
+ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8
+ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
+ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32
+ DWORD dwVidMemTotal; // total amount of video memory
+ DWORD dwVidMemFree; // amount of free video memory
+ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays
+ DWORD dwCurrVisibleOverlays; // current number of visible overlays
+ DWORD dwNumFourCCCodes; // number of four cc codes
+ DWORD dwAlignBoundarySrc; // source rectangle alignment
+ DWORD dwAlignSizeSrc; // source rectangle byte size
+ DWORD dwAlignBoundaryDest; // dest rectangle alignment
+ DWORD dwAlignSizeDest; // dest rectangle byte size
+ DWORD dwAlignStrideAlign; // stride alignment
+ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported
+ DDSCAPS ddsCaps; // DDSCAPS structure has all the general capabilities
+ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+ DWORD dwReserved1; // reserved
+ DWORD dwReserved2; // reserved
+ DWORD dwReserved3; // reserved
+ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts
+ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts
+ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts
+ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
+ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts
+ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts
+ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts
+ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
+ DWORD dwSSBCaps; // driver specific capabilities for System->System blts
+ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts
+ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts
+ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
+ DWORD dwReserved4; // reserved
+ DWORD dwReserved5; // reserved
+ DWORD dwReserved6; // reserved
+} DDCAPS_DX3;
+typedef DDCAPS_DX3 FAR* LPDDCAPS_DX3;
+
+/*
+ * This structure is the DDCAPS structure as it was in version 5 of Direct X.
+ * It is present for back compatability.
+ */
+typedef struct _DDCAPS_DX5
+{
+/* 0*/ DWORD dwSize; // size of the DDDRIVERCAPS structure
+/* 4*/ DWORD dwCaps; // driver specific capabilities
+/* 8*/ DWORD dwCaps2; // more driver specific capabilites
+/* c*/ DWORD dwCKeyCaps; // color key capabilities of the surface
+/* 10*/ DWORD dwFXCaps; // driver specific stretching and effects capabilites
+/* 14*/ DWORD dwFXAlphaCaps; // alpha driver specific capabilities
+/* 18*/ DWORD dwPalCaps; // palette capabilities
+/* 1c*/ DWORD dwSVCaps; // stereo vision capabilities
+/* 20*/ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8
+/* 24*/ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8
+/* 28*/ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8
+/* 2c*/ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8
+/* 30*/ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8
+/* 34*/ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
+/* 38*/ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32
+/* 3c*/ DWORD dwVidMemTotal; // total amount of video memory
+/* 40*/ DWORD dwVidMemFree; // amount of free video memory
+/* 44*/ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays
+/* 48*/ DWORD dwCurrVisibleOverlays; // current number of visible overlays
+/* 4c*/ DWORD dwNumFourCCCodes; // number of four cc codes
+/* 50*/ DWORD dwAlignBoundarySrc; // source rectangle alignment
+/* 54*/ DWORD dwAlignSizeSrc; // source rectangle byte size
+/* 58*/ DWORD dwAlignBoundaryDest; // dest rectangle alignment
+/* 5c*/ DWORD dwAlignSizeDest; // dest rectangle byte size
+/* 60*/ DWORD dwAlignStrideAlign; // stride alignment
+/* 64*/ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported
+/* 84*/ DDSCAPS ddsCaps; // DDSCAPS structure has all the general capabilities
+/* 88*/ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 8c*/ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 90*/ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 94*/ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 98*/ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 9c*/ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* a0*/ DWORD dwReserved1; // reserved
+/* a4*/ DWORD dwReserved2; // reserved
+/* a8*/ DWORD dwReserved3; // reserved
+/* ac*/ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts
+/* b0*/ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts
+/* b4*/ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts
+/* b8*/ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
+/* d8*/ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts
+/* dc*/ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts
+/* e0*/ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts
+/* e4*/ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
+/*104*/ DWORD dwSSBCaps; // driver specific capabilities for System->System blts
+/*108*/ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts
+/*10c*/ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts
+/*110*/ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
+// Members added for DX5:
+/*130*/ DWORD dwMaxVideoPorts; // maximum number of usable video ports
+/*134*/ DWORD dwCurrVideoPorts; // current number of video ports used
+/*138*/ DWORD dwSVBCaps2; // more driver specific capabilities for System->Vmem blts
+/*13c*/ DWORD dwNLVBCaps; // driver specific capabilities for non-local->local vidmem blts
+/*140*/ DWORD dwNLVBCaps2; // more driver specific capabilities non-local->local vidmem blts
+/*144*/ DWORD dwNLVBCKeyCaps; // driver color key capabilities for non-local->local vidmem blts
+/*148*/ DWORD dwNLVBFXCaps; // driver FX capabilities for non-local->local blts
+/*14c*/ DWORD dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts
+} DDCAPS_DX5;
+typedef DDCAPS_DX5 FAR* LPDDCAPS_DX5;
+
+typedef struct _DDCAPS_DX6
+{
+/* 0*/ DWORD dwSize; // size of the DDDRIVERCAPS structure
+/* 4*/ DWORD dwCaps; // driver specific capabilities
+/* 8*/ DWORD dwCaps2; // more driver specific capabilites
+/* c*/ DWORD dwCKeyCaps; // color key capabilities of the surface
+/* 10*/ DWORD dwFXCaps; // driver specific stretching and effects capabilites
+/* 14*/ DWORD dwFXAlphaCaps; // alpha caps
+/* 18*/ DWORD dwPalCaps; // palette capabilities
+/* 1c*/ DWORD dwSVCaps; // stereo vision capabilities
+/* 20*/ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8
+/* 24*/ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8
+/* 28*/ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8
+/* 2c*/ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8
+/* 30*/ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8
+/* 34*/ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
+/* 38*/ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32
+/* 3c*/ DWORD dwVidMemTotal; // total amount of video memory
+/* 40*/ DWORD dwVidMemFree; // amount of free video memory
+/* 44*/ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays
+/* 48*/ DWORD dwCurrVisibleOverlays; // current number of visible overlays
+/* 4c*/ DWORD dwNumFourCCCodes; // number of four cc codes
+/* 50*/ DWORD dwAlignBoundarySrc; // source rectangle alignment
+/* 54*/ DWORD dwAlignSizeSrc; // source rectangle byte size
+/* 58*/ DWORD dwAlignBoundaryDest; // dest rectangle alignment
+/* 5c*/ DWORD dwAlignSizeDest; // dest rectangle byte size
+/* 60*/ DWORD dwAlignStrideAlign; // stride alignment
+/* 64*/ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported
+/* 84*/ DDSCAPS ddsOldCaps; // Was DDSCAPS ddsCaps. ddsCaps is of type DDSCAPS2 for DX6
+/* 88*/ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 8c*/ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 90*/ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 94*/ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 98*/ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 9c*/ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* a0*/ DWORD dwReserved1; // reserved
+/* a4*/ DWORD dwReserved2; // reserved
+/* a8*/ DWORD dwReserved3; // reserved
+/* ac*/ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts
+/* b0*/ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts
+/* b4*/ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts
+/* b8*/ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
+/* d8*/ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts
+/* dc*/ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts
+/* e0*/ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts
+/* e4*/ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
+/*104*/ DWORD dwSSBCaps; // driver specific capabilities for System->System blts
+/*108*/ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts
+/*10c*/ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts
+/*110*/ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
+/*130*/ DWORD dwMaxVideoPorts; // maximum number of usable video ports
+/*134*/ DWORD dwCurrVideoPorts; // current number of video ports used
+/*138*/ DWORD dwSVBCaps2; // more driver specific capabilities for System->Vmem blts
+/*13c*/ DWORD dwNLVBCaps; // driver specific capabilities for non-local->local vidmem blts
+/*140*/ DWORD dwNLVBCaps2; // more driver specific capabilities non-local->local vidmem blts
+/*144*/ DWORD dwNLVBCKeyCaps; // driver color key capabilities for non-local->local vidmem blts
+/*148*/ DWORD dwNLVBFXCaps; // driver FX capabilities for non-local->local blts
+/*14c*/ DWORD dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts
+// Members added for DX6 release
+/*16c*/ DDSCAPS2 ddsCaps; // Surface Caps
+} DDCAPS_DX6;
+typedef DDCAPS_DX6 FAR* LPDDCAPS_DX6;
+
+typedef struct _DDCAPS_DX7
+{
+/* 0*/ DWORD dwSize; // size of the DDDRIVERCAPS structure
+/* 4*/ DWORD dwCaps; // driver specific capabilities
+/* 8*/ DWORD dwCaps2; // more driver specific capabilites
+/* c*/ DWORD dwCKeyCaps; // color key capabilities of the surface
+/* 10*/ DWORD dwFXCaps; // driver specific stretching and effects capabilites
+/* 14*/ DWORD dwFXAlphaCaps; // alpha driver specific capabilities
+/* 18*/ DWORD dwPalCaps; // palette capabilities
+/* 1c*/ DWORD dwSVCaps; // stereo vision capabilities
+/* 20*/ DWORD dwAlphaBltConstBitDepths; // DDBD_2,4,8
+/* 24*/ DWORD dwAlphaBltPixelBitDepths; // DDBD_1,2,4,8
+/* 28*/ DWORD dwAlphaBltSurfaceBitDepths; // DDBD_1,2,4,8
+/* 2c*/ DWORD dwAlphaOverlayConstBitDepths; // DDBD_2,4,8
+/* 30*/ DWORD dwAlphaOverlayPixelBitDepths; // DDBD_1,2,4,8
+/* 34*/ DWORD dwAlphaOverlaySurfaceBitDepths; // DDBD_1,2,4,8
+/* 38*/ DWORD dwZBufferBitDepths; // DDBD_8,16,24,32
+/* 3c*/ DWORD dwVidMemTotal; // total amount of video memory
+/* 40*/ DWORD dwVidMemFree; // amount of free video memory
+/* 44*/ DWORD dwMaxVisibleOverlays; // maximum number of visible overlays
+/* 48*/ DWORD dwCurrVisibleOverlays; // current number of visible overlays
+/* 4c*/ DWORD dwNumFourCCCodes; // number of four cc codes
+/* 50*/ DWORD dwAlignBoundarySrc; // source rectangle alignment
+/* 54*/ DWORD dwAlignSizeSrc; // source rectangle byte size
+/* 58*/ DWORD dwAlignBoundaryDest; // dest rectangle alignment
+/* 5c*/ DWORD dwAlignSizeDest; // dest rectangle byte size
+/* 60*/ DWORD dwAlignStrideAlign; // stride alignment
+/* 64*/ DWORD dwRops[DD_ROP_SPACE]; // ROPS supported
+/* 84*/ DDSCAPS ddsOldCaps; // Was DDSCAPS ddsCaps. ddsCaps is of type DDSCAPS2 for DX6
+/* 88*/ DWORD dwMinOverlayStretch; // minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 8c*/ DWORD dwMaxOverlayStretch; // maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 90*/ DWORD dwMinLiveVideoStretch; // minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 94*/ DWORD dwMaxLiveVideoStretch; // maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 98*/ DWORD dwMinHwCodecStretch; // minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* 9c*/ DWORD dwMaxHwCodecStretch; // maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3
+/* a0*/ DWORD dwReserved1; // reserved
+/* a4*/ DWORD dwReserved2; // reserved
+/* a8*/ DWORD dwReserved3; // reserved
+/* ac*/ DWORD dwSVBCaps; // driver specific capabilities for System->Vmem blts
+/* b0*/ DWORD dwSVBCKeyCaps; // driver color key capabilities for System->Vmem blts
+/* b4*/ DWORD dwSVBFXCaps; // driver FX capabilities for System->Vmem blts
+/* b8*/ DWORD dwSVBRops[DD_ROP_SPACE];// ROPS supported for System->Vmem blts
+/* d8*/ DWORD dwVSBCaps; // driver specific capabilities for Vmem->System blts
+/* dc*/ DWORD dwVSBCKeyCaps; // driver color key capabilities for Vmem->System blts
+/* e0*/ DWORD dwVSBFXCaps; // driver FX capabilities for Vmem->System blts
+/* e4*/ DWORD dwVSBRops[DD_ROP_SPACE];// ROPS supported for Vmem->System blts
+/*104*/ DWORD dwSSBCaps; // driver specific capabilities for System->System blts
+/*108*/ DWORD dwSSBCKeyCaps; // driver color key capabilities for System->System blts
+/*10c*/ DWORD dwSSBFXCaps; // driver FX capabilities for System->System blts
+/*110*/ DWORD dwSSBRops[DD_ROP_SPACE];// ROPS supported for System->System blts
+/*130*/ DWORD dwMaxVideoPorts; // maximum number of usable video ports
+/*134*/ DWORD dwCurrVideoPorts; // current number of video ports used
+/*138*/ DWORD dwSVBCaps2; // more driver specific capabilities for System->Vmem blts
+/*13c*/ DWORD dwNLVBCaps; // driver specific capabilities for non-local->local vidmem blts
+/*140*/ DWORD dwNLVBCaps2; // more driver specific capabilities non-local->local vidmem blts
+/*144*/ DWORD dwNLVBCKeyCaps; // driver color key capabilities for non-local->local vidmem blts
+/*148*/ DWORD dwNLVBFXCaps; // driver FX capabilities for non-local->local blts
+/*14c*/ DWORD dwNLVBRops[DD_ROP_SPACE]; // ROPS supported for non-local->local blts
+// Members added for DX6 release
+/*16c*/ DDSCAPS2 ddsCaps; // Surface Caps
+} DDCAPS_DX7;
+typedef DDCAPS_DX7 FAR* LPDDCAPS_DX7;
+
+
+#if DIRECTDRAW_VERSION <= 0x300
+ typedef DDCAPS_DX3 DDCAPS;
+#elif DIRECTDRAW_VERSION <= 0x500
+ typedef DDCAPS_DX5 DDCAPS;
+#elif DIRECTDRAW_VERSION <= 0x600
+ typedef DDCAPS_DX6 DDCAPS;
+#else
+ typedef DDCAPS_DX7 DDCAPS;
+#endif
+
+typedef DDCAPS FAR* LPDDCAPS;
+
+
+
+/*
+ * DDPIXELFORMAT
+ */
+typedef struct _DDPIXELFORMAT
+{
+ DWORD dwSize; // size of structure
+ DWORD dwFlags; // pixel format flags
+ DWORD dwFourCC; // (FOURCC code)
+ union
+ {
+ DWORD dwRGBBitCount; // how many bits per pixel
+ DWORD dwYUVBitCount; // how many bits per pixel
+ DWORD dwZBufferBitDepth; // how many total bits/pixel in z buffer (including any stencil bits)
+ DWORD dwAlphaBitDepth; // how many bits for alpha channels
+ DWORD dwLuminanceBitCount; // how many bits per pixel
+ DWORD dwBumpBitCount; // how many bits per "buxel", total
+ DWORD dwPrivateFormatBitCount;// Bits per pixel of private driver formats. Only valid in texture
+ // format list and if DDPF_D3DFORMAT is set
+ } DUMMYUNIONNAMEN(1);
+ union
+ {
+ DWORD dwRBitMask; // mask for red bit
+ DWORD dwYBitMask; // mask for Y bits
+ DWORD dwStencilBitDepth; // how many stencil bits (note: dwZBufferBitDepth-dwStencilBitDepth is total Z-only bits)
+ DWORD dwLuminanceBitMask; // mask for luminance bits
+ DWORD dwBumpDuBitMask; // mask for bump map U delta bits
+ DWORD dwOperations; // DDPF_D3DFORMAT Operations
+ } DUMMYUNIONNAMEN(2);
+ union
+ {
+ DWORD dwGBitMask; // mask for green bits
+ DWORD dwUBitMask; // mask for U bits
+ DWORD dwZBitMask; // mask for Z bits
+ DWORD dwBumpDvBitMask; // mask for bump map V delta bits
+ struct
+ {
+ WORD wFlipMSTypes; // Multisample methods supported via flip for this D3DFORMAT
+ WORD wBltMSTypes; // Multisample methods supported via blt for this D3DFORMAT
+ } MultiSampleCaps;
+
+ } DUMMYUNIONNAMEN(3);
+ union
+ {
+ DWORD dwBBitMask; // mask for blue bits
+ DWORD dwVBitMask; // mask for V bits
+ DWORD dwStencilBitMask; // mask for stencil bits
+ DWORD dwBumpLuminanceBitMask; // mask for luminance in bump map
+ } DUMMYUNIONNAMEN(4);
+ union
+ {
+ DWORD dwRGBAlphaBitMask; // mask for alpha channel
+ DWORD dwYUVAlphaBitMask; // mask for alpha channel
+ DWORD dwLuminanceAlphaBitMask;// mask for alpha channel
+ DWORD dwRGBZBitMask; // mask for Z channel
+ DWORD dwYUVZBitMask; // mask for Z channel
+ } DUMMYUNIONNAMEN(5);
+} DDPIXELFORMAT;
+
+typedef DDPIXELFORMAT FAR* LPDDPIXELFORMAT;
+
+/*
+ * DDOVERLAYFX
+ */
+typedef struct _DDOVERLAYFX
+{
+ DWORD dwSize; // size of structure
+ DWORD dwAlphaEdgeBlendBitDepth; // Bit depth used to specify constant for alpha edge blend
+ DWORD dwAlphaEdgeBlend; // Constant to use as alpha for edge blend
+ DWORD dwReserved;
+ DWORD dwAlphaDestConstBitDepth; // Bit depth used to specify alpha constant for destination
+ union
+ {
+ DWORD dwAlphaDestConst; // Constant to use as alpha channel for dest
+ LPDIRECTDRAWSURFACE lpDDSAlphaDest; // Surface to use as alpha channel for dest
+ } DUMMYUNIONNAMEN(1);
+ DWORD dwAlphaSrcConstBitDepth; // Bit depth used to specify alpha constant for source
+ union
+ {
+ DWORD dwAlphaSrcConst; // Constant to use as alpha channel for src
+ LPDIRECTDRAWSURFACE lpDDSAlphaSrc; // Surface to use as alpha channel for src
+ } DUMMYUNIONNAMEN(2);
+ DDCOLORKEY dckDestColorkey; // DestColorkey override
+ DDCOLORKEY dckSrcColorkey; // DestColorkey override
+ DWORD dwDDFX; // Overlay FX
+ DWORD dwFlags; // flags
+} DDOVERLAYFX;
+
+typedef DDOVERLAYFX FAR *LPDDOVERLAYFX;
+
+
+/*
+ * DDBLTBATCH: BltBatch entry structure
+ */
+typedef struct _DDBLTBATCH
+{
+ LPRECT lprDest;
+ LPDIRECTDRAWSURFACE lpDDSSrc;
+ LPRECT lprSrc;
+ DWORD dwFlags;
+ LPDDBLTFX lpDDBltFx;
+} DDBLTBATCH;
+
+typedef DDBLTBATCH FAR * LPDDBLTBATCH;
+
+
+/*
+ * DDGAMMARAMP
+ */
+typedef struct _DDGAMMARAMP
+{
+ WORD red[256];
+ WORD green[256];
+ WORD blue[256];
+} DDGAMMARAMP;
+typedef DDGAMMARAMP FAR * LPDDGAMMARAMP;
+
+/*
+ * This is the structure within which DirectDraw returns data about the current graphics driver and chipset
+ */
+
+#define MAX_DDDEVICEID_STRING 512
+
+typedef struct tagDDDEVICEIDENTIFIER
+{
+ /*
+ * These elements are for presentation to the user only. They should not be used to identify particular
+ * drivers, since this is unreliable and many different strings may be associated with the same
+ * device, and the same driver from different vendors.
+ */
+ char szDriver[MAX_DDDEVICEID_STRING];
+ char szDescription[MAX_DDDEVICEID_STRING];
+
+ /*
+ * This element is the version of the DirectDraw/3D driver. It is legal to do <, > comparisons
+ * on the whole 64 bits. Caution should be exercised if you use this element to identify problematic
+ * drivers. It is recommended that guidDeviceIdentifier is used for this purpose.
+ *
+ * This version has the form:
+ * wProduct = HIWORD(liDriverVersion.HighPart)
+ * wVersion = LOWORD(liDriverVersion.HighPart)
+ * wSubVersion = HIWORD(liDriverVersion.LowPart)
+ * wBuild = LOWORD(liDriverVersion.LowPart)
+ */
+#ifdef _WIN32
+ LARGE_INTEGER liDriverVersion; /* Defined for applications and other 32 bit components */
+#else
+ DWORD dwDriverVersionLowPart; /* Defined for 16 bit driver components */
+ DWORD dwDriverVersionHighPart;
+#endif
+
+
+ /*
+ * These elements can be used to identify particular chipsets. Use with extreme caution.
+ * dwVendorId Identifies the manufacturer. May be zero if unknown.
+ * dwDeviceId Identifies the type of chipset. May be zero if unknown.
+ * dwSubSysId Identifies the subsystem, typically this means the particular board. May be zero if unknown.
+ * dwRevision Identifies the revision level of the chipset. May be zero if unknown.
+ */
+ DWORD dwVendorId;
+ DWORD dwDeviceId;
+ DWORD dwSubSysId;
+ DWORD dwRevision;
+
+ /*
+ * This element can be used to check changes in driver/chipset. This GUID is a unique identifier for the
+ * driver/chipset pair. Use this element if you wish to track changes to the driver/chipset in order to
+ * reprofile the graphics subsystem.
+ * This element can also be used to identify particular problematic drivers.
+ */
+ GUID guidDeviceIdentifier;
+} DDDEVICEIDENTIFIER, * LPDDDEVICEIDENTIFIER;
+
+typedef struct tagDDDEVICEIDENTIFIER2
+{
+ /*
+ * These elements are for presentation to the user only. They should not be used to identify particular
+ * drivers, since this is unreliable and many different strings may be associated with the same
+ * device, and the same driver from different vendors.
+ */
+ char szDriver[MAX_DDDEVICEID_STRING];
+ char szDescription[MAX_DDDEVICEID_STRING];
+
+ /*
+ * This element is the version of the DirectDraw/3D driver. It is legal to do <, > comparisons
+ * on the whole 64 bits. Caution should be exercised if you use this element to identify problematic
+ * drivers. It is recommended that guidDeviceIdentifier is used for this purpose.
+ *
+ * This version has the form:
+ * wProduct = HIWORD(liDriverVersion.HighPart)
+ * wVersion = LOWORD(liDriverVersion.HighPart)
+ * wSubVersion = HIWORD(liDriverVersion.LowPart)
+ * wBuild = LOWORD(liDriverVersion.LowPart)
+ */
+#ifdef _WIN32
+ LARGE_INTEGER liDriverVersion; /* Defined for applications and other 32 bit components */
+#else
+ DWORD dwDriverVersionLowPart; /* Defined for 16 bit driver components */
+ DWORD dwDriverVersionHighPart;
+#endif
+
+
+ /*
+ * These elements can be used to identify particular chipsets. Use with extreme caution.
+ * dwVendorId Identifies the manufacturer. May be zero if unknown.
+ * dwDeviceId Identifies the type of chipset. May be zero if unknown.
+ * dwSubSysId Identifies the subsystem, typically this means the particular board. May be zero if unknown.
+ * dwRevision Identifies the revision level of the chipset. May be zero if unknown.
+ */
+ DWORD dwVendorId;
+ DWORD dwDeviceId;
+ DWORD dwSubSysId;
+ DWORD dwRevision;
+
+ /*
+ * This element can be used to check changes in driver/chipset. This GUID is a unique identifier for the
+ * driver/chipset pair. Use this element if you wish to track changes to the driver/chipset in order to
+ * reprofile the graphics subsystem.
+ * This element can also be used to identify particular problematic drivers.
+ */
+ GUID guidDeviceIdentifier;
+
+ /*
+ * This element is used to determine the Windows Hardware Quality Lab (WHQL)
+ * certification level for this driver/device pair.
+ */
+ DWORD dwWHQLLevel;
+
+} DDDEVICEIDENTIFIER2, * LPDDDEVICEIDENTIFIER2;
+
+/*
+ * Flags for the IDirectDraw4::GetDeviceIdentifier method
+ */
+
+/*
+ * This flag causes GetDeviceIdentifier to return information about the host (typically 2D) adapter in a system equipped
+ * with a stacked secondary 3D adapter. Such an adapter appears to the application as if it were part of the
+ * host adapter, but is typically physcially located on a separate card. The stacked secondary's information is
+ * returned when GetDeviceIdentifier's dwFlags field is zero, since this most accurately reflects the qualities
+ * of the DirectDraw object involved.
+ */
+#define DDGDI_GETHOSTIDENTIFIER 0x00000001L
+
+/*
+ * Macros for interpretting DDEVICEIDENTIFIER2.dwWHQLLevel
+ */
+#define GET_WHQL_YEAR( dwWHQLLevel ) \
+ ( (dwWHQLLevel) / 0x10000 )
+#define GET_WHQL_MONTH( dwWHQLLevel ) \
+ ( ( (dwWHQLLevel) / 0x100 ) & 0x00ff )
+#define GET_WHQL_DAY( dwWHQLLevel ) \
+ ( (dwWHQLLevel) & 0xff )
+
+
+/*
+ * callbacks
+ */
+typedef DWORD (FAR PASCAL *LPCLIPPERCALLBACK)(LPDIRECTDRAWCLIPPER lpDDClipper, HWND hWnd, DWORD code, LPVOID lpContext );
+#ifdef STREAMING
+typedef DWORD (FAR PASCAL *LPSURFACESTREAMINGCALLBACK)(DWORD);
+#endif
+
+
+/*
+ * INTERACES FOLLOW:
+ * IDirectDraw
+ * IDirectDrawClipper
+ * IDirectDrawPalette
+ * IDirectDrawSurface
+ */
+
+/*
+ * IDirectDraw
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDraw
+DECLARE_INTERFACE_( IDirectDraw, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDraw methods ***/
+ STDMETHOD(Compact)(THIS) PURE;
+ STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
+ STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
+ STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
+ STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
+ STDMETHOD(FlipToGDISurface)(THIS) PURE;
+ STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
+ STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
+ STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE;
+ STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
+ STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
+ STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
+ STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
+ STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD) PURE;
+ STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDraw_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDraw_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDraw_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDraw_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectDraw_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c)
+#define IDirectDraw_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d)
+#define IDirectDraw_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c)
+#define IDirectDraw_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b)
+#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
+#define IDirectDraw_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
+#define IDirectDraw_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b)
+#define IDirectDraw_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a)
+#define IDirectDraw_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b)
+#define IDirectDraw_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a)
+#define IDirectDraw_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a)
+#define IDirectDraw_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a)
+#define IDirectDraw_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a)
+#define IDirectDraw_Initialize(p, a) (p)->lpVtbl->Initialize(p, a)
+#define IDirectDraw_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b)
+#define IDirectDraw_SetDisplayMode(p, a, b, c) (p)->lpVtbl->SetDisplayMode(p, a, b, c)
+#define IDirectDraw_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
+#else
+#define IDirectDraw_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
+#define IDirectDraw_AddRef(p) (p)->AddRef()
+#define IDirectDraw_Release(p) (p)->Release()
+#define IDirectDraw_Compact(p) (p)->Compact()
+#define IDirectDraw_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c)
+#define IDirectDraw_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d)
+#define IDirectDraw_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c)
+#define IDirectDraw_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b)
+#define IDirectDraw_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
+#define IDirectDraw_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d)
+#define IDirectDraw_FlipToGDISurface(p) (p)->FlipToGDISurface()
+#define IDirectDraw_GetCaps(p, a, b) (p)->GetCaps(a, b)
+#define IDirectDraw_GetDisplayMode(p, a) (p)->GetDisplayMode(a)
+#define IDirectDraw_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b)
+#define IDirectDraw_GetGDISurface(p, a) (p)->GetGDISurface(a)
+#define IDirectDraw_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a)
+#define IDirectDraw_GetScanLine(p, a) (p)->GetScanLine(a)
+#define IDirectDraw_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw_Initialize(p, a) (p)->Initialize(a)
+#define IDirectDraw_RestoreDisplayMode(p) (p)->RestoreDisplayMode()
+#define IDirectDraw_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b)
+#define IDirectDraw_SetDisplayMode(p, a, b, c) (p)->SetDisplayMode(a, b, c)
+#define IDirectDraw_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b)
+#endif
+
+#endif
+
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDraw2
+DECLARE_INTERFACE_( IDirectDraw2, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDraw methods ***/
+ STDMETHOD(Compact)(THIS) PURE;
+ STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
+ STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
+ STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
+ STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
+ STDMETHOD(FlipToGDISurface)(THIS) PURE;
+ STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
+ STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
+ STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE;
+ STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
+ STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
+ STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
+ STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
+ STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
+ STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
+ /*** Added in the v2 interface ***/
+ STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS, LPDWORD, LPDWORD) PURE;
+};
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDraw2_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDraw2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDraw2_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDraw2_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectDraw2_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c)
+#define IDirectDraw2_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d)
+#define IDirectDraw2_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c)
+#define IDirectDraw2_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b)
+#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
+#define IDirectDraw2_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
+#define IDirectDraw2_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw2_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b)
+#define IDirectDraw2_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a)
+#define IDirectDraw2_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b)
+#define IDirectDraw2_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a)
+#define IDirectDraw2_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a)
+#define IDirectDraw2_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a)
+#define IDirectDraw2_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a)
+#define IDirectDraw2_Initialize(p, a) (p)->lpVtbl->Initialize(p, a)
+#define IDirectDraw2_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw2_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b)
+#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e)
+#define IDirectDraw2_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
+#define IDirectDraw2_GetAvailableVidMem(p, a, b, c) (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
+#else
+#define IDirectDraw2_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
+#define IDirectDraw2_AddRef(p) (p)->AddRef()
+#define IDirectDraw2_Release(p) (p)->Release()
+#define IDirectDraw2_Compact(p) (p)->Compact()
+#define IDirectDraw2_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c)
+#define IDirectDraw2_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d)
+#define IDirectDraw2_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c)
+#define IDirectDraw2_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b)
+#define IDirectDraw2_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
+#define IDirectDraw2_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d)
+#define IDirectDraw2_FlipToGDISurface(p) (p)->FlipToGDISurface()
+#define IDirectDraw2_GetCaps(p, a, b) (p)->GetCaps(a, b)
+#define IDirectDraw2_GetDisplayMode(p, a) (p)->GetDisplayMode(a)
+#define IDirectDraw2_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b)
+#define IDirectDraw2_GetGDISurface(p, a) (p)->GetGDISurface(a)
+#define IDirectDraw2_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a)
+#define IDirectDraw2_GetScanLine(p, a) (p)->GetScanLine(a)
+#define IDirectDraw2_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw2_Initialize(p, a) (p)->Initialize(a)
+#define IDirectDraw2_RestoreDisplayMode(p) (p)->RestoreDisplayMode()
+#define IDirectDraw2_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b)
+#define IDirectDraw2_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e)
+#define IDirectDraw2_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b)
+#define IDirectDraw2_GetAvailableVidMem(p, a, b, c) (p)->GetAvailableVidMem(a, b, c)
+#endif
+
+#endif
+
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDraw4
+DECLARE_INTERFACE_( IDirectDraw4, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDraw methods ***/
+ STDMETHOD(Compact)(THIS) PURE;
+ STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE4 FAR *, IUnknown FAR *) PURE;
+ STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE4, LPDIRECTDRAWSURFACE4 FAR * ) PURE;
+ STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ) PURE;
+ STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2 ) PURE;
+ STDMETHOD(FlipToGDISurface)(THIS) PURE;
+ STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
+ STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC2) PURE;
+ STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE;
+ STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE4 FAR *) PURE;
+ STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
+ STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
+ STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
+ STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
+ STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
+ /*** Added in the v2 interface ***/
+ STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2, LPDWORD, LPDWORD) PURE;
+ /*** Added in the V4 Interface ***/
+ STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE4 *) PURE;
+ STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
+ STDMETHOD(TestCooperativeLevel)(THIS) PURE;
+ STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER, DWORD ) PURE;
+};
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDraw4_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDraw4_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDraw4_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDraw4_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectDraw4_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c)
+#define IDirectDraw4_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d)
+#define IDirectDraw4_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c)
+#define IDirectDraw4_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b)
+#define IDirectDraw4_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
+#define IDirectDraw4_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
+#define IDirectDraw4_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw4_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b)
+#define IDirectDraw4_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a)
+#define IDirectDraw4_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b)
+#define IDirectDraw4_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a)
+#define IDirectDraw4_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a)
+#define IDirectDraw4_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a)
+#define IDirectDraw4_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a)
+#define IDirectDraw4_Initialize(p, a) (p)->lpVtbl->Initialize(p, a)
+#define IDirectDraw4_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw4_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b)
+#define IDirectDraw4_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e)
+#define IDirectDraw4_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
+#define IDirectDraw4_GetAvailableVidMem(p, a, b, c) (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
+#define IDirectDraw4_GetSurfaceFromDC(p, a, b) (p)->lpVtbl->GetSurfaceFromDC(p, a, b)
+#define IDirectDraw4_RestoreAllSurfaces(p) (p)->lpVtbl->RestoreAllSurfaces(p)
+#define IDirectDraw4_TestCooperativeLevel(p) (p)->lpVtbl->TestCooperativeLevel(p)
+#define IDirectDraw4_GetDeviceIdentifier(p,a,b) (p)->lpVtbl->GetDeviceIdentifier(p,a,b)
+#else
+#define IDirectDraw4_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
+#define IDirectDraw4_AddRef(p) (p)->AddRef()
+#define IDirectDraw4_Release(p) (p)->Release()
+#define IDirectDraw4_Compact(p) (p)->Compact()
+#define IDirectDraw4_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c)
+#define IDirectDraw4_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d)
+#define IDirectDraw4_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c)
+#define IDirectDraw4_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b)
+#define IDirectDraw4_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
+#define IDirectDraw4_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d)
+#define IDirectDraw4_FlipToGDISurface(p) (p)->FlipToGDISurface()
+#define IDirectDraw4_GetCaps(p, a, b) (p)->GetCaps(a, b)
+#define IDirectDraw4_GetDisplayMode(p, a) (p)->GetDisplayMode(a)
+#define IDirectDraw4_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b)
+#define IDirectDraw4_GetGDISurface(p, a) (p)->GetGDISurface(a)
+#define IDirectDraw4_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a)
+#define IDirectDraw4_GetScanLine(p, a) (p)->GetScanLine(a)
+#define IDirectDraw4_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw4_Initialize(p, a) (p)->Initialize(a)
+#define IDirectDraw4_RestoreDisplayMode(p) (p)->RestoreDisplayMode()
+#define IDirectDraw4_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b)
+#define IDirectDraw4_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e)
+#define IDirectDraw4_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b)
+#define IDirectDraw4_GetAvailableVidMem(p, a, b, c) (p)->GetAvailableVidMem(a, b, c)
+#define IDirectDraw4_GetSurfaceFromDC(p, a, b) (p)->GetSurfaceFromDC(a, b)
+#define IDirectDraw4_RestoreAllSurfaces(p) (p)->RestoreAllSurfaces()
+#define IDirectDraw4_TestCooperativeLevel(p) (p)->TestCooperativeLevel()
+#define IDirectDraw4_GetDeviceIdentifier(p,a,b) (p)->GetDeviceIdentifier(a,b)
+#endif
+
+#endif
+
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDraw7
+DECLARE_INTERFACE_( IDirectDraw7, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDraw methods ***/
+ STDMETHOD(Compact)(THIS) PURE;
+ STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
+ STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE7 FAR *, IUnknown FAR *) PURE;
+ STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE7, LPDIRECTDRAWSURFACE7 FAR * ) PURE;
+ STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 ) PURE;
+ STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK7 ) PURE;
+ STDMETHOD(FlipToGDISurface)(THIS) PURE;
+ STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
+ STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC2) PURE;
+ STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE;
+ STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE7 FAR *) PURE;
+ STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
+ STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
+ STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
+ STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
+ STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
+ /*** Added in the v2 interface ***/
+ STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS2, LPDWORD, LPDWORD) PURE;
+ /*** Added in the V4 Interface ***/
+ STDMETHOD(GetSurfaceFromDC) (THIS_ HDC, LPDIRECTDRAWSURFACE7 *) PURE;
+ STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
+ STDMETHOD(TestCooperativeLevel)(THIS) PURE;
+ STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER2, DWORD ) PURE;
+ STDMETHOD(StartModeTest)(THIS_ LPSIZE, DWORD, DWORD ) PURE;
+ STDMETHOD(EvaluateMode)(THIS_ DWORD, DWORD * ) PURE;
+};
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDraw7_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDraw7_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDraw7_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDraw7_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectDraw7_CreateClipper(p, a, b, c) (p)->lpVtbl->CreateClipper(p, a, b, c)
+#define IDirectDraw7_CreatePalette(p, a, b, c, d) (p)->lpVtbl->CreatePalette(p, a, b, c, d)
+#define IDirectDraw7_CreateSurface(p, a, b, c) (p)->lpVtbl->CreateSurface(p, a, b, c)
+#define IDirectDraw7_DuplicateSurface(p, a, b) (p)->lpVtbl->DuplicateSurface(p, a, b)
+#define IDirectDraw7_EnumDisplayModes(p, a, b, c, d) (p)->lpVtbl->EnumDisplayModes(p, a, b, c, d)
+#define IDirectDraw7_EnumSurfaces(p, a, b, c, d) (p)->lpVtbl->EnumSurfaces(p, a, b, c, d)
+#define IDirectDraw7_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw7_GetCaps(p, a, b) (p)->lpVtbl->GetCaps(p, a, b)
+#define IDirectDraw7_GetDisplayMode(p, a) (p)->lpVtbl->GetDisplayMode(p, a)
+#define IDirectDraw7_GetFourCCCodes(p, a, b) (p)->lpVtbl->GetFourCCCodes(p, a, b)
+#define IDirectDraw7_GetGDISurface(p, a) (p)->lpVtbl->GetGDISurface(p, a)
+#define IDirectDraw7_GetMonitorFrequency(p, a) (p)->lpVtbl->GetMonitorFrequency(p, a)
+#define IDirectDraw7_GetScanLine(p, a) (p)->lpVtbl->GetScanLine(p, a)
+#define IDirectDraw7_GetVerticalBlankStatus(p, a) (p)->lpVtbl->GetVerticalBlankStatus(p, a)
+#define IDirectDraw7_Initialize(p, a) (p)->lpVtbl->Initialize(p, a)
+#define IDirectDraw7_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw7_SetCooperativeLevel(p, a, b) (p)->lpVtbl->SetCooperativeLevel(p, a, b)
+#define IDirectDraw7_SetDisplayMode(p, a, b, c, d, e) (p)->lpVtbl->SetDisplayMode(p, a, b, c, d, e)
+#define IDirectDraw7_WaitForVerticalBlank(p, a, b) (p)->lpVtbl->WaitForVerticalBlank(p, a, b)
+#define IDirectDraw7_GetAvailableVidMem(p, a, b, c) (p)->lpVtbl->GetAvailableVidMem(p, a, b, c)
+#define IDirectDraw7_GetSurfaceFromDC(p, a, b) (p)->lpVtbl->GetSurfaceFromDC(p, a, b)
+#define IDirectDraw7_RestoreAllSurfaces(p) (p)->lpVtbl->RestoreAllSurfaces(p)
+#define IDirectDraw7_TestCooperativeLevel(p) (p)->lpVtbl->TestCooperativeLevel(p)
+#define IDirectDraw7_GetDeviceIdentifier(p,a,b) (p)->lpVtbl->GetDeviceIdentifier(p,a,b)
+#define IDirectDraw7_StartModeTest(p,a,b,c) (p)->lpVtbl->StartModeTest(p,a,b,c)
+#define IDirectDraw7_EvaluateMode(p,a,b) (p)->lpVtbl->EvaluateMode(p,a,b)
+#else
+#define IDirectDraw7_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
+#define IDirectDraw7_AddRef(p) (p)->AddRef()
+#define IDirectDraw7_Release(p) (p)->Release()
+#define IDirectDraw7_Compact(p) (p)->Compact()
+#define IDirectDraw7_CreateClipper(p, a, b, c) (p)->CreateClipper(a, b, c)
+#define IDirectDraw7_CreatePalette(p, a, b, c, d) (p)->CreatePalette(a, b, c, d)
+#define IDirectDraw7_CreateSurface(p, a, b, c) (p)->CreateSurface(a, b, c)
+#define IDirectDraw7_DuplicateSurface(p, a, b) (p)->DuplicateSurface(a, b)
+#define IDirectDraw7_EnumDisplayModes(p, a, b, c, d) (p)->EnumDisplayModes(a, b, c, d)
+#define IDirectDraw7_EnumSurfaces(p, a, b, c, d) (p)->EnumSurfaces(a, b, c, d)
+#define IDirectDraw7_FlipToGDISurface(p) (p)->FlipToGDISurface()
+#define IDirectDraw7_GetCaps(p, a, b) (p)->GetCaps(a, b)
+#define IDirectDraw7_GetDisplayMode(p, a) (p)->GetDisplayMode(a)
+#define IDirectDraw7_GetFourCCCodes(p, a, b) (p)->GetFourCCCodes(a, b)
+#define IDirectDraw7_GetGDISurface(p, a) (p)->GetGDISurface(a)
+#define IDirectDraw7_GetMonitorFrequency(p, a) (p)->GetMonitorFrequency(a)
+#define IDirectDraw7_GetScanLine(p, a) (p)->GetScanLine(a)
+#define IDirectDraw7_GetVerticalBlankStatus(p, a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw7_Initialize(p, a) (p)->Initialize(a)
+#define IDirectDraw7_RestoreDisplayMode(p) (p)->RestoreDisplayMode()
+#define IDirectDraw7_SetCooperativeLevel(p, a, b) (p)->SetCooperativeLevel(a, b)
+#define IDirectDraw7_SetDisplayMode(p, a, b, c, d, e) (p)->SetDisplayMode(a, b, c, d, e)
+#define IDirectDraw7_WaitForVerticalBlank(p, a, b) (p)->WaitForVerticalBlank(a, b)
+#define IDirectDraw7_GetAvailableVidMem(p, a, b, c) (p)->GetAvailableVidMem(a, b, c)
+#define IDirectDraw7_GetSurfaceFromDC(p, a, b) (p)->GetSurfaceFromDC(a, b)
+#define IDirectDraw7_RestoreAllSurfaces(p) (p)->RestoreAllSurfaces()
+#define IDirectDraw7_TestCooperativeLevel(p) (p)->TestCooperativeLevel()
+#define IDirectDraw7_GetDeviceIdentifier(p,a,b) (p)->GetDeviceIdentifier(a,b)
+#define IDirectDraw7_StartModeTest(p,a,b,c) (p)->lpVtbl->StartModeTest(a,b,c)
+#define IDirectDraw7_EvaluateMode(p,a,b) (p)->lpVtbl->EvaluateMode(a,b)
+#endif
+
+#endif
+
+
+/*
+ * IDirectDrawPalette
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDrawPalette
+DECLARE_INTERFACE_( IDirectDrawPalette, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawPalette methods ***/
+ STDMETHOD(GetCaps)(THIS_ LPDWORD) PURE;
+ STDMETHOD(GetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD, LPPALETTEENTRY) PURE;
+ STDMETHOD(SetEntries)(THIS_ DWORD,DWORD,DWORD,LPPALETTEENTRY) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawPalette_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDrawPalette_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawPalette_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawPalette_GetCaps(p, a) (p)->lpVtbl->GetCaps(p, a)
+#define IDirectDrawPalette_GetEntries(p, a, b, c, d) (p)->lpVtbl->GetEntries(p, a, b, c, d)
+#define IDirectDrawPalette_Initialize(p, a, b, c) (p)->lpVtbl->Initialize(p, a, b, c)
+#define IDirectDrawPalette_SetEntries(p, a, b, c, d) (p)->lpVtbl->SetEntries(p, a, b, c, d)
+#else
+#define IDirectDrawPalette_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
+#define IDirectDrawPalette_AddRef(p) (p)->AddRef()
+#define IDirectDrawPalette_Release(p) (p)->Release()
+#define IDirectDrawPalette_GetCaps(p, a) (p)->GetCaps(a)
+#define IDirectDrawPalette_GetEntries(p, a, b, c, d) (p)->GetEntries(a, b, c, d)
+#define IDirectDrawPalette_Initialize(p, a, b, c) (p)->Initialize(a, b, c)
+#define IDirectDrawPalette_SetEntries(p, a, b, c, d) (p)->SetEntries(a, b, c, d)
+#endif
+
+#endif
+
+
+/*
+ * IDirectDrawClipper
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDrawClipper
+DECLARE_INTERFACE_( IDirectDrawClipper, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawClipper methods ***/
+ STDMETHOD(GetClipList)(THIS_ LPRECT, LPRGNDATA, LPDWORD) PURE;
+ STDMETHOD(GetHWnd)(THIS_ HWND FAR *) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, DWORD) PURE;
+ STDMETHOD(IsClipListChanged)(THIS_ BOOL FAR *) PURE;
+ STDMETHOD(SetClipList)(THIS_ LPRGNDATA,DWORD) PURE;
+ STDMETHOD(SetHWnd)(THIS_ DWORD, HWND ) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawClipper_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDrawClipper_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawClipper_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawClipper_GetClipList(p, a, b, c) (p)->lpVtbl->GetClipList(p, a, b, c)
+#define IDirectDrawClipper_GetHWnd(p, a) (p)->lpVtbl->GetHWnd(p, a)
+#define IDirectDrawClipper_Initialize(p, a, b) (p)->lpVtbl->Initialize(p, a, b)
+#define IDirectDrawClipper_IsClipListChanged(p, a) (p)->lpVtbl->IsClipListChanged(p, a)
+#define IDirectDrawClipper_SetClipList(p, a, b) (p)->lpVtbl->SetClipList(p, a, b)
+#define IDirectDrawClipper_SetHWnd(p, a, b) (p)->lpVtbl->SetHWnd(p, a, b)
+#else
+#define IDirectDrawClipper_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
+#define IDirectDrawClipper_AddRef(p) (p)->AddRef()
+#define IDirectDrawClipper_Release(p) (p)->Release()
+#define IDirectDrawClipper_GetClipList(p, a, b, c) (p)->GetClipList(a, b, c)
+#define IDirectDrawClipper_GetHWnd(p, a) (p)->GetHWnd(a)
+#define IDirectDrawClipper_Initialize(p, a, b) (p)->Initialize(a, b)
+#define IDirectDrawClipper_IsClipListChanged(p, a) (p)->IsClipListChanged(a)
+#define IDirectDrawClipper_SetClipList(p, a, b) (p)->SetClipList(a, b)
+#define IDirectDrawClipper_SetHWnd(p, a, b) (p)->SetHWnd(a, b)
+#endif
+
+#endif
+
+/*
+ * IDirectDrawSurface and related interfaces
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDrawSurface
+DECLARE_INTERFACE_( IDirectDrawSurface, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawSurface methods ***/
+ STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE) PURE;
+ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
+ STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE, LPRECT,DWORD, LPDDBLTFX) PURE;
+ STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
+ STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE, LPRECT,DWORD) PURE;
+ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE) PURE;
+ STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
+ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
+ STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE;
+ STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE FAR *) PURE;
+ STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
+ STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
+ STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
+ STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
+ STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
+ STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
+ STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
+ STDMETHOD(IsLost)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
+ STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
+ STDMETHOD(Restore)(THIS) PURE;
+ STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
+ STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
+ STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
+ STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
+ STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
+ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
+ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawSurface_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b)
+#define IDirectDrawSurface_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface_IsLost(p) (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface_Restore(p) (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface_Unlock(p,b) (p)->lpVtbl->Unlock(p,b)
+#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+#else
+#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface_AddRef(p) (p)->AddRef()
+#define IDirectDrawSurface_Release(p) (p)->Release()
+#define IDirectDrawSurface_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface_Flip(p,a,b) (p)->Flip(a,b)
+#define IDirectDrawSurface_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface_GetBltStatus(p,a) (p)->GetBltStatus(a)
+#define IDirectDrawSurface_GetCaps(p,b) (p)->GetCaps(b)
+#define IDirectDrawSurface_GetClipper(p,a) (p)->GetClipper(a)
+#define IDirectDrawSurface_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
+#define IDirectDrawSurface_GetDC(p,a) (p)->GetDC(a)
+#define IDirectDrawSurface_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
+#define IDirectDrawSurface_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface_GetPalette(p,a) (p)->GetPalette(a)
+#define IDirectDrawSurface_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
+#define IDirectDrawSurface_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectDrawSurface_IsLost(p) (p)->IsLost()
+#define IDirectDrawSurface_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface_ReleaseDC(p,a) (p)->ReleaseDC(a)
+#define IDirectDrawSurface_Restore(p) (p)->Restore()
+#define IDirectDrawSurface_SetClipper(p,a) (p)->SetClipper(a)
+#define IDirectDrawSurface_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
+#define IDirectDrawSurface_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface_SetPalette(p,a) (p)->SetPalette(a)
+#define IDirectDrawSurface_Unlock(p,b) (p)->Unlock(b)
+#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
+#endif
+
+/*
+ * IDirectDrawSurface2 and related interfaces
+ */
+#undef INTERFACE
+#define INTERFACE IDirectDrawSurface2
+DECLARE_INTERFACE_( IDirectDrawSurface2, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawSurface methods ***/
+ STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE2) PURE;
+ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
+ STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE2, LPRECT,DWORD, LPDDBLTFX) PURE;
+ STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
+ STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE2, LPRECT,DWORD) PURE;
+ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE2) PURE;
+ STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
+ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
+ STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE2, DWORD) PURE;
+ STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE2 FAR *) PURE;
+ STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
+ STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
+ STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
+ STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
+ STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
+ STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
+ STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
+ STDMETHOD(IsLost)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
+ STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
+ STDMETHOD(Restore)(THIS) PURE;
+ STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
+ STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
+ STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
+ STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
+ STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE2,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
+ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
+ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE2) PURE;
+ /*** Added in the v2 interface ***/
+ STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
+ STDMETHOD(PageLock)(THIS_ DWORD) PURE;
+ STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface2_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawSurface2_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface2_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface2_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface2_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface2_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b)
+#define IDirectDrawSurface2_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface2_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface2_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface2_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface2_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface2_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface2_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface2_IsLost(p) (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface2_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface2_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface2_Restore(p) (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface2_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface2_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface2_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface2_Unlock(p,b) (p)->lpVtbl->Unlock(p,b)
+#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
+#define IDirectDrawSurface2_PageLock(p,a) (p)->lpVtbl->PageLock(p,a)
+#define IDirectDrawSurface2_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a)
+#else
+#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface2_AddRef(p) (p)->AddRef()
+#define IDirectDrawSurface2_Release(p) (p)->Release()
+#define IDirectDrawSurface2_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface2_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface2_Flip(p,a,b) (p)->Flip(a,b)
+#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface2_GetBltStatus(p,a) (p)->GetBltStatus(a)
+#define IDirectDrawSurface2_GetCaps(p,b) (p)->GetCaps(b)
+#define IDirectDrawSurface2_GetClipper(p,a) (p)->GetClipper(a)
+#define IDirectDrawSurface2_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
+#define IDirectDrawSurface2_GetDC(p,a) (p)->GetDC(a)
+#define IDirectDrawSurface2_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
+#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface2_GetPalette(p,a) (p)->GetPalette(a)
+#define IDirectDrawSurface2_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
+#define IDirectDrawSurface2_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface2_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectDrawSurface2_IsLost(p) (p)->IsLost()
+#define IDirectDrawSurface2_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface2_ReleaseDC(p,a) (p)->ReleaseDC(a)
+#define IDirectDrawSurface2_Restore(p) (p)->Restore()
+#define IDirectDrawSurface2_SetClipper(p,a) (p)->SetClipper(a)
+#define IDirectDrawSurface2_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
+#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface2_SetPalette(p,a) (p)->SetPalette(a)
+#define IDirectDrawSurface2_Unlock(p,b) (p)->Unlock(b)
+#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
+#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->GetDDInterface(a)
+#define IDirectDrawSurface2_PageLock(p,a) (p)->PageLock(a)
+#define IDirectDrawSurface2_PageUnlock(p,a) (p)->PageUnlock(a)
+#endif
+
+/*
+ * IDirectDrawSurface3 and related interfaces
+ */
+#undef INTERFACE
+#define INTERFACE IDirectDrawSurface3
+DECLARE_INTERFACE_( IDirectDrawSurface3, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawSurface methods ***/
+ STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE3) PURE;
+ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
+ STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE3, LPRECT,DWORD, LPDDBLTFX) PURE;
+ STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
+ STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE3, LPRECT,DWORD) PURE;
+ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE3) PURE;
+ STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
+ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK) PURE;
+ STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE3, DWORD) PURE;
+ STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS, LPDIRECTDRAWSURFACE3 FAR *) PURE;
+ STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
+ STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
+ STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
+ STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
+ STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
+ STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
+ STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC) PURE;
+ STDMETHOD(IsLost)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC,DWORD,HANDLE) PURE;
+ STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
+ STDMETHOD(Restore)(THIS) PURE;
+ STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
+ STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
+ STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
+ STDMETHOD(Unlock)(THIS_ LPVOID) PURE;
+ STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE3,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
+ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
+ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE3) PURE;
+ /*** Added in the v2 interface ***/
+ STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
+ STDMETHOD(PageLock)(THIS_ DWORD) PURE;
+ STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
+ /*** Added in the V3 interface ***/
+ STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC, DWORD) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface3_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface3_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawSurface3_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface3_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface3_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface3_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface3_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface3_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface3_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b)
+#define IDirectDrawSurface3_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface3_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface3_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface3_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface3_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface3_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface3_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface3_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface3_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface3_IsLost(p) (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface3_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface3_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface3_Restore(p) (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface3_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface3_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface3_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface3_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface3_Unlock(p,b) (p)->lpVtbl->Unlock(p,b)
+#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
+#define IDirectDrawSurface3_PageLock(p,a) (p)->lpVtbl->PageLock(p,a)
+#define IDirectDrawSurface3_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a)
+#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b)
+#else
+#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface3_AddRef(p) (p)->AddRef()
+#define IDirectDrawSurface3_Release(p) (p)->Release()
+#define IDirectDrawSurface3_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface3_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface3_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface3_Flip(p,a,b) (p)->Flip(a,b)
+#define IDirectDrawSurface3_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface3_GetBltStatus(p,a) (p)->GetBltStatus(a)
+#define IDirectDrawSurface3_GetCaps(p,b) (p)->GetCaps(b)
+#define IDirectDrawSurface3_GetClipper(p,a) (p)->GetClipper(a)
+#define IDirectDrawSurface3_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
+#define IDirectDrawSurface3_GetDC(p,a) (p)->GetDC(a)
+#define IDirectDrawSurface3_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
+#define IDirectDrawSurface3_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface3_GetPalette(p,a) (p)->GetPalette(a)
+#define IDirectDrawSurface3_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
+#define IDirectDrawSurface3_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface3_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectDrawSurface3_IsLost(p) (p)->IsLost()
+#define IDirectDrawSurface3_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface3_ReleaseDC(p,a) (p)->ReleaseDC(a)
+#define IDirectDrawSurface3_Restore(p) (p)->Restore()
+#define IDirectDrawSurface3_SetClipper(p,a) (p)->SetClipper(a)
+#define IDirectDrawSurface3_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
+#define IDirectDrawSurface3_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface3_SetPalette(p,a) (p)->SetPalette(a)
+#define IDirectDrawSurface3_Unlock(p,b) (p)->Unlock(b)
+#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
+#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->GetDDInterface(a)
+#define IDirectDrawSurface3_PageLock(p,a) (p)->PageLock(a)
+#define IDirectDrawSurface3_PageUnlock(p,a) (p)->PageUnlock(a)
+#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b)
+#endif
+
+/*
+ * IDirectDrawSurface4 and related interfaces
+ */
+#undef INTERFACE
+#define INTERFACE IDirectDrawSurface4
+DECLARE_INTERFACE_( IDirectDrawSurface4, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawSurface methods ***/
+ STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE4) PURE;
+ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
+ STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE4, LPRECT,DWORD, LPDDBLTFX) PURE;
+ STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
+ STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE4, LPRECT,DWORD) PURE;
+ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE4) PURE;
+ STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK2) PURE;
+ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK2) PURE;
+ STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE4, DWORD) PURE;
+ STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2, LPDIRECTDRAWSURFACE4 FAR *) PURE;
+ STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2) PURE;
+ STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
+ STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
+ STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
+ STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
+ STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
+ STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC2) PURE;
+ STDMETHOD(IsLost)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE) PURE;
+ STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
+ STDMETHOD(Restore)(THIS) PURE;
+ STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
+ STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
+ STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
+ STDMETHOD(Unlock)(THIS_ LPRECT) PURE;
+ STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE4,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
+ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
+ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE4) PURE;
+ /*** Added in the v2 interface ***/
+ STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
+ STDMETHOD(PageLock)(THIS_ DWORD) PURE;
+ STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
+ /*** Added in the v3 interface ***/
+ STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2, DWORD) PURE;
+ /*** Added in the v4 interface ***/
+ STDMETHOD(SetPrivateData)(THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE;
+ STDMETHOD(GetPrivateData)(THIS_ REFGUID, LPVOID, LPDWORD) PURE;
+ STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+ STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD) PURE;
+ STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawSurface4_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface4_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface4_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawSurface4_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface4_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface4_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface4_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface4_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface4_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface4_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b)
+#define IDirectDrawSurface4_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface4_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface4_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface4_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface4_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface4_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface4_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface4_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface4_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface4_IsLost(p) (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface4_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface4_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface4_Restore(p) (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface4_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface4_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface4_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface4_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface4_Unlock(p,b) (p)->lpVtbl->Unlock(p,b)
+#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+#define IDirectDrawSurface4_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
+#define IDirectDrawSurface4_PageLock(p,a) (p)->lpVtbl->PageLock(p,a)
+#define IDirectDrawSurface4_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a)
+#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b)
+#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirectDrawSurface4_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirectDrawSurface4_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirectDrawSurface4_GetUniquenessValue(p, a) (p)->lpVtbl->GetUniquenessValue(p, a)
+#define IDirectDrawSurface4_ChangeUniquenessValue(p) (p)->lpVtbl->ChangeUniquenessValue(p)
+#else
+#define IDirectDrawSurface4_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface4_AddRef(p) (p)->AddRef()
+#define IDirectDrawSurface4_Release(p) (p)->Release()
+#define IDirectDrawSurface4_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface4_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface4_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface4_Flip(p,a,b) (p)->Flip(a,b)
+#define IDirectDrawSurface4_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface4_GetBltStatus(p,a) (p)->GetBltStatus(a)
+#define IDirectDrawSurface4_GetCaps(p,b) (p)->GetCaps(b)
+#define IDirectDrawSurface4_GetClipper(p,a) (p)->GetClipper(a)
+#define IDirectDrawSurface4_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
+#define IDirectDrawSurface4_GetDC(p,a) (p)->GetDC(a)
+#define IDirectDrawSurface4_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
+#define IDirectDrawSurface4_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface4_GetPalette(p,a) (p)->GetPalette(a)
+#define IDirectDrawSurface4_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
+#define IDirectDrawSurface4_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface4_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectDrawSurface4_IsLost(p) (p)->IsLost()
+#define IDirectDrawSurface4_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface4_ReleaseDC(p,a) (p)->ReleaseDC(a)
+#define IDirectDrawSurface4_Restore(p) (p)->Restore()
+#define IDirectDrawSurface4_SetClipper(p,a) (p)->SetClipper(a)
+#define IDirectDrawSurface4_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
+#define IDirectDrawSurface4_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface4_SetPalette(p,a) (p)->SetPalette(a)
+#define IDirectDrawSurface4_Unlock(p,b) (p)->Unlock(b)
+#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
+#define IDirectDrawSurface4_GetDDInterface(p,a) (p)->GetDDInterface(a)
+#define IDirectDrawSurface4_PageLock(p,a) (p)->PageLock(a)
+#define IDirectDrawSurface4_PageUnlock(p,a) (p)->PageUnlock(a)
+#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b)
+#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirectDrawSurface4_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
+#define IDirectDrawSurface4_FreePrivateData(p,a) (p)->FreePrivateData(a)
+#define IDirectDrawSurface4_GetUniquenessValue(p, a) (p)->GetUniquenessValue(a)
+#define IDirectDrawSurface4_ChangeUniquenessValue(p) (p)->ChangeUniquenessValue()
+#endif
+
+/*
+ * IDirectDrawSurface7 and related interfaces
+ */
+#undef INTERFACE
+#define INTERFACE IDirectDrawSurface7
+DECLARE_INTERFACE_( IDirectDrawSurface7, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawSurface methods ***/
+ STDMETHOD(AddAttachedSurface)(THIS_ LPDIRECTDRAWSURFACE7) PURE;
+ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
+ STDMETHOD(Blt)(THIS_ LPRECT,LPDIRECTDRAWSURFACE7, LPRECT,DWORD, LPDDBLTFX) PURE;
+ STDMETHOD(BltBatch)(THIS_ LPDDBLTBATCH, DWORD, DWORD ) PURE;
+ STDMETHOD(BltFast)(THIS_ DWORD,DWORD,LPDIRECTDRAWSURFACE7, LPRECT,DWORD) PURE;
+ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD,LPDIRECTDRAWSURFACE7) PURE;
+ STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID,LPDDENUMSURFACESCALLBACK7) PURE;
+ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD,LPVOID,LPDDENUMSURFACESCALLBACK7) PURE;
+ STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE7, DWORD) PURE;
+ STDMETHOD(GetAttachedSurface)(THIS_ LPDDSCAPS2, LPDIRECTDRAWSURFACE7 FAR *) PURE;
+ STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetCaps)(THIS_ LPDDSCAPS2) PURE;
+ STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER FAR*) PURE;
+ STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(GetDC)(THIS_ HDC FAR *) PURE;
+ STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
+ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG ) PURE;
+ STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE FAR*) PURE;
+ STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
+ STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC2) PURE;
+ STDMETHOD(Initialize)(THIS_ LPDIRECTDRAW, LPDDSURFACEDESC2) PURE;
+ STDMETHOD(IsLost)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ LPRECT,LPDDSURFACEDESC2,DWORD,HANDLE) PURE;
+ STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
+ STDMETHOD(Restore)(THIS) PURE;
+ STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
+ STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
+ STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
+ STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
+ STDMETHOD(Unlock)(THIS_ LPRECT) PURE;
+ STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE7,LPRECT,DWORD, LPDDOVERLAYFX) PURE;
+ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD) PURE;
+ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE7) PURE;
+ /*** Added in the v2 interface ***/
+ STDMETHOD(GetDDInterface)(THIS_ LPVOID FAR *) PURE;
+ STDMETHOD(PageLock)(THIS_ DWORD) PURE;
+ STDMETHOD(PageUnlock)(THIS_ DWORD) PURE;
+ /*** Added in the v3 interface ***/
+ STDMETHOD(SetSurfaceDesc)(THIS_ LPDDSURFACEDESC2, DWORD) PURE;
+ /*** Added in the v4 interface ***/
+ STDMETHOD(SetPrivateData)(THIS_ REFGUID, LPVOID, DWORD, DWORD) PURE;
+ STDMETHOD(GetPrivateData)(THIS_ REFGUID, LPVOID, LPDWORD) PURE;
+ STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+ STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD) PURE;
+ STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
+ /*** Moved Texture7 methods here ***/
+ STDMETHOD(SetPriority)(THIS_ DWORD) PURE;
+ STDMETHOD(GetPriority)(THIS_ LPDWORD) PURE;
+ STDMETHOD(SetLOD)(THIS_ DWORD) PURE;
+ STDMETHOD(GetLOD)(THIS_ LPDWORD) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawSurface7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface7_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface7_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawSurface7_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface7_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface7_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface7_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface7_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface7_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface7_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface7_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface7_GetCaps(p,b) (p)->lpVtbl->GetCaps(p,b)
+#define IDirectDrawSurface7_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface7_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface7_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface7_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface7_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface7_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface7_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface7_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface7_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface7_IsLost(p) (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface7_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface7_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface7_Restore(p) (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface7_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface7_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface7_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface7_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface7_Unlock(p,b) (p)->lpVtbl->Unlock(p,b)
+#define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface7_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+#define IDirectDrawSurface7_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
+#define IDirectDrawSurface7_PageLock(p,a) (p)->lpVtbl->PageLock(p,a)
+#define IDirectDrawSurface7_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a)
+#define IDirectDrawSurface7_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b)
+#define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirectDrawSurface7_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirectDrawSurface7_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirectDrawSurface7_GetUniquenessValue(p, a) (p)->lpVtbl->GetUniquenessValue(p, a)
+#define IDirectDrawSurface7_ChangeUniquenessValue(p) (p)->lpVtbl->ChangeUniquenessValue(p)
+#define IDirectDrawSurface7_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a)
+#define IDirectDrawSurface7_GetPriority(p,a) (p)->lpVtbl->GetPriority(p,a)
+#define IDirectDrawSurface7_SetLOD(p,a) (p)->lpVtbl->SetLOD(p,a)
+#define IDirectDrawSurface7_GetLOD(p,a) (p)->lpVtbl->GetLOD(p,a)
+#else
+#define IDirectDrawSurface7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface7_AddRef(p) (p)->AddRef()
+#define IDirectDrawSurface7_Release(p) (p)->Release()
+#define IDirectDrawSurface7_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface7_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface7_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface7_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface7_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface7_Flip(p,a,b) (p)->Flip(a,b)
+#define IDirectDrawSurface7_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface7_GetBltStatus(p,a) (p)->GetBltStatus(a)
+#define IDirectDrawSurface7_GetCaps(p,b) (p)->GetCaps(b)
+#define IDirectDrawSurface7_GetClipper(p,a) (p)->GetClipper(a)
+#define IDirectDrawSurface7_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
+#define IDirectDrawSurface7_GetDC(p,a) (p)->GetDC(a)
+#define IDirectDrawSurface7_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
+#define IDirectDrawSurface7_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface7_GetPalette(p,a) (p)->GetPalette(a)
+#define IDirectDrawSurface7_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
+#define IDirectDrawSurface7_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface7_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectDrawSurface7_IsLost(p) (p)->IsLost()
+#define IDirectDrawSurface7_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface7_ReleaseDC(p,a) (p)->ReleaseDC(a)
+#define IDirectDrawSurface7_Restore(p) (p)->Restore()
+#define IDirectDrawSurface7_SetClipper(p,a) (p)->SetClipper(a)
+#define IDirectDrawSurface7_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
+#define IDirectDrawSurface7_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface7_SetPalette(p,a) (p)->SetPalette(a)
+#define IDirectDrawSurface7_Unlock(p,b) (p)->Unlock(b)
+#define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface7_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
+#define IDirectDrawSurface7_GetDDInterface(p,a) (p)->GetDDInterface(a)
+#define IDirectDrawSurface7_PageLock(p,a) (p)->PageLock(a)
+#define IDirectDrawSurface7_PageUnlock(p,a) (p)->PageUnlock(a)
+#define IDirectDrawSurface7_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b)
+#define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirectDrawSurface7_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
+#define IDirectDrawSurface7_FreePrivateData(p,a) (p)->FreePrivateData(a)
+#define IDirectDrawSurface7_GetUniquenessValue(p, a) (p)->GetUniquenessValue(a)
+#define IDirectDrawSurface7_ChangeUniquenessValue(p) (p)->ChangeUniquenessValue()
+#define IDirectDrawSurface7_SetPriority(p,a) (p)->SetPriority(a)
+#define IDirectDrawSurface7_GetPriority(p,a) (p)->GetPriority(a)
+#define IDirectDrawSurface7_SetLOD(p,a) (p)->SetLOD(a)
+#define IDirectDrawSurface7_GetLOD(p,a) (p)->GetLOD(a)
+#endif
+
+
+/*
+ * IDirectDrawColorControl
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDrawColorControl
+DECLARE_INTERFACE_( IDirectDrawColorControl, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawColorControl methods ***/
+ STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
+ STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawColorControl_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDrawColorControl_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawColorControl_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawColorControl_GetColorControls(p, a) (p)->lpVtbl->GetColorControls(p, a)
+#define IDirectDrawColorControl_SetColorControls(p, a) (p)->lpVtbl->SetColorControls(p, a)
+#else
+#define IDirectDrawColorControl_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
+#define IDirectDrawColorControl_AddRef(p) (p)->AddRef()
+#define IDirectDrawColorControl_Release(p) (p)->Release()
+#define IDirectDrawColorControl_GetColorControls(p, a) (p)->GetColorControls(a)
+#define IDirectDrawColorControl_SetColorControls(p, a) (p)->SetColorControls(a)
+#endif
+
+#endif
+
+
+/*
+ * IDirectDrawGammaControl
+ */
+#if defined( _WIN32 ) && !defined( _NO_COM )
+#undef INTERFACE
+#define INTERFACE IDirectDrawGammaControl
+DECLARE_INTERFACE_( IDirectDrawGammaControl, IUnknown )
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ /*** IDirectDrawGammaControl methods ***/
+ STDMETHOD(GetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE;
+ STDMETHOD(SetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE;
+};
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectDrawGammaControl_QueryInterface(p, a, b) (p)->lpVtbl->QueryInterface(p, a, b)
+#define IDirectDrawGammaControl_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawGammaControl_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectDrawGammaControl_GetGammaRamp(p, a, b) (p)->lpVtbl->GetGammaRamp(p, a, b)
+#define IDirectDrawGammaControl_SetGammaRamp(p, a, b) (p)->lpVtbl->SetGammaRamp(p, a, b)
+#else
+#define IDirectDrawGammaControl_QueryInterface(p, a, b) (p)->QueryInterface(a, b)
+#define IDirectDrawGammaControl_AddRef(p) (p)->AddRef()
+#define IDirectDrawGammaControl_Release(p) (p)->Release()
+#define IDirectDrawGammaControl_GetGammaRamp(p, a, b) (p)->GetGammaRamp(a, b)
+#define IDirectDrawGammaControl_SetGammaRamp(p, a, b) (p)->SetGammaRamp(a, b)
+#endif
+
+#endif
+
+
+
+#endif
+
+
+/*
+ * DDSURFACEDESC
+ */
+typedef struct _DDSURFACEDESC
+{
+ DWORD dwSize; // size of the DDSURFACEDESC structure
+ DWORD dwFlags; // determines what fields are valid
+ DWORD dwHeight; // height of surface to be created
+ DWORD dwWidth; // width of input surface
+ union
+ {
+ LONG lPitch; // distance to start of next line (return value only)
+ DWORD dwLinearSize; // Formless late-allocated optimized surface size
+ } DUMMYUNIONNAMEN(1);
+ DWORD dwBackBufferCount; // number of back buffers requested
+ union
+ {
+ DWORD dwMipMapCount; // number of mip-map levels requested
+ DWORD dwZBufferBitDepth; // depth of Z buffer requested
+ DWORD dwRefreshRate; // refresh rate (used when display mode is described)
+ } DUMMYUNIONNAMEN(2);
+ DWORD dwAlphaBitDepth; // depth of alpha buffer requested
+ DWORD dwReserved; // reserved
+ LPVOID lpSurface; // pointer to the associated surface memory
+ DDCOLORKEY ddckCKDestOverlay; // color key for destination overlay use
+ DDCOLORKEY ddckCKDestBlt; // color key for destination blt use
+ DDCOLORKEY ddckCKSrcOverlay; // color key for source overlay use
+ DDCOLORKEY ddckCKSrcBlt; // color key for source blt use
+ DDPIXELFORMAT ddpfPixelFormat; // pixel format description of the surface
+ DDSCAPS ddsCaps; // direct draw surface capabilities
+} DDSURFACEDESC;
+
+/*
+ * DDSURFACEDESC2
+ */
+typedef struct _DDSURFACEDESC2
+{
+ DWORD dwSize; // size of the DDSURFACEDESC structure
+ DWORD dwFlags; // determines what fields are valid
+ DWORD dwHeight; // height of surface to be created
+ DWORD dwWidth; // width of input surface
+ union
+ {
+ LONG lPitch; // distance to start of next line (return value only)
+ DWORD dwLinearSize; // Formless late-allocated optimized surface size
+ } DUMMYUNIONNAMEN(1);
+ union
+ {
+ DWORD dwBackBufferCount; // number of back buffers requested
+ DWORD dwDepth; // the depth if this is a volume texture
+ } DUMMYUNIONNAMEN(5);
+ union
+ {
+ DWORD dwMipMapCount; // number of mip-map levels requestde
+ // dwZBufferBitDepth removed, use ddpfPixelFormat one instead
+ DWORD dwRefreshRate; // refresh rate (used when display mode is described)
+ DWORD dwSrcVBHandle; // The source used in VB::Optimize
+ } DUMMYUNIONNAMEN(2);
+ DWORD dwAlphaBitDepth; // depth of alpha buffer requested
+ DWORD dwReserved; // reserved
+ LPVOID lpSurface; // pointer to the associated surface memory
+ union
+ {
+ DDCOLORKEY ddckCKDestOverlay; // color key for destination overlay use
+ DWORD dwEmptyFaceColor; // Physical color for empty cubemap faces
+ } DUMMYUNIONNAMEN(3);
+ DDCOLORKEY ddckCKDestBlt; // color key for destination blt use
+ DDCOLORKEY ddckCKSrcOverlay; // color key for source overlay use
+ DDCOLORKEY ddckCKSrcBlt; // color key for source blt use
+ union
+ {
+ DDPIXELFORMAT ddpfPixelFormat; // pixel format description of the surface
+ DWORD dwFVF; // vertex format description of vertex buffers
+ } DUMMYUNIONNAMEN(4);
+ DDSCAPS2 ddsCaps; // direct draw surface capabilities
+ DWORD dwTextureStage; // stage in multitexture cascade
+} DDSURFACEDESC2;
+
+/*
+ * ddsCaps field is valid.
+ */
+#define DDSD_CAPS 0x00000001l // default
+
+/*
+ * dwHeight field is valid.
+ */
+#define DDSD_HEIGHT 0x00000002l
+
+/*
+ * dwWidth field is valid.
+ */
+#define DDSD_WIDTH 0x00000004l
+
+/*
+ * lPitch is valid.
+ */
+#define DDSD_PITCH 0x00000008l
+
+/*
+ * dwBackBufferCount is valid.
+ */
+#define DDSD_BACKBUFFERCOUNT 0x00000020l
+
+/*
+ * dwZBufferBitDepth is valid. (shouldnt be used in DDSURFACEDESC2)
+ */
+#define DDSD_ZBUFFERBITDEPTH 0x00000040l
+
+/*
+ * dwAlphaBitDepth is valid.
+ */
+#define DDSD_ALPHABITDEPTH 0x00000080l
+
+
+/*
+ * lpSurface is valid.
+ */
+#define DDSD_LPSURFACE 0x00000800l
+
+/*
+ * ddpfPixelFormat is valid.
+ */
+#define DDSD_PIXELFORMAT 0x00001000l
+
+/*
+ * ddckCKDestOverlay is valid.
+ */
+#define DDSD_CKDESTOVERLAY 0x00002000l
+
+/*
+ * ddckCKDestBlt is valid.
+ */
+#define DDSD_CKDESTBLT 0x00004000l
+
+/*
+ * ddckCKSrcOverlay is valid.
+ */
+#define DDSD_CKSRCOVERLAY 0x00008000l
+
+/*
+ * ddckCKSrcBlt is valid.
+ */
+#define DDSD_CKSRCBLT 0x00010000l
+
+/*
+ * dwMipMapCount is valid.
+ */
+#define DDSD_MIPMAPCOUNT 0x00020000l
+
+ /*
+ * dwRefreshRate is valid
+ */
+#define DDSD_REFRESHRATE 0x00040000l
+
+/*
+ * dwLinearSize is valid
+ */
+#define DDSD_LINEARSIZE 0x00080000l
+
+/*
+ * dwTextureStage is valid
+ */
+#define DDSD_TEXTURESTAGE 0x00100000l
+/*
+ * dwFVF is valid
+ */
+#define DDSD_FVF 0x00200000l
+/*
+ * dwSrcVBHandle is valid
+ */
+#define DDSD_SRCVBHANDLE 0x00400000l
+
+/*
+ * dwDepth is valid
+ */
+#define DDSD_DEPTH 0x00800000l
+
+/*
+ * All input fields are valid.
+ */
+#define DDSD_ALL 0x00fff9eel
+
+/*
+ * DDOPTSURFACEDESC
+ */
+typedef struct _DDOPTSURFACEDESC
+{
+ DWORD dwSize; // size of the DDOPTSURFACEDESC structure
+ DWORD dwFlags; // determines what fields are valid
+ DDSCAPS2 ddSCaps; // Common caps like: Memory type
+ DDOSCAPS ddOSCaps; // Common caps like: Memory type
+ GUID guid; // Compression technique GUID
+ DWORD dwCompressionRatio; // Compression ratio
+} DDOPTSURFACEDESC;
+
+/*
+ * guid field is valid.
+ */
+#define DDOSD_GUID 0x00000001l
+
+/*
+ * dwCompressionRatio field is valid.
+ */
+#define DDOSD_COMPRESSION_RATIO 0x00000002l
+
+/*
+ * ddSCaps field is valid.
+ */
+#define DDOSD_SCAPS 0x00000004l
+
+/*
+ * ddOSCaps field is valid.
+ */
+#define DDOSD_OSCAPS 0x00000008l
+
+/*
+ * All input fields are valid.
+ */
+#define DDOSD_ALL 0x0000000fl
+
+/*
+ * The surface's optimized pixelformat is compressed
+ */
+#define DDOSDCAPS_OPTCOMPRESSED 0x00000001l
+
+/*
+ * The surface's optimized pixelformat is reordered
+ */
+#define DDOSDCAPS_OPTREORDERED 0x00000002l
+
+/*
+ * The opt surface is a monolithic mipmap
+ */
+#define DDOSDCAPS_MONOLITHICMIPMAP 0x00000004l
+
+/*
+ * The valid Surf caps:
+ * #define DDSCAPS_SYSTEMMEMORY 0x00000800l
+ * #define DDSCAPS_VIDEOMEMORY 0x00004000l
+ * #define DDSCAPS_LOCALVIDMEM 0x10000000l
+ * #define DDSCAPS_NONLOCALVIDMEM 0x20000000l
+ */
+#define DDOSDCAPS_VALIDSCAPS 0x30004800l
+
+/*
+ * The valid OptSurf caps
+ */
+#define DDOSDCAPS_VALIDOSCAPS 0x00000007l
+
+
+/*
+ * DDCOLORCONTROL
+ */
+typedef struct _DDCOLORCONTROL
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ LONG lBrightness;
+ LONG lContrast;
+ LONG lHue;
+ LONG lSaturation;
+ LONG lSharpness;
+ LONG lGamma;
+ LONG lColorEnable;
+ DWORD dwReserved1;
+} DDCOLORCONTROL;
+
+
+/*
+ * lBrightness field is valid.
+ */
+#define DDCOLOR_BRIGHTNESS 0x00000001l
+
+/*
+ * lContrast field is valid.
+ */
+#define DDCOLOR_CONTRAST 0x00000002l
+
+/*
+ * lHue field is valid.
+ */
+#define DDCOLOR_HUE 0x00000004l
+
+/*
+ * lSaturation field is valid.
+ */
+#define DDCOLOR_SATURATION 0x00000008l
+
+/*
+ * lSharpness field is valid.
+ */
+#define DDCOLOR_SHARPNESS 0x00000010l
+
+/*
+ * lGamma field is valid.
+ */
+#define DDCOLOR_GAMMA 0x00000020l
+
+/*
+ * lColorEnable field is valid.
+ */
+#define DDCOLOR_COLORENABLE 0x00000040l
+
+
+
+/*============================================================================
+ *
+ * Direct Draw Capability Flags
+ *
+ * These flags are used to describe the capabilities of a given Surface.
+ * All flags are bit flags.
+ *
+ *==========================================================================*/
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE CAPABILITY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * This bit is reserved. It should not be specified.
+ */
+#define DDSCAPS_RESERVED1 0x00000001l
+
+/*
+ * Indicates that this surface contains alpha-only information.
+ * (To determine if a surface is RGBA/YUVA, the pixel format must be
+ * interrogated.)
+ */
+#define DDSCAPS_ALPHA 0x00000002l
+
+/*
+ * Indicates that this surface is a backbuffer. It is generally
+ * set by CreateSurface when the DDSCAPS_FLIP capability bit is set.
+ * It indicates that this surface is THE back buffer of a surface
+ * flipping structure. DirectDraw supports N surfaces in a
+ * surface flipping structure. Only the surface that immediately
+ * precedeces the DDSCAPS_FRONTBUFFER has this capability bit set.
+ * The other surfaces are identified as back buffers by the presence
+ * of the DDSCAPS_FLIP capability, their attachment order, and the
+ * absence of the DDSCAPS_FRONTBUFFER and DDSCAPS_BACKBUFFER
+ * capabilities. The bit is sent to CreateSurface when a standalone
+ * back buffer is being created. This surface could be attached to
+ * a front buffer and/or back buffers to form a flipping surface
+ * structure after the CreateSurface call. See AddAttachments for
+ * a detailed description of the behaviors in this case.
+ */
+#define DDSCAPS_BACKBUFFER 0x00000004l
+
+/*
+ * Indicates a complex surface structure is being described. A
+ * complex surface structure results in the creation of more than
+ * one surface. The additional surfaces are attached to the root
+ * surface. The complex structure can only be destroyed by
+ * destroying the root.
+ */
+#define DDSCAPS_COMPLEX 0x00000008l
+
+/*
+ * Indicates that this surface is a part of a surface flipping structure.
+ * When it is passed to CreateSurface the DDSCAPS_FRONTBUFFER and
+ * DDSCAP_BACKBUFFER bits are not set. They are set by CreateSurface
+ * on the resulting creations. The dwBackBufferCount field in the
+ * DDSURFACEDESC structure must be set to at least 1 in order for
+ * the CreateSurface call to succeed. The DDSCAPS_COMPLEX capability
+ * must always be set with creating multiple surfaces through CreateSurface.
+ */
+#define DDSCAPS_FLIP 0x00000010l
+
+/*
+ * Indicates that this surface is THE front buffer of a surface flipping
+ * structure. It is generally set by CreateSurface when the DDSCAPS_FLIP
+ * capability bit is set.
+ * If this capability is sent to CreateSurface then a standalonw front buffer
+ * is created. This surface will not have the DDSCAPS_FLIP capability.
+ * It can be attached to other back buffers to form a flipping structure.
+ * See AddAttachments for a detailed description of the behaviors in this
+ * case.
+ */
+#define DDSCAPS_FRONTBUFFER 0x00000020l
+
+/*
+ * Indicates that this surface is any offscreen surface that is not an overlay,
+ * texture, zbuffer, front buffer, back buffer, or alpha surface. It is used
+ * to identify plain vanilla surfaces.
+ */
+#define DDSCAPS_OFFSCREENPLAIN 0x00000040l
+
+/*
+ * Indicates that this surface is an overlay. It may or may not be directly visible
+ * depending on whether or not it is currently being overlayed onto the primary
+ * surface. DDSCAPS_VISIBLE can be used to determine whether or not it is being
+ * overlayed at the moment.
+ */
+#define DDSCAPS_OVERLAY 0x00000080l
+
+/*
+ * Indicates that unique DirectDrawPalette objects can be created and
+ * attached to this surface.
+ */
+#define DDSCAPS_PALETTE 0x00000100l
+
+/*
+ * Indicates that this surface is the primary surface. The primary
+ * surface represents what the user is seeing at the moment.
+ */
+#define DDSCAPS_PRIMARYSURFACE 0x00000200l
+
+
+/*
+ * This flag used to be DDSCAPS_PRIMARYSURFACELEFT, which is now
+ * obsolete.
+ */
+#define DDSCAPS_RESERVED3 0x00000400l
+#define DDSCAPS_PRIMARYSURFACELEFT 0x00000000l
+
+/*
+ * Indicates that this surface memory was allocated in system memory
+ */
+#define DDSCAPS_SYSTEMMEMORY 0x00000800l
+
+/*
+ * Indicates that this surface can be used as a 3D texture. It does not
+ * indicate whether or not the surface is being used for that purpose.
+ */
+#define DDSCAPS_TEXTURE 0x00001000l
+
+/*
+ * Indicates that a surface may be a destination for 3D rendering. This
+ * bit must be set in order to query for a Direct3D Device Interface
+ * from this surface.
+ */
+#define DDSCAPS_3DDEVICE 0x00002000l
+
+/*
+ * Indicates that this surface exists in video memory.
+ */
+#define DDSCAPS_VIDEOMEMORY 0x00004000l
+
+/*
+ * Indicates that changes made to this surface are immediately visible.
+ * It is always set for the primary surface and is set for overlays while
+ * they are being overlayed and texture maps while they are being textured.
+ */
+#define DDSCAPS_VISIBLE 0x00008000l
+
+/*
+ * Indicates that only writes are permitted to the surface. Read accesses
+ * from the surface may or may not generate a protection fault, but the
+ * results of a read from this surface will not be meaningful. READ ONLY.
+ */
+#define DDSCAPS_WRITEONLY 0x00010000l
+
+/*
+ * Indicates that this surface is a z buffer. A z buffer does not contain
+ * displayable information. Instead it contains bit depth information that is
+ * used to determine which pixels are visible and which are obscured.
+ */
+#define DDSCAPS_ZBUFFER 0x00020000l
+
+/*
+ * Indicates surface will have a DC associated long term
+ */
+#define DDSCAPS_OWNDC 0x00040000l
+
+/*
+ * Indicates surface should be able to receive live video
+ */
+#define DDSCAPS_LIVEVIDEO 0x00080000l
+
+/*
+ * Indicates surface should be able to have a stream decompressed
+ * to it by the hardware.
+ */
+#define DDSCAPS_HWCODEC 0x00100000l
+
+/*
+ * Surface is a ModeX surface.
+ *
+ */
+#define DDSCAPS_MODEX 0x00200000l
+
+/*
+ * Indicates surface is one level of a mip-map. This surface will
+ * be attached to other DDSCAPS_MIPMAP surfaces to form the mip-map.
+ * This can be done explicitly, by creating a number of surfaces and
+ * attaching them with AddAttachedSurface or by implicitly by CreateSurface.
+ * If this bit is set then DDSCAPS_TEXTURE must also be set.
+ */
+#define DDSCAPS_MIPMAP 0x00400000l
+
+/*
+ * This bit is reserved. It should not be specified.
+ */
+#define DDSCAPS_RESERVED2 0x00800000l
+
+
+/*
+ * Indicates that memory for the surface is not allocated until the surface
+ * is loaded (via the Direct3D texture Load() function).
+ */
+#define DDSCAPS_ALLOCONLOAD 0x04000000l
+
+/*
+ * Indicates that the surface will recieve data from a video port.
+ */
+#define DDSCAPS_VIDEOPORT 0x08000000l
+
+/*
+ * Indicates that a video memory surface is resident in true, local video
+ * memory rather than non-local video memory. If this flag is specified then
+ * so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with
+ * DDSCAPS_NONLOCALVIDMEM.
+ */
+#define DDSCAPS_LOCALVIDMEM 0x10000000l
+
+/*
+ * Indicates that a video memory surface is resident in non-local video
+ * memory rather than true, local video memory. If this flag is specified
+ * then so must DDSCAPS_VIDEOMEMORY. This flag is mutually exclusive with
+ * DDSCAPS_LOCALVIDMEM.
+ */
+#define DDSCAPS_NONLOCALVIDMEM 0x20000000l
+
+/*
+ * Indicates that this surface is a standard VGA mode surface, and not a
+ * ModeX surface. (This flag will never be set in combination with the
+ * DDSCAPS_MODEX flag).
+ */
+#define DDSCAPS_STANDARDVGAMODE 0x40000000l
+
+/*
+ * Indicates that this surface will be an optimized surface. This flag is
+ * currently only valid in conjunction with the DDSCAPS_TEXTURE flag. The surface
+ * will be created without any underlying video memory until loaded.
+ */
+#define DDSCAPS_OPTIMIZED 0x80000000l
+
+
+
+/*
+ * This bit is reserved
+ */
+#define DDSCAPS2_RESERVED4 0x00000002L
+#define DDSCAPS2_HARDWAREDEINTERLACE 0x00000000L
+
+/*
+ * Indicates to the driver that this surface will be locked very frequently
+ * (for procedural textures, dynamic lightmaps, etc). Surfaces with this cap
+ * set must also have DDSCAPS_TEXTURE. This cap cannot be used with
+ * DDSCAPS2_HINTSTATIC and DDSCAPS2_OPAQUE.
+ */
+#define DDSCAPS2_HINTDYNAMIC 0x00000004L
+
+/*
+ * Indicates to the driver that this surface can be re-ordered/retiled on
+ * load. This operation will not change the size of the texture. It is
+ * relatively fast and symmetrical, since the application may lock these
+ * bits (although it will take a performance hit when doing so). Surfaces
+ * with this cap set must also have DDSCAPS_TEXTURE. This cap cannot be
+ * used with DDSCAPS2_HINTDYNAMIC and DDSCAPS2_OPAQUE.
+ */
+#define DDSCAPS2_HINTSTATIC 0x00000008L
+
+/*
+ * Indicates that the client would like this texture surface to be managed by the
+ * DirectDraw/Direct3D runtime. Surfaces with this cap set must also have
+ * DDSCAPS_TEXTURE set.
+ */
+#define DDSCAPS2_TEXTUREMANAGE 0x00000010L
+
+/*
+ * These bits are reserved for internal use */
+#define DDSCAPS2_RESERVED1 0x00000020L
+#define DDSCAPS2_RESERVED2 0x00000040L
+
+/*
+ * Indicates to the driver that this surface will never be locked again.
+ * The driver is free to optimize this surface via retiling and actual compression.
+ * All calls to Lock() or Blts from this surface will fail. Surfaces with this
+ * cap set must also have DDSCAPS_TEXTURE. This cap cannot be used with
+ * DDSCAPS2_HINTDYNAMIC and DDSCAPS2_HINTSTATIC.
+ */
+#define DDSCAPS2_OPAQUE 0x00000080L
+
+/*
+ * Applications should set this bit at CreateSurface time to indicate that they
+ * intend to use antialiasing. Only valid if DDSCAPS_3DDEVICE is also set.
+ */
+#define DDSCAPS2_HINTANTIALIASING 0x00000100L
+
+
+/*
+ * This flag is used at CreateSurface time to indicate that this set of
+ * surfaces is a cubic environment map
+ */
+#define DDSCAPS2_CUBEMAP 0x00000200L
+
+/*
+ * These flags preform two functions:
+ * - At CreateSurface time, they define which of the six cube faces are
+ * required by the application.
+ * - After creation, each face in the cubemap will have exactly one of these
+ * bits set.
+ */
+#define DDSCAPS2_CUBEMAP_POSITIVEX 0x00000400L
+#define DDSCAPS2_CUBEMAP_NEGATIVEX 0x00000800L
+#define DDSCAPS2_CUBEMAP_POSITIVEY 0x00001000L
+#define DDSCAPS2_CUBEMAP_NEGATIVEY 0x00002000L
+#define DDSCAPS2_CUBEMAP_POSITIVEZ 0x00004000L
+#define DDSCAPS2_CUBEMAP_NEGATIVEZ 0x00008000L
+
+/*
+ * This macro may be used to specify all faces of a cube map at CreateSurface time
+ */
+#define DDSCAPS2_CUBEMAP_ALLFACES ( DDSCAPS2_CUBEMAP_POSITIVEX |\
+ DDSCAPS2_CUBEMAP_NEGATIVEX |\
+ DDSCAPS2_CUBEMAP_POSITIVEY |\
+ DDSCAPS2_CUBEMAP_NEGATIVEY |\
+ DDSCAPS2_CUBEMAP_POSITIVEZ |\
+ DDSCAPS2_CUBEMAP_NEGATIVEZ )
+
+
+/*
+ * This flag is an additional flag which is present on mipmap sublevels from DX7 onwards
+ * It enables easier use of GetAttachedSurface rather than EnumAttachedSurfaces for surface
+ * constructs such as Cube Maps, wherein there are more than one mipmap surface attached
+ * to the root surface.
+ * This caps bit is ignored by CreateSurface
+ */
+#define DDSCAPS2_MIPMAPSUBLEVEL 0x00010000L
+
+/* This flag indicates that the texture should be managed by D3D only */
+#define DDSCAPS2_D3DTEXTUREMANAGE 0x00020000L
+
+/* This flag indicates that the managed surface can be safely lost */
+#define DDSCAPS2_DONOTPERSIST 0x00040000L
+
+/* indicates that this surface is part of a stereo flipping chain */
+#define DDSCAPS2_STEREOSURFACELEFT 0x00080000L
+
+
+/*
+ * Indicates that the surface is a volume.
+ * Can be combined with DDSCAPS_MIPMAP to indicate a multi-level volume
+ */
+#define DDSCAPS2_VOLUME 0x00200000L
+
+/*
+ * Indicates that the surface may be locked multiple times by the application.
+ * This cap cannot be used with DDSCAPS2_OPAQUE.
+ */
+#define DDSCAPS2_NOTUSERLOCKABLE 0x00400000L
+
+/*
+ * Indicates that the vertex buffer data can be used to render points and
+ * point sprites.
+ */
+#define DDSCAPS2_POINTS 0x00800000L
+
+/*
+ * Indicates that the vertex buffer data can be used to render rt pactches.
+ */
+#define DDSCAPS2_RTPATCHES 0x01000000L
+
+/*
+ * Indicates that the vertex buffer data can be used to render n patches.
+ */
+#define DDSCAPS2_NPATCHES 0x02000000L
+
+/*
+ * This bit is reserved for internal use
+ */
+#define DDSCAPS2_RESERVED3 0x04000000L
+
+
+/*
+ * Indicates that the contents of the backbuffer do not have to be preserved
+ * the contents of the backbuffer after they are presented.
+ */
+#define DDSCAPS2_DISCARDBACKBUFFER 0x10000000L
+
+/*
+ * Indicates that all surfaces in this creation chain should be given an alpha channel.
+ * This flag will be set on primary surface chains that may have no explicit pixel format
+ * (and thus take on the format of the current display mode).
+ * The driver should infer that all these surfaces have a format having an alpha channel.
+ * (e.g. assume D3DFMT_A8R8G8B8 if the display mode is x888.)
+ */
+#define DDSCAPS2_ENABLEALPHACHANNEL 0x20000000L
+
+/*
+ * Indicates that all surfaces in this creation chain is extended primary surface format.
+ * This flag will be set on extended primary surface chains that always have explicit pixel
+ * format and the pixel format is typically GDI (Graphics Device Interface) couldn't handle,
+ * thus only used with fullscreen application. (e.g. D3DFMT_A2R10G10B10 format)
+ */
+#define DDSCAPS2_EXTENDEDFORMATPRIMARY 0x40000000L
+
+/*
+ * Indicates that all surfaces in this creation chain is additional primary surface.
+ * This flag will be set on primary surface chains which must present on the adapter
+ * id provided on dwCaps4. Typically this will be used to create secondary primary surface
+ * on DualView display adapter.
+ */
+#define DDSCAPS2_ADDITIONALPRIMARY 0x80000000L
+
+/*
+ * This is a mask that indicates the set of bits that may be set
+ * at createsurface time to indicate number of samples per pixel
+ * when multisampling
+ */
+#define DDSCAPS3_MULTISAMPLE_MASK 0x0000001FL
+
+/*
+ * This is a mask that indicates the set of bits that may be set
+ * at createsurface time to indicate the quality level of rendering
+ * for the current number of samples per pixel
+ */
+#define DDSCAPS3_MULTISAMPLE_QUALITY_MASK 0x000000E0L
+#define DDSCAPS3_MULTISAMPLE_QUALITY_SHIFT 5
+
+/*
+ * This bit is reserved for internal use
+ */
+#define DDSCAPS3_RESERVED1 0x00000100L
+
+/*
+ * This bit is reserved for internal use
+ */
+#define DDSCAPS3_RESERVED2 0x00000200L
+
+/*
+ * This indicates whether this surface has light-weight miplevels
+ */
+#define DDSCAPS3_LIGHTWEIGHTMIPMAP 0x00000400L
+
+/*
+ * This indicates that the mipsublevels for this surface are auto-generated
+ */
+#define DDSCAPS3_AUTOGENMIPMAP 0x00000800L
+
+/*
+ * This indicates that the mipsublevels for this surface are auto-generated
+ */
+#define DDSCAPS3_DMAP 0x00001000L
+
+
+ /****************************************************************************
+ *
+ * DIRECTDRAW DRIVER CAPABILITY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Display hardware has 3D acceleration.
+ */
+#define DDCAPS_3D 0x00000001l
+
+/*
+ * Indicates that DirectDraw will support only dest rectangles that are aligned
+ * on DIRECTDRAWCAPS.dwAlignBoundaryDest boundaries of the surface, respectively.
+ * READ ONLY.
+ */
+#define DDCAPS_ALIGNBOUNDARYDEST 0x00000002l
+
+/*
+ * Indicates that DirectDraw will support only source rectangles whose sizes in
+ * BYTEs are DIRECTDRAWCAPS.dwAlignSizeDest multiples, respectively. READ ONLY.
+ */
+#define DDCAPS_ALIGNSIZEDEST 0x00000004l
+/*
+ * Indicates that DirectDraw will support only source rectangles that are aligned
+ * on DIRECTDRAWCAPS.dwAlignBoundarySrc boundaries of the surface, respectively.
+ * READ ONLY.
+ */
+#define DDCAPS_ALIGNBOUNDARYSRC 0x00000008l
+
+/*
+ * Indicates that DirectDraw will support only source rectangles whose sizes in
+ * BYTEs are DIRECTDRAWCAPS.dwAlignSizeSrc multiples, respectively. READ ONLY.
+ */
+#define DDCAPS_ALIGNSIZESRC 0x00000010l
+
+/*
+ * Indicates that DirectDraw will create video memory surfaces that have a stride
+ * alignment equal to DIRECTDRAWCAPS.dwAlignStride. READ ONLY.
+ */
+#define DDCAPS_ALIGNSTRIDE 0x00000020l
+
+/*
+ * Display hardware is capable of blt operations.
+ */
+#define DDCAPS_BLT 0x00000040l
+
+/*
+ * Display hardware is capable of asynchronous blt operations.
+ */
+#define DDCAPS_BLTQUEUE 0x00000080l
+
+/*
+ * Display hardware is capable of color space conversions during the blt operation.
+ */
+#define DDCAPS_BLTFOURCC 0x00000100l
+
+/*
+ * Display hardware is capable of stretching during blt operations.
+ */
+#define DDCAPS_BLTSTRETCH 0x00000200l
+
+/*
+ * Display hardware is shared with GDI.
+ */
+#define DDCAPS_GDI 0x00000400l
+
+/*
+ * Display hardware can overlay.
+ */
+#define DDCAPS_OVERLAY 0x00000800l
+
+/*
+ * Set if display hardware supports overlays but can not clip them.
+ */
+#define DDCAPS_OVERLAYCANTCLIP 0x00001000l
+
+/*
+ * Indicates that overlay hardware is capable of color space conversions during
+ * the overlay operation.
+ */
+#define DDCAPS_OVERLAYFOURCC 0x00002000l
+
+/*
+ * Indicates that stretching can be done by the overlay hardware.
+ */
+#define DDCAPS_OVERLAYSTRETCH 0x00004000l
+
+/*
+ * Indicates that unique DirectDrawPalettes can be created for DirectDrawSurfaces
+ * other than the primary surface.
+ */
+#define DDCAPS_PALETTE 0x00008000l
+
+/*
+ * Indicates that palette changes can be syncd with the veritcal refresh.
+ */
+#define DDCAPS_PALETTEVSYNC 0x00010000l
+
+/*
+ * Display hardware can return the current scan line.
+ */
+#define DDCAPS_READSCANLINE 0x00020000l
+
+
+/*
+ * This flag used to bo DDCAPS_STEREOVIEW, which is now obsolete
+ */
+#define DDCAPS_RESERVED1 0x00040000l
+
+/*
+ * Display hardware is capable of generating a vertical blank interrupt.
+ */
+#define DDCAPS_VBI 0x00080000l
+
+/*
+ * Supports the use of z buffers with blt operations.
+ */
+#define DDCAPS_ZBLTS 0x00100000l
+
+/*
+ * Supports Z Ordering of overlays.
+ */
+#define DDCAPS_ZOVERLAYS 0x00200000l
+
+/*
+ * Supports color key
+ */
+#define DDCAPS_COLORKEY 0x00400000l
+
+/*
+ * Supports alpha surfaces
+ */
+#define DDCAPS_ALPHA 0x00800000l
+
+/*
+ * colorkey is hardware assisted(DDCAPS_COLORKEY will also be set)
+ */
+#define DDCAPS_COLORKEYHWASSIST 0x01000000l
+
+/*
+ * no hardware support at all
+ */
+#define DDCAPS_NOHARDWARE 0x02000000l
+
+/*
+ * Display hardware is capable of color fill with bltter
+ */
+#define DDCAPS_BLTCOLORFILL 0x04000000l
+
+/*
+ * Display hardware is bank switched, and potentially very slow at
+ * random access to VRAM.
+ */
+#define DDCAPS_BANKSWITCHED 0x08000000l
+
+/*
+ * Display hardware is capable of depth filling Z-buffers with bltter
+ */
+#define DDCAPS_BLTDEPTHFILL 0x10000000l
+
+/*
+ * Display hardware is capable of clipping while bltting.
+ */
+#define DDCAPS_CANCLIP 0x20000000l
+
+/*
+ * Display hardware is capable of clipping while stretch bltting.
+ */
+#define DDCAPS_CANCLIPSTRETCHED 0x40000000l
+
+/*
+ * Display hardware is capable of bltting to or from system memory
+ */
+#define DDCAPS_CANBLTSYSMEM 0x80000000l
+
+
+ /****************************************************************************
+ *
+ * MORE DIRECTDRAW DRIVER CAPABILITY FLAGS (dwCaps2)
+ *
+ ****************************************************************************/
+
+/*
+ * Display hardware is certified
+ */
+#define DDCAPS2_CERTIFIED 0x00000001l
+
+/*
+ * Driver cannot interleave 2D operations (lock and blt) to surfaces with
+ * Direct3D rendering operations between calls to BeginScene() and EndScene()
+ */
+#define DDCAPS2_NO2DDURING3DSCENE 0x00000002l
+
+/*
+ * Display hardware contains a video port
+ */
+#define DDCAPS2_VIDEOPORT 0x00000004l
+
+/*
+ * The overlay can be automatically flipped according to the video port
+ * VSYNCs, providing automatic doubled buffered display of video port
+ * data using an overlay
+ */
+#define DDCAPS2_AUTOFLIPOVERLAY 0x00000008l
+
+/*
+ * Overlay can display each field of interlaced data individually while
+ * it is interleaved in memory without causing jittery artifacts.
+ */
+#define DDCAPS2_CANBOBINTERLEAVED 0x00000010l
+
+/*
+ * Overlay can display each field of interlaced data individually while
+ * it is not interleaved in memory without causing jittery artifacts.
+ */
+#define DDCAPS2_CANBOBNONINTERLEAVED 0x00000020l
+
+/*
+ * The overlay surface contains color controls (brightness, sharpness, etc.)
+ */
+#define DDCAPS2_COLORCONTROLOVERLAY 0x00000040l
+
+/*
+ * The primary surface contains color controls (gamma, etc.)
+ */
+#define DDCAPS2_COLORCONTROLPRIMARY 0x00000080l
+
+/*
+ * RGBZ -> RGB supported for 16:16 RGB:Z
+ */
+#define DDCAPS2_CANDROPZ16BIT 0x00000100l
+
+/*
+ * Driver supports non-local video memory.
+ */
+#define DDCAPS2_NONLOCALVIDMEM 0x00000200l
+
+/*
+ * Dirver supports non-local video memory but has different capabilities for
+ * non-local video memory surfaces. If this bit is set then so must
+ * DDCAPS2_NONLOCALVIDMEM.
+ */
+#define DDCAPS2_NONLOCALVIDMEMCAPS 0x00000400l
+
+/*
+ * Driver neither requires nor prefers surfaces to be pagelocked when performing
+ * blts involving system memory surfaces
+ */
+#define DDCAPS2_NOPAGELOCKREQUIRED 0x00000800l
+
+/*
+ * Driver can create surfaces which are wider than the primary surface
+ */
+#define DDCAPS2_WIDESURFACES 0x00001000l
+
+/*
+ * Driver supports bob without using a video port by handling the
+ * DDFLIP_ODD and DDFLIP_EVEN flags specified in Flip.
+ */
+#define DDCAPS2_CANFLIPODDEVEN 0x00002000l
+
+/*
+ * Driver supports bob using hardware
+ */
+#define DDCAPS2_CANBOBHARDWARE 0x00004000l
+
+/*
+ * Driver supports bltting any FOURCC surface to another surface of the same FOURCC
+ */
+#define DDCAPS2_COPYFOURCC 0x00008000l
+
+
+/*
+ * Driver supports loadable gamma ramps for the primary surface
+ */
+#define DDCAPS2_PRIMARYGAMMA 0x00020000l
+
+/*
+ * Driver can render in windowed mode.
+ */
+#define DDCAPS2_CANRENDERWINDOWED 0x00080000l
+
+/*
+ * A calibrator is available to adjust the gamma ramp according to the
+ * physical display properties so that the result will be identical on
+ * all calibrated systems.
+ */
+#define DDCAPS2_CANCALIBRATEGAMMA 0x00100000l
+
+/*
+ * Indicates that the driver will respond to DDFLIP_INTERVALn flags
+ */
+#define DDCAPS2_FLIPINTERVAL 0x00200000l
+
+/*
+ * Indicates that the driver will respond to DDFLIP_NOVSYNC
+ */
+#define DDCAPS2_FLIPNOVSYNC 0x00400000l
+
+/*
+ * Driver supports management of video memory, if this flag is ON,
+ * driver manages the texture if requested with DDSCAPS2_TEXTUREMANAGE on
+ * DirectX manages the texture if this flag is OFF and surface has DDSCAPS2_TEXTUREMANAGE on
+ */
+#define DDCAPS2_CANMANAGETEXTURE 0x00800000l
+
+/*
+ * The Direct3D texture manager uses this cap to decide whether to put managed
+ * surfaces in non-local video memory. If the cap is set, the texture manager will
+ * put managed surfaces in non-local vidmem. Drivers that cannot texture from
+ * local vidmem SHOULD NOT set this cap.
+ */
+#define DDCAPS2_TEXMANINNONLOCALVIDMEM 0x01000000l
+
+/*
+ * Indicates that the driver supports DX7 type of stereo in at least one mode (which may
+ * not necessarily be the current mode). Applications should use IDirectDraw7 (or higher)
+ * ::EnumDisplayModes and check the DDSURFACEDESC.ddsCaps.dwCaps2 field for the presence of
+ * DDSCAPS2_STEREOSURFACELEFT to check if a particular mode supports stereo. The application
+ * can also use IDirectDraw7(or higher)::GetDisplayMode to check the current mode.
+ */
+#define DDCAPS2_STEREO 0x02000000L
+
+/*
+ * This caps bit is intended for internal DirectDraw use.
+ * -It is only valid if DDCAPS2_NONLOCALVIDMEMCAPS is set.
+ * -If this bit is set, then DDCAPS_CANBLTSYSMEM MUST be set by the driver (and
+ * all the assoicated system memory blt caps must be correct).
+ * -It implies that the system->video blt caps in DDCAPS also apply to system to
+ * nonlocal blts. I.e. the dwSVBCaps, dwSVBCKeyCaps, dwSVBFXCaps and dwSVBRops
+ * members of DDCAPS (DDCORECAPS) are filled in correctly.
+ * -Any blt from system to nonlocal memory that matches these caps bits will
+ * be passed to the driver.
+ *
+ * NOTE: This is intended to enable the driver itself to do efficient reordering
+ * of textures. This is NOT meant to imply that hardware can write into AGP memory.
+ * This operation is not currently supported.
+ */
+#define DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL 0x04000000L
+
+/*
+ * was DDCAPS2_PUREHAL
+ */
+#define DDCAPS2_RESERVED1 0x08000000L
+
+/*
+ * Driver supports management of video memory, if this flag is ON,
+ * driver manages the resource if requested with DDSCAPS2_TEXTUREMANAGE on
+ * DirectX manages the resource if this flag is OFF and surface has DDSCAPS2_TEXTUREMANAGE on
+ */
+#define DDCAPS2_CANMANAGERESOURCE 0x10000000L
+
+/*
+ * Driver supports dynamic textures. This will allow the application to set
+ * D3DUSAGE_DYNAMIC (DDSCAPS2_HINTDYNAMIC for drivers) at texture create time.
+ * Video memory dynamic textures WILL be lockable by applications. It is
+ * expected that these locks will be very efficient (which implies that the
+ * driver should always maintain a linear copy, a pointer to which can be
+ * quickly handed out to the application).
+ */
+#define DDCAPS2_DYNAMICTEXTURES 0x20000000L
+
+/*
+ * Driver supports auto-generation of mipmaps.
+ */
+#define DDCAPS2_CANAUTOGENMIPMAP 0x40000000L
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW FX ALPHA CAPABILITY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Supports alpha blending around the edge of a source color keyed surface.
+ * For Blt.
+ */
+#define DDFXALPHACAPS_BLTALPHAEDGEBLEND 0x00000001l
+
+/*
+ * Supports alpha information in the pixel format. The bit depth of alpha
+ * information in the pixel format can be 1,2,4, or 8. The alpha value becomes
+ * more opaque as the alpha value increases. (0 is transparent.)
+ * For Blt.
+ */
+#define DDFXALPHACAPS_BLTALPHAPIXELS 0x00000002l
+
+/*
+ * Supports alpha information in the pixel format. The bit depth of alpha
+ * information in the pixel format can be 1,2,4, or 8. The alpha value
+ * becomes more transparent as the alpha value increases. (0 is opaque.)
+ * This flag can only be set if DDCAPS_ALPHA is set.
+ * For Blt.
+ */
+#define DDFXALPHACAPS_BLTALPHAPIXELSNEG 0x00000004l
+
+/*
+ * Supports alpha only surfaces. The bit depth of an alpha only surface can be
+ * 1,2,4, or 8. The alpha value becomes more opaque as the alpha value increases.
+ * (0 is transparent.)
+ * For Blt.
+ */
+#define DDFXALPHACAPS_BLTALPHASURFACES 0x00000008l
+
+/*
+ * The depth of the alpha channel data can range can be 1,2,4, or 8.
+ * The NEG suffix indicates that this alpha channel becomes more transparent
+ * as the alpha value increases. (0 is opaque.) This flag can only be set if
+ * DDCAPS_ALPHA is set.
+ * For Blt.
+ */
+#define DDFXALPHACAPS_BLTALPHASURFACESNEG 0x00000010l
+
+/*
+ * Supports alpha blending around the edge of a source color keyed surface.
+ * For Overlays.
+ */
+#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND 0x00000020l
+
+/*
+ * Supports alpha information in the pixel format. The bit depth of alpha
+ * information in the pixel format can be 1,2,4, or 8. The alpha value becomes
+ * more opaque as the alpha value increases. (0 is transparent.)
+ * For Overlays.
+ */
+#define DDFXALPHACAPS_OVERLAYALPHAPIXELS 0x00000040l
+
+/*
+ * Supports alpha information in the pixel format. The bit depth of alpha
+ * information in the pixel format can be 1,2,4, or 8. The alpha value
+ * becomes more transparent as the alpha value increases. (0 is opaque.)
+ * This flag can only be set if DDCAPS_ALPHA is set.
+ * For Overlays.
+ */
+#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG 0x00000080l
+
+/*
+ * Supports alpha only surfaces. The bit depth of an alpha only surface can be
+ * 1,2,4, or 8. The alpha value becomes more opaque as the alpha value increases.
+ * (0 is transparent.)
+ * For Overlays.
+ */
+#define DDFXALPHACAPS_OVERLAYALPHASURFACES 0x00000100l
+
+/*
+ * The depth of the alpha channel data can range can be 1,2,4, or 8.
+ * The NEG suffix indicates that this alpha channel becomes more transparent
+ * as the alpha value increases. (0 is opaque.) This flag can only be set if
+ * DDCAPS_ALPHA is set.
+ * For Overlays.
+ */
+#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG 0x00000200l
+
+#if DIRECTDRAW_VERSION < 0x0600
+#endif //DIRECTDRAW_VERSION
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW FX CAPABILITY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Uses arithmetic operations to stretch and shrink surfaces during blt
+ * rather than pixel doubling techniques. Along the Y axis.
+ */
+#define DDFXCAPS_BLTARITHSTRETCHY 0x00000020l
+
+/*
+ * Uses arithmetic operations to stretch during blt
+ * rather than pixel doubling techniques. Along the Y axis. Only
+ * works for x1, x2, etc.
+ */
+#define DDFXCAPS_BLTARITHSTRETCHYN 0x00000010l
+
+/*
+ * Supports mirroring left to right in blt.
+ */
+#define DDFXCAPS_BLTMIRRORLEFTRIGHT 0x00000040l
+
+/*
+ * Supports mirroring top to bottom in blt.
+ */
+#define DDFXCAPS_BLTMIRRORUPDOWN 0x00000080l
+
+/*
+ * Supports arbitrary rotation for blts.
+ */
+#define DDFXCAPS_BLTROTATION 0x00000100l
+
+/*
+ * Supports 90 degree rotations for blts.
+ */
+#define DDFXCAPS_BLTROTATION90 0x00000200l
+
+/*
+ * DirectDraw supports arbitrary shrinking of a surface along the
+ * x axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSHRINKX 0x00000400l
+
+/*
+ * DirectDraw supports integer shrinking (1x,2x,) of a surface
+ * along the x axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSHRINKXN 0x00000800l
+
+/*
+ * DirectDraw supports arbitrary shrinking of a surface along the
+ * y axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSHRINKY 0x00001000l
+
+/*
+ * DirectDraw supports integer shrinking (1x,2x,) of a surface
+ * along the y axis (vertical direction) for blts.
+ */
+#define DDFXCAPS_BLTSHRINKYN 0x00002000l
+
+/*
+ * DirectDraw supports arbitrary stretching of a surface along the
+ * x axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSTRETCHX 0x00004000l
+
+/*
+ * DirectDraw supports integer stretching (1x,2x,) of a surface
+ * along the x axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSTRETCHXN 0x00008000l
+
+/*
+ * DirectDraw supports arbitrary stretching of a surface along the
+ * y axis (horizontal direction) for blts.
+ */
+#define DDFXCAPS_BLTSTRETCHY 0x00010000l
+
+/*
+ * DirectDraw supports integer stretching (1x,2x,) of a surface
+ * along the y axis (vertical direction) for blts.
+ */
+#define DDFXCAPS_BLTSTRETCHYN 0x00020000l
+
+/*
+ * Uses arithmetic operations to stretch and shrink surfaces during
+ * overlay rather than pixel doubling techniques. Along the Y axis
+ * for overlays.
+ */
+#define DDFXCAPS_OVERLAYARITHSTRETCHY 0x00040000l
+
+/*
+ * Uses arithmetic operations to stretch surfaces during
+ * overlay rather than pixel doubling techniques. Along the Y axis
+ * for overlays. Only works for x1, x2, etc.
+ */
+#define DDFXCAPS_OVERLAYARITHSTRETCHYN 0x00000008l
+
+/*
+ * DirectDraw supports arbitrary shrinking of a surface along the
+ * x axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSHRINKX 0x00080000l
+
+/*
+ * DirectDraw supports integer shrinking (1x,2x,) of a surface
+ * along the x axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSHRINKXN 0x00100000l
+
+/*
+ * DirectDraw supports arbitrary shrinking of a surface along the
+ * y axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSHRINKY 0x00200000l
+
+/*
+ * DirectDraw supports integer shrinking (1x,2x,) of a surface
+ * along the y axis (vertical direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSHRINKYN 0x00400000l
+
+/*
+ * DirectDraw supports arbitrary stretching of a surface along the
+ * x axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSTRETCHX 0x00800000l
+
+/*
+ * DirectDraw supports integer stretching (1x,2x,) of a surface
+ * along the x axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSTRETCHXN 0x01000000l
+
+/*
+ * DirectDraw supports arbitrary stretching of a surface along the
+ * y axis (horizontal direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSTRETCHY 0x02000000l
+
+/*
+ * DirectDraw supports integer stretching (1x,2x,) of a surface
+ * along the y axis (vertical direction) for overlays.
+ */
+#define DDFXCAPS_OVERLAYSTRETCHYN 0x04000000l
+
+/*
+ * DirectDraw supports mirroring of overlays across the vertical axis
+ */
+#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT 0x08000000l
+
+/*
+ * DirectDraw supports mirroring of overlays across the horizontal axis
+ */
+#define DDFXCAPS_OVERLAYMIRRORUPDOWN 0x10000000l
+
+/*
+ * DirectDraw supports deinterlacing of overlay surfaces
+ */
+#define DDFXCAPS_OVERLAYDEINTERLACE 0x20000000l
+
+/*
+ * Driver can do alpha blending for blits.
+ */
+#define DDFXCAPS_BLTALPHA 0x00000001l
+
+
+/*
+ * Driver can do surface-reconstruction filtering for warped blits.
+ */
+#define DDFXCAPS_BLTFILTER DDFXCAPS_BLTARITHSTRETCHY
+
+/*
+ * Driver can do alpha blending for overlays.
+ */
+#define DDFXCAPS_OVERLAYALPHA 0x00000004l
+
+
+/*
+ * Driver can do surface-reconstruction filtering for warped overlays.
+ */
+#define DDFXCAPS_OVERLAYFILTER DDFXCAPS_OVERLAYARITHSTRETCHY
+
+/****************************************************************************
+ *
+ * DIRECTDRAW STEREO VIEW CAPABILITIES
+ *
+ ****************************************************************************/
+
+/*
+ * This flag used to be DDSVCAPS_ENIGMA, which is now obsolete
+ */
+
+#define DDSVCAPS_RESERVED1 0x00000001l
+
+/*
+ * This flag used to be DDSVCAPS_FLICKER, which is now obsolete
+ */
+#define DDSVCAPS_RESERVED2 0x00000002l
+
+/*
+ * This flag used to be DDSVCAPS_REDBLUE, which is now obsolete
+ */
+#define DDSVCAPS_RESERVED3 0x00000004l
+
+/*
+ * This flag used to be DDSVCAPS_SPLIT, which is now obsolete
+ */
+#define DDSVCAPS_RESERVED4 0x00000008l
+
+/*
+ * The stereo view is accomplished with switching technology
+ */
+
+#define DDSVCAPS_STEREOSEQUENTIAL 0x00000010L
+
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWPALETTE CAPABILITIES
+ *
+ ****************************************************************************/
+
+/*
+ * Index is 4 bits. There are sixteen color entries in the palette table.
+ */
+#define DDPCAPS_4BIT 0x00000001l
+
+/*
+ * Index is onto a 8 bit color index. This field is only valid with the
+ * DDPCAPS_1BIT, DDPCAPS_2BIT or DDPCAPS_4BIT capability and the target
+ * surface is in 8bpp. Each color entry is one byte long and is an index
+ * into destination surface's 8bpp palette.
+ */
+#define DDPCAPS_8BITENTRIES 0x00000002l
+
+/*
+ * Index is 8 bits. There are 256 color entries in the palette table.
+ */
+#define DDPCAPS_8BIT 0x00000004l
+
+/*
+ * Indicates that this DIRECTDRAWPALETTE should use the palette color array
+ * passed into the lpDDColorArray parameter to initialize the DIRECTDRAWPALETTE
+ * object.
+ * This flag is obsolete. DirectDraw always initializes the color array from
+ * the lpDDColorArray parameter. The definition remains for source-level
+ * compatibility.
+ */
+#define DDPCAPS_INITIALIZE 0x00000000l
+
+/*
+ * This palette is the one attached to the primary surface. Changing this
+ * table has immediate effect on the display unless DDPSETPAL_VSYNC is specified
+ * and supported.
+ */
+#define DDPCAPS_PRIMARYSURFACE 0x00000010l
+
+/*
+ * This palette is the one attached to the primary surface left. Changing
+ * this table has immediate effect on the display for the left eye unless
+ * DDPSETPAL_VSYNC is specified and supported.
+ */
+#define DDPCAPS_PRIMARYSURFACELEFT 0x00000020l
+
+/*
+ * This palette can have all 256 entries defined
+ */
+#define DDPCAPS_ALLOW256 0x00000040l
+
+/*
+ * This palette can have modifications to it synced with the monitors
+ * refresh rate.
+ */
+#define DDPCAPS_VSYNC 0x00000080l
+
+/*
+ * Index is 1 bit. There are two color entries in the palette table.
+ */
+#define DDPCAPS_1BIT 0x00000100l
+
+/*
+ * Index is 2 bit. There are four color entries in the palette table.
+ */
+#define DDPCAPS_2BIT 0x00000200l
+
+/*
+ * The peFlags member of PALETTEENTRY denotes an 8 bit alpha value
+ */
+#define DDPCAPS_ALPHA 0x00000400l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWPALETTE SETENTRY CONSTANTS
+ *
+ ****************************************************************************/
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWPALETTE GETENTRY CONSTANTS
+ *
+ ****************************************************************************/
+
+/* 0 is the only legal value */
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE SETPRIVATEDATA CONSTANTS
+ *
+ ****************************************************************************/
+
+/*
+ * The passed pointer is an IUnknown ptr. The cbData argument to SetPrivateData
+ * must be set to sizeof(IUnknown*). DirectDraw will call AddRef through this
+ * pointer and Release when the private data is destroyed. This includes when
+ * the surface or palette is destroyed before such priovate data is destroyed.
+ */
+#define DDSPD_IUNKNOWNPOINTER 0x00000001L
+
+/*
+ * Private data is only valid for the current state of the object,
+ * as determined by the uniqueness value.
+ */
+#define DDSPD_VOLATILE 0x00000002L
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE SETPALETTE CONSTANTS
+ *
+ ****************************************************************************/
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW BITDEPTH CONSTANTS
+ *
+ * NOTE: These are only used to indicate supported bit depths. These
+ * are flags only, they are not to be used as an actual bit depth. The
+ * absolute numbers 1, 2, 4, 8, 16, 24 and 32 are used to indicate actual
+ * bit depths in a surface or for changing the display mode.
+ *
+ ****************************************************************************/
+
+/*
+ * 1 bit per pixel.
+ */
+#define DDBD_1 0x00004000l
+
+/*
+ * 2 bits per pixel.
+ */
+#define DDBD_2 0x00002000l
+
+/*
+ * 4 bits per pixel.
+ */
+#define DDBD_4 0x00001000l
+
+/*
+ * 8 bits per pixel.
+ */
+#define DDBD_8 0x00000800l
+
+/*
+ * 16 bits per pixel.
+ */
+#define DDBD_16 0x00000400l
+
+/*
+ * 24 bits per pixel.
+ */
+#define DDBD_24 0X00000200l
+
+/*
+ * 32 bits per pixel.
+ */
+#define DDBD_32 0x00000100l
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE SET/GET COLOR KEY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Set if the structure contains a color space. Not set if the structure
+ * contains a single color key.
+ */
+#define DDCKEY_COLORSPACE 0x00000001l
+
+/*
+ * Set if the structure specifies a color key or color space which is to be
+ * used as a destination color key for blt operations.
+ */
+#define DDCKEY_DESTBLT 0x00000002l
+
+/*
+ * Set if the structure specifies a color key or color space which is to be
+ * used as a destination color key for overlay operations.
+ */
+#define DDCKEY_DESTOVERLAY 0x00000004l
+
+/*
+ * Set if the structure specifies a color key or color space which is to be
+ * used as a source color key for blt operations.
+ */
+#define DDCKEY_SRCBLT 0x00000008l
+
+/*
+ * Set if the structure specifies a color key or color space which is to be
+ * used as a source color key for overlay operations.
+ */
+#define DDCKEY_SRCOVERLAY 0x00000010l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW COLOR KEY CAPABILITY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Supports transparent blting using a color key to identify the replaceable
+ * bits of the destination surface for RGB colors.
+ */
+#define DDCKEYCAPS_DESTBLT 0x00000001l
+
+/*
+ * Supports transparent blting using a color space to identify the replaceable
+ * bits of the destination surface for RGB colors.
+ */
+#define DDCKEYCAPS_DESTBLTCLRSPACE 0x00000002l
+
+/*
+ * Supports transparent blting using a color space to identify the replaceable
+ * bits of the destination surface for YUV colors.
+ */
+#define DDCKEYCAPS_DESTBLTCLRSPACEYUV 0x00000004l
+
+/*
+ * Supports transparent blting using a color key to identify the replaceable
+ * bits of the destination surface for YUV colors.
+ */
+#define DDCKEYCAPS_DESTBLTYUV 0x00000008l
+
+/*
+ * Supports overlaying using colorkeying of the replaceable bits of the surface
+ * being overlayed for RGB colors.
+ */
+#define DDCKEYCAPS_DESTOVERLAY 0x00000010l
+
+/*
+ * Supports a color space as the color key for the destination for RGB colors.
+ */
+#define DDCKEYCAPS_DESTOVERLAYCLRSPACE 0x00000020l
+
+/*
+ * Supports a color space as the color key for the destination for YUV colors.
+ */
+#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV 0x00000040l
+
+/*
+ * Supports only one active destination color key value for visible overlay
+ * surfaces.
+ */
+#define DDCKEYCAPS_DESTOVERLAYONEACTIVE 0x00000080l
+
+/*
+ * Supports overlaying using colorkeying of the replaceable bits of the
+ * surface being overlayed for YUV colors.
+ */
+#define DDCKEYCAPS_DESTOVERLAYYUV 0x00000100l
+
+/*
+ * Supports transparent blting using the color key for the source with
+ * this surface for RGB colors.
+ */
+#define DDCKEYCAPS_SRCBLT 0x00000200l
+
+/*
+ * Supports transparent blting using a color space for the source with
+ * this surface for RGB colors.
+ */
+#define DDCKEYCAPS_SRCBLTCLRSPACE 0x00000400l
+
+/*
+ * Supports transparent blting using a color space for the source with
+ * this surface for YUV colors.
+ */
+#define DDCKEYCAPS_SRCBLTCLRSPACEYUV 0x00000800l
+
+/*
+ * Supports transparent blting using the color key for the source with
+ * this surface for YUV colors.
+ */
+#define DDCKEYCAPS_SRCBLTYUV 0x00001000l
+
+/*
+ * Supports overlays using the color key for the source with this
+ * overlay surface for RGB colors.
+ */
+#define DDCKEYCAPS_SRCOVERLAY 0x00002000l
+
+/*
+ * Supports overlays using a color space as the source color key for
+ * the overlay surface for RGB colors.
+ */
+#define DDCKEYCAPS_SRCOVERLAYCLRSPACE 0x00004000l
+
+/*
+ * Supports overlays using a color space as the source color key for
+ * the overlay surface for YUV colors.
+ */
+#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV 0x00008000l
+
+/*
+ * Supports only one active source color key value for visible
+ * overlay surfaces.
+ */
+#define DDCKEYCAPS_SRCOVERLAYONEACTIVE 0x00010000l
+
+/*
+ * Supports overlays using the color key for the source with this
+ * overlay surface for YUV colors.
+ */
+#define DDCKEYCAPS_SRCOVERLAYYUV 0x00020000l
+
+/*
+ * there are no bandwidth trade-offs for using colorkey with an overlay
+ */
+#define DDCKEYCAPS_NOCOSTOVERLAY 0x00040000l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW PIXELFORMAT FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * The surface has alpha channel information in the pixel format.
+ */
+#define DDPF_ALPHAPIXELS 0x00000001l
+
+/*
+ * The pixel format contains alpha only information
+ */
+#define DDPF_ALPHA 0x00000002l
+
+/*
+ * The FourCC code is valid.
+ */
+#define DDPF_FOURCC 0x00000004l
+
+/*
+ * The surface is 4-bit color indexed.
+ */
+#define DDPF_PALETTEINDEXED4 0x00000008l
+
+/*
+ * The surface is indexed into a palette which stores indices
+ * into the destination surface's 8-bit palette.
+ */
+#define DDPF_PALETTEINDEXEDTO8 0x00000010l
+
+/*
+ * The surface is 8-bit color indexed.
+ */
+#define DDPF_PALETTEINDEXED8 0x00000020l
+
+/*
+ * The RGB data in the pixel format structure is valid.
+ */
+#define DDPF_RGB 0x00000040l
+
+/*
+ * The surface will accept pixel data in the format specified
+ * and compress it during the write.
+ */
+#define DDPF_COMPRESSED 0x00000080l
+
+/*
+ * The surface will accept RGB data and translate it during
+ * the write to YUV data. The format of the data to be written
+ * will be contained in the pixel format structure. The DDPF_RGB
+ * flag will be set.
+ */
+#define DDPF_RGBTOYUV 0x00000100l
+
+/*
+ * pixel format is YUV - YUV data in pixel format struct is valid
+ */
+#define DDPF_YUV 0x00000200l
+
+/*
+ * pixel format is a z buffer only surface
+ */
+#define DDPF_ZBUFFER 0x00000400l
+
+/*
+ * The surface is 1-bit color indexed.
+ */
+#define DDPF_PALETTEINDEXED1 0x00000800l
+
+/*
+ * The surface is 2-bit color indexed.
+ */
+#define DDPF_PALETTEINDEXED2 0x00001000l
+
+/*
+ * The surface contains Z information in the pixels
+ */
+#define DDPF_ZPIXELS 0x00002000l
+
+/*
+ * The surface contains stencil information along with Z
+ */
+#define DDPF_STENCILBUFFER 0x00004000l
+
+/*
+ * Premultiplied alpha format -- the color components have been
+ * premultiplied by the alpha component.
+ */
+#define DDPF_ALPHAPREMULT 0x00008000l
+
+
+/*
+ * Luminance data in the pixel format is valid.
+ * Use this flag for luminance-only or luminance+alpha surfaces,
+ * the bit depth is then ddpf.dwLuminanceBitCount.
+ */
+#define DDPF_LUMINANCE 0x00020000l
+
+/*
+ * Luminance data in the pixel format is valid.
+ * Use this flag when hanging luminance off bumpmap surfaces,
+ * the bit mask for the luminance portion of the pixel is then
+ * ddpf.dwBumpLuminanceBitMask
+ */
+#define DDPF_BUMPLUMINANCE 0x00040000l
+
+/*
+ * Bump map dUdV data in the pixel format is valid.
+ */
+#define DDPF_BUMPDUDV 0x00080000l
+
+
+/*===========================================================================
+ *
+ *
+ * DIRECTDRAW CALLBACK FLAGS
+ *
+ *
+ *==========================================================================*/
+
+/****************************************************************************
+ *
+ * DIRECTDRAW ENUMSURFACES FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Enumerate all of the surfaces that meet the search criterion.
+ */
+#define DDENUMSURFACES_ALL 0x00000001l
+
+/*
+ * A search hit is a surface that matches the surface description.
+ */
+#define DDENUMSURFACES_MATCH 0x00000002l
+
+/*
+ * A search hit is a surface that does not match the surface description.
+ */
+#define DDENUMSURFACES_NOMATCH 0x00000004l
+
+/*
+ * Enumerate the first surface that can be created which meets the search criterion.
+ */
+#define DDENUMSURFACES_CANBECREATED 0x00000008l
+
+/*
+ * Enumerate the surfaces that already exist that meet the search criterion.
+ */
+#define DDENUMSURFACES_DOESEXIST 0x00000010l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW SETDISPLAYMODE FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * The desired mode is a standard VGA mode
+ */
+#define DDSDM_STANDARDVGAMODE 0x00000001l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW ENUMDISPLAYMODES FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Enumerate Modes with different refresh rates. EnumDisplayModes guarantees
+ * that a particular mode will be enumerated only once. This flag specifies whether
+ * the refresh rate is taken into account when determining if a mode is unique.
+ */
+#define DDEDM_REFRESHRATES 0x00000001l
+
+/*
+ * Enumerate VGA modes. Specify this flag if you wish to enumerate supported VGA
+ * modes such as mode 0x13 in addition to the usual ModeX modes (which are always
+ * enumerated if the application has previously called SetCooperativeLevel with the
+ * DDSCL_ALLOWMODEX flag set).
+ */
+#define DDEDM_STANDARDVGAMODES 0x00000002L
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW SETCOOPERATIVELEVEL FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Exclusive mode owner will be responsible for the entire primary surface.
+ * GDI can be ignored. used with DD
+ */
+#define DDSCL_FULLSCREEN 0x00000001l
+
+/*
+ * allow CTRL_ALT_DEL to work while in fullscreen exclusive mode
+ */
+#define DDSCL_ALLOWREBOOT 0x00000002l
+
+/*
+ * prevents DDRAW from modifying the application window.
+ * prevents DDRAW from minimize/restore the application window on activation.
+ */
+#define DDSCL_NOWINDOWCHANGES 0x00000004l
+
+/*
+ * app wants to work as a regular Windows application
+ */
+#define DDSCL_NORMAL 0x00000008l
+
+/*
+ * app wants exclusive access
+ */
+#define DDSCL_EXCLUSIVE 0x00000010l
+
+
+/*
+ * app can deal with non-windows display modes
+ */
+#define DDSCL_ALLOWMODEX 0x00000040l
+
+/*
+ * this window will receive the focus messages
+ */
+#define DDSCL_SETFOCUSWINDOW 0x00000080l
+
+/*
+ * this window is associated with the DDRAW object and will
+ * cover the screen in fullscreen mode
+ */
+#define DDSCL_SETDEVICEWINDOW 0x00000100l
+
+/*
+ * app wants DDRAW to create a window to be associated with the
+ * DDRAW object
+ */
+#define DDSCL_CREATEDEVICEWINDOW 0x00000200l
+
+/*
+ * App explicitly asks DDRAW/D3D to be multithread safe. This makes D3D
+ * take the global crtisec more frequently.
+ */
+#define DDSCL_MULTITHREADED 0x00000400l
+
+/*
+ * App specifies that it would like to keep the FPU set up for optimal Direct3D
+ * performance (single precision and exceptions disabled) so Direct3D
+ * does not need to explicitly set the FPU each time. This is assumed by
+ * default in DirectX 7. See also DDSCL_FPUPRESERVE
+ */
+#define DDSCL_FPUSETUP 0x00000800l
+
+/*
+ * App specifies that it needs either double precision FPU or FPU exceptions
+ * enabled. This makes Direct3D explicitly set the FPU state eah time it is
+ * called. Setting the flag will reduce Direct3D performance. The flag is
+ * assumed by default in DirectX 6 and earlier. See also DDSCL_FPUSETUP
+ */
+#define DDSCL_FPUPRESERVE 0x00001000l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW BLT FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Use the alpha information in the pixel format or the alpha channel surface
+ * attached to the destination surface as the alpha channel for this blt.
+ */
+#define DDBLT_ALPHADEST 0x00000001l
+
+/*
+ * Use the dwConstAlphaDest field in the DDBLTFX structure as the alpha channel
+ * for the destination surface for this blt.
+ */
+#define DDBLT_ALPHADESTCONSTOVERRIDE 0x00000002l
+
+/*
+ * The NEG suffix indicates that the destination surface becomes more
+ * transparent as the alpha value increases. (0 is opaque)
+ */
+#define DDBLT_ALPHADESTNEG 0x00000004l
+
+/*
+ * Use the lpDDSAlphaDest field in the DDBLTFX structure as the alpha
+ * channel for the destination for this blt.
+ */
+#define DDBLT_ALPHADESTSURFACEOVERRIDE 0x00000008l
+
+/*
+ * Use the dwAlphaEdgeBlend field in the DDBLTFX structure as the alpha channel
+ * for the edges of the image that border the color key colors.
+ */
+#define DDBLT_ALPHAEDGEBLEND 0x00000010l
+
+/*
+ * Use the alpha information in the pixel format or the alpha channel surface
+ * attached to the source surface as the alpha channel for this blt.
+ */
+#define DDBLT_ALPHASRC 0x00000020l
+
+/*
+ * Use the dwConstAlphaSrc field in the DDBLTFX structure as the alpha channel
+ * for the source for this blt.
+ */
+#define DDBLT_ALPHASRCCONSTOVERRIDE 0x00000040l
+
+/*
+ * The NEG suffix indicates that the source surface becomes more transparent
+ * as the alpha value increases. (0 is opaque)
+ */
+#define DDBLT_ALPHASRCNEG 0x00000080l
+
+/*
+ * Use the lpDDSAlphaSrc field in the DDBLTFX structure as the alpha channel
+ * for the source for this blt.
+ */
+#define DDBLT_ALPHASRCSURFACEOVERRIDE 0x00000100l
+
+/*
+ * Do this blt asynchronously through the FIFO in the order received. If
+ * there is no room in the hardware FIFO fail the call.
+ */
+#define DDBLT_ASYNC 0x00000200l
+
+/*
+ * Uses the dwFillColor field in the DDBLTFX structure as the RGB color
+ * to fill the destination rectangle on the destination surface with.
+ */
+#define DDBLT_COLORFILL 0x00000400l
+
+/*
+ * Uses the dwDDFX field in the DDBLTFX structure to specify the effects
+ * to use for the blt.
+ */
+#define DDBLT_DDFX 0x00000800l
+
+/*
+ * Uses the dwDDROPS field in the DDBLTFX structure to specify the ROPS
+ * that are not part of the Win32 API.
+ */
+#define DDBLT_DDROPS 0x00001000l
+
+/*
+ * Use the color key associated with the destination surface.
+ */
+#define DDBLT_KEYDEST 0x00002000l
+
+/*
+ * Use the dckDestColorkey field in the DDBLTFX structure as the color key
+ * for the destination surface.
+ */
+#define DDBLT_KEYDESTOVERRIDE 0x00004000l
+
+/*
+ * Use the color key associated with the source surface.
+ */
+#define DDBLT_KEYSRC 0x00008000l
+
+/*
+ * Use the dckSrcColorkey field in the DDBLTFX structure as the color key
+ * for the source surface.
+ */
+#define DDBLT_KEYSRCOVERRIDE 0x00010000l
+
+/*
+ * Use the dwROP field in the DDBLTFX structure for the raster operation
+ * for this blt. These ROPs are the same as the ones defined in the Win32 API.
+ */
+#define DDBLT_ROP 0x00020000l
+
+/*
+ * Use the dwRotationAngle field in the DDBLTFX structure as the angle
+ * (specified in 1/100th of a degree) to rotate the surface.
+ */
+#define DDBLT_ROTATIONANGLE 0x00040000l
+
+/*
+ * Z-buffered blt using the z-buffers attached to the source and destination
+ * surfaces and the dwZBufferOpCode field in the DDBLTFX structure as the
+ * z-buffer opcode.
+ */
+#define DDBLT_ZBUFFER 0x00080000l
+
+/*
+ * Z-buffered blt using the dwConstDest Zfield and the dwZBufferOpCode field
+ * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
+ * for the destination.
+ */
+#define DDBLT_ZBUFFERDESTCONSTOVERRIDE 0x00100000l
+
+/*
+ * Z-buffered blt using the lpDDSDestZBuffer field and the dwZBufferOpCode
+ * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
+ * respectively for the destination.
+ */
+#define DDBLT_ZBUFFERDESTOVERRIDE 0x00200000l
+
+/*
+ * Z-buffered blt using the dwConstSrcZ field and the dwZBufferOpCode field
+ * in the DDBLTFX structure as the z-buffer and z-buffer opcode respectively
+ * for the source.
+ */
+#define DDBLT_ZBUFFERSRCCONSTOVERRIDE 0x00400000l
+
+/*
+ * Z-buffered blt using the lpDDSSrcZBuffer field and the dwZBufferOpCode
+ * field in the DDBLTFX structure as the z-buffer and z-buffer opcode
+ * respectively for the source.
+ */
+#define DDBLT_ZBUFFERSRCOVERRIDE 0x00800000l
+
+/*
+ * wait until the device is ready to handle the blt
+ * this will cause blt to not return DDERR_WASSTILLDRAWING
+ */
+#define DDBLT_WAIT 0x01000000l
+
+/*
+ * Uses the dwFillDepth field in the DDBLTFX structure as the depth value
+ * to fill the destination rectangle on the destination Z-buffer surface
+ * with.
+ */
+#define DDBLT_DEPTHFILL 0x02000000l
+
+
+/*
+ * Return immediately (with DDERR_WASSTILLDRAWING) if the device is not
+ * ready to schedule the blt at the time Blt() is called.
+ */
+#define DDBLT_DONOTWAIT 0x08000000l
+
+/*
+ * These flags indicate a presentation blt (i.e. a blt
+ * that moves surface contents from an offscreen back buffer to the primary
+ * surface). The driver is not allowed to "queue" more than three such blts.
+ * The "end" of the presentation blt is indicated, since the
+ * blt may be clipped, in which case the runtime will call the driver with
+ * several blts. All blts (even if not clipped) are tagged with DDBLT_PRESENTATION
+ * and the last (even if not clipped) additionally with DDBLT_LAST_PRESENTATION.
+ * Thus the true rule is that the driver must not schedule a DDBLT_PRESENTATION
+ * blt if there are 3 or more DDBLT_PRESENTLAST blts in the hardware pipe.
+ * If there are such blts in the pipe, the driver should return DDERR_WASSTILLDRAWING
+ * until the oldest queued DDBLT_LAST_PRESENTATION blts has been retired (i.e. the
+ * pixels have been actually written to the primary surface). Once the oldest blt
+ * has been retired, the driver is free to schedule the current blt.
+ * The goal is to provide a mechanism whereby the device's hardware queue never
+ * gets more than 3 frames ahead of the frames being generated by the application.
+ * When excessive queueing occurs, applications become unusable because the application
+ * visibly lags user input, and such problems make windowed interactive applications impossible.
+ * Some drivers may not have sufficient knowledge of their hardware's FIFO to know
+ * when a certain blt has been retired. Such drivers should code cautiously, and
+ * simply not allow any frames to be queued at all. DDBLT_LAST_PRESENTATION should cause
+ * such drivers to return DDERR_WASSTILLDRAWING until the accelerator is completely
+ * finished- exactly as if the application had called Lock on the source surface
+ * before calling Blt.
+ * In other words, the driver is allowed and encouraged to
+ * generate as much latency as it can, but never more than 3 frames worth.
+ * Implementation detail: Drivers should count blts against the SOURCE surface, not
+ * against the primary surface. This enables multiple parallel windowed application
+ * to function more optimally.
+ * This flag is passed only to DX8 or higher drivers.
+ *
+ * APPLICATIONS DO NOT SET THESE FLAGS. THEY ARE SET BY THE DIRECTDRAW RUNTIME.
+ *
+ */
+#define DDBLT_PRESENTATION 0x10000000l
+#define DDBLT_LAST_PRESENTATION 0x20000000l
+
+/*
+ * If DDBLT_EXTENDED_FLAGS is set, then the driver should re-interpret
+ * other flags according to the definitions that follow.
+ * For example, bit 0 (0x00000001L) means DDBLT_ALPHADEST, unless
+ * DDBLT_EXTENDED_FLAGS is also set, in which case bit 0 means
+ * DDBLT_EXTENDED_LINEAR_CONTENT.
+ * Only DirectX9 and higher drivers will be given extended blt flags.
+ * Only flags explicitly mentioned here should be re-interpreted.
+ * All other flags retain their original meanings.
+ *
+ * List of re-interpreted flags:
+ *
+ * Bit Hex value New meaning old meaning
+ * ---------------------------------------------------------------
+ * 2 0x00000004 DDBLT_EXTENDED_LINEAR_CONTENT DDBLT_ALPHADESTNEG
+ * 4 0x00000010 DDBLT_EXTENDED_PRESENTATION_STRETCHFACTOR DDBLT_ALPHAEDGEBLEND
+ *
+ *
+ * NOTE: APPLICATIONS SHOULD NOT SET THIS FLAG. THIS FLAG IS INTENDED
+ * FOR USE BY THE DIRECT3D RUNTIME.
+ */
+#define DDBLT_EXTENDED_FLAGS 0x40000000l
+
+/*
+ * EXTENDED FLAG. SEE DEFINITION OF DDBLT_EXTENDED_FLAGS.
+ * This flag indidcates that the source surface contains content in a
+ * linear color space. The driver may perform gamma correction to the
+ * desktop color space (i.e. sRGB, gamma 2.2) as part of this blt.
+ * If the device can perform such a conversion as part of the copy,
+ * the driver should also set D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION
+ *
+ * NOTE: APPLICATIONS SHOULD NOT SET THIS FLAG. THIS FLAG IS INTENDED
+ * FOR USE BY THE DIRECT3D RUNTIME. Use IDirect3DSwapChain9::Present
+ * and specify D3DPRESENT_LINEAR_CONTENT in order to use this functionality.
+ */
+#define DDBLT_EXTENDED_LINEAR_CONTENT 0x00000004l
+
+
+/****************************************************************************
+ *
+ * BLTFAST FLAGS
+ *
+ ****************************************************************************/
+
+#define DDBLTFAST_NOCOLORKEY 0x00000000
+#define DDBLTFAST_SRCCOLORKEY 0x00000001
+#define DDBLTFAST_DESTCOLORKEY 0x00000002
+#define DDBLTFAST_WAIT 0x00000010
+#define DDBLTFAST_DONOTWAIT 0x00000020
+
+/****************************************************************************
+ *
+ * FLIP FLAGS
+ *
+ ****************************************************************************/
+
+#define DDFLIP_WAIT 0x00000001L
+
+/*
+ * Indicates that the target surface contains the even field of video data.
+ * This flag is only valid with an overlay surface.
+ */
+#define DDFLIP_EVEN 0x00000002L
+
+/*
+ * Indicates that the target surface contains the odd field of video data.
+ * This flag is only valid with an overlay surface.
+ */
+#define DDFLIP_ODD 0x00000004L
+
+/*
+ * Causes DirectDraw to perform the physical flip immediately and return
+ * to the application. Typically, what was the front buffer but is now the back
+ * buffer will still be visible (depending on timing) until the next vertical
+ * retrace. Subsequent operations involving the two flipped surfaces will
+ * not check to see if the physical flip has finished (i.e. will not return
+ * DDERR_WASSTILLDRAWING for that reason (but may for other reasons)).
+ * This allows an application to perform Flips at a higher frequency than the
+ * monitor refresh rate, but may introduce visible artifacts.
+ * Only effective if DDCAPS2_FLIPNOVSYNC is set. If that bit is not set,
+ * DDFLIP_NOVSYNC has no effect.
+ */
+#define DDFLIP_NOVSYNC 0x00000008L
+
+
+/*
+ * Flip Interval Flags. These flags indicate how many vertical retraces to wait between
+ * each flip. The default is one. DirectDraw will return DDERR_WASSTILLDRAWING for each
+ * surface involved in the flip until the specified number of vertical retraces has
+ * ocurred. Only effective if DDCAPS2_FLIPINTERVAL is set. If that bit is not set,
+ * DDFLIP_INTERVALn has no effect.
+ */
+
+/*
+ * DirectDraw will flip on every other vertical sync
+ */
+#define DDFLIP_INTERVAL2 0x02000000L
+
+
+/*
+ * DirectDraw will flip on every third vertical sync
+ */
+#define DDFLIP_INTERVAL3 0x03000000L
+
+
+/*
+ * DirectDraw will flip on every fourth vertical sync
+ */
+#define DDFLIP_INTERVAL4 0x04000000L
+
+/*
+ * DirectDraw will flip and display a main stereo surface
+ */
+#define DDFLIP_STEREO 0x00000010L
+
+/*
+ * On IDirectDrawSurface7 and higher interfaces, the default is DDFLIP_WAIT. If you wish
+ * to override the default and use time when the accelerator is busy (as denoted by
+ * the DDERR_WASSTILLDRAWING return code) then use DDFLIP_DONOTWAIT.
+ */
+#define DDFLIP_DONOTWAIT 0x00000020L
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW SURFACE OVERLAY FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Use the alpha information in the pixel format or the alpha channel surface
+ * attached to the destination surface as the alpha channel for the
+ * destination overlay.
+ */
+#define DDOVER_ALPHADEST 0x00000001l
+
+/*
+ * Use the dwConstAlphaDest field in the DDOVERLAYFX structure as the
+ * destination alpha channel for this overlay.
+ */
+#define DDOVER_ALPHADESTCONSTOVERRIDE 0x00000002l
+
+/*
+ * The NEG suffix indicates that the destination surface becomes more
+ * transparent as the alpha value increases.
+ */
+#define DDOVER_ALPHADESTNEG 0x00000004l
+
+/*
+ * Use the lpDDSAlphaDest field in the DDOVERLAYFX structure as the alpha
+ * channel destination for this overlay.
+ */
+#define DDOVER_ALPHADESTSURFACEOVERRIDE 0x00000008l
+
+/*
+ * Use the dwAlphaEdgeBlend field in the DDOVERLAYFX structure as the alpha
+ * channel for the edges of the image that border the color key colors.
+ */
+#define DDOVER_ALPHAEDGEBLEND 0x00000010l
+
+/*
+ * Use the alpha information in the pixel format or the alpha channel surface
+ * attached to the source surface as the source alpha channel for this overlay.
+ */
+#define DDOVER_ALPHASRC 0x00000020l
+
+/*
+ * Use the dwConstAlphaSrc field in the DDOVERLAYFX structure as the source
+ * alpha channel for this overlay.
+ */
+#define DDOVER_ALPHASRCCONSTOVERRIDE 0x00000040l
+
+/*
+ * The NEG suffix indicates that the source surface becomes more transparent
+ * as the alpha value increases.
+ */
+#define DDOVER_ALPHASRCNEG 0x00000080l
+
+/*
+ * Use the lpDDSAlphaSrc field in the DDOVERLAYFX structure as the alpha channel
+ * source for this overlay.
+ */
+#define DDOVER_ALPHASRCSURFACEOVERRIDE 0x00000100l
+
+/*
+ * Turn this overlay off.
+ */
+#define DDOVER_HIDE 0x00000200l
+
+/*
+ * Use the color key associated with the destination surface.
+ */
+#define DDOVER_KEYDEST 0x00000400l
+
+/*
+ * Use the dckDestColorkey field in the DDOVERLAYFX structure as the color key
+ * for the destination surface
+ */
+#define DDOVER_KEYDESTOVERRIDE 0x00000800l
+
+/*
+ * Use the color key associated with the source surface.
+ */
+#define DDOVER_KEYSRC 0x00001000l
+
+/*
+ * Use the dckSrcColorkey field in the DDOVERLAYFX structure as the color key
+ * for the source surface.
+ */
+#define DDOVER_KEYSRCOVERRIDE 0x00002000l
+
+/*
+ * Turn this overlay on.
+ */
+#define DDOVER_SHOW 0x00004000l
+
+/*
+ * Add a dirty rect to an emulated overlayed surface.
+ */
+#define DDOVER_ADDDIRTYRECT 0x00008000l
+
+/*
+ * Redraw all dirty rects on an emulated overlayed surface.
+ */
+#define DDOVER_REFRESHDIRTYRECTS 0x00010000l
+
+/*
+ * Redraw the entire surface on an emulated overlayed surface.
+ */
+#define DDOVER_REFRESHALL 0x00020000l
+
+
+/*
+ * Use the overlay FX flags to define special overlay FX
+ */
+#define DDOVER_DDFX 0x00080000l
+
+/*
+ * Autoflip the overlay when ever the video port autoflips
+ */
+#define DDOVER_AUTOFLIP 0x00100000l
+
+/*
+ * Display each field of video port data individually without
+ * causing any jittery artifacts
+ */
+#define DDOVER_BOB 0x00200000l
+
+/*
+ * Indicates that bob/weave decisions should not be overridden by other
+ * interfaces.
+ */
+#define DDOVER_OVERRIDEBOBWEAVE 0x00400000l
+
+/*
+ * Indicates that the surface memory is composed of interleaved fields.
+ */
+#define DDOVER_INTERLEAVED 0x00800000l
+
+/*
+ * Indicates that bob will be performed using hardware rather than
+ * software or emulated.
+ */
+#define DDOVER_BOBHARDWARE 0x01000000l
+
+/*
+ * Indicates that overlay FX structure contains valid ARGB scaling factors.
+ */
+#define DDOVER_ARGBSCALEFACTORS 0x02000000l
+
+/*
+ * Indicates that ARGB scaling factors can be degraded to fit driver capabilities.
+ */
+#define DDOVER_DEGRADEARGBSCALING 0x04000000l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE LOCK FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * The default. Set to indicate that Lock should return a valid memory pointer
+ * to the top of the specified rectangle. If no rectangle is specified then a
+ * pointer to the top of the surface is returned.
+ */
+#define DDLOCK_SURFACEMEMORYPTR 0x00000000L // default
+
+/*
+ * Set to indicate that Lock should wait until it can obtain a valid memory
+ * pointer before returning. If this bit is set, Lock will never return
+ * DDERR_WASSTILLDRAWING.
+ */
+#define DDLOCK_WAIT 0x00000001L
+
+/*
+ * Set if an event handle is being passed to Lock. Lock will trigger the event
+ * when it can return the surface memory pointer requested.
+ */
+#define DDLOCK_EVENT 0x00000002L
+
+/*
+ * Indicates that the surface being locked will only be read from.
+ */
+#define DDLOCK_READONLY 0x00000010L
+
+/*
+ * Indicates that the surface being locked will only be written to
+ */
+#define DDLOCK_WRITEONLY 0x00000020L
+
+
+/*
+ * Indicates that a system wide lock should not be taken when this surface
+ * is locked. This has several advantages (cursor responsiveness, ability
+ * to call more Windows functions, easier debugging) when locking video
+ * memory surfaces. However, an application specifying this flag must
+ * comply with a number of conditions documented in the help file.
+ * Furthermore, this flag cannot be specified when locking the primary.
+ */
+#define DDLOCK_NOSYSLOCK 0x00000800L
+
+/*
+ * Used only with Direct3D Vertex Buffer Locks. Indicates that no vertices
+ * that were referred to in Draw*PrimtiveVB calls since the start of the
+ * frame (or the last lock without this flag) will be modified during the
+ * lock. This can be useful when one is only appending data to the vertex
+ * buffer
+ */
+#define DDLOCK_NOOVERWRITE 0x00001000L
+
+/*
+ * Indicates that no assumptions will be made about the contents of the
+ * surface or vertex buffer during this lock.
+ * This enables two things:
+ * - Direct3D or the driver may provide an alternative memory
+ * area as the vertex buffer. This is useful when one plans to clear the
+ * contents of the vertex buffer and fill in new data.
+ * - Drivers sometimes store surface data in a re-ordered format.
+ * When the application locks the surface, the driver is forced to un-re-order
+ * the surface data before allowing the application to see the surface contents.
+ * This flag is a hint to the driver that it can skip the un-re-ordering process
+ * since the application plans to overwrite every single pixel in the surface
+ * or locked rectangle (and so erase any un-re-ordered pixels anyway).
+ * Applications should always set this flag when they intend to overwrite the entire
+ * surface or locked rectangle.
+ */
+#define DDLOCK_DISCARDCONTENTS 0x00002000L
+ /*
+ * DDLOCK_OKTOSWAP is an older, less informative name for DDLOCK_DISCARDCONTENTS
+ */
+#define DDLOCK_OKTOSWAP 0x00002000L
+
+/*
+ * On IDirectDrawSurface7 and higher interfaces, the default is DDLOCK_WAIT. If you wish
+ * to override the default and use time when the accelerator is busy (as denoted by
+ * the DDERR_WASSTILLDRAWING return code) then use DDLOCK_DONOTWAIT.
+ */
+#define DDLOCK_DONOTWAIT 0x00004000L
+
+/*
+ * This indicates volume texture lock with front and back specified.
+ */
+#define DDLOCK_HASVOLUMETEXTUREBOXRECT 0x00008000L
+
+/*
+ * This indicates that the driver should not update dirty rect information for this lock.
+ */
+#define DDLOCK_NODIRTYUPDATE 0x00010000L
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE PAGELOCK FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * No flags defined at present
+ */
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE PAGEUNLOCK FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * No flags defined at present
+ */
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE BLT FX FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * If stretching, use arithmetic stretching along the Y axis for this blt.
+ */
+#define DDBLTFX_ARITHSTRETCHY 0x00000001l
+
+/*
+ * Do this blt mirroring the surface left to right. Spin the
+ * surface around its y-axis.
+ */
+#define DDBLTFX_MIRRORLEFTRIGHT 0x00000002l
+
+/*
+ * Do this blt mirroring the surface up and down. Spin the surface
+ * around its x-axis.
+ */
+#define DDBLTFX_MIRRORUPDOWN 0x00000004l
+
+/*
+ * Schedule this blt to avoid tearing.
+ */
+#define DDBLTFX_NOTEARING 0x00000008l
+
+/*
+ * Do this blt rotating the surface one hundred and eighty degrees.
+ */
+#define DDBLTFX_ROTATE180 0x00000010l
+
+/*
+ * Do this blt rotating the surface two hundred and seventy degrees.
+ */
+#define DDBLTFX_ROTATE270 0x00000020l
+
+/*
+ * Do this blt rotating the surface ninety degrees.
+ */
+#define DDBLTFX_ROTATE90 0x00000040l
+
+/*
+ * Do this z blt using dwZBufferLow and dwZBufferHigh as range values
+ * specified to limit the bits copied from the source surface.
+ */
+#define DDBLTFX_ZBUFFERRANGE 0x00000080l
+
+/*
+ * Do this z blt adding the dwZBufferBaseDest to each of the sources z values
+ * before comparing it with the desting z values.
+ */
+#define DDBLTFX_ZBUFFERBASEDEST 0x00000100l
+
+/****************************************************************************
+ *
+ * DIRECTDRAWSURFACE OVERLAY FX FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * If stretching, use arithmetic stretching along the Y axis for this overlay.
+ */
+#define DDOVERFX_ARITHSTRETCHY 0x00000001l
+
+/*
+ * Mirror the overlay across the vertical axis
+ */
+#define DDOVERFX_MIRRORLEFTRIGHT 0x00000002l
+
+/*
+ * Mirror the overlay across the horizontal axis
+ */
+#define DDOVERFX_MIRRORUPDOWN 0x00000004l
+
+/*
+ * Deinterlace the overlay, if possible
+ */
+#define DDOVERFX_DEINTERLACE 0x00000008l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW WAITFORVERTICALBLANK FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * return when the vertical blank interval begins
+ */
+#define DDWAITVB_BLOCKBEGIN 0x00000001l
+
+/*
+ * set up an event to trigger when the vertical blank begins
+ */
+#define DDWAITVB_BLOCKBEGINEVENT 0x00000002l
+
+/*
+ * return when the vertical blank interval ends and display begins
+ */
+#define DDWAITVB_BLOCKEND 0x00000004l
+
+/****************************************************************************
+ *
+ * DIRECTDRAW GETFLIPSTATUS FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * is it OK to flip now?
+ */
+#define DDGFS_CANFLIP 0x00000001l
+
+/*
+ * is the last flip finished?
+ */
+#define DDGFS_ISFLIPDONE 0x00000002l
+
+/****************************************************************************
+ *
+ * DIRECTDRAW GETBLTSTATUS FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * is it OK to blt now?
+ */
+#define DDGBS_CANBLT 0x00000001l
+
+/*
+ * is the blt to the surface finished?
+ */
+#define DDGBS_ISBLTDONE 0x00000002l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW ENUMOVERLAYZORDER FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Enumerate overlays back to front.
+ */
+#define DDENUMOVERLAYZ_BACKTOFRONT 0x00000000l
+
+/*
+ * Enumerate overlays front to back
+ */
+#define DDENUMOVERLAYZ_FRONTTOBACK 0x00000001l
+
+/****************************************************************************
+ *
+ * DIRECTDRAW UPDATEOVERLAYZORDER FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Send overlay to front
+ */
+#define DDOVERZ_SENDTOFRONT 0x00000000l
+
+/*
+ * Send overlay to back
+ */
+#define DDOVERZ_SENDTOBACK 0x00000001l
+
+/*
+ * Move Overlay forward
+ */
+#define DDOVERZ_MOVEFORWARD 0x00000002l
+
+/*
+ * Move Overlay backward
+ */
+#define DDOVERZ_MOVEBACKWARD 0x00000003l
+
+/*
+ * Move Overlay in front of relative surface
+ */
+#define DDOVERZ_INSERTINFRONTOF 0x00000004l
+
+/*
+ * Move Overlay in back of relative surface
+ */
+#define DDOVERZ_INSERTINBACKOF 0x00000005l
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW SETGAMMARAMP FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Request calibrator to adjust the gamma ramp according to the physical
+ * properties of the display so that the result should appear identical
+ * on all systems.
+ */
+#define DDSGR_CALIBRATE 0x00000001L
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW STARTMODETEST FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Indicates that the mode being tested has passed
+ */
+#define DDSMT_ISTESTREQUIRED 0x00000001L
+
+
+/****************************************************************************
+ *
+ * DIRECTDRAW EVALUATEMODE FLAGS
+ *
+ ****************************************************************************/
+
+/*
+ * Indicates that the mode being tested has passed
+ */
+#define DDEM_MODEPASSED 0x00000001L
+
+/*
+ * Indicates that the mode being tested has failed
+ */
+#define DDEM_MODEFAILED 0x00000002L
+
+
+/*===========================================================================
+ *
+ *
+ * DIRECTDRAW RETURN CODES
+ *
+ * The return values from DirectDraw Commands and Surface that return an HRESULT
+ * are codes from DirectDraw concerning the results of the action
+ * requested by DirectDraw.
+ *
+ *==========================================================================*/
+
+/*
+ * Status is OK
+ *
+ * Issued by: DirectDraw Commands and all callbacks
+ */
+#define DD_OK S_OK
+#define DD_FALSE S_FALSE
+
+/****************************************************************************
+ *
+ * DIRECTDRAW ENUMCALLBACK RETURN VALUES
+ *
+ * EnumCallback returns are used to control the flow of the DIRECTDRAW and
+ * DIRECTDRAWSURFACE object enumerations. They can only be returned by
+ * enumeration callback routines.
+ *
+ ****************************************************************************/
+
+/*
+ * stop the enumeration
+ */
+#define DDENUMRET_CANCEL 0
+
+/*
+ * continue the enumeration
+ */
+#define DDENUMRET_OK 1
+
+/****************************************************************************
+ *
+ * DIRECTDRAW ERRORS
+ *
+ * Errors are represented by negative values and cannot be combined.
+ *
+ ****************************************************************************/
+
+/*
+ * This object is already initialized
+ */
+#define DDERR_ALREADYINITIALIZED MAKE_DDHRESULT( 5 )
+
+/*
+ * This surface can not be attached to the requested surface.
+ */
+#define DDERR_CANNOTATTACHSURFACE MAKE_DDHRESULT( 10 )
+
+/*
+ * This surface can not be detached from the requested surface.
+ */
+#define DDERR_CANNOTDETACHSURFACE MAKE_DDHRESULT( 20 )
+
+/*
+ * Support is currently not available.
+ */
+#define DDERR_CURRENTLYNOTAVAIL MAKE_DDHRESULT( 40 )
+
+/*
+ * An exception was encountered while performing the requested operation
+ */
+#define DDERR_EXCEPTION MAKE_DDHRESULT( 55 )
+
+/*
+ * Generic failure.
+ */
+#define DDERR_GENERIC E_FAIL
+
+/*
+ * Height of rectangle provided is not a multiple of reqd alignment
+ */
+#define DDERR_HEIGHTALIGN MAKE_DDHRESULT( 90 )
+
+/*
+ * Unable to match primary surface creation request with existing
+ * primary surface.
+ */
+#define DDERR_INCOMPATIBLEPRIMARY MAKE_DDHRESULT( 95 )
+
+/*
+ * One or more of the caps bits passed to the callback are incorrect.
+ */
+#define DDERR_INVALIDCAPS MAKE_DDHRESULT( 100 )
+
+/*
+ * DirectDraw does not support provided Cliplist.
+ */
+#define DDERR_INVALIDCLIPLIST MAKE_DDHRESULT( 110 )
+
+/*
+ * DirectDraw does not support the requested mode
+ */
+#define DDERR_INVALIDMODE MAKE_DDHRESULT( 120 )
+
+/*
+ * DirectDraw received a pointer that was an invalid DIRECTDRAW object.
+ */
+#define DDERR_INVALIDOBJECT MAKE_DDHRESULT( 130 )
+
+/*
+ * One or more of the parameters passed to the callback function are
+ * incorrect.
+ */
+#define DDERR_INVALIDPARAMS E_INVALIDARG
+
+/*
+ * pixel format was invalid as specified
+ */
+#define DDERR_INVALIDPIXELFORMAT MAKE_DDHRESULT( 145 )
+
+/*
+ * Rectangle provided was invalid.
+ */
+#define DDERR_INVALIDRECT MAKE_DDHRESULT( 150 )
+
+/*
+ * Operation could not be carried out because one or more surfaces are locked
+ */
+#define DDERR_LOCKEDSURFACES MAKE_DDHRESULT( 160 )
+
+/*
+ * There is no 3D present.
+ */
+#define DDERR_NO3D MAKE_DDHRESULT( 170 )
+
+/*
+ * Operation could not be carried out because there is no alpha accleration
+ * hardware present or available.
+ */
+#define DDERR_NOALPHAHW MAKE_DDHRESULT( 180 )
+
+/*
+ * Operation could not be carried out because there is no stereo
+ * hardware present or available.
+ */
+#define DDERR_NOSTEREOHARDWARE MAKE_DDHRESULT( 181 )
+
+/*
+ * Operation could not be carried out because there is no hardware
+ * present which supports stereo surfaces
+ */
+#define DDERR_NOSURFACELEFT MAKE_DDHRESULT( 182 )
+
+
+
+/*
+ * no clip list available
+ */
+#define DDERR_NOCLIPLIST MAKE_DDHRESULT( 205 )
+
+/*
+ * Operation could not be carried out because there is no color conversion
+ * hardware present or available.
+ */
+#define DDERR_NOCOLORCONVHW MAKE_DDHRESULT( 210 )
+
+/*
+ * Create function called without DirectDraw object method SetCooperativeLevel
+ * being called.
+ */
+#define DDERR_NOCOOPERATIVELEVELSET MAKE_DDHRESULT( 212 )
+
+/*
+ * Surface doesn't currently have a color key
+ */
+#define DDERR_NOCOLORKEY MAKE_DDHRESULT( 215 )
+
+/*
+ * Operation could not be carried out because there is no hardware support
+ * of the dest color key.
+ */
+#define DDERR_NOCOLORKEYHW MAKE_DDHRESULT( 220 )
+
+/*
+ * No DirectDraw support possible with current display driver
+ */
+#define DDERR_NODIRECTDRAWSUPPORT MAKE_DDHRESULT( 222 )
+
+/*
+ * Operation requires the application to have exclusive mode but the
+ * application does not have exclusive mode.
+ */
+#define DDERR_NOEXCLUSIVEMODE MAKE_DDHRESULT( 225 )
+
+/*
+ * Flipping visible surfaces is not supported.
+ */
+#define DDERR_NOFLIPHW MAKE_DDHRESULT( 230 )
+
+/*
+ * There is no GDI present.
+ */
+#define DDERR_NOGDI MAKE_DDHRESULT( 240 )
+
+/*
+ * Operation could not be carried out because there is no hardware present
+ * or available.
+ */
+#define DDERR_NOMIRRORHW MAKE_DDHRESULT( 250 )
+
+/*
+ * Requested item was not found
+ */
+#define DDERR_NOTFOUND MAKE_DDHRESULT( 255 )
+
+/*
+ * Operation could not be carried out because there is no overlay hardware
+ * present or available.
+ */
+#define DDERR_NOOVERLAYHW MAKE_DDHRESULT( 260 )
+
+/*
+ * Operation could not be carried out because the source and destination
+ * rectangles are on the same surface and overlap each other.
+ */
+#define DDERR_OVERLAPPINGRECTS MAKE_DDHRESULT( 270 )
+
+/*
+ * Operation could not be carried out because there is no appropriate raster
+ * op hardware present or available.
+ */
+#define DDERR_NORASTEROPHW MAKE_DDHRESULT( 280 )
+
+/*
+ * Operation could not be carried out because there is no rotation hardware
+ * present or available.
+ */
+#define DDERR_NOROTATIONHW MAKE_DDHRESULT( 290 )
+
+/*
+ * Operation could not be carried out because there is no hardware support
+ * for stretching
+ */
+#define DDERR_NOSTRETCHHW MAKE_DDHRESULT( 310 )
+
+/*
+ * DirectDrawSurface is not in 4 bit color palette and the requested operation
+ * requires 4 bit color palette.
+ */
+#define DDERR_NOT4BITCOLOR MAKE_DDHRESULT( 316 )
+
+/*
+ * DirectDrawSurface is not in 4 bit color index palette and the requested
+ * operation requires 4 bit color index palette.
+ */
+#define DDERR_NOT4BITCOLORINDEX MAKE_DDHRESULT( 317 )
+
+/*
+ * DirectDraw Surface is not in 8 bit color mode and the requested operation
+ * requires 8 bit color.
+ */
+#define DDERR_NOT8BITCOLOR MAKE_DDHRESULT( 320 )
+
+/*
+ * Operation could not be carried out because there is no texture mapping
+ * hardware present or available.
+ */
+#define DDERR_NOTEXTUREHW MAKE_DDHRESULT( 330 )
+
+/*
+ * Operation could not be carried out because there is no hardware support
+ * for vertical blank synchronized operations.
+ */
+#define DDERR_NOVSYNCHW MAKE_DDHRESULT( 335 )
+
+/*
+ * Operation could not be carried out because there is no hardware support
+ * for zbuffer blting.
+ */
+#define DDERR_NOZBUFFERHW MAKE_DDHRESULT( 340 )
+
+/*
+ * Overlay surfaces could not be z layered based on their BltOrder because
+ * the hardware does not support z layering of overlays.
+ */
+#define DDERR_NOZOVERLAYHW MAKE_DDHRESULT( 350 )
+
+/*
+ * The hardware needed for the requested operation has already been
+ * allocated.
+ */
+#define DDERR_OUTOFCAPS MAKE_DDHRESULT( 360 )
+
+/*
+ * DirectDraw does not have enough memory to perform the operation.
+ */
+#define DDERR_OUTOFMEMORY E_OUTOFMEMORY
+
+/*
+ * DirectDraw does not have enough memory to perform the operation.
+ */
+#define DDERR_OUTOFVIDEOMEMORY MAKE_DDHRESULT( 380 )
+
+/*
+ * hardware does not support clipped overlays
+ */
+#define DDERR_OVERLAYCANTCLIP MAKE_DDHRESULT( 382 )
+
+/*
+ * Can only have ony color key active at one time for overlays
+ */
+#define DDERR_OVERLAYCOLORKEYONLYONEACTIVE MAKE_DDHRESULT( 384 )
+
+/*
+ * Access to this palette is being refused because the palette is already
+ * locked by another thread.
+ */
+#define DDERR_PALETTEBUSY MAKE_DDHRESULT( 387 )
+
+/*
+ * No src color key specified for this operation.
+ */
+#define DDERR_COLORKEYNOTSET MAKE_DDHRESULT( 400 )
+
+/*
+ * This surface is already attached to the surface it is being attached to.
+ */
+#define DDERR_SURFACEALREADYATTACHED MAKE_DDHRESULT( 410 )
+
+/*
+ * This surface is already a dependency of the surface it is being made a
+ * dependency of.
+ */
+#define DDERR_SURFACEALREADYDEPENDENT MAKE_DDHRESULT( 420 )
+
+/*
+ * Access to this surface is being refused because the surface is already
+ * locked by another thread.
+ */
+#define DDERR_SURFACEBUSY MAKE_DDHRESULT( 430 )
+
+/*
+ * Access to this surface is being refused because no driver exists
+ * which can supply a pointer to the surface.
+ * This is most likely to happen when attempting to lock the primary
+ * surface when no DCI provider is present.
+ * Will also happen on attempts to lock an optimized surface.
+ */
+#define DDERR_CANTLOCKSURFACE MAKE_DDHRESULT( 435 )
+
+/*
+ * Access to Surface refused because Surface is obscured.
+ */
+#define DDERR_SURFACEISOBSCURED MAKE_DDHRESULT( 440 )
+
+/*
+ * Access to this surface is being refused because the surface is gone.
+ * The DIRECTDRAWSURFACE object representing this surface should
+ * have Restore called on it.
+ */
+#define DDERR_SURFACELOST MAKE_DDHRESULT( 450 )
+
+/*
+ * The requested surface is not attached.
+ */
+#define DDERR_SURFACENOTATTACHED MAKE_DDHRESULT( 460 )
+
+/*
+ * Height requested by DirectDraw is too large.
+ */
+#define DDERR_TOOBIGHEIGHT MAKE_DDHRESULT( 470 )
+
+/*
+ * Size requested by DirectDraw is too large -- The individual height and
+ * width are OK.
+ */
+#define DDERR_TOOBIGSIZE MAKE_DDHRESULT( 480 )
+
+/*
+ * Width requested by DirectDraw is too large.
+ */
+#define DDERR_TOOBIGWIDTH MAKE_DDHRESULT( 490 )
+
+/*
+ * Action not supported.
+ */
+#define DDERR_UNSUPPORTED E_NOTIMPL
+
+/*
+ * Pixel format requested is unsupported by DirectDraw
+ */
+#define DDERR_UNSUPPORTEDFORMAT MAKE_DDHRESULT( 510 )
+
+/*
+ * Bitmask in the pixel format requested is unsupported by DirectDraw
+ */
+#define DDERR_UNSUPPORTEDMASK MAKE_DDHRESULT( 520 )
+
+/*
+ * The specified stream contains invalid data
+ */
+#define DDERR_INVALIDSTREAM MAKE_DDHRESULT( 521 )
+
+/*
+ * vertical blank is in progress
+ */
+#define DDERR_VERTICALBLANKINPROGRESS MAKE_DDHRESULT( 537 )
+
+/*
+ * Informs DirectDraw that the previous Blt which is transfering information
+ * to or from this Surface is incomplete.
+ */
+#define DDERR_WASSTILLDRAWING MAKE_DDHRESULT( 540 )
+
+
+/*
+ * The specified surface type requires specification of the COMPLEX flag
+ */
+#define DDERR_DDSCAPSCOMPLEXREQUIRED MAKE_DDHRESULT( 542 )
+
+
+/*
+ * Rectangle provided was not horizontally aligned on reqd. boundary
+ */
+#define DDERR_XALIGN MAKE_DDHRESULT( 560 )
+
+/*
+ * The GUID passed to DirectDrawCreate is not a valid DirectDraw driver
+ * identifier.
+ */
+#define DDERR_INVALIDDIRECTDRAWGUID MAKE_DDHRESULT( 561 )
+
+/*
+ * A DirectDraw object representing this driver has already been created
+ * for this process.
+ */
+#define DDERR_DIRECTDRAWALREADYCREATED MAKE_DDHRESULT( 562 )
+
+/*
+ * A hardware only DirectDraw object creation was attempted but the driver
+ * did not support any hardware.
+ */
+#define DDERR_NODIRECTDRAWHW MAKE_DDHRESULT( 563 )
+
+/*
+ * this process already has created a primary surface
+ */
+#define DDERR_PRIMARYSURFACEALREADYEXISTS MAKE_DDHRESULT( 564 )
+
+/*
+ * software emulation not available.
+ */
+#define DDERR_NOEMULATION MAKE_DDHRESULT( 565 )
+
+/*
+ * region passed to Clipper::GetClipList is too small.
+ */
+#define DDERR_REGIONTOOSMALL MAKE_DDHRESULT( 566 )
+
+/*
+ * an attempt was made to set a clip list for a clipper objec that
+ * is already monitoring an hwnd.
+ */
+#define DDERR_CLIPPERISUSINGHWND MAKE_DDHRESULT( 567 )
+
+/*
+ * No clipper object attached to surface object
+ */
+#define DDERR_NOCLIPPERATTACHED MAKE_DDHRESULT( 568 )
+
+/*
+ * Clipper notification requires an HWND or
+ * no HWND has previously been set as the CooperativeLevel HWND.
+ */
+#define DDERR_NOHWND MAKE_DDHRESULT( 569 )
+
+/*
+ * HWND used by DirectDraw CooperativeLevel has been subclassed,
+ * this prevents DirectDraw from restoring state.
+ */
+#define DDERR_HWNDSUBCLASSED MAKE_DDHRESULT( 570 )
+
+/*
+ * The CooperativeLevel HWND has already been set.
+ * It can not be reset while the process has surfaces or palettes created.
+ */
+#define DDERR_HWNDALREADYSET MAKE_DDHRESULT( 571 )
+
+/*
+ * No palette object attached to this surface.
+ */
+#define DDERR_NOPALETTEATTACHED MAKE_DDHRESULT( 572 )
+
+/*
+ * No hardware support for 16 or 256 color palettes.
+ */
+#define DDERR_NOPALETTEHW MAKE_DDHRESULT( 573 )
+
+/*
+ * If a clipper object is attached to the source surface passed into a
+ * BltFast call.
+ */
+#define DDERR_BLTFASTCANTCLIP MAKE_DDHRESULT( 574 )
+
+/*
+ * No blter.
+ */
+#define DDERR_NOBLTHW MAKE_DDHRESULT( 575 )
+
+/*
+ * No DirectDraw ROP hardware.
+ */
+#define DDERR_NODDROPSHW MAKE_DDHRESULT( 576 )
+
+/*
+ * returned when GetOverlayPosition is called on a hidden overlay
+ */
+#define DDERR_OVERLAYNOTVISIBLE MAKE_DDHRESULT( 577 )
+
+/*
+ * returned when GetOverlayPosition is called on a overlay that UpdateOverlay
+ * has never been called on to establish a destionation.
+ */
+#define DDERR_NOOVERLAYDEST MAKE_DDHRESULT( 578 )
+
+/*
+ * returned when the position of the overlay on the destionation is no longer
+ * legal for that destionation.
+ */
+#define DDERR_INVALIDPOSITION MAKE_DDHRESULT( 579 )
+
+/*
+ * returned when an overlay member is called for a non-overlay surface
+ */
+#define DDERR_NOTAOVERLAYSURFACE MAKE_DDHRESULT( 580 )
+
+/*
+ * An attempt was made to set the cooperative level when it was already
+ * set to exclusive.
+ */
+#define DDERR_EXCLUSIVEMODEALREADYSET MAKE_DDHRESULT( 581 )
+
+/*
+ * An attempt has been made to flip a surface that is not flippable.
+ */
+#define DDERR_NOTFLIPPABLE MAKE_DDHRESULT( 582 )
+
+/*
+ * Can't duplicate primary & 3D surfaces, or surfaces that are implicitly
+ * created.
+ */
+#define DDERR_CANTDUPLICATE MAKE_DDHRESULT( 583 )
+
+/*
+ * Surface was not locked. An attempt to unlock a surface that was not
+ * locked at all, or by this process, has been attempted.
+ */
+#define DDERR_NOTLOCKED MAKE_DDHRESULT( 584 )
+
+/*
+ * Windows can not create any more DCs, or a DC was requested for a paltte-indexed
+ * surface when the surface had no palette AND the display mode was not palette-indexed
+ * (in this case DirectDraw cannot select a proper palette into the DC)
+ */
+#define DDERR_CANTCREATEDC MAKE_DDHRESULT( 585 )
+
+/*
+ * No DC was ever created for this surface.
+ */
+#define DDERR_NODC MAKE_DDHRESULT( 586 )
+
+/*
+ * This surface can not be restored because it was created in a different
+ * mode.
+ */
+#define DDERR_WRONGMODE MAKE_DDHRESULT( 587 )
+
+/*
+ * This surface can not be restored because it is an implicitly created
+ * surface.
+ */
+#define DDERR_IMPLICITLYCREATED MAKE_DDHRESULT( 588 )
+
+/*
+ * The surface being used is not a palette-based surface
+ */
+#define DDERR_NOTPALETTIZED MAKE_DDHRESULT( 589 )
+
+
+/*
+ * The display is currently in an unsupported mode
+ */
+#define DDERR_UNSUPPORTEDMODE MAKE_DDHRESULT( 590 )
+
+/*
+ * Operation could not be carried out because there is no mip-map
+ * texture mapping hardware present or available.
+ */
+#define DDERR_NOMIPMAPHW MAKE_DDHRESULT( 591 )
+
+/*
+ * The requested action could not be performed because the surface was of
+ * the wrong type.
+ */
+#define DDERR_INVALIDSURFACETYPE MAKE_DDHRESULT( 592 )
+
+
+/*
+ * Device does not support optimized surfaces, therefore no video memory optimized surfaces
+ */
+#define DDERR_NOOPTIMIZEHW MAKE_DDHRESULT( 600 )
+
+/*
+ * Surface is an optimized surface, but has not yet been allocated any memory
+ */
+#define DDERR_NOTLOADED MAKE_DDHRESULT( 601 )
+
+/*
+ * Attempt was made to create or set a device window without first setting
+ * the focus window
+ */
+#define DDERR_NOFOCUSWINDOW MAKE_DDHRESULT( 602 )
+
+/*
+ * Attempt was made to set a palette on a mipmap sublevel
+ */
+#define DDERR_NOTONMIPMAPSUBLEVEL MAKE_DDHRESULT( 603 )
+
+/*
+ * A DC has already been returned for this surface. Only one DC can be
+ * retrieved per surface.
+ */
+#define DDERR_DCALREADYCREATED MAKE_DDHRESULT( 620 )
+
+/*
+ * An attempt was made to allocate non-local video memory from a device
+ * that does not support non-local video memory.
+ */
+#define DDERR_NONONLOCALVIDMEM MAKE_DDHRESULT( 630 )
+
+/*
+ * The attempt to page lock a surface failed.
+ */
+#define DDERR_CANTPAGELOCK MAKE_DDHRESULT( 640 )
+
+
+/*
+ * The attempt to page unlock a surface failed.
+ */
+#define DDERR_CANTPAGEUNLOCK MAKE_DDHRESULT( 660 )
+
+/*
+ * An attempt was made to page unlock a surface with no outstanding page locks.
+ */
+#define DDERR_NOTPAGELOCKED MAKE_DDHRESULT( 680 )
+
+/*
+ * There is more data available than the specified buffer size could hold
+ */
+#define DDERR_MOREDATA MAKE_DDHRESULT( 690 )
+
+/*
+ * The data has expired and is therefore no longer valid.
+ */
+#define DDERR_EXPIRED MAKE_DDHRESULT( 691 )
+
+/*
+ * The mode test has finished executing.
+ */
+#define DDERR_TESTFINISHED MAKE_DDHRESULT( 692 )
+
+/*
+ * The mode test has switched to a new mode.
+ */
+#define DDERR_NEWMODE MAKE_DDHRESULT( 693 )
+
+/*
+ * D3D has not yet been initialized.
+ */
+#define DDERR_D3DNOTINITIALIZED MAKE_DDHRESULT( 694 )
+
+/*
+ * The video port is not active
+ */
+#define DDERR_VIDEONOTACTIVE MAKE_DDHRESULT( 695 )
+
+/*
+ * The monitor does not have EDID data.
+ */
+#define DDERR_NOMONITORINFORMATION MAKE_DDHRESULT( 696 )
+
+/*
+ * The driver does not enumerate display mode refresh rates.
+ */
+#define DDERR_NODRIVERSUPPORT MAKE_DDHRESULT( 697 )
+
+/*
+ * Surfaces created by one direct draw device cannot be used directly by
+ * another direct draw device.
+ */
+#define DDERR_DEVICEDOESNTOWNSURFACE MAKE_DDHRESULT( 699 )
+
+
+
+/*
+ * An attempt was made to invoke an interface member of a DirectDraw object
+ * created by CoCreateInstance() before it was initialized.
+ */
+#define DDERR_NOTINITIALIZED CO_E_NOTINITIALIZED
+
+
+/* Alpha bit depth constants */
+
+
+#ifdef __cplusplus
+};
+#endif
+
+#ifdef ENABLE_NAMELESS_UNION_PRAGMA
+#pragma warning(default:4201)
+#endif
+
+#endif //__DDRAW_INCLUDED__
+
+
diff --git a/src/dep/include/DXSDK/include/dinput.h b/src/dep/include/DXSDK/include/dinput.h
new file mode 100644
index 0000000..bf74e16
--- /dev/null
+++ b/src/dep/include/DXSDK/include/dinput.h
@@ -0,0 +1,4417 @@
+/****************************************************************************
+ *
+ * Copyright (C) 1996-2000 Microsoft Corporation. All Rights Reserved.
+ *
+ * File: dinput.h
+ * Content: DirectInput include file
+ *
+ ****************************************************************************/
+
+#ifndef __DINPUT_INCLUDED__
+#define __DINPUT_INCLUDED__
+
+#ifndef DIJ_RINGZERO
+
+#ifdef _WIN32
+#define COM_NO_WINDOWS_H
+#include
+#endif
+
+#endif /* DIJ_RINGZERO */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+
+
+/*
+ * To build applications for older versions of DirectInput
+ *
+ * #define DIRECTINPUT_VERSION [ 0x0300 | 0x0500 | 0x0700 ]
+ *
+ * before #include . By default, #include
+ * will produce a DirectX 8-compatible header file.
+ *
+ */
+
+#define DIRECTINPUT_HEADER_VERSION 0x0800
+#ifndef DIRECTINPUT_VERSION
+#define DIRECTINPUT_VERSION DIRECTINPUT_HEADER_VERSION
+#pragma message(__FILE__ ": DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800")
+#endif
+
+#ifndef DIJ_RINGZERO
+
+/****************************************************************************
+ *
+ * Class IDs
+ *
+ ****************************************************************************/
+
+DEFINE_GUID(CLSID_DirectInput, 0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(CLSID_DirectInputDevice, 0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+
+DEFINE_GUID(CLSID_DirectInput8, 0x25E609E4,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(CLSID_DirectInputDevice8,0x25E609E5,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+
+/****************************************************************************
+ *
+ * Interfaces
+ *
+ ****************************************************************************/
+
+DEFINE_GUID(IID_IDirectInputA, 0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(IID_IDirectInputW, 0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(IID_IDirectInput2A, 0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(IID_IDirectInput2W, 0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(IID_IDirectInput7A, 0x9A4CB684,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
+DEFINE_GUID(IID_IDirectInput7W, 0x9A4CB685,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
+DEFINE_GUID(IID_IDirectInput8A, 0xBF798030,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00);
+DEFINE_GUID(IID_IDirectInput8W, 0xBF798031,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00);
+DEFINE_GUID(IID_IDirectInputDeviceA, 0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(IID_IDirectInputDeviceW, 0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(IID_IDirectInputDevice2A,0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(IID_IDirectInputDevice2W,0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(IID_IDirectInputDevice7A,0x57D7C6BC,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
+DEFINE_GUID(IID_IDirectInputDevice7W,0x57D7C6BD,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
+DEFINE_GUID(IID_IDirectInputDevice8A,0x54D41080,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79);
+DEFINE_GUID(IID_IDirectInputDevice8W,0x54D41081,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79);
+DEFINE_GUID(IID_IDirectInputEffect, 0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+
+/****************************************************************************
+ *
+ * Predefined object types
+ *
+ ****************************************************************************/
+
+DEFINE_GUID(GUID_XAxis, 0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_YAxis, 0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_ZAxis, 0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_RxAxis, 0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_RyAxis, 0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_RzAxis, 0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_Slider, 0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+
+DEFINE_GUID(GUID_Button, 0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_Key, 0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+
+DEFINE_GUID(GUID_POV, 0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+
+DEFINE_GUID(GUID_Unknown, 0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+
+/****************************************************************************
+ *
+ * Predefined product GUIDs
+ *
+ ****************************************************************************/
+
+DEFINE_GUID(GUID_SysMouse, 0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_SysKeyboard,0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_Joystick ,0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_SysMouseEm, 0x6F1D2B80,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_SysMouseEm2,0x6F1D2B81,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_SysKeyboardEm, 0x6F1D2B82,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(GUID_SysKeyboardEm2,0x6F1D2B83,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+
+/****************************************************************************
+ *
+ * Predefined force feedback effects
+ *
+ ****************************************************************************/
+
+DEFINE_GUID(GUID_ConstantForce, 0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_RampForce, 0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_Square, 0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_Sine, 0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_Triangle, 0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_SawtoothUp, 0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_SawtoothDown, 0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_Spring, 0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_Damper, 0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_Inertia, 0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_Friction, 0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(GUID_CustomForce, 0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+
+#endif /* DIJ_RINGZERO */
+
+/****************************************************************************
+ *
+ * Interfaces and Structures...
+ *
+ ****************************************************************************/
+
+#if(DIRECTINPUT_VERSION >= 0x0500)
+
+/****************************************************************************
+ *
+ * IDirectInputEffect
+ *
+ ****************************************************************************/
+
+#define DIEFT_ALL 0x00000000
+
+#define DIEFT_CONSTANTFORCE 0x00000001
+#define DIEFT_RAMPFORCE 0x00000002
+#define DIEFT_PERIODIC 0x00000003
+#define DIEFT_CONDITION 0x00000004
+#define DIEFT_CUSTOMFORCE 0x00000005
+#define DIEFT_HARDWARE 0x000000FF
+#define DIEFT_FFATTACK 0x00000200
+#define DIEFT_FFFADE 0x00000400
+#define DIEFT_SATURATION 0x00000800
+#define DIEFT_POSNEGCOEFFICIENTS 0x00001000
+#define DIEFT_POSNEGSATURATION 0x00002000
+#define DIEFT_DEADBAND 0x00004000
+#define DIEFT_STARTDELAY 0x00008000
+#define DIEFT_GETTYPE(n) LOBYTE(n)
+
+#define DI_DEGREES 100
+#define DI_FFNOMINALMAX 10000
+#define DI_SECONDS 1000000
+
+typedef struct DICONSTANTFORCE {
+ LONG lMagnitude;
+} DICONSTANTFORCE, *LPDICONSTANTFORCE;
+typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE;
+
+typedef struct DIRAMPFORCE {
+ LONG lStart;
+ LONG lEnd;
+} DIRAMPFORCE, *LPDIRAMPFORCE;
+typedef const DIRAMPFORCE *LPCDIRAMPFORCE;
+
+typedef struct DIPERIODIC {
+ DWORD dwMagnitude;
+ LONG lOffset;
+ DWORD dwPhase;
+ DWORD dwPeriod;
+} DIPERIODIC, *LPDIPERIODIC;
+typedef const DIPERIODIC *LPCDIPERIODIC;
+
+typedef struct DICONDITION {
+ LONG lOffset;
+ LONG lPositiveCoefficient;
+ LONG lNegativeCoefficient;
+ DWORD dwPositiveSaturation;
+ DWORD dwNegativeSaturation;
+ LONG lDeadBand;
+} DICONDITION, *LPDICONDITION;
+typedef const DICONDITION *LPCDICONDITION;
+
+typedef struct DICUSTOMFORCE {
+ DWORD cChannels;
+ DWORD dwSamplePeriod;
+ DWORD cSamples;
+ LPLONG rglForceData;
+} DICUSTOMFORCE, *LPDICUSTOMFORCE;
+typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE;
+
+
+typedef struct DIENVELOPE {
+ DWORD dwSize; /* sizeof(DIENVELOPE) */
+ DWORD dwAttackLevel;
+ DWORD dwAttackTime; /* Microseconds */
+ DWORD dwFadeLevel;
+ DWORD dwFadeTime; /* Microseconds */
+} DIENVELOPE, *LPDIENVELOPE;
+typedef const DIENVELOPE *LPCDIENVELOPE;
+
+
+/* This structure is defined for DirectX 5.0 compatibility */
+typedef struct DIEFFECT_DX5 {
+ DWORD dwSize; /* sizeof(DIEFFECT_DX5) */
+ DWORD dwFlags; /* DIEFF_* */
+ DWORD dwDuration; /* Microseconds */
+ DWORD dwSamplePeriod; /* Microseconds */
+ DWORD dwGain;
+ DWORD dwTriggerButton; /* or DIEB_NOTRIGGER */
+ DWORD dwTriggerRepeatInterval; /* Microseconds */
+ DWORD cAxes; /* Number of axes */
+ LPDWORD rgdwAxes; /* Array of axes */
+ LPLONG rglDirection; /* Array of directions */
+ LPDIENVELOPE lpEnvelope; /* Optional */
+ DWORD cbTypeSpecificParams; /* Size of params */
+ LPVOID lpvTypeSpecificParams; /* Pointer to params */
+} DIEFFECT_DX5, *LPDIEFFECT_DX5;
+typedef const DIEFFECT_DX5 *LPCDIEFFECT_DX5;
+
+typedef struct DIEFFECT {
+ DWORD dwSize; /* sizeof(DIEFFECT) */
+ DWORD dwFlags; /* DIEFF_* */
+ DWORD dwDuration; /* Microseconds */
+ DWORD dwSamplePeriod; /* Microseconds */
+ DWORD dwGain;
+ DWORD dwTriggerButton; /* or DIEB_NOTRIGGER */
+ DWORD dwTriggerRepeatInterval; /* Microseconds */
+ DWORD cAxes; /* Number of axes */
+ LPDWORD rgdwAxes; /* Array of axes */
+ LPLONG rglDirection; /* Array of directions */
+ LPDIENVELOPE lpEnvelope; /* Optional */
+ DWORD cbTypeSpecificParams; /* Size of params */
+ LPVOID lpvTypeSpecificParams; /* Pointer to params */
+#if(DIRECTINPUT_VERSION >= 0x0600)
+ DWORD dwStartDelay; /* Microseconds */
+#endif /* DIRECTINPUT_VERSION >= 0x0600 */
+} DIEFFECT, *LPDIEFFECT;
+typedef DIEFFECT DIEFFECT_DX6;
+typedef LPDIEFFECT LPDIEFFECT_DX6;
+typedef const DIEFFECT *LPCDIEFFECT;
+
+
+#if(DIRECTINPUT_VERSION >= 0x0700)
+#ifndef DIJ_RINGZERO
+typedef struct DIFILEEFFECT{
+ DWORD dwSize;
+ GUID GuidEffect;
+ LPCDIEFFECT lpDiEffect;
+ CHAR szFriendlyName[MAX_PATH];
+}DIFILEEFFECT, *LPDIFILEEFFECT;
+typedef const DIFILEEFFECT *LPCDIFILEEFFECT;
+typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSINFILECALLBACK)(LPCDIFILEEFFECT , LPVOID);
+#endif /* DIJ_RINGZERO */
+#endif /* DIRECTINPUT_VERSION >= 0x0700 */
+
+#define DIEFF_OBJECTIDS 0x00000001
+#define DIEFF_OBJECTOFFSETS 0x00000002
+#define DIEFF_CARTESIAN 0x00000010
+#define DIEFF_POLAR 0x00000020
+#define DIEFF_SPHERICAL 0x00000040
+
+#define DIEP_DURATION 0x00000001
+#define DIEP_SAMPLEPERIOD 0x00000002
+#define DIEP_GAIN 0x00000004
+#define DIEP_TRIGGERBUTTON 0x00000008
+#define DIEP_TRIGGERREPEATINTERVAL 0x00000010
+#define DIEP_AXES 0x00000020
+#define DIEP_DIRECTION 0x00000040
+#define DIEP_ENVELOPE 0x00000080
+#define DIEP_TYPESPECIFICPARAMS 0x00000100
+#if(DIRECTINPUT_VERSION >= 0x0600)
+#define DIEP_STARTDELAY 0x00000200
+#define DIEP_ALLPARAMS_DX5 0x000001FF
+#define DIEP_ALLPARAMS 0x000003FF
+#else /* DIRECTINPUT_VERSION < 0x0600 */
+#define DIEP_ALLPARAMS 0x000001FF
+#endif /* DIRECTINPUT_VERSION < 0x0600 */
+#define DIEP_START 0x20000000
+#define DIEP_NORESTART 0x40000000
+#define DIEP_NODOWNLOAD 0x80000000
+#define DIEB_NOTRIGGER 0xFFFFFFFF
+
+#define DIES_SOLO 0x00000001
+#define DIES_NODOWNLOAD 0x80000000
+
+#define DIEGES_PLAYING 0x00000001
+#define DIEGES_EMULATED 0x00000002
+
+typedef struct DIEFFESCAPE {
+ DWORD dwSize;
+ DWORD dwCommand;
+ LPVOID lpvInBuffer;
+ DWORD cbInBuffer;
+ LPVOID lpvOutBuffer;
+ DWORD cbOutBuffer;
+} DIEFFESCAPE, *LPDIEFFESCAPE;
+
+#ifndef DIJ_RINGZERO
+
+#undef INTERFACE
+#define INTERFACE IDirectInputEffect
+
+DECLARE_INTERFACE_(IDirectInputEffect, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInputEffect methods ***/
+ STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
+ STDMETHOD(GetEffectGuid)(THIS_ LPGUID) PURE;
+ STDMETHOD(GetParameters)(THIS_ LPDIEFFECT,DWORD) PURE;
+ STDMETHOD(SetParameters)(THIS_ LPCDIEFFECT,DWORD) PURE;
+ STDMETHOD(Start)(THIS_ DWORD,DWORD) PURE;
+ STDMETHOD(Stop)(THIS) PURE;
+ STDMETHOD(GetEffectStatus)(THIS_ LPDWORD) PURE;
+ STDMETHOD(Download)(THIS) PURE;
+ STDMETHOD(Unload)(THIS) PURE;
+ STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
+};
+
+typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectInputEffect_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInputEffect_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectInputEffect_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectInputEffect_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
+#define IDirectInputEffect_GetEffectGuid(p,a) (p)->lpVtbl->GetEffectGuid(p,a)
+#define IDirectInputEffect_GetParameters(p,a,b) (p)->lpVtbl->GetParameters(p,a,b)
+#define IDirectInputEffect_SetParameters(p,a,b) (p)->lpVtbl->SetParameters(p,a,b)
+#define IDirectInputEffect_Start(p,a,b) (p)->lpVtbl->Start(p,a,b)
+#define IDirectInputEffect_Stop(p) (p)->lpVtbl->Stop(p)
+#define IDirectInputEffect_GetEffectStatus(p,a) (p)->lpVtbl->GetEffectStatus(p,a)
+#define IDirectInputEffect_Download(p) (p)->lpVtbl->Download(p)
+#define IDirectInputEffect_Unload(p) (p)->lpVtbl->Unload(p)
+#define IDirectInputEffect_Escape(p,a) (p)->lpVtbl->Escape(p,a)
+#else
+#define IDirectInputEffect_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInputEffect_AddRef(p) (p)->AddRef()
+#define IDirectInputEffect_Release(p) (p)->Release()
+#define IDirectInputEffect_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
+#define IDirectInputEffect_GetEffectGuid(p,a) (p)->GetEffectGuid(a)
+#define IDirectInputEffect_GetParameters(p,a,b) (p)->GetParameters(a,b)
+#define IDirectInputEffect_SetParameters(p,a,b) (p)->SetParameters(a,b)
+#define IDirectInputEffect_Start(p,a,b) (p)->Start(a,b)
+#define IDirectInputEffect_Stop(p) (p)->Stop()
+#define IDirectInputEffect_GetEffectStatus(p,a) (p)->GetEffectStatus(a)
+#define IDirectInputEffect_Download(p) (p)->Download()
+#define IDirectInputEffect_Unload(p) (p)->Unload()
+#define IDirectInputEffect_Escape(p,a) (p)->Escape(a)
+#endif
+
+#endif /* DIJ_RINGZERO */
+
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
+
+/****************************************************************************
+ *
+ * IDirectInputDevice
+ *
+ ****************************************************************************/
+
+#if DIRECTINPUT_VERSION <= 0x700
+#define DIDEVTYPE_DEVICE 1
+#define DIDEVTYPE_MOUSE 2
+#define DIDEVTYPE_KEYBOARD 3
+#define DIDEVTYPE_JOYSTICK 4
+
+#else
+#define DI8DEVCLASS_ALL 0
+#define DI8DEVCLASS_DEVICE 1
+#define DI8DEVCLASS_POINTER 2
+#define DI8DEVCLASS_KEYBOARD 3
+#define DI8DEVCLASS_GAMECTRL 4
+
+#define DI8DEVTYPE_DEVICE 0x11
+#define DI8DEVTYPE_MOUSE 0x12
+#define DI8DEVTYPE_KEYBOARD 0x13
+#define DI8DEVTYPE_JOYSTICK 0x14
+#define DI8DEVTYPE_GAMEPAD 0x15
+#define DI8DEVTYPE_DRIVING 0x16
+#define DI8DEVTYPE_FLIGHT 0x17
+#define DI8DEVTYPE_1STPERSON 0x18
+#define DI8DEVTYPE_DEVICECTRL 0x19
+#define DI8DEVTYPE_SCREENPOINTER 0x1A
+#define DI8DEVTYPE_REMOTE 0x1B
+#define DI8DEVTYPE_SUPPLEMENTAL 0x1C
+#endif /* DIRECTINPUT_VERSION <= 0x700 */
+
+#define DIDEVTYPE_HID 0x00010000
+
+#if DIRECTINPUT_VERSION <= 0x700
+#define DIDEVTYPEMOUSE_UNKNOWN 1
+#define DIDEVTYPEMOUSE_TRADITIONAL 2
+#define DIDEVTYPEMOUSE_FINGERSTICK 3
+#define DIDEVTYPEMOUSE_TOUCHPAD 4
+#define DIDEVTYPEMOUSE_TRACKBALL 5
+
+#define DIDEVTYPEKEYBOARD_UNKNOWN 0
+#define DIDEVTYPEKEYBOARD_PCXT 1
+#define DIDEVTYPEKEYBOARD_OLIVETTI 2
+#define DIDEVTYPEKEYBOARD_PCAT 3
+#define DIDEVTYPEKEYBOARD_PCENH 4
+#define DIDEVTYPEKEYBOARD_NOKIA1050 5
+#define DIDEVTYPEKEYBOARD_NOKIA9140 6
+#define DIDEVTYPEKEYBOARD_NEC98 7
+#define DIDEVTYPEKEYBOARD_NEC98LAPTOP 8
+#define DIDEVTYPEKEYBOARD_NEC98106 9
+#define DIDEVTYPEKEYBOARD_JAPAN106 10
+#define DIDEVTYPEKEYBOARD_JAPANAX 11
+#define DIDEVTYPEKEYBOARD_J3100 12
+
+#define DIDEVTYPEJOYSTICK_UNKNOWN 1
+#define DIDEVTYPEJOYSTICK_TRADITIONAL 2
+#define DIDEVTYPEJOYSTICK_FLIGHTSTICK 3
+#define DIDEVTYPEJOYSTICK_GAMEPAD 4
+#define DIDEVTYPEJOYSTICK_RUDDER 5
+#define DIDEVTYPEJOYSTICK_WHEEL 6
+#define DIDEVTYPEJOYSTICK_HEADTRACKER 7
+
+#else
+#define DI8DEVTYPEMOUSE_UNKNOWN 1
+#define DI8DEVTYPEMOUSE_TRADITIONAL 2
+#define DI8DEVTYPEMOUSE_FINGERSTICK 3
+#define DI8DEVTYPEMOUSE_TOUCHPAD 4
+#define DI8DEVTYPEMOUSE_TRACKBALL 5
+#define DI8DEVTYPEMOUSE_ABSOLUTE 6
+
+#define DI8DEVTYPEKEYBOARD_UNKNOWN 0
+#define DI8DEVTYPEKEYBOARD_PCXT 1
+#define DI8DEVTYPEKEYBOARD_OLIVETTI 2
+#define DI8DEVTYPEKEYBOARD_PCAT 3
+#define DI8DEVTYPEKEYBOARD_PCENH 4
+#define DI8DEVTYPEKEYBOARD_NOKIA1050 5
+#define DI8DEVTYPEKEYBOARD_NOKIA9140 6
+#define DI8DEVTYPEKEYBOARD_NEC98 7
+#define DI8DEVTYPEKEYBOARD_NEC98LAPTOP 8
+#define DI8DEVTYPEKEYBOARD_NEC98106 9
+#define DI8DEVTYPEKEYBOARD_JAPAN106 10
+#define DI8DEVTYPEKEYBOARD_JAPANAX 11
+#define DI8DEVTYPEKEYBOARD_J3100 12
+
+#define DI8DEVTYPE_LIMITEDGAMESUBTYPE 1
+
+#define DI8DEVTYPEJOYSTICK_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE
+#define DI8DEVTYPEJOYSTICK_STANDARD 2
+
+#define DI8DEVTYPEGAMEPAD_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE
+#define DI8DEVTYPEGAMEPAD_STANDARD 2
+#define DI8DEVTYPEGAMEPAD_TILT 3
+
+#define DI8DEVTYPEDRIVING_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE
+#define DI8DEVTYPEDRIVING_COMBINEDPEDALS 2
+#define DI8DEVTYPEDRIVING_DUALPEDALS 3
+#define DI8DEVTYPEDRIVING_THREEPEDALS 4
+#define DI8DEVTYPEDRIVING_HANDHELD 5
+
+#define DI8DEVTYPEFLIGHT_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE
+#define DI8DEVTYPEFLIGHT_STICK 2
+#define DI8DEVTYPEFLIGHT_YOKE 3
+#define DI8DEVTYPEFLIGHT_RC 4
+
+#define DI8DEVTYPE1STPERSON_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE
+#define DI8DEVTYPE1STPERSON_UNKNOWN 2
+#define DI8DEVTYPE1STPERSON_SIXDOF 3
+#define DI8DEVTYPE1STPERSON_SHOOTER 4
+
+#define DI8DEVTYPESCREENPTR_UNKNOWN 2
+#define DI8DEVTYPESCREENPTR_LIGHTGUN 3
+#define DI8DEVTYPESCREENPTR_LIGHTPEN 4
+#define DI8DEVTYPESCREENPTR_TOUCH 5
+
+#define DI8DEVTYPEREMOTE_UNKNOWN 2
+
+#define DI8DEVTYPEDEVICECTRL_UNKNOWN 2
+#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION 3
+#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED 4
+
+#define DI8DEVTYPESUPPLEMENTAL_UNKNOWN 2
+#define DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER 3
+#define DI8DEVTYPESUPPLEMENTAL_HEADTRACKER 4
+#define DI8DEVTYPESUPPLEMENTAL_HANDTRACKER 5
+#define DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE 6
+#define DI8DEVTYPESUPPLEMENTAL_SHIFTER 7
+#define DI8DEVTYPESUPPLEMENTAL_THROTTLE 8
+#define DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE 9
+#define DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS 10
+#define DI8DEVTYPESUPPLEMENTAL_DUALPEDALS 11
+#define DI8DEVTYPESUPPLEMENTAL_THREEPEDALS 12
+#define DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS 13
+#endif /* DIRECTINPUT_VERSION <= 0x700 */
+
+#define GET_DIDEVICE_TYPE(dwDevType) LOBYTE(dwDevType)
+#define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType)
+
+#if(DIRECTINPUT_VERSION >= 0x0500)
+/* This structure is defined for DirectX 3.0 compatibility */
+typedef struct DIDEVCAPS_DX3 {
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwDevType;
+ DWORD dwAxes;
+ DWORD dwButtons;
+ DWORD dwPOVs;
+} DIDEVCAPS_DX3, *LPDIDEVCAPS_DX3;
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
+
+typedef struct DIDEVCAPS {
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwDevType;
+ DWORD dwAxes;
+ DWORD dwButtons;
+ DWORD dwPOVs;
+#if(DIRECTINPUT_VERSION >= 0x0500)
+ DWORD dwFFSamplePeriod;
+ DWORD dwFFMinTimeResolution;
+ DWORD dwFirmwareRevision;
+ DWORD dwHardwareRevision;
+ DWORD dwFFDriverVersion;
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
+} DIDEVCAPS, *LPDIDEVCAPS;
+
+#define DIDC_ATTACHED 0x00000001
+#define DIDC_POLLEDDEVICE 0x00000002
+#define DIDC_EMULATED 0x00000004
+#define DIDC_POLLEDDATAFORMAT 0x00000008
+#if(DIRECTINPUT_VERSION >= 0x0500)
+#define DIDC_FORCEFEEDBACK 0x00000100
+#define DIDC_FFATTACK 0x00000200
+#define DIDC_FFFADE 0x00000400
+#define DIDC_SATURATION 0x00000800
+#define DIDC_POSNEGCOEFFICIENTS 0x00001000
+#define DIDC_POSNEGSATURATION 0x00002000
+#define DIDC_DEADBAND 0x00004000
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
+#define DIDC_STARTDELAY 0x00008000
+#if(DIRECTINPUT_VERSION >= 0x050a)
+#define DIDC_ALIAS 0x00010000
+#define DIDC_PHANTOM 0x00020000
+#endif /* DIRECTINPUT_VERSION >= 0x050a */
+#if(DIRECTINPUT_VERSION >= 0x0800)
+#define DIDC_HIDDEN 0x00040000
+#endif /* DIRECTINPUT_VERSION >= 0x0800 */
+
+#define DIDFT_ALL 0x00000000
+
+#define DIDFT_RELAXIS 0x00000001
+#define DIDFT_ABSAXIS 0x00000002
+#define DIDFT_AXIS 0x00000003
+
+#define DIDFT_PSHBUTTON 0x00000004
+#define DIDFT_TGLBUTTON 0x00000008
+#define DIDFT_BUTTON 0x0000000C
+
+#define DIDFT_POV 0x00000010
+#define DIDFT_COLLECTION 0x00000040
+#define DIDFT_NODATA 0x00000080
+
+#define DIDFT_ANYINSTANCE 0x00FFFF00
+#define DIDFT_INSTANCEMASK DIDFT_ANYINSTANCE
+#define DIDFT_MAKEINSTANCE(n) ((WORD)(n) << 8)
+#define DIDFT_GETTYPE(n) LOBYTE(n)
+#define DIDFT_GETINSTANCE(n) LOWORD((n) >> 8)
+#define DIDFT_FFACTUATOR 0x01000000
+#define DIDFT_FFEFFECTTRIGGER 0x02000000
+#if(DIRECTINPUT_VERSION >= 0x050a)
+#define DIDFT_OUTPUT 0x10000000
+#define DIDFT_VENDORDEFINED 0x04000000
+#define DIDFT_ALIAS 0x08000000
+#endif /* DIRECTINPUT_VERSION >= 0x050a */
+#ifndef DIDFT_OPTIONAL
+#define DIDFT_OPTIONAL 0x80000000
+#endif
+
+#define DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8)
+#define DIDFT_NOCOLLECTION 0x00FFFF00
+
+#ifndef DIJ_RINGZERO
+
+typedef struct _DIOBJECTDATAFORMAT {
+ const GUID *pguid;
+ DWORD dwOfs;
+ DWORD dwType;
+ DWORD dwFlags;
+} DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT;
+typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT;
+
+typedef struct _DIDATAFORMAT {
+ DWORD dwSize;
+ DWORD dwObjSize;
+ DWORD dwFlags;
+ DWORD dwDataSize;
+ DWORD dwNumObjs;
+ LPDIOBJECTDATAFORMAT rgodf;
+} DIDATAFORMAT, *LPDIDATAFORMAT;
+typedef const DIDATAFORMAT *LPCDIDATAFORMAT;
+
+#define DIDF_ABSAXIS 0x00000001
+#define DIDF_RELAXIS 0x00000002
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern const DIDATAFORMAT c_dfDIMouse;
+
+#if(DIRECTINPUT_VERSION >= 0x0700)
+extern const DIDATAFORMAT c_dfDIMouse2;
+#endif /* DIRECTINPUT_VERSION >= 0x0700 */
+
+extern const DIDATAFORMAT c_dfDIKeyboard;
+
+#if(DIRECTINPUT_VERSION >= 0x0500)
+extern const DIDATAFORMAT c_dfDIJoystick;
+extern const DIDATAFORMAT c_dfDIJoystick2;
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
+
+#ifdef __cplusplus
+};
+#endif
+
+
+#if DIRECTINPUT_VERSION > 0x0700
+
+typedef struct _DIACTIONA {
+ UINT_PTR uAppData;
+ DWORD dwSemantic;
+ OPTIONAL DWORD dwFlags;
+ OPTIONAL union {
+ LPCSTR lptszActionName;
+ UINT uResIdString;
+ };
+ OPTIONAL GUID guidInstance;
+ OPTIONAL DWORD dwObjID;
+ OPTIONAL DWORD dwHow;
+} DIACTIONA, *LPDIACTIONA ;
+typedef struct _DIACTIONW {
+ UINT_PTR uAppData;
+ DWORD dwSemantic;
+ OPTIONAL DWORD dwFlags;
+ OPTIONAL union {
+ LPCWSTR lptszActionName;
+ UINT uResIdString;
+ };
+ OPTIONAL GUID guidInstance;
+ OPTIONAL DWORD dwObjID;
+ OPTIONAL DWORD dwHow;
+} DIACTIONW, *LPDIACTIONW ;
+#ifdef UNICODE
+typedef DIACTIONW DIACTION;
+typedef LPDIACTIONW LPDIACTION;
+#else
+typedef DIACTIONA DIACTION;
+typedef LPDIACTIONA LPDIACTION;
+#endif // UNICODE
+
+typedef const DIACTIONA *LPCDIACTIONA;
+typedef const DIACTIONW *LPCDIACTIONW;
+#ifdef UNICODE
+typedef DIACTIONW DIACTION;
+typedef LPCDIACTIONW LPCDIACTION;
+#else
+typedef DIACTIONA DIACTION;
+typedef LPCDIACTIONA LPCDIACTION;
+#endif // UNICODE
+typedef const DIACTION *LPCDIACTION;
+
+
+#define DIA_FORCEFEEDBACK 0x00000001
+#define DIA_APPMAPPED 0x00000002
+#define DIA_APPNOMAP 0x00000004
+#define DIA_NORANGE 0x00000008
+#define DIA_APPFIXED 0x00000010
+
+#define DIAH_UNMAPPED 0x00000000
+#define DIAH_USERCONFIG 0x00000001
+#define DIAH_APPREQUESTED 0x00000002
+#define DIAH_HWAPP 0x00000004
+#define DIAH_HWDEFAULT 0x00000008
+#define DIAH_DEFAULT 0x00000020
+#define DIAH_ERROR 0x80000000
+
+typedef struct _DIACTIONFORMATA {
+ DWORD dwSize;
+ DWORD dwActionSize;
+ DWORD dwDataSize;
+ DWORD dwNumActions;
+ LPDIACTIONA rgoAction;
+ GUID guidActionMap;
+ DWORD dwGenre;
+ DWORD dwBufferSize;
+ OPTIONAL LONG lAxisMin;
+ OPTIONAL LONG lAxisMax;
+ OPTIONAL HINSTANCE hInstString;
+ FILETIME ftTimeStamp;
+ DWORD dwCRC;
+ CHAR tszActionMap[MAX_PATH];
+} DIACTIONFORMATA, *LPDIACTIONFORMATA;
+typedef struct _DIACTIONFORMATW {
+ DWORD dwSize;
+ DWORD dwActionSize;
+ DWORD dwDataSize;
+ DWORD dwNumActions;
+ LPDIACTIONW rgoAction;
+ GUID guidActionMap;
+ DWORD dwGenre;
+ DWORD dwBufferSize;
+ OPTIONAL LONG lAxisMin;
+ OPTIONAL LONG lAxisMax;
+ OPTIONAL HINSTANCE hInstString;
+ FILETIME ftTimeStamp;
+ DWORD dwCRC;
+ WCHAR tszActionMap[MAX_PATH];
+} DIACTIONFORMATW, *LPDIACTIONFORMATW;
+#ifdef UNICODE
+typedef DIACTIONFORMATW DIACTIONFORMAT;
+typedef LPDIACTIONFORMATW LPDIACTIONFORMAT;
+#else
+typedef DIACTIONFORMATA DIACTIONFORMAT;
+typedef LPDIACTIONFORMATA LPDIACTIONFORMAT;
+#endif // UNICODE
+typedef const DIACTIONFORMATA *LPCDIACTIONFORMATA;
+typedef const DIACTIONFORMATW *LPCDIACTIONFORMATW;
+#ifdef UNICODE
+typedef DIACTIONFORMATW DIACTIONFORMAT;
+typedef LPCDIACTIONFORMATW LPCDIACTIONFORMAT;
+#else
+typedef DIACTIONFORMATA DIACTIONFORMAT;
+typedef LPCDIACTIONFORMATA LPCDIACTIONFORMAT;
+#endif // UNICODE
+typedef const DIACTIONFORMAT *LPCDIACTIONFORMAT;
+
+#define DIAFTS_NEWDEVICELOW 0xFFFFFFFF
+#define DIAFTS_NEWDEVICEHIGH 0xFFFFFFFF
+#define DIAFTS_UNUSEDDEVICELOW 0x00000000
+#define DIAFTS_UNUSEDDEVICEHIGH 0x00000000
+
+#define DIDBAM_DEFAULT 0x00000000
+#define DIDBAM_PRESERVE 0x00000001
+#define DIDBAM_INITIALIZE 0x00000002
+#define DIDBAM_HWDEFAULTS 0x00000004
+
+#define DIDSAM_DEFAULT 0x00000000
+#define DIDSAM_NOUSER 0x00000001
+#define DIDSAM_FORCESAVE 0x00000002
+
+#define DICD_DEFAULT 0x00000000
+#define DICD_EDIT 0x00000001
+
+/*
+ * The following definition is normally defined in d3dtypes.h
+ */
+#ifndef D3DCOLOR_DEFINED
+typedef DWORD D3DCOLOR;
+#define D3DCOLOR_DEFINED
+#endif
+
+typedef struct _DICOLORSET{
+ DWORD dwSize;
+ D3DCOLOR cTextFore;
+ D3DCOLOR cTextHighlight;
+ D3DCOLOR cCalloutLine;
+ D3DCOLOR cCalloutHighlight;
+ D3DCOLOR cBorder;
+ D3DCOLOR cControlFill;
+ D3DCOLOR cHighlightFill;
+ D3DCOLOR cAreaFill;
+} DICOLORSET, *LPDICOLORSET;
+typedef const DICOLORSET *LPCDICOLORSET;
+
+
+typedef struct _DICONFIGUREDEVICESPARAMSA{
+ DWORD dwSize;
+ DWORD dwcUsers;
+ LPSTR lptszUserNames;
+ DWORD dwcFormats;
+ LPDIACTIONFORMATA lprgFormats;
+ HWND hwnd;
+ DICOLORSET dics;
+ IUnknown FAR * lpUnkDDSTarget;
+} DICONFIGUREDEVICESPARAMSA, *LPDICONFIGUREDEVICESPARAMSA;
+typedef struct _DICONFIGUREDEVICESPARAMSW{
+ DWORD dwSize;
+ DWORD dwcUsers;
+ LPWSTR lptszUserNames;
+ DWORD dwcFormats;
+ LPDIACTIONFORMATW lprgFormats;
+ HWND hwnd;
+ DICOLORSET dics;
+ IUnknown FAR * lpUnkDDSTarget;
+} DICONFIGUREDEVICESPARAMSW, *LPDICONFIGUREDEVICESPARAMSW;
+#ifdef UNICODE
+typedef DICONFIGUREDEVICESPARAMSW DICONFIGUREDEVICESPARAMS;
+typedef LPDICONFIGUREDEVICESPARAMSW LPDICONFIGUREDEVICESPARAMS;
+#else
+typedef DICONFIGUREDEVICESPARAMSA DICONFIGUREDEVICESPARAMS;
+typedef LPDICONFIGUREDEVICESPARAMSA LPDICONFIGUREDEVICESPARAMS;
+#endif // UNICODE
+typedef const DICONFIGUREDEVICESPARAMSA *LPCDICONFIGUREDEVICESPARAMSA;
+typedef const DICONFIGUREDEVICESPARAMSW *LPCDICONFIGUREDEVICESPARAMSW;
+#ifdef UNICODE
+typedef DICONFIGUREDEVICESPARAMSW DICONFIGUREDEVICESPARAMS;
+typedef LPCDICONFIGUREDEVICESPARAMSW LPCDICONFIGUREDEVICESPARAMS;
+#else
+typedef DICONFIGUREDEVICESPARAMSA DICONFIGUREDEVICESPARAMS;
+typedef LPCDICONFIGUREDEVICESPARAMSA LPCDICONFIGUREDEVICESPARAMS;
+#endif // UNICODE
+typedef const DICONFIGUREDEVICESPARAMS *LPCDICONFIGUREDEVICESPARAMS;
+
+
+#define DIDIFT_CONFIGURATION 0x00000001
+#define DIDIFT_OVERLAY 0x00000002
+
+#define DIDAL_CENTERED 0x00000000
+#define DIDAL_LEFTALIGNED 0x00000001
+#define DIDAL_RIGHTALIGNED 0x00000002
+#define DIDAL_MIDDLE 0x00000000
+#define DIDAL_TOPALIGNED 0x00000004
+#define DIDAL_BOTTOMALIGNED 0x00000008
+
+typedef struct _DIDEVICEIMAGEINFOA {
+ CHAR tszImagePath[MAX_PATH];
+ DWORD dwFlags;
+ // These are valid if DIDIFT_OVERLAY is present in dwFlags.
+ DWORD dwViewID;
+ RECT rcOverlay;
+ DWORD dwObjID;
+ DWORD dwcValidPts;
+ POINT rgptCalloutLine[5];
+ RECT rcCalloutRect;
+ DWORD dwTextAlign;
+} DIDEVICEIMAGEINFOA, *LPDIDEVICEIMAGEINFOA;
+typedef struct _DIDEVICEIMAGEINFOW {
+ WCHAR tszImagePath[MAX_PATH];
+ DWORD dwFlags;
+ // These are valid if DIDIFT_OVERLAY is present in dwFlags.
+ DWORD dwViewID;
+ RECT rcOverlay;
+ DWORD dwObjID;
+ DWORD dwcValidPts;
+ POINT rgptCalloutLine[5];
+ RECT rcCalloutRect;
+ DWORD dwTextAlign;
+} DIDEVICEIMAGEINFOW, *LPDIDEVICEIMAGEINFOW;
+#ifdef UNICODE
+typedef DIDEVICEIMAGEINFOW DIDEVICEIMAGEINFO;
+typedef LPDIDEVICEIMAGEINFOW LPDIDEVICEIMAGEINFO;
+#else
+typedef DIDEVICEIMAGEINFOA DIDEVICEIMAGEINFO;
+typedef LPDIDEVICEIMAGEINFOA LPDIDEVICEIMAGEINFO;
+#endif // UNICODE
+typedef const DIDEVICEIMAGEINFOA *LPCDIDEVICEIMAGEINFOA;
+typedef const DIDEVICEIMAGEINFOW *LPCDIDEVICEIMAGEINFOW;
+#ifdef UNICODE
+typedef DIDEVICEIMAGEINFOW DIDEVICEIMAGEINFO;
+typedef LPCDIDEVICEIMAGEINFOW LPCDIDEVICEIMAGEINFO;
+#else
+typedef DIDEVICEIMAGEINFOA DIDEVICEIMAGEINFO;
+typedef LPCDIDEVICEIMAGEINFOA LPCDIDEVICEIMAGEINFO;
+#endif // UNICODE
+typedef const DIDEVICEIMAGEINFO *LPCDIDEVICEIMAGEINFO;
+
+typedef struct _DIDEVICEIMAGEINFOHEADERA {
+ DWORD dwSize;
+ DWORD dwSizeImageInfo;
+ DWORD dwcViews;
+ DWORD dwcButtons;
+ DWORD dwcAxes;
+ DWORD dwcPOVs;
+ DWORD dwBufferSize;
+ DWORD dwBufferUsed;
+ LPDIDEVICEIMAGEINFOA lprgImageInfoArray;
+} DIDEVICEIMAGEINFOHEADERA, *LPDIDEVICEIMAGEINFOHEADERA;
+typedef struct _DIDEVICEIMAGEINFOHEADERW {
+ DWORD dwSize;
+ DWORD dwSizeImageInfo;
+ DWORD dwcViews;
+ DWORD dwcButtons;
+ DWORD dwcAxes;
+ DWORD dwcPOVs;
+ DWORD dwBufferSize;
+ DWORD dwBufferUsed;
+ LPDIDEVICEIMAGEINFOW lprgImageInfoArray;
+} DIDEVICEIMAGEINFOHEADERW, *LPDIDEVICEIMAGEINFOHEADERW;
+#ifdef UNICODE
+typedef DIDEVICEIMAGEINFOHEADERW DIDEVICEIMAGEINFOHEADER;
+typedef LPDIDEVICEIMAGEINFOHEADERW LPDIDEVICEIMAGEINFOHEADER;
+#else
+typedef DIDEVICEIMAGEINFOHEADERA DIDEVICEIMAGEINFOHEADER;
+typedef LPDIDEVICEIMAGEINFOHEADERA LPDIDEVICEIMAGEINFOHEADER;
+#endif // UNICODE
+typedef const DIDEVICEIMAGEINFOHEADERA *LPCDIDEVICEIMAGEINFOHEADERA;
+typedef const DIDEVICEIMAGEINFOHEADERW *LPCDIDEVICEIMAGEINFOHEADERW;
+#ifdef UNICODE
+typedef DIDEVICEIMAGEINFOHEADERW DIDEVICEIMAGEINFOHEADER;
+typedef LPCDIDEVICEIMAGEINFOHEADERW LPCDIDEVICEIMAGEINFOHEADER;
+#else
+typedef DIDEVICEIMAGEINFOHEADERA DIDEVICEIMAGEINFOHEADER;
+typedef LPCDIDEVICEIMAGEINFOHEADERA LPCDIDEVICEIMAGEINFOHEADER;
+#endif // UNICODE
+typedef const DIDEVICEIMAGEINFOHEADER *LPCDIDEVICEIMAGEINFOHEADER;
+
+#endif /* DIRECTINPUT_VERSION > 0x0700 */
+
+#if(DIRECTINPUT_VERSION >= 0x0500)
+/* These structures are defined for DirectX 3.0 compatibility */
+
+typedef struct DIDEVICEOBJECTINSTANCE_DX3A {
+ DWORD dwSize;
+ GUID guidType;
+ DWORD dwOfs;
+ DWORD dwType;
+ DWORD dwFlags;
+ CHAR tszName[MAX_PATH];
+} DIDEVICEOBJECTINSTANCE_DX3A, *LPDIDEVICEOBJECTINSTANCE_DX3A;
+typedef struct DIDEVICEOBJECTINSTANCE_DX3W {
+ DWORD dwSize;
+ GUID guidType;
+ DWORD dwOfs;
+ DWORD dwType;
+ DWORD dwFlags;
+ WCHAR tszName[MAX_PATH];
+} DIDEVICEOBJECTINSTANCE_DX3W, *LPDIDEVICEOBJECTINSTANCE_DX3W;
+#ifdef UNICODE
+typedef DIDEVICEOBJECTINSTANCE_DX3W DIDEVICEOBJECTINSTANCE_DX3;
+typedef LPDIDEVICEOBJECTINSTANCE_DX3W LPDIDEVICEOBJECTINSTANCE_DX3;
+#else
+typedef DIDEVICEOBJECTINSTANCE_DX3A DIDEVICEOBJECTINSTANCE_DX3;
+typedef LPDIDEVICEOBJECTINSTANCE_DX3A LPDIDEVICEOBJECTINSTANCE_DX3;
+#endif // UNICODE
+typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A;
+typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W;
+typedef const DIDEVICEOBJECTINSTANCE_DX3 *LPCDIDEVICEOBJECTINSTANCE_DX3;
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
+
+typedef struct DIDEVICEOBJECTINSTANCEA {
+ DWORD dwSize;
+ GUID guidType;
+ DWORD dwOfs;
+ DWORD dwType;
+ DWORD dwFlags;
+ CHAR tszName[MAX_PATH];
+#if(DIRECTINPUT_VERSION >= 0x0500)
+ DWORD dwFFMaxForce;
+ DWORD dwFFForceResolution;
+ WORD wCollectionNumber;
+ WORD wDesignatorIndex;
+ WORD wUsagePage;
+ WORD wUsage;
+ DWORD dwDimension;
+ WORD wExponent;
+ WORD wReportId;
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
+} DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA;
+typedef struct DIDEVICEOBJECTINSTANCEW {
+ DWORD dwSize;
+ GUID guidType;
+ DWORD dwOfs;
+ DWORD dwType;
+ DWORD dwFlags;
+ WCHAR tszName[MAX_PATH];
+#if(DIRECTINPUT_VERSION >= 0x0500)
+ DWORD dwFFMaxForce;
+ DWORD dwFFForceResolution;
+ WORD wCollectionNumber;
+ WORD wDesignatorIndex;
+ WORD wUsagePage;
+ WORD wUsage;
+ DWORD dwDimension;
+ WORD wExponent;
+ WORD wReportId;
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
+} DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW;
+#ifdef UNICODE
+typedef DIDEVICEOBJECTINSTANCEW DIDEVICEOBJECTINSTANCE;
+typedef LPDIDEVICEOBJECTINSTANCEW LPDIDEVICEOBJECTINSTANCE;
+#else
+typedef DIDEVICEOBJECTINSTANCEA DIDEVICEOBJECTINSTANCE;
+typedef LPDIDEVICEOBJECTINSTANCEA LPDIDEVICEOBJECTINSTANCE;
+#endif // UNICODE
+typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA;
+typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW;
+typedef const DIDEVICEOBJECTINSTANCE *LPCDIDEVICEOBJECTINSTANCE;
+
+typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA, LPVOID);
+typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW, LPVOID);
+#ifdef UNICODE
+#define LPDIENUMDEVICEOBJECTSCALLBACK LPDIENUMDEVICEOBJECTSCALLBACKW
+#else
+#define LPDIENUMDEVICEOBJECTSCALLBACK LPDIENUMDEVICEOBJECTSCALLBACKA
+#endif // !UNICODE
+
+#if(DIRECTINPUT_VERSION >= 0x0500)
+#define DIDOI_FFACTUATOR 0x00000001
+#define DIDOI_FFEFFECTTRIGGER 0x00000002
+#define DIDOI_POLLED 0x00008000
+#define DIDOI_ASPECTPOSITION 0x00000100
+#define DIDOI_ASPECTVELOCITY 0x00000200
+#define DIDOI_ASPECTACCEL 0x00000300
+#define DIDOI_ASPECTFORCE 0x00000400
+#define DIDOI_ASPECTMASK 0x00000F00
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
+#if(DIRECTINPUT_VERSION >= 0x050a)
+#define DIDOI_GUIDISUSAGE 0x00010000
+#endif /* DIRECTINPUT_VERSION >= 0x050a */
+
+typedef struct DIPROPHEADER {
+ DWORD dwSize;
+ DWORD dwHeaderSize;
+ DWORD dwObj;
+ DWORD dwHow;
+} DIPROPHEADER, *LPDIPROPHEADER;
+typedef const DIPROPHEADER *LPCDIPROPHEADER;
+
+#define DIPH_DEVICE 0
+#define DIPH_BYOFFSET 1
+#define DIPH_BYID 2
+#if(DIRECTINPUT_VERSION >= 0x050a)
+#define DIPH_BYUSAGE 3
+#endif /* DIRECTINPUT_VERSION >= 0x050a */
+
+#if(DIRECTINPUT_VERSION >= 0x050a)
+#define DIMAKEUSAGEDWORD(UsagePage, Usage) \
+ (DWORD)MAKELONG(Usage, UsagePage)
+#endif /* DIRECTINPUT_VERSION >= 0x050a */
+
+typedef struct DIPROPDWORD {
+ DIPROPHEADER diph;
+ DWORD dwData;
+} DIPROPDWORD, *LPDIPROPDWORD;
+typedef const DIPROPDWORD *LPCDIPROPDWORD;
+
+#if(DIRECTINPUT_VERSION >= 0x0800)
+typedef struct DIPROPPOINTER {
+ DIPROPHEADER diph;
+ UINT_PTR uData;
+} DIPROPPOINTER, *LPDIPROPPOINTER;
+typedef const DIPROPPOINTER *LPCDIPROPPOINTER;
+#endif /* DIRECTINPUT_VERSION >= 0x0800 */
+
+typedef struct DIPROPRANGE {
+ DIPROPHEADER diph;
+ LONG lMin;
+ LONG lMax;
+} DIPROPRANGE, *LPDIPROPRANGE;
+typedef const DIPROPRANGE *LPCDIPROPRANGE;
+
+#define DIPROPRANGE_NOMIN ((LONG)0x80000000)
+#define DIPROPRANGE_NOMAX ((LONG)0x7FFFFFFF)
+
+#if(DIRECTINPUT_VERSION >= 0x050a)
+typedef struct DIPROPCAL {
+ DIPROPHEADER diph;
+ LONG lMin;
+ LONG lCenter;
+ LONG lMax;
+} DIPROPCAL, *LPDIPROPCAL;
+typedef const DIPROPCAL *LPCDIPROPCAL;
+
+typedef struct DIPROPCALPOV {
+ DIPROPHEADER diph;
+ LONG lMin[5];
+ LONG lMax[5];
+} DIPROPCALPOV, *LPDIPROPCALPOV;
+typedef const DIPROPCALPOV *LPCDIPROPCALPOV;
+
+typedef struct DIPROPGUIDANDPATH {
+ DIPROPHEADER diph;
+ GUID guidClass;
+ WCHAR wszPath[MAX_PATH];
+} DIPROPGUIDANDPATH, *LPDIPROPGUIDANDPATH;
+typedef const DIPROPGUIDANDPATH *LPCDIPROPGUIDANDPATH;
+
+typedef struct DIPROPSTRING {
+ DIPROPHEADER diph;
+ WCHAR wsz[MAX_PATH];
+} DIPROPSTRING, *LPDIPROPSTRING;
+typedef const DIPROPSTRING *LPCDIPROPSTRING;
+
+#endif /* DIRECTINPUT_VERSION >= 0x050a */
+
+#if(DIRECTINPUT_VERSION >= 0x0800)
+#define MAXCPOINTSNUM 8
+
+typedef struct _CPOINT
+{
+ LONG lP; // raw value
+ DWORD dwLog; // logical_value / max_logical_value * 10000
+} CPOINT, *PCPOINT;
+
+typedef struct DIPROPCPOINTS {
+ DIPROPHEADER diph;
+ DWORD dwCPointsNum;
+ CPOINT cp[MAXCPOINTSNUM];
+} DIPROPCPOINTS, *LPDIPROPCPOINTS;
+typedef const DIPROPCPOINTS *LPCDIPROPCPOINTS;
+#endif /* DIRECTINPUT_VERSION >= 0x0800 */
+
+
+#ifdef __cplusplus
+#define MAKEDIPROP(prop) (*(const GUID *)(prop))
+#else
+#define MAKEDIPROP(prop) ((REFGUID)(prop))
+#endif
+
+#define DIPROP_BUFFERSIZE MAKEDIPROP(1)
+
+#define DIPROP_AXISMODE MAKEDIPROP(2)
+
+#define DIPROPAXISMODE_ABS 0
+#define DIPROPAXISMODE_REL 1
+
+#define DIPROP_GRANULARITY MAKEDIPROP(3)
+
+#define DIPROP_RANGE MAKEDIPROP(4)
+
+#define DIPROP_DEADZONE MAKEDIPROP(5)
+
+#define DIPROP_SATURATION MAKEDIPROP(6)
+
+#define DIPROP_FFGAIN MAKEDIPROP(7)
+
+#define DIPROP_FFLOAD MAKEDIPROP(8)
+
+#define DIPROP_AUTOCENTER MAKEDIPROP(9)
+
+#define DIPROPAUTOCENTER_OFF 0
+#define DIPROPAUTOCENTER_ON 1
+
+#define DIPROP_CALIBRATIONMODE MAKEDIPROP(10)
+
+#define DIPROPCALIBRATIONMODE_COOKED 0
+#define DIPROPCALIBRATIONMODE_RAW 1
+
+#if(DIRECTINPUT_VERSION >= 0x050a)
+#define DIPROP_CALIBRATION MAKEDIPROP(11)
+
+#define DIPROP_GUIDANDPATH MAKEDIPROP(12)
+
+#define DIPROP_INSTANCENAME MAKEDIPROP(13)
+
+#define DIPROP_PRODUCTNAME MAKEDIPROP(14)
+#endif /* DIRECTINPUT_VERSION >= 0x050a */
+
+#if(DIRECTINPUT_VERSION >= 0x05b2)
+#define DIPROP_JOYSTICKID MAKEDIPROP(15)
+
+#define DIPROP_GETPORTDISPLAYNAME MAKEDIPROP(16)
+
+#endif /* DIRECTINPUT_VERSION >= 0x05b2 */
+
+#if(DIRECTINPUT_VERSION >= 0x0700)
+#define DIPROP_PHYSICALRANGE MAKEDIPROP(18)
+
+#define DIPROP_LOGICALRANGE MAKEDIPROP(19)
+#endif /* DIRECTINPUT_VERSION >= 0x0700 */
+
+#if(DIRECTINPUT_VERSION >= 0x0800)
+#define DIPROP_KEYNAME MAKEDIPROP(20)
+
+#define DIPROP_CPOINTS MAKEDIPROP(21)
+
+#define DIPROP_APPDATA MAKEDIPROP(22)
+
+#define DIPROP_SCANCODE MAKEDIPROP(23)
+
+#define DIPROP_VIDPID MAKEDIPROP(24)
+
+#define DIPROP_USERNAME MAKEDIPROP(25)
+
+#define DIPROP_TYPENAME MAKEDIPROP(26)
+#endif /* DIRECTINPUT_VERSION >= 0x0800 */
+
+
+typedef struct DIDEVICEOBJECTDATA_DX3 {
+ DWORD dwOfs;
+ DWORD dwData;
+ DWORD dwTimeStamp;
+ DWORD dwSequence;
+} DIDEVICEOBJECTDATA_DX3, *LPDIDEVICEOBJECTDATA_DX3;
+typedef const DIDEVICEOBJECTDATA_DX3 *LPCDIDEVICEOBJECTDATA_DX;
+
+typedef struct DIDEVICEOBJECTDATA {
+ DWORD dwOfs;
+ DWORD dwData;
+ DWORD dwTimeStamp;
+ DWORD dwSequence;
+#if(DIRECTINPUT_VERSION >= 0x0800)
+ UINT_PTR uAppData;
+#endif /* DIRECTINPUT_VERSION >= 0x0800 */
+} DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA;
+typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA;
+
+#define DIGDD_PEEK 0x00000001
+
+#define DISEQUENCE_COMPARE(dwSequence1, cmp, dwSequence2) \
+ ((int)((dwSequence1) - (dwSequence2)) cmp 0)
+#define DISCL_EXCLUSIVE 0x00000001
+#define DISCL_NONEXCLUSIVE 0x00000002
+#define DISCL_FOREGROUND 0x00000004
+#define DISCL_BACKGROUND 0x00000008
+#define DISCL_NOWINKEY 0x00000010
+
+#if(DIRECTINPUT_VERSION >= 0x0500)
+/* These structures are defined for DirectX 3.0 compatibility */
+
+typedef struct DIDEVICEINSTANCE_DX3A {
+ DWORD dwSize;
+ GUID guidInstance;
+ GUID guidProduct;
+ DWORD dwDevType;
+ CHAR tszInstanceName[MAX_PATH];
+ CHAR tszProductName[MAX_PATH];
+} DIDEVICEINSTANCE_DX3A, *LPDIDEVICEINSTANCE_DX3A;
+typedef struct DIDEVICEINSTANCE_DX3W {
+ DWORD dwSize;
+ GUID guidInstance;
+ GUID guidProduct;
+ DWORD dwDevType;
+ WCHAR tszInstanceName[MAX_PATH];
+ WCHAR tszProductName[MAX_PATH];
+} DIDEVICEINSTANCE_DX3W, *LPDIDEVICEINSTANCE_DX3W;
+#ifdef UNICODE
+typedef DIDEVICEINSTANCE_DX3W DIDEVICEINSTANCE_DX3;
+typedef LPDIDEVICEINSTANCE_DX3W LPDIDEVICEINSTANCE_DX3;
+#else
+typedef DIDEVICEINSTANCE_DX3A DIDEVICEINSTANCE_DX3;
+typedef LPDIDEVICEINSTANCE_DX3A LPDIDEVICEINSTANCE_DX3;
+#endif // UNICODE
+typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A;
+typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W;
+typedef const DIDEVICEINSTANCE_DX3 *LPCDIDEVICEINSTANCE_DX3;
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
+
+typedef struct DIDEVICEINSTANCEA {
+ DWORD dwSize;
+ GUID guidInstance;
+ GUID guidProduct;
+ DWORD dwDevType;
+ CHAR tszInstanceName[MAX_PATH];
+ CHAR tszProductName[MAX_PATH];
+#if(DIRECTINPUT_VERSION >= 0x0500)
+ GUID guidFFDriver;
+ WORD wUsagePage;
+ WORD wUsage;
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
+} DIDEVICEINSTANCEA, *LPDIDEVICEINSTANCEA;
+typedef struct DIDEVICEINSTANCEW {
+ DWORD dwSize;
+ GUID guidInstance;
+ GUID guidProduct;
+ DWORD dwDevType;
+ WCHAR tszInstanceName[MAX_PATH];
+ WCHAR tszProductName[MAX_PATH];
+#if(DIRECTINPUT_VERSION >= 0x0500)
+ GUID guidFFDriver;
+ WORD wUsagePage;
+ WORD wUsage;
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
+} DIDEVICEINSTANCEW, *LPDIDEVICEINSTANCEW;
+#ifdef UNICODE
+typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE;
+typedef LPDIDEVICEINSTANCEW LPDIDEVICEINSTANCE;
+#else
+typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE;
+typedef LPDIDEVICEINSTANCEA LPDIDEVICEINSTANCE;
+#endif // UNICODE
+
+typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA;
+typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW;
+#ifdef UNICODE
+typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE;
+typedef LPCDIDEVICEINSTANCEW LPCDIDEVICEINSTANCE;
+#else
+typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE;
+typedef LPCDIDEVICEINSTANCEA LPCDIDEVICEINSTANCE;
+#endif // UNICODE
+typedef const DIDEVICEINSTANCE *LPCDIDEVICEINSTANCE;
+
+#undef INTERFACE
+#define INTERFACE IDirectInputDeviceW
+
+DECLARE_INTERFACE_(IDirectInputDeviceW, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInputDeviceW methods ***/
+ STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
+ STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE;
+ STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
+ STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
+ STDMETHOD(Acquire)(THIS) PURE;
+ STDMETHOD(Unacquire)(THIS) PURE;
+ STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
+ STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
+ STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
+ STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE;
+ STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE;
+ STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
+};
+
+typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW;
+
+#undef INTERFACE
+#define INTERFACE IDirectInputDeviceA
+
+DECLARE_INTERFACE_(IDirectInputDeviceA, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInputDeviceA methods ***/
+ STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
+ STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE;
+ STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
+ STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
+ STDMETHOD(Acquire)(THIS) PURE;
+ STDMETHOD(Unacquire)(THIS) PURE;
+ STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
+ STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
+ STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
+ STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE;
+ STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE;
+ STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
+};
+
+typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA;
+
+#ifdef UNICODE
+#define IID_IDirectInputDevice IID_IDirectInputDeviceW
+#define IDirectInputDevice IDirectInputDeviceW
+#define IDirectInputDeviceVtbl IDirectInputDeviceWVtbl
+#else
+#define IID_IDirectInputDevice IID_IDirectInputDeviceA
+#define IDirectInputDevice IDirectInputDeviceA
+#define IDirectInputDeviceVtbl IDirectInputDeviceAVtbl
+#endif
+typedef struct IDirectInputDevice *LPDIRECTINPUTDEVICE;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectInputDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInputDevice_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectInputDevice_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectInputDevice_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)
+#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
+#define IDirectInputDevice_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)
+#define IDirectInputDevice_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)
+#define IDirectInputDevice_Acquire(p) (p)->lpVtbl->Acquire(p)
+#define IDirectInputDevice_Unacquire(p) (p)->lpVtbl->Unacquire(p)
+#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)
+#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
+#define IDirectInputDevice_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)
+#define IDirectInputDevice_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)
+#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)
+#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)
+#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
+#define IDirectInputDevice_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
+#else
+#define IDirectInputDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInputDevice_AddRef(p) (p)->AddRef()
+#define IDirectInputDevice_Release(p) (p)->Release()
+#define IDirectInputDevice_GetCapabilities(p,a) (p)->GetCapabilities(a)
+#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)
+#define IDirectInputDevice_GetProperty(p,a,b) (p)->GetProperty(a,b)
+#define IDirectInputDevice_SetProperty(p,a,b) (p)->SetProperty(a,b)
+#define IDirectInputDevice_Acquire(p) (p)->Acquire()
+#define IDirectInputDevice_Unacquire(p) (p)->Unacquire()
+#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)
+#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)
+#define IDirectInputDevice_SetDataFormat(p,a) (p)->SetDataFormat(a)
+#define IDirectInputDevice_SetEventNotification(p,a) (p)->SetEventNotification(a)
+#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
+#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)
+#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)
+#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
+#define IDirectInputDevice_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
+#endif
+
+#endif /* DIJ_RINGZERO */
+
+
+#if(DIRECTINPUT_VERSION >= 0x0500)
+
+#define DISFFC_RESET 0x00000001
+#define DISFFC_STOPALL 0x00000002
+#define DISFFC_PAUSE 0x00000004
+#define DISFFC_CONTINUE 0x00000008
+#define DISFFC_SETACTUATORSON 0x00000010
+#define DISFFC_SETACTUATORSOFF 0x00000020
+
+#define DIGFFS_EMPTY 0x00000001
+#define DIGFFS_STOPPED 0x00000002
+#define DIGFFS_PAUSED 0x00000004
+#define DIGFFS_ACTUATORSON 0x00000010
+#define DIGFFS_ACTUATORSOFF 0x00000020
+#define DIGFFS_POWERON 0x00000040
+#define DIGFFS_POWEROFF 0x00000080
+#define DIGFFS_SAFETYSWITCHON 0x00000100
+#define DIGFFS_SAFETYSWITCHOFF 0x00000200
+#define DIGFFS_USERFFSWITCHON 0x00000400
+#define DIGFFS_USERFFSWITCHOFF 0x00000800
+#define DIGFFS_DEVICELOST 0x80000000
+
+#ifndef DIJ_RINGZERO
+
+typedef struct DIEFFECTINFOA {
+ DWORD dwSize;
+ GUID guid;
+ DWORD dwEffType;
+ DWORD dwStaticParams;
+ DWORD dwDynamicParams;
+ CHAR tszName[MAX_PATH];
+} DIEFFECTINFOA, *LPDIEFFECTINFOA;
+typedef struct DIEFFECTINFOW {
+ DWORD dwSize;
+ GUID guid;
+ DWORD dwEffType;
+ DWORD dwStaticParams;
+ DWORD dwDynamicParams;
+ WCHAR tszName[MAX_PATH];
+} DIEFFECTINFOW, *LPDIEFFECTINFOW;
+#ifdef UNICODE
+typedef DIEFFECTINFOW DIEFFECTINFO;
+typedef LPDIEFFECTINFOW LPDIEFFECTINFO;
+#else
+typedef DIEFFECTINFOA DIEFFECTINFO;
+typedef LPDIEFFECTINFOA LPDIEFFECTINFO;
+#endif // UNICODE
+typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA;
+typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW;
+typedef const DIEFFECTINFO *LPCDIEFFECTINFO;
+
+#define DISDD_CONTINUE 0x00000001
+
+typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID);
+typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID);
+#ifdef UNICODE
+#define LPDIENUMEFFECTSCALLBACK LPDIENUMEFFECTSCALLBACKW
+#else
+#define LPDIENUMEFFECTSCALLBACK LPDIENUMEFFECTSCALLBACKA
+#endif // !UNICODE
+typedef BOOL (FAR PASCAL * LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID);
+
+#undef INTERFACE
+#define INTERFACE IDirectInputDevice2W
+
+DECLARE_INTERFACE_(IDirectInputDevice2W, IDirectInputDeviceW)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInputDeviceW methods ***/
+ STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
+ STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE;
+ STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
+ STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
+ STDMETHOD(Acquire)(THIS) PURE;
+ STDMETHOD(Unacquire)(THIS) PURE;
+ STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
+ STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
+ STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
+ STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE;
+ STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE;
+ STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
+
+ /*** IDirectInputDevice2W methods ***/
+ STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
+ STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE;
+ STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE;
+ STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
+ STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
+ STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
+ STDMETHOD(Poll)(THIS) PURE;
+ STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
+};
+
+typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W;
+
+#undef INTERFACE
+#define INTERFACE IDirectInputDevice2A
+
+DECLARE_INTERFACE_(IDirectInputDevice2A, IDirectInputDeviceA)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInputDeviceA methods ***/
+ STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
+ STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE;
+ STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
+ STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
+ STDMETHOD(Acquire)(THIS) PURE;
+ STDMETHOD(Unacquire)(THIS) PURE;
+ STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
+ STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
+ STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
+ STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE;
+ STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE;
+ STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
+
+ /*** IDirectInputDevice2A methods ***/
+ STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
+ STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE;
+ STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE;
+ STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
+ STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
+ STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
+ STDMETHOD(Poll)(THIS) PURE;
+ STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
+};
+
+typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A;
+
+#ifdef UNICODE
+#define IID_IDirectInputDevice2 IID_IDirectInputDevice2W
+#define IDirectInputDevice2 IDirectInputDevice2W
+#define IDirectInputDevice2Vtbl IDirectInputDevice2WVtbl
+#else
+#define IID_IDirectInputDevice2 IID_IDirectInputDevice2A
+#define IDirectInputDevice2 IDirectInputDevice2A
+#define IDirectInputDevice2Vtbl IDirectInputDevice2AVtbl
+#endif
+typedef struct IDirectInputDevice2 *LPDIRECTINPUTDEVICE2;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInputDevice2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectInputDevice2_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectInputDevice2_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)
+#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
+#define IDirectInputDevice2_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)
+#define IDirectInputDevice2_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)
+#define IDirectInputDevice2_Acquire(p) (p)->lpVtbl->Acquire(p)
+#define IDirectInputDevice2_Unacquire(p) (p)->lpVtbl->Unacquire(p)
+#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)
+#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
+#define IDirectInputDevice2_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)
+#define IDirectInputDevice2_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)
+#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)
+#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)
+#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
+#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
+#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d)
+#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c)
+#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b)
+#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a)
+#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a)
+#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
+#define IDirectInputDevice2_Escape(p,a) (p)->lpVtbl->Escape(p,a)
+#define IDirectInputDevice2_Poll(p) (p)->lpVtbl->Poll(p)
+#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d)
+#else
+#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInputDevice2_AddRef(p) (p)->AddRef()
+#define IDirectInputDevice2_Release(p) (p)->Release()
+#define IDirectInputDevice2_GetCapabilities(p,a) (p)->GetCapabilities(a)
+#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)
+#define IDirectInputDevice2_GetProperty(p,a,b) (p)->GetProperty(a,b)
+#define IDirectInputDevice2_SetProperty(p,a,b) (p)->SetProperty(a,b)
+#define IDirectInputDevice2_Acquire(p) (p)->Acquire()
+#define IDirectInputDevice2_Unacquire(p) (p)->Unacquire()
+#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)
+#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)
+#define IDirectInputDevice2_SetDataFormat(p,a) (p)->SetDataFormat(a)
+#define IDirectInputDevice2_SetEventNotification(p,a) (p)->SetEventNotification(a)
+#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
+#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)
+#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)
+#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
+#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
+#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d)
+#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c)
+#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b)
+#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a)
+#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a)
+#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)
+#define IDirectInputDevice2_Escape(p,a) (p)->Escape(a)
+#define IDirectInputDevice2_Poll(p) (p)->Poll()
+#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d)
+#endif
+
+#endif /* DIJ_RINGZERO */
+
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
+
+#if(DIRECTINPUT_VERSION >= 0x0700)
+#define DIFEF_DEFAULT 0x00000000
+#define DIFEF_INCLUDENONSTANDARD 0x00000001
+#define DIFEF_MODIFYIFNEEDED 0x00000010
+
+#ifndef DIJ_RINGZERO
+
+#undef INTERFACE
+#define INTERFACE IDirectInputDevice7W
+
+DECLARE_INTERFACE_(IDirectInputDevice7W, IDirectInputDevice2W)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInputDevice2W methods ***/
+ STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
+ STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE;
+ STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
+ STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
+ STDMETHOD(Acquire)(THIS) PURE;
+ STDMETHOD(Unacquire)(THIS) PURE;
+ STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
+ STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
+ STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
+ STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE;
+ STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE;
+ STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
+ STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
+ STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE;
+ STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE;
+ STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
+ STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
+ STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
+ STDMETHOD(Poll)(THIS) PURE;
+ STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
+
+ /*** IDirectInputDevice7W methods ***/
+ STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE;
+};
+
+typedef struct IDirectInputDevice7W *LPDIRECTINPUTDEVICE7W;
+
+#undef INTERFACE
+#define INTERFACE IDirectInputDevice7A
+
+DECLARE_INTERFACE_(IDirectInputDevice7A, IDirectInputDevice2A)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInputDevice2A methods ***/
+ STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
+ STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE;
+ STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
+ STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
+ STDMETHOD(Acquire)(THIS) PURE;
+ STDMETHOD(Unacquire)(THIS) PURE;
+ STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
+ STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
+ STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
+ STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE;
+ STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE;
+ STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
+ STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
+ STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE;
+ STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE;
+ STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
+ STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
+ STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
+ STDMETHOD(Poll)(THIS) PURE;
+ STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
+
+ /*** IDirectInputDevice7A methods ***/
+ STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE;
+};
+
+typedef struct IDirectInputDevice7A *LPDIRECTINPUTDEVICE7A;
+
+#ifdef UNICODE
+#define IID_IDirectInputDevice7 IID_IDirectInputDevice7W
+#define IDirectInputDevice7 IDirectInputDevice7W
+#define IDirectInputDevice7Vtbl IDirectInputDevice7WVtbl
+#else
+#define IID_IDirectInputDevice7 IID_IDirectInputDevice7A
+#define IDirectInputDevice7 IDirectInputDevice7A
+#define IDirectInputDevice7Vtbl IDirectInputDevice7AVtbl
+#endif
+typedef struct IDirectInputDevice7 *LPDIRECTINPUTDEVICE7;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInputDevice7_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectInputDevice7_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectInputDevice7_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)
+#define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
+#define IDirectInputDevice7_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)
+#define IDirectInputDevice7_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)
+#define IDirectInputDevice7_Acquire(p) (p)->lpVtbl->Acquire(p)
+#define IDirectInputDevice7_Unacquire(p) (p)->lpVtbl->Unacquire(p)
+#define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)
+#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
+#define IDirectInputDevice7_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)
+#define IDirectInputDevice7_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)
+#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)
+#define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)
+#define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
+#define IDirectInputDevice7_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
+#define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d)
+#define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c)
+#define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b)
+#define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a)
+#define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a)
+#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
+#define IDirectInputDevice7_Escape(p,a) (p)->lpVtbl->Escape(p,a)
+#define IDirectInputDevice7_Poll(p) (p)->lpVtbl->Poll(p)
+#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d)
+#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d)
+#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d)
+#else
+#define IDirectInputDevice7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInputDevice7_AddRef(p) (p)->AddRef()
+#define IDirectInputDevice7_Release(p) (p)->Release()
+#define IDirectInputDevice7_GetCapabilities(p,a) (p)->GetCapabilities(a)
+#define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)
+#define IDirectInputDevice7_GetProperty(p,a,b) (p)->GetProperty(a,b)
+#define IDirectInputDevice7_SetProperty(p,a,b) (p)->SetProperty(a,b)
+#define IDirectInputDevice7_Acquire(p) (p)->Acquire()
+#define IDirectInputDevice7_Unacquire(p) (p)->Unacquire()
+#define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)
+#define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)
+#define IDirectInputDevice7_SetDataFormat(p,a) (p)->SetDataFormat(a)
+#define IDirectInputDevice7_SetEventNotification(p,a) (p)->SetEventNotification(a)
+#define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
+#define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)
+#define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)
+#define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
+#define IDirectInputDevice7_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
+#define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d)
+#define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c)
+#define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b)
+#define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a)
+#define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a)
+#define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)
+#define IDirectInputDevice7_Escape(p,a) (p)->Escape(a)
+#define IDirectInputDevice7_Poll(p) (p)->Poll()
+#define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d)
+#define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d)
+#define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d)
+#endif
+
+#endif /* DIJ_RINGZERO */
+
+#endif /* DIRECTINPUT_VERSION >= 0x0700 */
+
+#if(DIRECTINPUT_VERSION >= 0x0800)
+
+#ifndef DIJ_RINGZERO
+
+#undef INTERFACE
+#define INTERFACE IDirectInputDevice8W
+
+DECLARE_INTERFACE_(IDirectInputDevice8W, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInputDevice8W methods ***/
+ STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
+ STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE;
+ STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
+ STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
+ STDMETHOD(Acquire)(THIS) PURE;
+ STDMETHOD(Unacquire)(THIS) PURE;
+ STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
+ STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
+ STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
+ STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE;
+ STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE;
+ STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
+ STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
+ STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE;
+ STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE;
+ STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
+ STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
+ STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
+ STDMETHOD(Poll)(THIS) PURE;
+ STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
+ STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE;
+ STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATW,LPCWSTR,DWORD) PURE;
+ STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATW,LPCWSTR,DWORD) PURE;
+ STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERW) PURE;
+};
+
+typedef struct IDirectInputDevice8W *LPDIRECTINPUTDEVICE8W;
+
+#undef INTERFACE
+#define INTERFACE IDirectInputDevice8A
+
+DECLARE_INTERFACE_(IDirectInputDevice8A, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInputDevice8A methods ***/
+ STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
+ STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE;
+ STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
+ STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
+ STDMETHOD(Acquire)(THIS) PURE;
+ STDMETHOD(Unacquire)(THIS) PURE;
+ STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
+ STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
+ STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
+ STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE;
+ STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE;
+ STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
+ STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
+ STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE;
+ STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE;
+ STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
+ STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
+ STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
+ STDMETHOD(Poll)(THIS) PURE;
+ STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
+ STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE;
+ STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATA,LPCSTR,DWORD) PURE;
+ STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATA,LPCSTR,DWORD) PURE;
+ STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERA) PURE;
+};
+
+typedef struct IDirectInputDevice8A *LPDIRECTINPUTDEVICE8A;
+
+#ifdef UNICODE
+#define IID_IDirectInputDevice8 IID_IDirectInputDevice8W
+#define IDirectInputDevice8 IDirectInputDevice8W
+#define IDirectInputDevice8Vtbl IDirectInputDevice8WVtbl
+#else
+#define IID_IDirectInputDevice8 IID_IDirectInputDevice8A
+#define IDirectInputDevice8 IDirectInputDevice8A
+#define IDirectInputDevice8Vtbl IDirectInputDevice8AVtbl
+#endif
+typedef struct IDirectInputDevice8 *LPDIRECTINPUTDEVICE8;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInputDevice8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectInputDevice8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectInputDevice8_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)
+#define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
+#define IDirectInputDevice8_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)
+#define IDirectInputDevice8_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)
+#define IDirectInputDevice8_Acquire(p) (p)->lpVtbl->Acquire(p)
+#define IDirectInputDevice8_Unacquire(p) (p)->lpVtbl->Unacquire(p)
+#define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)
+#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
+#define IDirectInputDevice8_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)
+#define IDirectInputDevice8_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)
+#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)
+#define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)
+#define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
+#define IDirectInputDevice8_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
+#define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d)
+#define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c)
+#define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b)
+#define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a)
+#define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a)
+#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
+#define IDirectInputDevice8_Escape(p,a) (p)->lpVtbl->Escape(p,a)
+#define IDirectInputDevice8_Poll(p) (p)->lpVtbl->Poll(p)
+#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d)
+#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d)
+#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d)
+#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->lpVtbl->BuildActionMap(p,a,b,c)
+#define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->lpVtbl->SetActionMap(p,a,b,c)
+#define IDirectInputDevice8_GetImageInfo(p,a) (p)->lpVtbl->GetImageInfo(p,a)
+#else
+#define IDirectInputDevice8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInputDevice8_AddRef(p) (p)->AddRef()
+#define IDirectInputDevice8_Release(p) (p)->Release()
+#define IDirectInputDevice8_GetCapabilities(p,a) (p)->GetCapabilities(a)
+#define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)
+#define IDirectInputDevice8_GetProperty(p,a,b) (p)->GetProperty(a,b)
+#define IDirectInputDevice8_SetProperty(p,a,b) (p)->SetProperty(a,b)
+#define IDirectInputDevice8_Acquire(p) (p)->Acquire()
+#define IDirectInputDevice8_Unacquire(p) (p)->Unacquire()
+#define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)
+#define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)
+#define IDirectInputDevice8_SetDataFormat(p,a) (p)->SetDataFormat(a)
+#define IDirectInputDevice8_SetEventNotification(p,a) (p)->SetEventNotification(a)
+#define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
+#define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)
+#define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)
+#define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
+#define IDirectInputDevice8_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
+#define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d)
+#define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c)
+#define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b)
+#define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a)
+#define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a)
+#define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)
+#define IDirectInputDevice8_Escape(p,a) (p)->Escape(a)
+#define IDirectInputDevice8_Poll(p) (p)->Poll()
+#define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d)
+#define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d)
+#define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d)
+#define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->BuildActionMap(a,b,c)
+#define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->SetActionMap(a,b,c)
+#define IDirectInputDevice8_GetImageInfo(p,a) (p)->GetImageInfo(a)
+#endif
+
+#endif /* DIJ_RINGZERO */
+
+#endif /* DIRECTINPUT_VERSION >= 0x0800 */
+
+/****************************************************************************
+ *
+ * Mouse
+ *
+ ****************************************************************************/
+
+#ifndef DIJ_RINGZERO
+
+typedef struct _DIMOUSESTATE {
+ LONG lX;
+ LONG lY;
+ LONG lZ;
+ BYTE rgbButtons[4];
+} DIMOUSESTATE, *LPDIMOUSESTATE;
+
+#if DIRECTINPUT_VERSION >= 0x0700
+typedef struct _DIMOUSESTATE2 {
+ LONG lX;
+ LONG lY;
+ LONG lZ;
+ BYTE rgbButtons[8];
+} DIMOUSESTATE2, *LPDIMOUSESTATE2;
+#endif
+
+
+#define DIMOFS_X FIELD_OFFSET(DIMOUSESTATE, lX)
+#define DIMOFS_Y FIELD_OFFSET(DIMOUSESTATE, lY)
+#define DIMOFS_Z FIELD_OFFSET(DIMOUSESTATE, lZ)
+#define DIMOFS_BUTTON0 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 0)
+#define DIMOFS_BUTTON1 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 1)
+#define DIMOFS_BUTTON2 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 2)
+#define DIMOFS_BUTTON3 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 3)
+#if (DIRECTINPUT_VERSION >= 0x0700)
+#define DIMOFS_BUTTON4 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 4)
+#define DIMOFS_BUTTON5 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 5)
+#define DIMOFS_BUTTON6 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 6)
+#define DIMOFS_BUTTON7 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 7)
+#endif
+#endif /* DIJ_RINGZERO */
+
+/****************************************************************************
+ *
+ * Keyboard
+ *
+ ****************************************************************************/
+
+#ifndef DIJ_RINGZERO
+
+/****************************************************************************
+ *
+ * DirectInput keyboard scan codes
+ *
+ ****************************************************************************/
+#define DIK_ESCAPE 0x01
+#define DIK_1 0x02
+#define DIK_2 0x03
+#define DIK_3 0x04
+#define DIK_4 0x05
+#define DIK_5 0x06
+#define DIK_6 0x07
+#define DIK_7 0x08
+#define DIK_8 0x09
+#define DIK_9 0x0A
+#define DIK_0 0x0B
+#define DIK_MINUS 0x0C /* - on main keyboard */
+#define DIK_EQUALS 0x0D
+#define DIK_BACK 0x0E /* backspace */
+#define DIK_TAB 0x0F
+#define DIK_Q 0x10
+#define DIK_W 0x11
+#define DIK_E 0x12
+#define DIK_R 0x13
+#define DIK_T 0x14
+#define DIK_Y 0x15
+#define DIK_U 0x16
+#define DIK_I 0x17
+#define DIK_O 0x18
+#define DIK_P 0x19
+#define DIK_LBRACKET 0x1A
+#define DIK_RBRACKET 0x1B
+#define DIK_RETURN 0x1C /* Enter on main keyboard */
+#define DIK_LCONTROL 0x1D
+#define DIK_A 0x1E
+#define DIK_S 0x1F
+#define DIK_D 0x20
+#define DIK_F 0x21
+#define DIK_G 0x22
+#define DIK_H 0x23
+#define DIK_J 0x24
+#define DIK_K 0x25
+#define DIK_L 0x26
+#define DIK_SEMICOLON 0x27
+#define DIK_APOSTROPHE 0x28
+#define DIK_GRAVE 0x29 /* accent grave */
+#define DIK_LSHIFT 0x2A
+#define DIK_BACKSLASH 0x2B
+#define DIK_Z 0x2C
+#define DIK_X 0x2D
+#define DIK_C 0x2E
+#define DIK_V 0x2F
+#define DIK_B 0x30
+#define DIK_N 0x31
+#define DIK_M 0x32
+#define DIK_COMMA 0x33
+#define DIK_PERIOD 0x34 /* . on main keyboard */
+#define DIK_SLASH 0x35 /* / on main keyboard */
+#define DIK_RSHIFT 0x36
+#define DIK_MULTIPLY 0x37 /* * on numeric keypad */
+#define DIK_LMENU 0x38 /* left Alt */
+#define DIK_SPACE 0x39
+#define DIK_CAPITAL 0x3A
+#define DIK_F1 0x3B
+#define DIK_F2 0x3C
+#define DIK_F3 0x3D
+#define DIK_F4 0x3E
+#define DIK_F5 0x3F
+#define DIK_F6 0x40
+#define DIK_F7 0x41
+#define DIK_F8 0x42
+#define DIK_F9 0x43
+#define DIK_F10 0x44
+#define DIK_NUMLOCK 0x45
+#define DIK_SCROLL 0x46 /* Scroll Lock */
+#define DIK_NUMPAD7 0x47
+#define DIK_NUMPAD8 0x48
+#define DIK_NUMPAD9 0x49
+#define DIK_SUBTRACT 0x4A /* - on numeric keypad */
+#define DIK_NUMPAD4 0x4B
+#define DIK_NUMPAD5 0x4C
+#define DIK_NUMPAD6 0x4D
+#define DIK_ADD 0x4E /* + on numeric keypad */
+#define DIK_NUMPAD1 0x4F
+#define DIK_NUMPAD2 0x50
+#define DIK_NUMPAD3 0x51
+#define DIK_NUMPAD0 0x52
+#define DIK_DECIMAL 0x53 /* . on numeric keypad */
+#define DIK_OEM_102 0x56 /* <> or \| on RT 102-key keyboard (Non-U.S.) */
+#define DIK_F11 0x57
+#define DIK_F12 0x58
+#define DIK_F13 0x64 /* (NEC PC98) */
+#define DIK_F14 0x65 /* (NEC PC98) */
+#define DIK_F15 0x66 /* (NEC PC98) */
+#define DIK_KANA 0x70 /* (Japanese keyboard) */
+#define DIK_ABNT_C1 0x73 /* /? on Brazilian keyboard */
+#define DIK_CONVERT 0x79 /* (Japanese keyboard) */
+#define DIK_NOCONVERT 0x7B /* (Japanese keyboard) */
+#define DIK_YEN 0x7D /* (Japanese keyboard) */
+#define DIK_ABNT_C2 0x7E /* Numpad . on Brazilian keyboard */
+#define DIK_NUMPADEQUALS 0x8D /* = on numeric keypad (NEC PC98) */
+#define DIK_PREVTRACK 0x90 /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */
+#define DIK_AT 0x91 /* (NEC PC98) */
+#define DIK_COLON 0x92 /* (NEC PC98) */
+#define DIK_UNDERLINE 0x93 /* (NEC PC98) */
+#define DIK_KANJI 0x94 /* (Japanese keyboard) */
+#define DIK_STOP 0x95 /* (NEC PC98) */
+#define DIK_AX 0x96 /* (Japan AX) */
+#define DIK_UNLABELED 0x97 /* (J3100) */
+#define DIK_NEXTTRACK 0x99 /* Next Track */
+#define DIK_NUMPADENTER 0x9C /* Enter on numeric keypad */
+#define DIK_RCONTROL 0x9D
+#define DIK_MUTE 0xA0 /* Mute */
+#define DIK_CALCULATOR 0xA1 /* Calculator */
+#define DIK_PLAYPAUSE 0xA2 /* Play / Pause */
+#define DIK_MEDIASTOP 0xA4 /* Media Stop */
+#define DIK_VOLUMEDOWN 0xAE /* Volume - */
+#define DIK_VOLUMEUP 0xB0 /* Volume + */
+#define DIK_WEBHOME 0xB2 /* Web home */
+#define DIK_NUMPADCOMMA 0xB3 /* , on numeric keypad (NEC PC98) */
+#define DIK_DIVIDE 0xB5 /* / on numeric keypad */
+#define DIK_SYSRQ 0xB7
+#define DIK_RMENU 0xB8 /* right Alt */
+#define DIK_PAUSE 0xC5 /* Pause */
+#define DIK_HOME 0xC7 /* Home on arrow keypad */
+#define DIK_UP 0xC8 /* UpArrow on arrow keypad */
+#define DIK_PRIOR 0xC9 /* PgUp on arrow keypad */
+#define DIK_LEFT 0xCB /* LeftArrow on arrow keypad */
+#define DIK_RIGHT 0xCD /* RightArrow on arrow keypad */
+#define DIK_END 0xCF /* End on arrow keypad */
+#define DIK_DOWN 0xD0 /* DownArrow on arrow keypad */
+#define DIK_NEXT 0xD1 /* PgDn on arrow keypad */
+#define DIK_INSERT 0xD2 /* Insert on arrow keypad */
+#define DIK_DELETE 0xD3 /* Delete on arrow keypad */
+#define DIK_LWIN 0xDB /* Left Windows key */
+#define DIK_RWIN 0xDC /* Right Windows key */
+#define DIK_APPS 0xDD /* AppMenu key */
+#define DIK_POWER 0xDE /* System Power */
+#define DIK_SLEEP 0xDF /* System Sleep */
+#define DIK_WAKE 0xE3 /* System Wake */
+#define DIK_WEBSEARCH 0xE5 /* Web Search */
+#define DIK_WEBFAVORITES 0xE6 /* Web Favorites */
+#define DIK_WEBREFRESH 0xE7 /* Web Refresh */
+#define DIK_WEBSTOP 0xE8 /* Web Stop */
+#define DIK_WEBFORWARD 0xE9 /* Web Forward */
+#define DIK_WEBBACK 0xEA /* Web Back */
+#define DIK_MYCOMPUTER 0xEB /* My Computer */
+#define DIK_MAIL 0xEC /* Mail */
+#define DIK_MEDIASELECT 0xED /* Media Select */
+
+/*
+ * Alternate names for keys, to facilitate transition from DOS.
+ */
+#define DIK_BACKSPACE DIK_BACK /* backspace */
+#define DIK_NUMPADSTAR DIK_MULTIPLY /* * on numeric keypad */
+#define DIK_LALT DIK_LMENU /* left Alt */
+#define DIK_CAPSLOCK DIK_CAPITAL /* CapsLock */
+#define DIK_NUMPADMINUS DIK_SUBTRACT /* - on numeric keypad */
+#define DIK_NUMPADPLUS DIK_ADD /* + on numeric keypad */
+#define DIK_NUMPADPERIOD DIK_DECIMAL /* . on numeric keypad */
+#define DIK_NUMPADSLASH DIK_DIVIDE /* / on numeric keypad */
+#define DIK_RALT DIK_RMENU /* right Alt */
+#define DIK_UPARROW DIK_UP /* UpArrow on arrow keypad */
+#define DIK_PGUP DIK_PRIOR /* PgUp on arrow keypad */
+#define DIK_LEFTARROW DIK_LEFT /* LeftArrow on arrow keypad */
+#define DIK_RIGHTARROW DIK_RIGHT /* RightArrow on arrow keypad */
+#define DIK_DOWNARROW DIK_DOWN /* DownArrow on arrow keypad */
+#define DIK_PGDN DIK_NEXT /* PgDn on arrow keypad */
+
+/*
+ * Alternate names for keys originally not used on US keyboards.
+ */
+#define DIK_CIRCUMFLEX DIK_PREVTRACK /* Japanese keyboard */
+
+#endif /* DIJ_RINGZERO */
+
+/****************************************************************************
+ *
+ * Joystick
+ *
+ ****************************************************************************/
+
+#ifndef DIJ_RINGZERO
+
+typedef struct DIJOYSTATE {
+ LONG lX; /* x-axis position */
+ LONG lY; /* y-axis position */
+ LONG lZ; /* z-axis position */
+ LONG lRx; /* x-axis rotation */
+ LONG lRy; /* y-axis rotation */
+ LONG lRz; /* z-axis rotation */
+ LONG rglSlider[2]; /* extra axes positions */
+ DWORD rgdwPOV[4]; /* POV directions */
+ BYTE rgbButtons[32]; /* 32 buttons */
+} DIJOYSTATE, *LPDIJOYSTATE;
+
+typedef struct DIJOYSTATE2 {
+ LONG lX; /* x-axis position */
+ LONG lY; /* y-axis position */
+ LONG lZ; /* z-axis position */
+ LONG lRx; /* x-axis rotation */
+ LONG lRy; /* y-axis rotation */
+ LONG lRz; /* z-axis rotation */
+ LONG rglSlider[2]; /* extra axes positions */
+ DWORD rgdwPOV[4]; /* POV directions */
+ BYTE rgbButtons[128]; /* 128 buttons */
+ LONG lVX; /* x-axis velocity */
+ LONG lVY; /* y-axis velocity */
+ LONG lVZ; /* z-axis velocity */
+ LONG lVRx; /* x-axis angular velocity */
+ LONG lVRy; /* y-axis angular velocity */
+ LONG lVRz; /* z-axis angular velocity */
+ LONG rglVSlider[2]; /* extra axes velocities */
+ LONG lAX; /* x-axis acceleration */
+ LONG lAY; /* y-axis acceleration */
+ LONG lAZ; /* z-axis acceleration */
+ LONG lARx; /* x-axis angular acceleration */
+ LONG lARy; /* y-axis angular acceleration */
+ LONG lARz; /* z-axis angular acceleration */
+ LONG rglASlider[2]; /* extra axes accelerations */
+ LONG lFX; /* x-axis force */
+ LONG lFY; /* y-axis force */
+ LONG lFZ; /* z-axis force */
+ LONG lFRx; /* x-axis torque */
+ LONG lFRy; /* y-axis torque */
+ LONG lFRz; /* z-axis torque */
+ LONG rglFSlider[2]; /* extra axes forces */
+} DIJOYSTATE2, *LPDIJOYSTATE2;
+
+#define DIJOFS_X FIELD_OFFSET(DIJOYSTATE, lX)
+#define DIJOFS_Y FIELD_OFFSET(DIJOYSTATE, lY)
+#define DIJOFS_Z FIELD_OFFSET(DIJOYSTATE, lZ)
+#define DIJOFS_RX FIELD_OFFSET(DIJOYSTATE, lRx)
+#define DIJOFS_RY FIELD_OFFSET(DIJOYSTATE, lRy)
+#define DIJOFS_RZ FIELD_OFFSET(DIJOYSTATE, lRz)
+#define DIJOFS_SLIDER(n) (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \
+ (n) * sizeof(LONG))
+#define DIJOFS_POV(n) (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \
+ (n) * sizeof(DWORD))
+#define DIJOFS_BUTTON(n) (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n))
+#define DIJOFS_BUTTON0 DIJOFS_BUTTON(0)
+#define DIJOFS_BUTTON1 DIJOFS_BUTTON(1)
+#define DIJOFS_BUTTON2 DIJOFS_BUTTON(2)
+#define DIJOFS_BUTTON3 DIJOFS_BUTTON(3)
+#define DIJOFS_BUTTON4 DIJOFS_BUTTON(4)
+#define DIJOFS_BUTTON5 DIJOFS_BUTTON(5)
+#define DIJOFS_BUTTON6 DIJOFS_BUTTON(6)
+#define DIJOFS_BUTTON7 DIJOFS_BUTTON(7)
+#define DIJOFS_BUTTON8 DIJOFS_BUTTON(8)
+#define DIJOFS_BUTTON9 DIJOFS_BUTTON(9)
+#define DIJOFS_BUTTON10 DIJOFS_BUTTON(10)
+#define DIJOFS_BUTTON11 DIJOFS_BUTTON(11)
+#define DIJOFS_BUTTON12 DIJOFS_BUTTON(12)
+#define DIJOFS_BUTTON13 DIJOFS_BUTTON(13)
+#define DIJOFS_BUTTON14 DIJOFS_BUTTON(14)
+#define DIJOFS_BUTTON15 DIJOFS_BUTTON(15)
+#define DIJOFS_BUTTON16 DIJOFS_BUTTON(16)
+#define DIJOFS_BUTTON17 DIJOFS_BUTTON(17)
+#define DIJOFS_BUTTON18 DIJOFS_BUTTON(18)
+#define DIJOFS_BUTTON19 DIJOFS_BUTTON(19)
+#define DIJOFS_BUTTON20 DIJOFS_BUTTON(20)
+#define DIJOFS_BUTTON21 DIJOFS_BUTTON(21)
+#define DIJOFS_BUTTON22 DIJOFS_BUTTON(22)
+#define DIJOFS_BUTTON23 DIJOFS_BUTTON(23)
+#define DIJOFS_BUTTON24 DIJOFS_BUTTON(24)
+#define DIJOFS_BUTTON25 DIJOFS_BUTTON(25)
+#define DIJOFS_BUTTON26 DIJOFS_BUTTON(26)
+#define DIJOFS_BUTTON27 DIJOFS_BUTTON(27)
+#define DIJOFS_BUTTON28 DIJOFS_BUTTON(28)
+#define DIJOFS_BUTTON29 DIJOFS_BUTTON(29)
+#define DIJOFS_BUTTON30 DIJOFS_BUTTON(30)
+#define DIJOFS_BUTTON31 DIJOFS_BUTTON(31)
+
+
+#endif /* DIJ_RINGZERO */
+
+/****************************************************************************
+ *
+ * IDirectInput
+ *
+ ****************************************************************************/
+
+#ifndef DIJ_RINGZERO
+
+#define DIENUM_STOP 0
+#define DIENUM_CONTINUE 1
+
+typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA, LPVOID);
+typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW, LPVOID);
+#ifdef UNICODE
+#define LPDIENUMDEVICESCALLBACK LPDIENUMDEVICESCALLBACKW
+#else
+#define LPDIENUMDEVICESCALLBACK LPDIENUMDEVICESCALLBACKA
+#endif // !UNICODE
+typedef BOOL (FAR PASCAL * LPDICONFIGUREDEVICESCALLBACK)(IUnknown FAR *, LPVOID);
+
+#define DIEDFL_ALLDEVICES 0x00000000
+#define DIEDFL_ATTACHEDONLY 0x00000001
+#if(DIRECTINPUT_VERSION >= 0x0500)
+#define DIEDFL_FORCEFEEDBACK 0x00000100
+#endif /* DIRECTINPUT_VERSION >= 0x0500 */
+#if(DIRECTINPUT_VERSION >= 0x050a)
+#define DIEDFL_INCLUDEALIASES 0x00010000
+#define DIEDFL_INCLUDEPHANTOMS 0x00020000
+#endif /* DIRECTINPUT_VERSION >= 0x050a */
+#if(DIRECTINPUT_VERSION >= 0x0800)
+#define DIEDFL_INCLUDEHIDDEN 0x00040000
+#endif /* DIRECTINPUT_VERSION >= 0x0800 */
+
+
+#if(DIRECTINPUT_VERSION >= 0x0800)
+typedef BOOL (FAR PASCAL * LPDIENUMDEVICESBYSEMANTICSCBA)(LPCDIDEVICEINSTANCEA, LPDIRECTINPUTDEVICE8A, DWORD, DWORD, LPVOID);
+typedef BOOL (FAR PASCAL * LPDIENUMDEVICESBYSEMANTICSCBW)(LPCDIDEVICEINSTANCEW, LPDIRECTINPUTDEVICE8W, DWORD, DWORD, LPVOID);
+#ifdef UNICODE
+#define LPDIENUMDEVICESBYSEMANTICSCB LPDIENUMDEVICESBYSEMANTICSCBW
+#else
+#define LPDIENUMDEVICESBYSEMANTICSCB LPDIENUMDEVICESBYSEMANTICSCBA
+#endif // !UNICODE
+#endif /* DIRECTINPUT_VERSION >= 0x0800 */
+
+#if(DIRECTINPUT_VERSION >= 0x0800)
+#define DIEDBS_MAPPEDPRI1 0x00000001
+#define DIEDBS_MAPPEDPRI2 0x00000002
+#define DIEDBS_RECENTDEVICE 0x00000010
+#define DIEDBS_NEWDEVICE 0x00000020
+#endif /* DIRECTINPUT_VERSION >= 0x0800 */
+
+#if(DIRECTINPUT_VERSION >= 0x0800)
+#define DIEDBSFL_ATTACHEDONLY 0x00000000
+#define DIEDBSFL_THISUSER 0x00000010
+#define DIEDBSFL_FORCEFEEDBACK DIEDFL_FORCEFEEDBACK
+#define DIEDBSFL_AVAILABLEDEVICES 0x00001000
+#define DIEDBSFL_MULTIMICEKEYBOARDS 0x00002000
+#define DIEDBSFL_NONGAMINGDEVICES 0x00004000
+#define DIEDBSFL_VALID 0x00007110
+#endif /* DIRECTINPUT_VERSION >= 0x0800 */
+
+#undef INTERFACE
+#define INTERFACE IDirectInputW
+
+DECLARE_INTERFACE_(IDirectInputW, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInputW methods ***/
+ STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE;
+ STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE;
+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
+ STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
+};
+
+typedef struct IDirectInputW *LPDIRECTINPUTW;
+
+#undef INTERFACE
+#define INTERFACE IDirectInputA
+
+DECLARE_INTERFACE_(IDirectInputA, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInputA methods ***/
+ STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE;
+ STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE;
+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
+ STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
+};
+
+typedef struct IDirectInputA *LPDIRECTINPUTA;
+
+#ifdef UNICODE
+#define IID_IDirectInput IID_IDirectInputW
+#define IDirectInput IDirectInputW
+#define IDirectInputVtbl IDirectInputWVtbl
+#else
+#define IID_IDirectInput IID_IDirectInputA
+#define IDirectInput IDirectInputA
+#define IDirectInputVtbl IDirectInputAVtbl
+#endif
+typedef struct IDirectInput *LPDIRECTINPUT;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectInput_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInput_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectInput_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectInput_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
+#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
+#define IDirectInput_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)
+#define IDirectInput_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
+#define IDirectInput_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#else
+#define IDirectInput_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInput_AddRef(p) (p)->AddRef()
+#define IDirectInput_Release(p) (p)->Release()
+#define IDirectInput_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
+#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
+#define IDirectInput_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)
+#define IDirectInput_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
+#define IDirectInput_Initialize(p,a,b) (p)->Initialize(a,b)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirectInput2W
+
+DECLARE_INTERFACE_(IDirectInput2W, IDirectInputW)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInputW methods ***/
+ STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE;
+ STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE;
+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
+ STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
+
+ /*** IDirectInput2W methods ***/
+ STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE;
+};
+
+typedef struct IDirectInput2W *LPDIRECTINPUT2W;
+
+#undef INTERFACE
+#define INTERFACE IDirectInput2A
+
+DECLARE_INTERFACE_(IDirectInput2A, IDirectInputA)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInputA methods ***/
+ STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE;
+ STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE;
+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
+ STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
+
+ /*** IDirectInput2A methods ***/
+ STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE;
+};
+
+typedef struct IDirectInput2A *LPDIRECTINPUT2A;
+
+#ifdef UNICODE
+#define IID_IDirectInput2 IID_IDirectInput2W
+#define IDirectInput2 IDirectInput2W
+#define IDirectInput2Vtbl IDirectInput2WVtbl
+#else
+#define IID_IDirectInput2 IID_IDirectInput2A
+#define IDirectInput2 IDirectInput2A
+#define IDirectInput2Vtbl IDirectInput2AVtbl
+#endif
+typedef struct IDirectInput2 *LPDIRECTINPUT2;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectInput2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInput2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectInput2_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectInput2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
+#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
+#define IDirectInput2_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)
+#define IDirectInput2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
+#define IDirectInput2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectInput2_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c)
+#else
+#define IDirectInput2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInput2_AddRef(p) (p)->AddRef()
+#define IDirectInput2_Release(p) (p)->Release()
+#define IDirectInput2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
+#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
+#define IDirectInput2_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)
+#define IDirectInput2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
+#define IDirectInput2_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectInput2_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c)
+#endif
+
+
+#undef INTERFACE
+#define INTERFACE IDirectInput7W
+
+DECLARE_INTERFACE_(IDirectInput7W, IDirectInput2W)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInput2W methods ***/
+ STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE;
+ STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE;
+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
+ STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
+ STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE;
+
+ /*** IDirectInput7W methods ***/
+ STDMETHOD(CreateDeviceEx)(THIS_ REFGUID,REFIID,LPVOID *,LPUNKNOWN) PURE;
+};
+
+typedef struct IDirectInput7W *LPDIRECTINPUT7W;
+
+#undef INTERFACE
+#define INTERFACE IDirectInput7A
+
+DECLARE_INTERFACE_(IDirectInput7A, IDirectInput2A)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInput2A methods ***/
+ STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE;
+ STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE;
+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
+ STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
+ STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE;
+
+ /*** IDirectInput7A methods ***/
+ STDMETHOD(CreateDeviceEx)(THIS_ REFGUID,REFIID,LPVOID *,LPUNKNOWN) PURE;
+};
+
+typedef struct IDirectInput7A *LPDIRECTINPUT7A;
+
+#ifdef UNICODE
+#define IID_IDirectInput7 IID_IDirectInput7W
+#define IDirectInput7 IDirectInput7W
+#define IDirectInput7Vtbl IDirectInput7WVtbl
+#else
+#define IID_IDirectInput7 IID_IDirectInput7A
+#define IDirectInput7 IDirectInput7A
+#define IDirectInput7Vtbl IDirectInput7AVtbl
+#endif
+typedef struct IDirectInput7 *LPDIRECTINPUT7;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectInput7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInput7_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectInput7_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectInput7_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
+#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
+#define IDirectInput7_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)
+#define IDirectInput7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
+#define IDirectInput7_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectInput7_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c)
+#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->lpVtbl->CreateDeviceEx(p,a,b,c,d)
+#else
+#define IDirectInput7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInput7_AddRef(p) (p)->AddRef()
+#define IDirectInput7_Release(p) (p)->Release()
+#define IDirectInput7_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
+#define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
+#define IDirectInput7_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)
+#define IDirectInput7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
+#define IDirectInput7_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectInput7_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c)
+#define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->CreateDeviceEx(a,b,c,d)
+#endif
+
+#if(DIRECTINPUT_VERSION >= 0x0800)
+#undef INTERFACE
+#define INTERFACE IDirectInput8W
+
+DECLARE_INTERFACE_(IDirectInput8W, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInput8W methods ***/
+ STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICE8W *,LPUNKNOWN) PURE;
+ STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE;
+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
+ STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
+ STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE;
+ STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCWSTR,LPDIACTIONFORMATW,LPDIENUMDEVICESBYSEMANTICSCBW,LPVOID,DWORD) PURE;
+ STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK,LPDICONFIGUREDEVICESPARAMSW,DWORD,LPVOID) PURE;
+};
+
+typedef struct IDirectInput8W *LPDIRECTINPUT8W;
+
+#undef INTERFACE
+#define INTERFACE IDirectInput8A
+
+DECLARE_INTERFACE_(IDirectInput8A, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInput8A methods ***/
+ STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICE8A *,LPUNKNOWN) PURE;
+ STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE;
+ STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
+ STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
+ STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE;
+ STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCSTR,LPDIACTIONFORMATA,LPDIENUMDEVICESBYSEMANTICSCBA,LPVOID,DWORD) PURE;
+ STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK,LPDICONFIGUREDEVICESPARAMSA,DWORD,LPVOID) PURE;
+};
+
+typedef struct IDirectInput8A *LPDIRECTINPUT8A;
+
+#ifdef UNICODE
+#define IID_IDirectInput8 IID_IDirectInput8W
+#define IDirectInput8 IDirectInput8W
+#define IDirectInput8Vtbl IDirectInput8WVtbl
+#else
+#define IID_IDirectInput8 IID_IDirectInput8A
+#define IDirectInput8 IDirectInput8A
+#define IDirectInput8Vtbl IDirectInput8AVtbl
+#endif
+typedef struct IDirectInput8 *LPDIRECTINPUT8;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectInput8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInput8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectInput8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectInput8_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
+#define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
+#define IDirectInput8_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)
+#define IDirectInput8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
+#define IDirectInput8_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectInput8_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c)
+#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->lpVtbl->EnumDevicesBySemantics(p,a,b,c,d,e)
+#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->lpVtbl->ConfigureDevices(p,a,b,c,d)
+#else
+#define IDirectInput8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInput8_AddRef(p) (p)->AddRef()
+#define IDirectInput8_Release(p) (p)->Release()
+#define IDirectInput8_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
+#define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
+#define IDirectInput8_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)
+#define IDirectInput8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
+#define IDirectInput8_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectInput8_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c)
+#define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->EnumDevicesBySemantics(a,b,c,d,e)
+#define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->ConfigureDevices(a,b,c,d)
+#endif
+#endif /* DIRECTINPUT_VERSION >= 0x0800 */
+
+#if DIRECTINPUT_VERSION > 0x0700
+
+extern HRESULT WINAPI DirectInput8Create(HINSTANCE hinst, DWORD dwVersion, REFIID riidltf, LPVOID *ppvOut, LPUNKNOWN punkOuter);
+
+#else
+extern HRESULT WINAPI DirectInputCreateA(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTA *ppDI, LPUNKNOWN punkOuter);
+extern HRESULT WINAPI DirectInputCreateW(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTW *ppDI, LPUNKNOWN punkOuter);
+#ifdef UNICODE
+#define DirectInputCreate DirectInputCreateW
+#else
+#define DirectInputCreate DirectInputCreateA
+#endif // !UNICODE
+
+extern HRESULT WINAPI DirectInputCreateEx(HINSTANCE hinst, DWORD dwVersion, REFIID riidltf, LPVOID *ppvOut, LPUNKNOWN punkOuter);
+
+#endif /* DIRECTINPUT_VERSION > 0x700 */
+
+#endif /* DIJ_RINGZERO */
+
+
+/****************************************************************************
+ *
+ * Return Codes
+ *
+ ****************************************************************************/
+
+/*
+ * The operation completed successfully.
+ */
+#define DI_OK S_OK
+
+/*
+ * The device exists but is not currently attached.
+ */
+#define DI_NOTATTACHED S_FALSE
+
+/*
+ * The device buffer overflowed. Some input was lost.
+ */
+#define DI_BUFFEROVERFLOW S_FALSE
+
+/*
+ * The change in device properties had no effect.
+ */
+#define DI_PROPNOEFFECT S_FALSE
+
+/*
+ * The operation had no effect.
+ */
+#define DI_NOEFFECT S_FALSE
+
+/*
+ * The device is a polled device. As a result, device buffering
+ * will not collect any data and event notifications will not be
+ * signalled until GetDeviceState is called.
+ */
+#define DI_POLLEDDEVICE ((HRESULT)0x00000002L)
+
+/*
+ * The parameters of the effect were successfully updated by
+ * IDirectInputEffect::SetParameters, but the effect was not
+ * downloaded because the device is not exclusively acquired
+ * or because the DIEP_NODOWNLOAD flag was passed.
+ */
+#define DI_DOWNLOADSKIPPED ((HRESULT)0x00000003L)
+
+/*
+ * The parameters of the effect were successfully updated by
+ * IDirectInputEffect::SetParameters, but in order to change
+ * the parameters, the effect needed to be restarted.
+ */
+#define DI_EFFECTRESTARTED ((HRESULT)0x00000004L)
+
+/*
+ * The parameters of the effect were successfully updated by
+ * IDirectInputEffect::SetParameters, but some of them were
+ * beyond the capabilities of the device and were truncated.
+ */
+#define DI_TRUNCATED ((HRESULT)0x00000008L)
+
+/*
+ * The settings have been successfully applied but could not be
+ * persisted.
+ */
+#define DI_SETTINGSNOTSAVED ((HRESULT)0x0000000BL)
+
+/*
+ * Equal to DI_EFFECTRESTARTED | DI_TRUNCATED.
+ */
+#define DI_TRUNCATEDANDRESTARTED ((HRESULT)0x0000000CL)
+
+/*
+ * A SUCCESS code indicating that settings cannot be modified.
+ */
+#define DI_WRITEPROTECT ((HRESULT)0x00000013L)
+
+/*
+ * The application requires a newer version of DirectInput.
+ */
+#define DIERR_OLDDIRECTINPUTVERSION \
+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION)
+
+/*
+ * The application was written for an unsupported prerelease version
+ * of DirectInput.
+ */
+#define DIERR_BETADIRECTINPUTVERSION \
+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP)
+
+/*
+ * The object could not be created due to an incompatible driver version
+ * or mismatched or incomplete driver components.
+ */
+#define DIERR_BADDRIVERVER \
+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL)
+
+/*
+ * The device or device instance or effect is not registered with DirectInput.
+ */
+#define DIERR_DEVICENOTREG REGDB_E_CLASSNOTREG
+
+/*
+ * The requested object does not exist.
+ */
+#define DIERR_NOTFOUND \
+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)
+
+/*
+ * The requested object does not exist.
+ */
+#define DIERR_OBJECTNOTFOUND \
+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)
+
+/*
+ * An invalid parameter was passed to the returning function,
+ * or the object was not in a state that admitted the function
+ * to be called.
+ */
+#define DIERR_INVALIDPARAM E_INVALIDARG
+
+/*
+ * The specified interface is not supported by the object
+ */
+#define DIERR_NOINTERFACE E_NOINTERFACE
+
+/*
+ * An undetermined error occured inside the DInput subsystem
+ */
+#define DIERR_GENERIC E_FAIL
+
+/*
+ * The DInput subsystem couldn't allocate sufficient memory to complete the
+ * caller's request.
+ */
+#define DIERR_OUTOFMEMORY E_OUTOFMEMORY
+
+/*
+ * The function called is not supported at this time
+ */
+#define DIERR_UNSUPPORTED E_NOTIMPL
+
+/*
+ * This object has not been initialized
+ */
+#define DIERR_NOTINITIALIZED \
+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY)
+
+/*
+ * This object is already initialized
+ */
+#define DIERR_ALREADYINITIALIZED \
+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED)
+
+/*
+ * This object does not support aggregation
+ */
+#define DIERR_NOAGGREGATION CLASS_E_NOAGGREGATION
+
+/*
+ * Another app has a higher priority level, preventing this call from
+ * succeeding.
+ */
+#define DIERR_OTHERAPPHASPRIO E_ACCESSDENIED
+
+/*
+ * Access to the device has been lost. It must be re-acquired.
+ */
+#define DIERR_INPUTLOST \
+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT)
+
+/*
+ * The operation cannot be performed while the device is acquired.
+ */
+#define DIERR_ACQUIRED \
+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY)
+
+/*
+ * The operation cannot be performed unless the device is acquired.
+ */
+#define DIERR_NOTACQUIRED \
+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS)
+
+/*
+ * The specified property cannot be changed.
+ */
+#define DIERR_READONLY E_ACCESSDENIED
+
+/*
+ * The device already has an event notification associated with it.
+ */
+#define DIERR_HANDLEEXISTS E_ACCESSDENIED
+
+/*
+ * Data is not yet available.
+ */
+#ifndef E_PENDING
+#define E_PENDING 0x8000000AL
+#endif
+
+/*
+ * Unable to IDirectInputJoyConfig_Acquire because the user
+ * does not have sufficient privileges to change the joystick
+ * configuration.
+ */
+#define DIERR_INSUFFICIENTPRIVS 0x80040200L
+
+/*
+ * The device is full.
+ */
+#define DIERR_DEVICEFULL 0x80040201L
+
+/*
+ * Not all the requested information fit into the buffer.
+ */
+#define DIERR_MOREDATA 0x80040202L
+
+/*
+ * The effect is not downloaded.
+ */
+#define DIERR_NOTDOWNLOADED 0x80040203L
+
+/*
+ * The device cannot be reinitialized because there are still effects
+ * attached to it.
+ */
+#define DIERR_HASEFFECTS 0x80040204L
+
+/*
+ * The operation cannot be performed unless the device is acquired
+ * in DISCL_EXCLUSIVE mode.
+ */
+#define DIERR_NOTEXCLUSIVEACQUIRED 0x80040205L
+
+/*
+ * The effect could not be downloaded because essential information
+ * is missing. For example, no axes have been associated with the
+ * effect, or no type-specific information has been created.
+ */
+#define DIERR_INCOMPLETEEFFECT 0x80040206L
+
+/*
+ * Attempted to read buffered device data from a device that is
+ * not buffered.
+ */
+#define DIERR_NOTBUFFERED 0x80040207L
+
+/*
+ * An attempt was made to modify parameters of an effect while it is
+ * playing. Not all hardware devices support altering the parameters
+ * of an effect while it is playing.
+ */
+#define DIERR_EFFECTPLAYING 0x80040208L
+
+/*
+ * The operation could not be completed because the device is not
+ * plugged in.
+ */
+#define DIERR_UNPLUGGED 0x80040209L
+
+/*
+ * SendDeviceData failed because more information was requested
+ * to be sent than can be sent to the device. Some devices have
+ * restrictions on how much data can be sent to them. (For example,
+ * there might be a limit on the number of buttons that can be
+ * pressed at once.)
+ */
+#define DIERR_REPORTFULL 0x8004020AL
+
+
+/*
+ * A mapper file function failed because reading or writing the user or IHV
+ * settings file failed.
+ */
+#define DIERR_MAPFILEFAIL 0x8004020BL
+
+
+/*--- DINPUT Mapper Definitions: New for Dx8 ---*/
+
+
+/*--- Keyboard
+ Physical Keyboard Device ---*/
+
+#define DIKEYBOARD_ESCAPE 0x81000401
+#define DIKEYBOARD_1 0x81000402
+#define DIKEYBOARD_2 0x81000403
+#define DIKEYBOARD_3 0x81000404
+#define DIKEYBOARD_4 0x81000405
+#define DIKEYBOARD_5 0x81000406
+#define DIKEYBOARD_6 0x81000407
+#define DIKEYBOARD_7 0x81000408
+#define DIKEYBOARD_8 0x81000409
+#define DIKEYBOARD_9 0x8100040A
+#define DIKEYBOARD_0 0x8100040B
+#define DIKEYBOARD_MINUS 0x8100040C /* - on main keyboard */
+#define DIKEYBOARD_EQUALS 0x8100040D
+#define DIKEYBOARD_BACK 0x8100040E /* backspace */
+#define DIKEYBOARD_TAB 0x8100040F
+#define DIKEYBOARD_Q 0x81000410
+#define DIKEYBOARD_W 0x81000411
+#define DIKEYBOARD_E 0x81000412
+#define DIKEYBOARD_R 0x81000413
+#define DIKEYBOARD_T 0x81000414
+#define DIKEYBOARD_Y 0x81000415
+#define DIKEYBOARD_U 0x81000416
+#define DIKEYBOARD_I 0x81000417
+#define DIKEYBOARD_O 0x81000418
+#define DIKEYBOARD_P 0x81000419
+#define DIKEYBOARD_LBRACKET 0x8100041A
+#define DIKEYBOARD_RBRACKET 0x8100041B
+#define DIKEYBOARD_RETURN 0x8100041C /* Enter on main keyboard */
+#define DIKEYBOARD_LCONTROL 0x8100041D
+#define DIKEYBOARD_A 0x8100041E
+#define DIKEYBOARD_S 0x8100041F
+#define DIKEYBOARD_D 0x81000420
+#define DIKEYBOARD_F 0x81000421
+#define DIKEYBOARD_G 0x81000422
+#define DIKEYBOARD_H 0x81000423
+#define DIKEYBOARD_J 0x81000424
+#define DIKEYBOARD_K 0x81000425
+#define DIKEYBOARD_L 0x81000426
+#define DIKEYBOARD_SEMICOLON 0x81000427
+#define DIKEYBOARD_APOSTROPHE 0x81000428
+#define DIKEYBOARD_GRAVE 0x81000429 /* accent grave */
+#define DIKEYBOARD_LSHIFT 0x8100042A
+#define DIKEYBOARD_BACKSLASH 0x8100042B
+#define DIKEYBOARD_Z 0x8100042C
+#define DIKEYBOARD_X 0x8100042D
+#define DIKEYBOARD_C 0x8100042E
+#define DIKEYBOARD_V 0x8100042F
+#define DIKEYBOARD_B 0x81000430
+#define DIKEYBOARD_N 0x81000431
+#define DIKEYBOARD_M 0x81000432
+#define DIKEYBOARD_COMMA 0x81000433
+#define DIKEYBOARD_PERIOD 0x81000434 /* . on main keyboard */
+#define DIKEYBOARD_SLASH 0x81000435 /* / on main keyboard */
+#define DIKEYBOARD_RSHIFT 0x81000436
+#define DIKEYBOARD_MULTIPLY 0x81000437 /* * on numeric keypad */
+#define DIKEYBOARD_LMENU 0x81000438 /* left Alt */
+#define DIKEYBOARD_SPACE 0x81000439
+#define DIKEYBOARD_CAPITAL 0x8100043A
+#define DIKEYBOARD_F1 0x8100043B
+#define DIKEYBOARD_F2 0x8100043C
+#define DIKEYBOARD_F3 0x8100043D
+#define DIKEYBOARD_F4 0x8100043E
+#define DIKEYBOARD_F5 0x8100043F
+#define DIKEYBOARD_F6 0x81000440
+#define DIKEYBOARD_F7 0x81000441
+#define DIKEYBOARD_F8 0x81000442
+#define DIKEYBOARD_F9 0x81000443
+#define DIKEYBOARD_F10 0x81000444
+#define DIKEYBOARD_NUMLOCK 0x81000445
+#define DIKEYBOARD_SCROLL 0x81000446 /* Scroll Lock */
+#define DIKEYBOARD_NUMPAD7 0x81000447
+#define DIKEYBOARD_NUMPAD8 0x81000448
+#define DIKEYBOARD_NUMPAD9 0x81000449
+#define DIKEYBOARD_SUBTRACT 0x8100044A /* - on numeric keypad */
+#define DIKEYBOARD_NUMPAD4 0x8100044B
+#define DIKEYBOARD_NUMPAD5 0x8100044C
+#define DIKEYBOARD_NUMPAD6 0x8100044D
+#define DIKEYBOARD_ADD 0x8100044E /* + on numeric keypad */
+#define DIKEYBOARD_NUMPAD1 0x8100044F
+#define DIKEYBOARD_NUMPAD2 0x81000450
+#define DIKEYBOARD_NUMPAD3 0x81000451
+#define DIKEYBOARD_NUMPAD0 0x81000452
+#define DIKEYBOARD_DECIMAL 0x81000453 /* . on numeric keypad */
+#define DIKEYBOARD_OEM_102 0x81000456 /* <> or \| on RT 102-key keyboard (Non-U.S.) */
+#define DIKEYBOARD_F11 0x81000457
+#define DIKEYBOARD_F12 0x81000458
+#define DIKEYBOARD_F13 0x81000464 /* (NEC PC98) */
+#define DIKEYBOARD_F14 0x81000465 /* (NEC PC98) */
+#define DIKEYBOARD_F15 0x81000466 /* (NEC PC98) */
+#define DIKEYBOARD_KANA 0x81000470 /* (Japanese keyboard) */
+#define DIKEYBOARD_ABNT_C1 0x81000473 /* /? on Brazilian keyboard */
+#define DIKEYBOARD_CONVERT 0x81000479 /* (Japanese keyboard) */
+#define DIKEYBOARD_NOCONVERT 0x8100047B /* (Japanese keyboard) */
+#define DIKEYBOARD_YEN 0x8100047D /* (Japanese keyboard) */
+#define DIKEYBOARD_ABNT_C2 0x8100047E /* Numpad . on Brazilian keyboard */
+#define DIKEYBOARD_NUMPADEQUALS 0x8100048D /* = on numeric keypad (NEC PC98) */
+#define DIKEYBOARD_PREVTRACK 0x81000490 /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */
+#define DIKEYBOARD_AT 0x81000491 /* (NEC PC98) */
+#define DIKEYBOARD_COLON 0x81000492 /* (NEC PC98) */
+#define DIKEYBOARD_UNDERLINE 0x81000493 /* (NEC PC98) */
+#define DIKEYBOARD_KANJI 0x81000494 /* (Japanese keyboard) */
+#define DIKEYBOARD_STOP 0x81000495 /* (NEC PC98) */
+#define DIKEYBOARD_AX 0x81000496 /* (Japan AX) */
+#define DIKEYBOARD_UNLABELED 0x81000497 /* (J3100) */
+#define DIKEYBOARD_NEXTTRACK 0x81000499 /* Next Track */
+#define DIKEYBOARD_NUMPADENTER 0x8100049C /* Enter on numeric keypad */
+#define DIKEYBOARD_RCONTROL 0x8100049D
+#define DIKEYBOARD_MUTE 0x810004A0 /* Mute */
+#define DIKEYBOARD_CALCULATOR 0x810004A1 /* Calculator */
+#define DIKEYBOARD_PLAYPAUSE 0x810004A2 /* Play / Pause */
+#define DIKEYBOARD_MEDIASTOP 0x810004A4 /* Media Stop */
+#define DIKEYBOARD_VOLUMEDOWN 0x810004AE /* Volume - */
+#define DIKEYBOARD_VOLUMEUP 0x810004B0 /* Volume + */
+#define DIKEYBOARD_WEBHOME 0x810004B2 /* Web home */
+#define DIKEYBOARD_NUMPADCOMMA 0x810004B3 /* , on numeric keypad (NEC PC98) */
+#define DIKEYBOARD_DIVIDE 0x810004B5 /* / on numeric keypad */
+#define DIKEYBOARD_SYSRQ 0x810004B7
+#define DIKEYBOARD_RMENU 0x810004B8 /* right Alt */
+#define DIKEYBOARD_PAUSE 0x810004C5 /* Pause */
+#define DIKEYBOARD_HOME 0x810004C7 /* Home on arrow keypad */
+#define DIKEYBOARD_UP 0x810004C8 /* UpArrow on arrow keypad */
+#define DIKEYBOARD_PRIOR 0x810004C9 /* PgUp on arrow keypad */
+#define DIKEYBOARD_LEFT 0x810004CB /* LeftArrow on arrow keypad */
+#define DIKEYBOARD_RIGHT 0x810004CD /* RightArrow on arrow keypad */
+#define DIKEYBOARD_END 0x810004CF /* End on arrow keypad */
+#define DIKEYBOARD_DOWN 0x810004D0 /* DownArrow on arrow keypad */
+#define DIKEYBOARD_NEXT 0x810004D1 /* PgDn on arrow keypad */
+#define DIKEYBOARD_INSERT 0x810004D2 /* Insert on arrow keypad */
+#define DIKEYBOARD_DELETE 0x810004D3 /* Delete on arrow keypad */
+#define DIKEYBOARD_LWIN 0x810004DB /* Left Windows key */
+#define DIKEYBOARD_RWIN 0x810004DC /* Right Windows key */
+#define DIKEYBOARD_APPS 0x810004DD /* AppMenu key */
+#define DIKEYBOARD_POWER 0x810004DE /* System Power */
+#define DIKEYBOARD_SLEEP 0x810004DF /* System Sleep */
+#define DIKEYBOARD_WAKE 0x810004E3 /* System Wake */
+#define DIKEYBOARD_WEBSEARCH 0x810004E5 /* Web Search */
+#define DIKEYBOARD_WEBFAVORITES 0x810004E6 /* Web Favorites */
+#define DIKEYBOARD_WEBREFRESH 0x810004E7 /* Web Refresh */
+#define DIKEYBOARD_WEBSTOP 0x810004E8 /* Web Stop */
+#define DIKEYBOARD_WEBFORWARD 0x810004E9 /* Web Forward */
+#define DIKEYBOARD_WEBBACK 0x810004EA /* Web Back */
+#define DIKEYBOARD_MYCOMPUTER 0x810004EB /* My Computer */
+#define DIKEYBOARD_MAIL 0x810004EC /* Mail */
+#define DIKEYBOARD_MEDIASELECT 0x810004ED /* Media Select */
+
+
+/*--- MOUSE
+ Physical Mouse Device ---*/
+
+#define DIMOUSE_XAXISAB (0x82000200 |DIMOFS_X ) /* X Axis-absolute: Some mice natively report absolute coordinates */
+#define DIMOUSE_YAXISAB (0x82000200 |DIMOFS_Y ) /* Y Axis-absolute: Some mice natively report absolute coordinates */
+#define DIMOUSE_XAXIS (0x82000300 |DIMOFS_X ) /* X Axis */
+#define DIMOUSE_YAXIS (0x82000300 |DIMOFS_Y ) /* Y Axis */
+#define DIMOUSE_WHEEL (0x82000300 |DIMOFS_Z ) /* Z Axis */
+#define DIMOUSE_BUTTON0 (0x82000400 |DIMOFS_BUTTON0) /* Button 0 */
+#define DIMOUSE_BUTTON1 (0x82000400 |DIMOFS_BUTTON1) /* Button 1 */
+#define DIMOUSE_BUTTON2 (0x82000400 |DIMOFS_BUTTON2) /* Button 2 */
+#define DIMOUSE_BUTTON3 (0x82000400 |DIMOFS_BUTTON3) /* Button 3 */
+#define DIMOUSE_BUTTON4 (0x82000400 |DIMOFS_BUTTON4) /* Button 4 */
+#define DIMOUSE_BUTTON5 (0x82000400 |DIMOFS_BUTTON5) /* Button 5 */
+#define DIMOUSE_BUTTON6 (0x82000400 |DIMOFS_BUTTON6) /* Button 6 */
+#define DIMOUSE_BUTTON7 (0x82000400 |DIMOFS_BUTTON7) /* Button 7 */
+
+
+/*--- VOICE
+ Physical Dplay Voice Device ---*/
+
+#define DIVOICE_CHANNEL1 0x83000401
+#define DIVOICE_CHANNEL2 0x83000402
+#define DIVOICE_CHANNEL3 0x83000403
+#define DIVOICE_CHANNEL4 0x83000404
+#define DIVOICE_CHANNEL5 0x83000405
+#define DIVOICE_CHANNEL6 0x83000406
+#define DIVOICE_CHANNEL7 0x83000407
+#define DIVOICE_CHANNEL8 0x83000408
+#define DIVOICE_TEAM 0x83000409
+#define DIVOICE_ALL 0x8300040A
+#define DIVOICE_RECORDMUTE 0x8300040B
+#define DIVOICE_PLAYBACKMUTE 0x8300040C
+#define DIVOICE_TRANSMIT 0x8300040D
+
+#define DIVOICE_VOICECOMMAND 0x83000410
+
+
+/*--- Driving Simulator - Racing
+ Vehicle control is primary objective ---*/
+#define DIVIRTUAL_DRIVING_RACE 0x01000000
+#define DIAXIS_DRIVINGR_STEER 0x01008A01 /* Steering */
+#define DIAXIS_DRIVINGR_ACCELERATE 0x01039202 /* Accelerate */
+#define DIAXIS_DRIVINGR_BRAKE 0x01041203 /* Brake-Axis */
+#define DIBUTTON_DRIVINGR_SHIFTUP 0x01000C01 /* Shift to next higher gear */
+#define DIBUTTON_DRIVINGR_SHIFTDOWN 0x01000C02 /* Shift to next lower gear */
+#define DIBUTTON_DRIVINGR_VIEW 0x01001C03 /* Cycle through view options */
+#define DIBUTTON_DRIVINGR_MENU 0x010004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIAXIS_DRIVINGR_ACCEL_AND_BRAKE 0x01014A04 /* Some devices combine accelerate and brake in a single axis */
+#define DIHATSWITCH_DRIVINGR_GLANCE 0x01004601 /* Look around */
+#define DIBUTTON_DRIVINGR_BRAKE 0x01004C04 /* Brake-button */
+#define DIBUTTON_DRIVINGR_DASHBOARD 0x01004405 /* Select next dashboard option */
+#define DIBUTTON_DRIVINGR_AIDS 0x01004406 /* Driver correction aids */
+#define DIBUTTON_DRIVINGR_MAP 0x01004407 /* Display Driving Map */
+#define DIBUTTON_DRIVINGR_BOOST 0x01004408 /* Turbo Boost */
+#define DIBUTTON_DRIVINGR_PIT 0x01004409 /* Pit stop notification */
+#define DIBUTTON_DRIVINGR_ACCELERATE_LINK 0x0103D4E0 /* Fallback Accelerate button */
+#define DIBUTTON_DRIVINGR_STEER_LEFT_LINK 0x0100CCE4 /* Fallback Steer Left button */
+#define DIBUTTON_DRIVINGR_STEER_RIGHT_LINK 0x0100CCEC /* Fallback Steer Right button */
+#define DIBUTTON_DRIVINGR_GLANCE_LEFT_LINK 0x0107C4E4 /* Fallback Glance Left button */
+#define DIBUTTON_DRIVINGR_GLANCE_RIGHT_LINK 0x0107C4EC /* Fallback Glance Right button */
+#define DIBUTTON_DRIVINGR_DEVICE 0x010044FE /* Show input device and controls */
+#define DIBUTTON_DRIVINGR_PAUSE 0x010044FC /* Start / Pause / Restart game */
+
+/*--- Driving Simulator - Combat
+ Combat from within a vehicle is primary objective ---*/
+#define DIVIRTUAL_DRIVING_COMBAT 0x02000000
+#define DIAXIS_DRIVINGC_STEER 0x02008A01 /* Steering */
+#define DIAXIS_DRIVINGC_ACCELERATE 0x02039202 /* Accelerate */
+#define DIAXIS_DRIVINGC_BRAKE 0x02041203 /* Brake-axis */
+#define DIBUTTON_DRIVINGC_FIRE 0x02000C01 /* Fire */
+#define DIBUTTON_DRIVINGC_WEAPONS 0x02000C02 /* Select next weapon */
+#define DIBUTTON_DRIVINGC_TARGET 0x02000C03 /* Select next available target */
+#define DIBUTTON_DRIVINGC_MENU 0x020004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIAXIS_DRIVINGC_ACCEL_AND_BRAKE 0x02014A04 /* Some devices combine accelerate and brake in a single axis */
+#define DIHATSWITCH_DRIVINGC_GLANCE 0x02004601 /* Look around */
+#define DIBUTTON_DRIVINGC_SHIFTUP 0x02004C04 /* Shift to next higher gear */
+#define DIBUTTON_DRIVINGC_SHIFTDOWN 0x02004C05 /* Shift to next lower gear */
+#define DIBUTTON_DRIVINGC_DASHBOARD 0x02004406 /* Select next dashboard option */
+#define DIBUTTON_DRIVINGC_AIDS 0x02004407 /* Driver correction aids */
+#define DIBUTTON_DRIVINGC_BRAKE 0x02004C08 /* Brake-button */
+#define DIBUTTON_DRIVINGC_FIRESECONDARY 0x02004C09 /* Alternative fire button */
+#define DIBUTTON_DRIVINGC_ACCELERATE_LINK 0x0203D4E0 /* Fallback Accelerate button */
+#define DIBUTTON_DRIVINGC_STEER_LEFT_LINK 0x0200CCE4 /* Fallback Steer Left button */
+#define DIBUTTON_DRIVINGC_STEER_RIGHT_LINK 0x0200CCEC /* Fallback Steer Right button */
+#define DIBUTTON_DRIVINGC_GLANCE_LEFT_LINK 0x0207C4E4 /* Fallback Glance Left button */
+#define DIBUTTON_DRIVINGC_GLANCE_RIGHT_LINK 0x0207C4EC /* Fallback Glance Right button */
+#define DIBUTTON_DRIVINGC_DEVICE 0x020044FE /* Show input device and controls */
+#define DIBUTTON_DRIVINGC_PAUSE 0x020044FC /* Start / Pause / Restart game */
+
+/*--- Driving Simulator - Tank
+ Combat from withing a tank is primary objective ---*/
+#define DIVIRTUAL_DRIVING_TANK 0x03000000
+#define DIAXIS_DRIVINGT_STEER 0x03008A01 /* Turn tank left / right */
+#define DIAXIS_DRIVINGT_BARREL 0x03010202 /* Raise / lower barrel */
+#define DIAXIS_DRIVINGT_ACCELERATE 0x03039203 /* Accelerate */
+#define DIAXIS_DRIVINGT_ROTATE 0x03020204 /* Turn barrel left / right */
+#define DIBUTTON_DRIVINGT_FIRE 0x03000C01 /* Fire */
+#define DIBUTTON_DRIVINGT_WEAPONS 0x03000C02 /* Select next weapon */
+#define DIBUTTON_DRIVINGT_TARGET 0x03000C03 /* Selects next available target */
+#define DIBUTTON_DRIVINGT_MENU 0x030004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_DRIVINGT_GLANCE 0x03004601 /* Look around */
+#define DIAXIS_DRIVINGT_BRAKE 0x03045205 /* Brake-axis */
+#define DIAXIS_DRIVINGT_ACCEL_AND_BRAKE 0x03014A06 /* Some devices combine accelerate and brake in a single axis */
+#define DIBUTTON_DRIVINGT_VIEW 0x03005C04 /* Cycle through view options */
+#define DIBUTTON_DRIVINGT_DASHBOARD 0x03005C05 /* Select next dashboard option */
+#define DIBUTTON_DRIVINGT_BRAKE 0x03004C06 /* Brake-button */
+#define DIBUTTON_DRIVINGT_FIRESECONDARY 0x03004C07 /* Alternative fire button */
+#define DIBUTTON_DRIVINGT_ACCELERATE_LINK 0x0303D4E0 /* Fallback Accelerate button */
+#define DIBUTTON_DRIVINGT_STEER_LEFT_LINK 0x0300CCE4 /* Fallback Steer Left button */
+#define DIBUTTON_DRIVINGT_STEER_RIGHT_LINK 0x0300CCEC /* Fallback Steer Right button */
+#define DIBUTTON_DRIVINGT_BARREL_UP_LINK 0x030144E0 /* Fallback Barrel up button */
+#define DIBUTTON_DRIVINGT_BARREL_DOWN_LINK 0x030144E8 /* Fallback Barrel down button */
+#define DIBUTTON_DRIVINGT_ROTATE_LEFT_LINK 0x030244E4 /* Fallback Rotate left button */
+#define DIBUTTON_DRIVINGT_ROTATE_RIGHT_LINK 0x030244EC /* Fallback Rotate right button */
+#define DIBUTTON_DRIVINGT_GLANCE_LEFT_LINK 0x0307C4E4 /* Fallback Glance Left button */
+#define DIBUTTON_DRIVINGT_GLANCE_RIGHT_LINK 0x0307C4EC /* Fallback Glance Right button */
+#define DIBUTTON_DRIVINGT_DEVICE 0x030044FE /* Show input device and controls */
+#define DIBUTTON_DRIVINGT_PAUSE 0x030044FC /* Start / Pause / Restart game */
+
+/*--- Flight Simulator - Civilian
+ Plane control is the primary objective ---*/
+#define DIVIRTUAL_FLYING_CIVILIAN 0x04000000
+#define DIAXIS_FLYINGC_BANK 0x04008A01 /* Roll ship left / right */
+#define DIAXIS_FLYINGC_PITCH 0x04010A02 /* Nose up / down */
+#define DIAXIS_FLYINGC_THROTTLE 0x04039203 /* Throttle */
+#define DIBUTTON_FLYINGC_VIEW 0x04002401 /* Cycle through view options */
+#define DIBUTTON_FLYINGC_DISPLAY 0x04002402 /* Select next dashboard / heads up display option */
+#define DIBUTTON_FLYINGC_GEAR 0x04002C03 /* Gear up / down */
+#define DIBUTTON_FLYINGC_MENU 0x040004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_FLYINGC_GLANCE 0x04004601 /* Look around */
+#define DIAXIS_FLYINGC_BRAKE 0x04046A04 /* Apply Brake */
+#define DIAXIS_FLYINGC_RUDDER 0x04025205 /* Yaw ship left/right */
+#define DIAXIS_FLYINGC_FLAPS 0x04055A06 /* Flaps */
+#define DIBUTTON_FLYINGC_FLAPSUP 0x04006404 /* Increment stepping up until fully retracted */
+#define DIBUTTON_FLYINGC_FLAPSDOWN 0x04006405 /* Decrement stepping down until fully extended */
+#define DIBUTTON_FLYINGC_BRAKE_LINK 0x04046CE0 /* Fallback brake button */
+#define DIBUTTON_FLYINGC_FASTER_LINK 0x0403D4E0 /* Fallback throttle up button */
+#define DIBUTTON_FLYINGC_SLOWER_LINK 0x0403D4E8 /* Fallback throttle down button */
+#define DIBUTTON_FLYINGC_GLANCE_LEFT_LINK 0x0407C4E4 /* Fallback Glance Left button */
+#define DIBUTTON_FLYINGC_GLANCE_RIGHT_LINK 0x0407C4EC /* Fallback Glance Right button */
+#define DIBUTTON_FLYINGC_GLANCE_UP_LINK 0x0407C4E0 /* Fallback Glance Up button */
+#define DIBUTTON_FLYINGC_GLANCE_DOWN_LINK 0x0407C4E8 /* Fallback Glance Down button */
+#define DIBUTTON_FLYINGC_DEVICE 0x040044FE /* Show input device and controls */
+#define DIBUTTON_FLYINGC_PAUSE 0x040044FC /* Start / Pause / Restart game */
+
+/*--- Flight Simulator - Military
+ Aerial combat is the primary objective ---*/
+#define DIVIRTUAL_FLYING_MILITARY 0x05000000
+#define DIAXIS_FLYINGM_BANK 0x05008A01 /* Bank - Roll ship left / right */
+#define DIAXIS_FLYINGM_PITCH 0x05010A02 /* Pitch - Nose up / down */
+#define DIAXIS_FLYINGM_THROTTLE 0x05039203 /* Throttle - faster / slower */
+#define DIBUTTON_FLYINGM_FIRE 0x05000C01 /* Fire */
+#define DIBUTTON_FLYINGM_WEAPONS 0x05000C02 /* Select next weapon */
+#define DIBUTTON_FLYINGM_TARGET 0x05000C03 /* Selects next available target */
+#define DIBUTTON_FLYINGM_MENU 0x050004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_FLYINGM_GLANCE 0x05004601 /* Look around */
+#define DIBUTTON_FLYINGM_COUNTER 0x05005C04 /* Activate counter measures */
+#define DIAXIS_FLYINGM_RUDDER 0x05024A04 /* Rudder - Yaw ship left/right */
+#define DIAXIS_FLYINGM_BRAKE 0x05046205 /* Brake-axis */
+#define DIBUTTON_FLYINGM_VIEW 0x05006405 /* Cycle through view options */
+#define DIBUTTON_FLYINGM_DISPLAY 0x05006406 /* Select next dashboard option */
+#define DIAXIS_FLYINGM_FLAPS 0x05055206 /* Flaps */
+#define DIBUTTON_FLYINGM_FLAPSUP 0x05005407 /* Increment stepping up until fully retracted */
+#define DIBUTTON_FLYINGM_FLAPSDOWN 0x05005408 /* Decrement stepping down until fully extended */
+#define DIBUTTON_FLYINGM_FIRESECONDARY 0x05004C09 /* Alternative fire button */
+#define DIBUTTON_FLYINGM_GEAR 0x0500640A /* Gear up / down */
+#define DIBUTTON_FLYINGM_BRAKE_LINK 0x050464E0 /* Fallback brake button */
+#define DIBUTTON_FLYINGM_FASTER_LINK 0x0503D4E0 /* Fallback throttle up button */
+#define DIBUTTON_FLYINGM_SLOWER_LINK 0x0503D4E8 /* Fallback throttle down button */
+#define DIBUTTON_FLYINGM_GLANCE_LEFT_LINK 0x0507C4E4 /* Fallback Glance Left button */
+#define DIBUTTON_FLYINGM_GLANCE_RIGHT_LINK 0x0507C4EC /* Fallback Glance Right button */
+#define DIBUTTON_FLYINGM_GLANCE_UP_LINK 0x0507C4E0 /* Fallback Glance Up button */
+#define DIBUTTON_FLYINGM_GLANCE_DOWN_LINK 0x0507C4E8 /* Fallback Glance Down button */
+#define DIBUTTON_FLYINGM_DEVICE 0x050044FE /* Show input device and controls */
+#define DIBUTTON_FLYINGM_PAUSE 0x050044FC /* Start / Pause / Restart game */
+
+/*--- Flight Simulator - Combat Helicopter
+ Combat from helicopter is primary objective ---*/
+#define DIVIRTUAL_FLYING_HELICOPTER 0x06000000
+#define DIAXIS_FLYINGH_BANK 0x06008A01 /* Bank - Roll ship left / right */
+#define DIAXIS_FLYINGH_PITCH 0x06010A02 /* Pitch - Nose up / down */
+#define DIAXIS_FLYINGH_COLLECTIVE 0x06018A03 /* Collective - Blade pitch/power */
+#define DIBUTTON_FLYINGH_FIRE 0x06001401 /* Fire */
+#define DIBUTTON_FLYINGH_WEAPONS 0x06001402 /* Select next weapon */
+#define DIBUTTON_FLYINGH_TARGET 0x06001403 /* Selects next available target */
+#define DIBUTTON_FLYINGH_MENU 0x060004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_FLYINGH_GLANCE 0x06004601 /* Look around */
+#define DIAXIS_FLYINGH_TORQUE 0x06025A04 /* Torque - Rotate ship around left / right axis */
+#define DIAXIS_FLYINGH_THROTTLE 0x0603DA05 /* Throttle */
+#define DIBUTTON_FLYINGH_COUNTER 0x06005404 /* Activate counter measures */
+#define DIBUTTON_FLYINGH_VIEW 0x06006405 /* Cycle through view options */
+#define DIBUTTON_FLYINGH_GEAR 0x06006406 /* Gear up / down */
+#define DIBUTTON_FLYINGH_FIRESECONDARY 0x06004C07 /* Alternative fire button */
+#define DIBUTTON_FLYINGH_FASTER_LINK 0x0603DCE0 /* Fallback throttle up button */
+#define DIBUTTON_FLYINGH_SLOWER_LINK 0x0603DCE8 /* Fallback throttle down button */
+#define DIBUTTON_FLYINGH_GLANCE_LEFT_LINK 0x0607C4E4 /* Fallback Glance Left button */
+#define DIBUTTON_FLYINGH_GLANCE_RIGHT_LINK 0x0607C4EC /* Fallback Glance Right button */
+#define DIBUTTON_FLYINGH_GLANCE_UP_LINK 0x0607C4E0 /* Fallback Glance Up button */
+#define DIBUTTON_FLYINGH_GLANCE_DOWN_LINK 0x0607C4E8 /* Fallback Glance Down button */
+#define DIBUTTON_FLYINGH_DEVICE 0x060044FE /* Show input device and controls */
+#define DIBUTTON_FLYINGH_PAUSE 0x060044FC /* Start / Pause / Restart game */
+
+/*--- Space Simulator - Combat
+ Space Simulator with weapons ---*/
+#define DIVIRTUAL_SPACESIM 0x07000000
+#define DIAXIS_SPACESIM_LATERAL 0x07008201 /* Move ship left / right */
+#define DIAXIS_SPACESIM_MOVE 0x07010202 /* Move ship forward/backward */
+#define DIAXIS_SPACESIM_THROTTLE 0x07038203 /* Throttle - Engine speed */
+#define DIBUTTON_SPACESIM_FIRE 0x07000401 /* Fire */
+#define DIBUTTON_SPACESIM_WEAPONS 0x07000402 /* Select next weapon */
+#define DIBUTTON_SPACESIM_TARGET 0x07000403 /* Selects next available target */
+#define DIBUTTON_SPACESIM_MENU 0x070004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_SPACESIM_GLANCE 0x07004601 /* Look around */
+#define DIAXIS_SPACESIM_CLIMB 0x0701C204 /* Climb - Pitch ship up/down */
+#define DIAXIS_SPACESIM_ROTATE 0x07024205 /* Rotate - Turn ship left/right */
+#define DIBUTTON_SPACESIM_VIEW 0x07004404 /* Cycle through view options */
+#define DIBUTTON_SPACESIM_DISPLAY 0x07004405 /* Select next dashboard / heads up display option */
+#define DIBUTTON_SPACESIM_RAISE 0x07004406 /* Raise ship while maintaining current pitch */
+#define DIBUTTON_SPACESIM_LOWER 0x07004407 /* Lower ship while maintaining current pitch */
+#define DIBUTTON_SPACESIM_GEAR 0x07004408 /* Gear up / down */
+#define DIBUTTON_SPACESIM_FIRESECONDARY 0x07004409 /* Alternative fire button */
+#define DIBUTTON_SPACESIM_LEFT_LINK 0x0700C4E4 /* Fallback move left button */
+#define DIBUTTON_SPACESIM_RIGHT_LINK 0x0700C4EC /* Fallback move right button */
+#define DIBUTTON_SPACESIM_FORWARD_LINK 0x070144E0 /* Fallback move forward button */
+#define DIBUTTON_SPACESIM_BACKWARD_LINK 0x070144E8 /* Fallback move backwards button */
+#define DIBUTTON_SPACESIM_FASTER_LINK 0x0703C4E0 /* Fallback throttle up button */
+#define DIBUTTON_SPACESIM_SLOWER_LINK 0x0703C4E8 /* Fallback throttle down button */
+#define DIBUTTON_SPACESIM_TURN_LEFT_LINK 0x070244E4 /* Fallback turn left button */
+#define DIBUTTON_SPACESIM_TURN_RIGHT_LINK 0x070244EC /* Fallback turn right button */
+#define DIBUTTON_SPACESIM_GLANCE_LEFT_LINK 0x0707C4E4 /* Fallback Glance Left button */
+#define DIBUTTON_SPACESIM_GLANCE_RIGHT_LINK 0x0707C4EC /* Fallback Glance Right button */
+#define DIBUTTON_SPACESIM_GLANCE_UP_LINK 0x0707C4E0 /* Fallback Glance Up button */
+#define DIBUTTON_SPACESIM_GLANCE_DOWN_LINK 0x0707C4E8 /* Fallback Glance Down button */
+#define DIBUTTON_SPACESIM_DEVICE 0x070044FE /* Show input device and controls */
+#define DIBUTTON_SPACESIM_PAUSE 0x070044FC /* Start / Pause / Restart game */
+
+/*--- Fighting - First Person
+ Hand to Hand combat is primary objective ---*/
+#define DIVIRTUAL_FIGHTING_HAND2HAND 0x08000000
+#define DIAXIS_FIGHTINGH_LATERAL 0x08008201 /* Sidestep left/right */
+#define DIAXIS_FIGHTINGH_MOVE 0x08010202 /* Move forward/backward */
+#define DIBUTTON_FIGHTINGH_PUNCH 0x08000401 /* Punch */
+#define DIBUTTON_FIGHTINGH_KICK 0x08000402 /* Kick */
+#define DIBUTTON_FIGHTINGH_BLOCK 0x08000403 /* Block */
+#define DIBUTTON_FIGHTINGH_CROUCH 0x08000404 /* Crouch */
+#define DIBUTTON_FIGHTINGH_JUMP 0x08000405 /* Jump */
+#define DIBUTTON_FIGHTINGH_SPECIAL1 0x08000406 /* Apply first special move */
+#define DIBUTTON_FIGHTINGH_SPECIAL2 0x08000407 /* Apply second special move */
+#define DIBUTTON_FIGHTINGH_MENU 0x080004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIBUTTON_FIGHTINGH_SELECT 0x08004408 /* Select special move */
+#define DIHATSWITCH_FIGHTINGH_SLIDE 0x08004601 /* Look around */
+#define DIBUTTON_FIGHTINGH_DISPLAY 0x08004409 /* Shows next on-screen display option */
+#define DIAXIS_FIGHTINGH_ROTATE 0x08024203 /* Rotate - Turn body left/right */
+#define DIBUTTON_FIGHTINGH_DODGE 0x0800440A /* Dodge */
+#define DIBUTTON_FIGHTINGH_LEFT_LINK 0x0800C4E4 /* Fallback left sidestep button */
+#define DIBUTTON_FIGHTINGH_RIGHT_LINK 0x0800C4EC /* Fallback right sidestep button */
+#define DIBUTTON_FIGHTINGH_FORWARD_LINK 0x080144E0 /* Fallback forward button */
+#define DIBUTTON_FIGHTINGH_BACKWARD_LINK 0x080144E8 /* Fallback backward button */
+#define DIBUTTON_FIGHTINGH_DEVICE 0x080044FE /* Show input device and controls */
+#define DIBUTTON_FIGHTINGH_PAUSE 0x080044FC /* Start / Pause / Restart game */
+
+/*--- Fighting - First Person Shooting
+ Navigation and combat are primary objectives ---*/
+#define DIVIRTUAL_FIGHTING_FPS 0x09000000
+#define DIAXIS_FPS_ROTATE 0x09008201 /* Rotate character left/right */
+#define DIAXIS_FPS_MOVE 0x09010202 /* Move forward/backward */
+#define DIBUTTON_FPS_FIRE 0x09000401 /* Fire */
+#define DIBUTTON_FPS_WEAPONS 0x09000402 /* Select next weapon */
+#define DIBUTTON_FPS_APPLY 0x09000403 /* Use item */
+#define DIBUTTON_FPS_SELECT 0x09000404 /* Select next inventory item */
+#define DIBUTTON_FPS_CROUCH 0x09000405 /* Crouch/ climb down/ swim down */
+#define DIBUTTON_FPS_JUMP 0x09000406 /* Jump/ climb up/ swim up */
+#define DIAXIS_FPS_LOOKUPDOWN 0x09018203 /* Look up / down */
+#define DIBUTTON_FPS_STRAFE 0x09000407 /* Enable strafing while active */
+#define DIBUTTON_FPS_MENU 0x090004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_FPS_GLANCE 0x09004601 /* Look around */
+#define DIBUTTON_FPS_DISPLAY 0x09004408 /* Shows next on-screen display option/ map */
+#define DIAXIS_FPS_SIDESTEP 0x09024204 /* Sidestep */
+#define DIBUTTON_FPS_DODGE 0x09004409 /* Dodge */
+#define DIBUTTON_FPS_GLANCEL 0x0900440A /* Glance Left */
+#define DIBUTTON_FPS_GLANCER 0x0900440B /* Glance Right */
+#define DIBUTTON_FPS_FIRESECONDARY 0x0900440C /* Alternative fire button */
+#define DIBUTTON_FPS_ROTATE_LEFT_LINK 0x0900C4E4 /* Fallback rotate left button */
+#define DIBUTTON_FPS_ROTATE_RIGHT_LINK 0x0900C4EC /* Fallback rotate right button */
+#define DIBUTTON_FPS_FORWARD_LINK 0x090144E0 /* Fallback forward button */
+#define DIBUTTON_FPS_BACKWARD_LINK 0x090144E8 /* Fallback backward button */
+#define DIBUTTON_FPS_GLANCE_UP_LINK 0x0901C4E0 /* Fallback look up button */
+#define DIBUTTON_FPS_GLANCE_DOWN_LINK 0x0901C4E8 /* Fallback look down button */
+#define DIBUTTON_FPS_STEP_LEFT_LINK 0x090244E4 /* Fallback step left button */
+#define DIBUTTON_FPS_STEP_RIGHT_LINK 0x090244EC /* Fallback step right button */
+#define DIBUTTON_FPS_DEVICE 0x090044FE /* Show input device and controls */
+#define DIBUTTON_FPS_PAUSE 0x090044FC /* Start / Pause / Restart game */
+
+/*--- Fighting - Third Person action
+ Perspective of camera is behind the main character ---*/
+#define DIVIRTUAL_FIGHTING_THIRDPERSON 0x0A000000
+#define DIAXIS_TPS_TURN 0x0A020201 /* Turn left/right */
+#define DIAXIS_TPS_MOVE 0x0A010202 /* Move forward/backward */
+#define DIBUTTON_TPS_RUN 0x0A000401 /* Run or walk toggle switch */
+#define DIBUTTON_TPS_ACTION 0x0A000402 /* Action Button */
+#define DIBUTTON_TPS_SELECT 0x0A000403 /* Select next weapon */
+#define DIBUTTON_TPS_USE 0x0A000404 /* Use inventory item currently selected */
+#define DIBUTTON_TPS_JUMP 0x0A000405 /* Character Jumps */
+#define DIBUTTON_TPS_MENU 0x0A0004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_TPS_GLANCE 0x0A004601 /* Look around */
+#define DIBUTTON_TPS_VIEW 0x0A004406 /* Select camera view */
+#define DIBUTTON_TPS_STEPLEFT 0x0A004407 /* Character takes a left step */
+#define DIBUTTON_TPS_STEPRIGHT 0x0A004408 /* Character takes a right step */
+#define DIAXIS_TPS_STEP 0x0A00C203 /* Character steps left/right */
+#define DIBUTTON_TPS_DODGE 0x0A004409 /* Character dodges or ducks */
+#define DIBUTTON_TPS_INVENTORY 0x0A00440A /* Cycle through inventory */
+#define DIBUTTON_TPS_TURN_LEFT_LINK 0x0A0244E4 /* Fallback turn left button */
+#define DIBUTTON_TPS_TURN_RIGHT_LINK 0x0A0244EC /* Fallback turn right button */
+#define DIBUTTON_TPS_FORWARD_LINK 0x0A0144E0 /* Fallback forward button */
+#define DIBUTTON_TPS_BACKWARD_LINK 0x0A0144E8 /* Fallback backward button */
+#define DIBUTTON_TPS_GLANCE_UP_LINK 0x0A07C4E0 /* Fallback look up button */
+#define DIBUTTON_TPS_GLANCE_DOWN_LINK 0x0A07C4E8 /* Fallback look down button */
+#define DIBUTTON_TPS_GLANCE_LEFT_LINK 0x0A07C4E4 /* Fallback glance up button */
+#define DIBUTTON_TPS_GLANCE_RIGHT_LINK 0x0A07C4EC /* Fallback glance right button */
+#define DIBUTTON_TPS_DEVICE 0x0A0044FE /* Show input device and controls */
+#define DIBUTTON_TPS_PAUSE 0x0A0044FC /* Start / Pause / Restart game */
+
+/*--- Strategy - Role Playing
+ Navigation and problem solving are primary actions ---*/
+#define DIVIRTUAL_STRATEGY_ROLEPLAYING 0x0B000000
+#define DIAXIS_STRATEGYR_LATERAL 0x0B008201 /* sidestep - left/right */
+#define DIAXIS_STRATEGYR_MOVE 0x0B010202 /* move forward/backward */
+#define DIBUTTON_STRATEGYR_GET 0x0B000401 /* Acquire item */
+#define DIBUTTON_STRATEGYR_APPLY 0x0B000402 /* Use selected item */
+#define DIBUTTON_STRATEGYR_SELECT 0x0B000403 /* Select nextitem */
+#define DIBUTTON_STRATEGYR_ATTACK 0x0B000404 /* Attack */
+#define DIBUTTON_STRATEGYR_CAST 0x0B000405 /* Cast Spell */
+#define DIBUTTON_STRATEGYR_CROUCH 0x0B000406 /* Crouch */
+#define DIBUTTON_STRATEGYR_JUMP 0x0B000407 /* Jump */
+#define DIBUTTON_STRATEGYR_MENU 0x0B0004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_STRATEGYR_GLANCE 0x0B004601 /* Look around */
+#define DIBUTTON_STRATEGYR_MAP 0x0B004408 /* Cycle through map options */
+#define DIBUTTON_STRATEGYR_DISPLAY 0x0B004409 /* Shows next on-screen display option */
+#define DIAXIS_STRATEGYR_ROTATE 0x0B024203 /* Turn body left/right */
+#define DIBUTTON_STRATEGYR_LEFT_LINK 0x0B00C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_STRATEGYR_RIGHT_LINK 0x0B00C4EC /* Fallback sidestep right button */
+#define DIBUTTON_STRATEGYR_FORWARD_LINK 0x0B0144E0 /* Fallback move forward button */
+#define DIBUTTON_STRATEGYR_BACK_LINK 0x0B0144E8 /* Fallback move backward button */
+#define DIBUTTON_STRATEGYR_ROTATE_LEFT_LINK 0x0B0244E4 /* Fallback turn body left button */
+#define DIBUTTON_STRATEGYR_ROTATE_RIGHT_LINK 0x0B0244EC /* Fallback turn body right button */
+#define DIBUTTON_STRATEGYR_DEVICE 0x0B0044FE /* Show input device and controls */
+#define DIBUTTON_STRATEGYR_PAUSE 0x0B0044FC /* Start / Pause / Restart game */
+
+/*--- Strategy - Turn based
+ Navigation and problem solving are primary actions ---*/
+#define DIVIRTUAL_STRATEGY_TURN 0x0C000000
+#define DIAXIS_STRATEGYT_LATERAL 0x0C008201 /* Sidestep left/right */
+#define DIAXIS_STRATEGYT_MOVE 0x0C010202 /* Move forward/backwards */
+#define DIBUTTON_STRATEGYT_SELECT 0x0C000401 /* Select unit or object */
+#define DIBUTTON_STRATEGYT_INSTRUCT 0x0C000402 /* Cycle through instructions */
+#define DIBUTTON_STRATEGYT_APPLY 0x0C000403 /* Apply selected instruction */
+#define DIBUTTON_STRATEGYT_TEAM 0x0C000404 /* Select next team / cycle through all */
+#define DIBUTTON_STRATEGYT_TURN 0x0C000405 /* Indicate turn over */
+#define DIBUTTON_STRATEGYT_MENU 0x0C0004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIBUTTON_STRATEGYT_ZOOM 0x0C004406 /* Zoom - in / out */
+#define DIBUTTON_STRATEGYT_MAP 0x0C004407 /* cycle through map options */
+#define DIBUTTON_STRATEGYT_DISPLAY 0x0C004408 /* shows next on-screen display options */
+#define DIBUTTON_STRATEGYT_LEFT_LINK 0x0C00C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_STRATEGYT_RIGHT_LINK 0x0C00C4EC /* Fallback sidestep right button */
+#define DIBUTTON_STRATEGYT_FORWARD_LINK 0x0C0144E0 /* Fallback move forward button */
+#define DIBUTTON_STRATEGYT_BACK_LINK 0x0C0144E8 /* Fallback move back button */
+#define DIBUTTON_STRATEGYT_DEVICE 0x0C0044FE /* Show input device and controls */
+#define DIBUTTON_STRATEGYT_PAUSE 0x0C0044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Hunting
+ Hunting ---*/
+#define DIVIRTUAL_SPORTS_HUNTING 0x0D000000
+#define DIAXIS_HUNTING_LATERAL 0x0D008201 /* sidestep left/right */
+#define DIAXIS_HUNTING_MOVE 0x0D010202 /* move forward/backwards */
+#define DIBUTTON_HUNTING_FIRE 0x0D000401 /* Fire selected weapon */
+#define DIBUTTON_HUNTING_AIM 0x0D000402 /* Select aim/move */
+#define DIBUTTON_HUNTING_WEAPON 0x0D000403 /* Select next weapon */
+#define DIBUTTON_HUNTING_BINOCULAR 0x0D000404 /* Look through Binoculars */
+#define DIBUTTON_HUNTING_CALL 0x0D000405 /* Make animal call */
+#define DIBUTTON_HUNTING_MAP 0x0D000406 /* View Map */
+#define DIBUTTON_HUNTING_SPECIAL 0x0D000407 /* Special game operation */
+#define DIBUTTON_HUNTING_MENU 0x0D0004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_HUNTING_GLANCE 0x0D004601 /* Look around */
+#define DIBUTTON_HUNTING_DISPLAY 0x0D004408 /* show next on-screen display option */
+#define DIAXIS_HUNTING_ROTATE 0x0D024203 /* Turn body left/right */
+#define DIBUTTON_HUNTING_CROUCH 0x0D004409 /* Crouch/ Climb / Swim down */
+#define DIBUTTON_HUNTING_JUMP 0x0D00440A /* Jump/ Climb up / Swim up */
+#define DIBUTTON_HUNTING_FIRESECONDARY 0x0D00440B /* Alternative fire button */
+#define DIBUTTON_HUNTING_LEFT_LINK 0x0D00C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_HUNTING_RIGHT_LINK 0x0D00C4EC /* Fallback sidestep right button */
+#define DIBUTTON_HUNTING_FORWARD_LINK 0x0D0144E0 /* Fallback move forward button */
+#define DIBUTTON_HUNTING_BACK_LINK 0x0D0144E8 /* Fallback move back button */
+#define DIBUTTON_HUNTING_ROTATE_LEFT_LINK 0x0D0244E4 /* Fallback turn body left button */
+#define DIBUTTON_HUNTING_ROTATE_RIGHT_LINK 0x0D0244EC /* Fallback turn body right button */
+#define DIBUTTON_HUNTING_DEVICE 0x0D0044FE /* Show input device and controls */
+#define DIBUTTON_HUNTING_PAUSE 0x0D0044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Fishing
+ Catching Fish is primary objective ---*/
+#define DIVIRTUAL_SPORTS_FISHING 0x0E000000
+#define DIAXIS_FISHING_LATERAL 0x0E008201 /* sidestep left/right */
+#define DIAXIS_FISHING_MOVE 0x0E010202 /* move forward/backwards */
+#define DIBUTTON_FISHING_CAST 0x0E000401 /* Cast line */
+#define DIBUTTON_FISHING_TYPE 0x0E000402 /* Select cast type */
+#define DIBUTTON_FISHING_BINOCULAR 0x0E000403 /* Look through Binocular */
+#define DIBUTTON_FISHING_BAIT 0x0E000404 /* Select type of Bait */
+#define DIBUTTON_FISHING_MAP 0x0E000405 /* View Map */
+#define DIBUTTON_FISHING_MENU 0x0E0004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_FISHING_GLANCE 0x0E004601 /* Look around */
+#define DIBUTTON_FISHING_DISPLAY 0x0E004406 /* Show next on-screen display option */
+#define DIAXIS_FISHING_ROTATE 0x0E024203 /* Turn character left / right */
+#define DIBUTTON_FISHING_CROUCH 0x0E004407 /* Crouch/ Climb / Swim down */
+#define DIBUTTON_FISHING_JUMP 0x0E004408 /* Jump/ Climb up / Swim up */
+#define DIBUTTON_FISHING_LEFT_LINK 0x0E00C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_FISHING_RIGHT_LINK 0x0E00C4EC /* Fallback sidestep right button */
+#define DIBUTTON_FISHING_FORWARD_LINK 0x0E0144E0 /* Fallback move forward button */
+#define DIBUTTON_FISHING_BACK_LINK 0x0E0144E8 /* Fallback move back button */
+#define DIBUTTON_FISHING_ROTATE_LEFT_LINK 0x0E0244E4 /* Fallback turn body left button */
+#define DIBUTTON_FISHING_ROTATE_RIGHT_LINK 0x0E0244EC /* Fallback turn body right button */
+#define DIBUTTON_FISHING_DEVICE 0x0E0044FE /* Show input device and controls */
+#define DIBUTTON_FISHING_PAUSE 0x0E0044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Baseball - Batting
+ Batter control is primary objective ---*/
+#define DIVIRTUAL_SPORTS_BASEBALL_BAT 0x0F000000
+#define DIAXIS_BASEBALLB_LATERAL 0x0F008201 /* Aim left / right */
+#define DIAXIS_BASEBALLB_MOVE 0x0F010202 /* Aim up / down */
+#define DIBUTTON_BASEBALLB_SELECT 0x0F000401 /* cycle through swing options */
+#define DIBUTTON_BASEBALLB_NORMAL 0x0F000402 /* normal swing */
+#define DIBUTTON_BASEBALLB_POWER 0x0F000403 /* swing for the fence */
+#define DIBUTTON_BASEBALLB_BUNT 0x0F000404 /* bunt */
+#define DIBUTTON_BASEBALLB_STEAL 0x0F000405 /* Base runner attempts to steal a base */
+#define DIBUTTON_BASEBALLB_BURST 0x0F000406 /* Base runner invokes burst of speed */
+#define DIBUTTON_BASEBALLB_SLIDE 0x0F000407 /* Base runner slides into base */
+#define DIBUTTON_BASEBALLB_CONTACT 0x0F000408 /* Contact swing */
+#define DIBUTTON_BASEBALLB_MENU 0x0F0004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIBUTTON_BASEBALLB_NOSTEAL 0x0F004409 /* Base runner goes back to a base */
+#define DIBUTTON_BASEBALLB_BOX 0x0F00440A /* Enter or exit batting box */
+#define DIBUTTON_BASEBALLB_LEFT_LINK 0x0F00C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_BASEBALLB_RIGHT_LINK 0x0F00C4EC /* Fallback sidestep right button */
+#define DIBUTTON_BASEBALLB_FORWARD_LINK 0x0F0144E0 /* Fallback move forward button */
+#define DIBUTTON_BASEBALLB_BACK_LINK 0x0F0144E8 /* Fallback move back button */
+#define DIBUTTON_BASEBALLB_DEVICE 0x0F0044FE /* Show input device and controls */
+#define DIBUTTON_BASEBALLB_PAUSE 0x0F0044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Baseball - Pitching
+ Pitcher control is primary objective ---*/
+#define DIVIRTUAL_SPORTS_BASEBALL_PITCH 0x10000000
+#define DIAXIS_BASEBALLP_LATERAL 0x10008201 /* Aim left / right */
+#define DIAXIS_BASEBALLP_MOVE 0x10010202 /* Aim up / down */
+#define DIBUTTON_BASEBALLP_SELECT 0x10000401 /* cycle through pitch selections */
+#define DIBUTTON_BASEBALLP_PITCH 0x10000402 /* throw pitch */
+#define DIBUTTON_BASEBALLP_BASE 0x10000403 /* select base to throw to */
+#define DIBUTTON_BASEBALLP_THROW 0x10000404 /* throw to base */
+#define DIBUTTON_BASEBALLP_FAKE 0x10000405 /* Fake a throw to a base */
+#define DIBUTTON_BASEBALLP_MENU 0x100004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIBUTTON_BASEBALLP_WALK 0x10004406 /* Throw intentional walk / pitch out */
+#define DIBUTTON_BASEBALLP_LOOK 0x10004407 /* Look at runners on bases */
+#define DIBUTTON_BASEBALLP_LEFT_LINK 0x1000C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_BASEBALLP_RIGHT_LINK 0x1000C4EC /* Fallback sidestep right button */
+#define DIBUTTON_BASEBALLP_FORWARD_LINK 0x100144E0 /* Fallback move forward button */
+#define DIBUTTON_BASEBALLP_BACK_LINK 0x100144E8 /* Fallback move back button */
+#define DIBUTTON_BASEBALLP_DEVICE 0x100044FE /* Show input device and controls */
+#define DIBUTTON_BASEBALLP_PAUSE 0x100044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Baseball - Fielding
+ Fielder control is primary objective ---*/
+#define DIVIRTUAL_SPORTS_BASEBALL_FIELD 0x11000000
+#define DIAXIS_BASEBALLF_LATERAL 0x11008201 /* Aim left / right */
+#define DIAXIS_BASEBALLF_MOVE 0x11010202 /* Aim up / down */
+#define DIBUTTON_BASEBALLF_NEAREST 0x11000401 /* Switch to fielder nearest to the ball */
+#define DIBUTTON_BASEBALLF_THROW1 0x11000402 /* Make conservative throw */
+#define DIBUTTON_BASEBALLF_THROW2 0x11000403 /* Make aggressive throw */
+#define DIBUTTON_BASEBALLF_BURST 0x11000404 /* Invoke burst of speed */
+#define DIBUTTON_BASEBALLF_JUMP 0x11000405 /* Jump to catch ball */
+#define DIBUTTON_BASEBALLF_DIVE 0x11000406 /* Dive to catch ball */
+#define DIBUTTON_BASEBALLF_MENU 0x110004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIBUTTON_BASEBALLF_SHIFTIN 0x11004407 /* Shift the infield positioning */
+#define DIBUTTON_BASEBALLF_SHIFTOUT 0x11004408 /* Shift the outfield positioning */
+#define DIBUTTON_BASEBALLF_AIM_LEFT_LINK 0x1100C4E4 /* Fallback aim left button */
+#define DIBUTTON_BASEBALLF_AIM_RIGHT_LINK 0x1100C4EC /* Fallback aim right button */
+#define DIBUTTON_BASEBALLF_FORWARD_LINK 0x110144E0 /* Fallback move forward button */
+#define DIBUTTON_BASEBALLF_BACK_LINK 0x110144E8 /* Fallback move back button */
+#define DIBUTTON_BASEBALLF_DEVICE 0x110044FE /* Show input device and controls */
+#define DIBUTTON_BASEBALLF_PAUSE 0x110044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Basketball - Offense
+ Offense ---*/
+#define DIVIRTUAL_SPORTS_BASKETBALL_OFFENSE 0x12000000
+#define DIAXIS_BBALLO_LATERAL 0x12008201 /* left / right */
+#define DIAXIS_BBALLO_MOVE 0x12010202 /* up / down */
+#define DIBUTTON_BBALLO_SHOOT 0x12000401 /* shoot basket */
+#define DIBUTTON_BBALLO_DUNK 0x12000402 /* dunk basket */
+#define DIBUTTON_BBALLO_PASS 0x12000403 /* throw pass */
+#define DIBUTTON_BBALLO_FAKE 0x12000404 /* fake shot or pass */
+#define DIBUTTON_BBALLO_SPECIAL 0x12000405 /* apply special move */
+#define DIBUTTON_BBALLO_PLAYER 0x12000406 /* select next player */
+#define DIBUTTON_BBALLO_BURST 0x12000407 /* invoke burst */
+#define DIBUTTON_BBALLO_CALL 0x12000408 /* call for ball / pass to me */
+#define DIBUTTON_BBALLO_MENU 0x120004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_BBALLO_GLANCE 0x12004601 /* scroll view */
+#define DIBUTTON_BBALLO_SCREEN 0x12004409 /* Call for screen */
+#define DIBUTTON_BBALLO_PLAY 0x1200440A /* Call for specific offensive play */
+#define DIBUTTON_BBALLO_JAB 0x1200440B /* Initiate fake drive to basket */
+#define DIBUTTON_BBALLO_POST 0x1200440C /* Perform post move */
+#define DIBUTTON_BBALLO_TIMEOUT 0x1200440D /* Time Out */
+#define DIBUTTON_BBALLO_SUBSTITUTE 0x1200440E /* substitute one player for another */
+#define DIBUTTON_BBALLO_LEFT_LINK 0x1200C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_BBALLO_RIGHT_LINK 0x1200C4EC /* Fallback sidestep right button */
+#define DIBUTTON_BBALLO_FORWARD_LINK 0x120144E0 /* Fallback move forward button */
+#define DIBUTTON_BBALLO_BACK_LINK 0x120144E8 /* Fallback move back button */
+#define DIBUTTON_BBALLO_DEVICE 0x120044FE /* Show input device and controls */
+#define DIBUTTON_BBALLO_PAUSE 0x120044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Basketball - Defense
+ Defense ---*/
+#define DIVIRTUAL_SPORTS_BASKETBALL_DEFENSE 0x13000000
+#define DIAXIS_BBALLD_LATERAL 0x13008201 /* left / right */
+#define DIAXIS_BBALLD_MOVE 0x13010202 /* up / down */
+#define DIBUTTON_BBALLD_JUMP 0x13000401 /* jump to block shot */
+#define DIBUTTON_BBALLD_STEAL 0x13000402 /* attempt to steal ball */
+#define DIBUTTON_BBALLD_FAKE 0x13000403 /* fake block or steal */
+#define DIBUTTON_BBALLD_SPECIAL 0x13000404 /* apply special move */
+#define DIBUTTON_BBALLD_PLAYER 0x13000405 /* select next player */
+#define DIBUTTON_BBALLD_BURST 0x13000406 /* invoke burst */
+#define DIBUTTON_BBALLD_PLAY 0x13000407 /* call for specific defensive play */
+#define DIBUTTON_BBALLD_MENU 0x130004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_BBALLD_GLANCE 0x13004601 /* scroll view */
+#define DIBUTTON_BBALLD_TIMEOUT 0x13004408 /* Time Out */
+#define DIBUTTON_BBALLD_SUBSTITUTE 0x13004409 /* substitute one player for another */
+#define DIBUTTON_BBALLD_LEFT_LINK 0x1300C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_BBALLD_RIGHT_LINK 0x1300C4EC /* Fallback sidestep right button */
+#define DIBUTTON_BBALLD_FORWARD_LINK 0x130144E0 /* Fallback move forward button */
+#define DIBUTTON_BBALLD_BACK_LINK 0x130144E8 /* Fallback move back button */
+#define DIBUTTON_BBALLD_DEVICE 0x130044FE /* Show input device and controls */
+#define DIBUTTON_BBALLD_PAUSE 0x130044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Football - Play
+ Play selection ---*/
+#define DIVIRTUAL_SPORTS_FOOTBALL_FIELD 0x14000000
+#define DIBUTTON_FOOTBALLP_PLAY 0x14000401 /* cycle through available plays */
+#define DIBUTTON_FOOTBALLP_SELECT 0x14000402 /* select play */
+#define DIBUTTON_FOOTBALLP_HELP 0x14000403 /* Bring up pop-up help */
+#define DIBUTTON_FOOTBALLP_MENU 0x140004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIBUTTON_FOOTBALLP_DEVICE 0x140044FE /* Show input device and controls */
+#define DIBUTTON_FOOTBALLP_PAUSE 0x140044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Football - QB
+ Offense: Quarterback / Kicker ---*/
+#define DIVIRTUAL_SPORTS_FOOTBALL_QBCK 0x15000000
+#define DIAXIS_FOOTBALLQ_LATERAL 0x15008201 /* Move / Aim: left / right */
+#define DIAXIS_FOOTBALLQ_MOVE 0x15010202 /* Move / Aim: up / down */
+#define DIBUTTON_FOOTBALLQ_SELECT 0x15000401 /* Select */
+#define DIBUTTON_FOOTBALLQ_SNAP 0x15000402 /* snap ball - start play */
+#define DIBUTTON_FOOTBALLQ_JUMP 0x15000403 /* jump over defender */
+#define DIBUTTON_FOOTBALLQ_SLIDE 0x15000404 /* Dive/Slide */
+#define DIBUTTON_FOOTBALLQ_PASS 0x15000405 /* throws pass to receiver */
+#define DIBUTTON_FOOTBALLQ_FAKE 0x15000406 /* pump fake pass or fake kick */
+#define DIBUTTON_FOOTBALLQ_MENU 0x150004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIBUTTON_FOOTBALLQ_FAKESNAP 0x15004407 /* Fake snap */
+#define DIBUTTON_FOOTBALLQ_MOTION 0x15004408 /* Send receivers in motion */
+#define DIBUTTON_FOOTBALLQ_AUDIBLE 0x15004409 /* Change offensive play at line of scrimmage */
+#define DIBUTTON_FOOTBALLQ_LEFT_LINK 0x1500C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_FOOTBALLQ_RIGHT_LINK 0x1500C4EC /* Fallback sidestep right button */
+#define DIBUTTON_FOOTBALLQ_FORWARD_LINK 0x150144E0 /* Fallback move forward button */
+#define DIBUTTON_FOOTBALLQ_BACK_LINK 0x150144E8 /* Fallback move back button */
+#define DIBUTTON_FOOTBALLQ_DEVICE 0x150044FE /* Show input device and controls */
+#define DIBUTTON_FOOTBALLQ_PAUSE 0x150044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Football - Offense
+ Offense - Runner ---*/
+#define DIVIRTUAL_SPORTS_FOOTBALL_OFFENSE 0x16000000
+#define DIAXIS_FOOTBALLO_LATERAL 0x16008201 /* Move / Aim: left / right */
+#define DIAXIS_FOOTBALLO_MOVE 0x16010202 /* Move / Aim: up / down */
+#define DIBUTTON_FOOTBALLO_JUMP 0x16000401 /* jump or hurdle over defender */
+#define DIBUTTON_FOOTBALLO_LEFTARM 0x16000402 /* holds out left arm */
+#define DIBUTTON_FOOTBALLO_RIGHTARM 0x16000403 /* holds out right arm */
+#define DIBUTTON_FOOTBALLO_THROW 0x16000404 /* throw pass or lateral ball to another runner */
+#define DIBUTTON_FOOTBALLO_SPIN 0x16000405 /* Spin to avoid defenders */
+#define DIBUTTON_FOOTBALLO_MENU 0x160004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIBUTTON_FOOTBALLO_JUKE 0x16004406 /* Use special move to avoid defenders */
+#define DIBUTTON_FOOTBALLO_SHOULDER 0x16004407 /* Lower shoulder to run over defenders */
+#define DIBUTTON_FOOTBALLO_TURBO 0x16004408 /* Speed burst past defenders */
+#define DIBUTTON_FOOTBALLO_DIVE 0x16004409 /* Dive over defenders */
+#define DIBUTTON_FOOTBALLO_ZOOM 0x1600440A /* Zoom view in / out */
+#define DIBUTTON_FOOTBALLO_SUBSTITUTE 0x1600440B /* substitute one player for another */
+#define DIBUTTON_FOOTBALLO_LEFT_LINK 0x1600C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_FOOTBALLO_RIGHT_LINK 0x1600C4EC /* Fallback sidestep right button */
+#define DIBUTTON_FOOTBALLO_FORWARD_LINK 0x160144E0 /* Fallback move forward button */
+#define DIBUTTON_FOOTBALLO_BACK_LINK 0x160144E8 /* Fallback move back button */
+#define DIBUTTON_FOOTBALLO_DEVICE 0x160044FE /* Show input device and controls */
+#define DIBUTTON_FOOTBALLO_PAUSE 0x160044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Football - Defense
+ Defense ---*/
+#define DIVIRTUAL_SPORTS_FOOTBALL_DEFENSE 0x17000000
+#define DIAXIS_FOOTBALLD_LATERAL 0x17008201 /* Move / Aim: left / right */
+#define DIAXIS_FOOTBALLD_MOVE 0x17010202 /* Move / Aim: up / down */
+#define DIBUTTON_FOOTBALLD_PLAY 0x17000401 /* cycle through available plays */
+#define DIBUTTON_FOOTBALLD_SELECT 0x17000402 /* select player closest to the ball */
+#define DIBUTTON_FOOTBALLD_JUMP 0x17000403 /* jump to intercept or block */
+#define DIBUTTON_FOOTBALLD_TACKLE 0x17000404 /* tackler runner */
+#define DIBUTTON_FOOTBALLD_FAKE 0x17000405 /* hold down to fake tackle or intercept */
+#define DIBUTTON_FOOTBALLD_SUPERTACKLE 0x17000406 /* Initiate special tackle */
+#define DIBUTTON_FOOTBALLD_MENU 0x170004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIBUTTON_FOOTBALLD_SPIN 0x17004407 /* Spin to beat offensive line */
+#define DIBUTTON_FOOTBALLD_SWIM 0x17004408 /* Swim to beat the offensive line */
+#define DIBUTTON_FOOTBALLD_BULLRUSH 0x17004409 /* Bull rush the offensive line */
+#define DIBUTTON_FOOTBALLD_RIP 0x1700440A /* Rip the offensive line */
+#define DIBUTTON_FOOTBALLD_AUDIBLE 0x1700440B /* Change defensive play at the line of scrimmage */
+#define DIBUTTON_FOOTBALLD_ZOOM 0x1700440C /* Zoom view in / out */
+#define DIBUTTON_FOOTBALLD_SUBSTITUTE 0x1700440D /* substitute one player for another */
+#define DIBUTTON_FOOTBALLD_LEFT_LINK 0x1700C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_FOOTBALLD_RIGHT_LINK 0x1700C4EC /* Fallback sidestep right button */
+#define DIBUTTON_FOOTBALLD_FORWARD_LINK 0x170144E0 /* Fallback move forward button */
+#define DIBUTTON_FOOTBALLD_BACK_LINK 0x170144E8 /* Fallback move back button */
+#define DIBUTTON_FOOTBALLD_DEVICE 0x170044FE /* Show input device and controls */
+#define DIBUTTON_FOOTBALLD_PAUSE 0x170044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Golf
+ ---*/
+#define DIVIRTUAL_SPORTS_GOLF 0x18000000
+#define DIAXIS_GOLF_LATERAL 0x18008201 /* Move / Aim: left / right */
+#define DIAXIS_GOLF_MOVE 0x18010202 /* Move / Aim: up / down */
+#define DIBUTTON_GOLF_SWING 0x18000401 /* swing club */
+#define DIBUTTON_GOLF_SELECT 0x18000402 /* cycle between: club / swing strength / ball arc / ball spin */
+#define DIBUTTON_GOLF_UP 0x18000403 /* increase selection */
+#define DIBUTTON_GOLF_DOWN 0x18000404 /* decrease selection */
+#define DIBUTTON_GOLF_TERRAIN 0x18000405 /* shows terrain detail */
+#define DIBUTTON_GOLF_FLYBY 0x18000406 /* view the hole via a flyby */
+#define DIBUTTON_GOLF_MENU 0x180004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_GOLF_SCROLL 0x18004601 /* scroll view */
+#define DIBUTTON_GOLF_ZOOM 0x18004407 /* Zoom view in / out */
+#define DIBUTTON_GOLF_TIMEOUT 0x18004408 /* Call for time out */
+#define DIBUTTON_GOLF_SUBSTITUTE 0x18004409 /* substitute one player for another */
+#define DIBUTTON_GOLF_LEFT_LINK 0x1800C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_GOLF_RIGHT_LINK 0x1800C4EC /* Fallback sidestep right button */
+#define DIBUTTON_GOLF_FORWARD_LINK 0x180144E0 /* Fallback move forward button */
+#define DIBUTTON_GOLF_BACK_LINK 0x180144E8 /* Fallback move back button */
+#define DIBUTTON_GOLF_DEVICE 0x180044FE /* Show input device and controls */
+#define DIBUTTON_GOLF_PAUSE 0x180044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Hockey - Offense
+ Offense ---*/
+#define DIVIRTUAL_SPORTS_HOCKEY_OFFENSE 0x19000000
+#define DIAXIS_HOCKEYO_LATERAL 0x19008201 /* Move / Aim: left / right */
+#define DIAXIS_HOCKEYO_MOVE 0x19010202 /* Move / Aim: up / down */
+#define DIBUTTON_HOCKEYO_SHOOT 0x19000401 /* Shoot */
+#define DIBUTTON_HOCKEYO_PASS 0x19000402 /* pass the puck */
+#define DIBUTTON_HOCKEYO_BURST 0x19000403 /* invoke speed burst */
+#define DIBUTTON_HOCKEYO_SPECIAL 0x19000404 /* invoke special move */
+#define DIBUTTON_HOCKEYO_FAKE 0x19000405 /* hold down to fake pass or kick */
+#define DIBUTTON_HOCKEYO_MENU 0x190004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_HOCKEYO_SCROLL 0x19004601 /* scroll view */
+#define DIBUTTON_HOCKEYO_ZOOM 0x19004406 /* Zoom view in / out */
+#define DIBUTTON_HOCKEYO_STRATEGY 0x19004407 /* Invoke coaching menu for strategy help */
+#define DIBUTTON_HOCKEYO_TIMEOUT 0x19004408 /* Call for time out */
+#define DIBUTTON_HOCKEYO_SUBSTITUTE 0x19004409 /* substitute one player for another */
+#define DIBUTTON_HOCKEYO_LEFT_LINK 0x1900C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_HOCKEYO_RIGHT_LINK 0x1900C4EC /* Fallback sidestep right button */
+#define DIBUTTON_HOCKEYO_FORWARD_LINK 0x190144E0 /* Fallback move forward button */
+#define DIBUTTON_HOCKEYO_BACK_LINK 0x190144E8 /* Fallback move back button */
+#define DIBUTTON_HOCKEYO_DEVICE 0x190044FE /* Show input device and controls */
+#define DIBUTTON_HOCKEYO_PAUSE 0x190044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Hockey - Defense
+ Defense ---*/
+#define DIVIRTUAL_SPORTS_HOCKEY_DEFENSE 0x1A000000
+#define DIAXIS_HOCKEYD_LATERAL 0x1A008201 /* Move / Aim: left / right */
+#define DIAXIS_HOCKEYD_MOVE 0x1A010202 /* Move / Aim: up / down */
+#define DIBUTTON_HOCKEYD_PLAYER 0x1A000401 /* control player closest to the puck */
+#define DIBUTTON_HOCKEYD_STEAL 0x1A000402 /* attempt steal */
+#define DIBUTTON_HOCKEYD_BURST 0x1A000403 /* speed burst or body check */
+#define DIBUTTON_HOCKEYD_BLOCK 0x1A000404 /* block puck */
+#define DIBUTTON_HOCKEYD_FAKE 0x1A000405 /* hold down to fake tackle or intercept */
+#define DIBUTTON_HOCKEYD_MENU 0x1A0004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_HOCKEYD_SCROLL 0x1A004601 /* scroll view */
+#define DIBUTTON_HOCKEYD_ZOOM 0x1A004406 /* Zoom view in / out */
+#define DIBUTTON_HOCKEYD_STRATEGY 0x1A004407 /* Invoke coaching menu for strategy help */
+#define DIBUTTON_HOCKEYD_TIMEOUT 0x1A004408 /* Call for time out */
+#define DIBUTTON_HOCKEYD_SUBSTITUTE 0x1A004409 /* substitute one player for another */
+#define DIBUTTON_HOCKEYD_LEFT_LINK 0x1A00C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_HOCKEYD_RIGHT_LINK 0x1A00C4EC /* Fallback sidestep right button */
+#define DIBUTTON_HOCKEYD_FORWARD_LINK 0x1A0144E0 /* Fallback move forward button */
+#define DIBUTTON_HOCKEYD_BACK_LINK 0x1A0144E8 /* Fallback move back button */
+#define DIBUTTON_HOCKEYD_DEVICE 0x1A0044FE /* Show input device and controls */
+#define DIBUTTON_HOCKEYD_PAUSE 0x1A0044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Hockey - Goalie
+ Goal tending ---*/
+#define DIVIRTUAL_SPORTS_HOCKEY_GOALIE 0x1B000000
+#define DIAXIS_HOCKEYG_LATERAL 0x1B008201 /* Move / Aim: left / right */
+#define DIAXIS_HOCKEYG_MOVE 0x1B010202 /* Move / Aim: up / down */
+#define DIBUTTON_HOCKEYG_PASS 0x1B000401 /* pass puck */
+#define DIBUTTON_HOCKEYG_POKE 0x1B000402 /* poke / check / hack */
+#define DIBUTTON_HOCKEYG_STEAL 0x1B000403 /* attempt steal */
+#define DIBUTTON_HOCKEYG_BLOCK 0x1B000404 /* block puck */
+#define DIBUTTON_HOCKEYG_MENU 0x1B0004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_HOCKEYG_SCROLL 0x1B004601 /* scroll view */
+#define DIBUTTON_HOCKEYG_ZOOM 0x1B004405 /* Zoom view in / out */
+#define DIBUTTON_HOCKEYG_STRATEGY 0x1B004406 /* Invoke coaching menu for strategy help */
+#define DIBUTTON_HOCKEYG_TIMEOUT 0x1B004407 /* Call for time out */
+#define DIBUTTON_HOCKEYG_SUBSTITUTE 0x1B004408 /* substitute one player for another */
+#define DIBUTTON_HOCKEYG_LEFT_LINK 0x1B00C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_HOCKEYG_RIGHT_LINK 0x1B00C4EC /* Fallback sidestep right button */
+#define DIBUTTON_HOCKEYG_FORWARD_LINK 0x1B0144E0 /* Fallback move forward button */
+#define DIBUTTON_HOCKEYG_BACK_LINK 0x1B0144E8 /* Fallback move back button */
+#define DIBUTTON_HOCKEYG_DEVICE 0x1B0044FE /* Show input device and controls */
+#define DIBUTTON_HOCKEYG_PAUSE 0x1B0044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Mountain Biking
+ ---*/
+#define DIVIRTUAL_SPORTS_BIKING_MOUNTAIN 0x1C000000
+#define DIAXIS_BIKINGM_TURN 0x1C008201 /* left / right */
+#define DIAXIS_BIKINGM_PEDAL 0x1C010202 /* Pedal faster / slower / brake */
+#define DIBUTTON_BIKINGM_JUMP 0x1C000401 /* jump over obstacle */
+#define DIBUTTON_BIKINGM_CAMERA 0x1C000402 /* switch camera view */
+#define DIBUTTON_BIKINGM_SPECIAL1 0x1C000403 /* perform first special move */
+#define DIBUTTON_BIKINGM_SELECT 0x1C000404 /* Select */
+#define DIBUTTON_BIKINGM_SPECIAL2 0x1C000405 /* perform second special move */
+#define DIBUTTON_BIKINGM_MENU 0x1C0004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_BIKINGM_SCROLL 0x1C004601 /* scroll view */
+#define DIBUTTON_BIKINGM_ZOOM 0x1C004406 /* Zoom view in / out */
+#define DIAXIS_BIKINGM_BRAKE 0x1C044203 /* Brake axis */
+#define DIBUTTON_BIKINGM_LEFT_LINK 0x1C00C4E4 /* Fallback turn left button */
+#define DIBUTTON_BIKINGM_RIGHT_LINK 0x1C00C4EC /* Fallback turn right button */
+#define DIBUTTON_BIKINGM_FASTER_LINK 0x1C0144E0 /* Fallback pedal faster button */
+#define DIBUTTON_BIKINGM_SLOWER_LINK 0x1C0144E8 /* Fallback pedal slower button */
+#define DIBUTTON_BIKINGM_BRAKE_BUTTON_LINK 0x1C0444E8 /* Fallback brake button */
+#define DIBUTTON_BIKINGM_DEVICE 0x1C0044FE /* Show input device and controls */
+#define DIBUTTON_BIKINGM_PAUSE 0x1C0044FC /* Start / Pause / Restart game */
+
+/*--- Sports: Skiing / Snowboarding / Skateboarding
+ ---*/
+#define DIVIRTUAL_SPORTS_SKIING 0x1D000000
+#define DIAXIS_SKIING_TURN 0x1D008201 /* left / right */
+#define DIAXIS_SKIING_SPEED 0x1D010202 /* faster / slower */
+#define DIBUTTON_SKIING_JUMP 0x1D000401 /* Jump */
+#define DIBUTTON_SKIING_CROUCH 0x1D000402 /* crouch down */
+#define DIBUTTON_SKIING_CAMERA 0x1D000403 /* switch camera view */
+#define DIBUTTON_SKIING_SPECIAL1 0x1D000404 /* perform first special move */
+#define DIBUTTON_SKIING_SELECT 0x1D000405 /* Select */
+#define DIBUTTON_SKIING_SPECIAL2 0x1D000406 /* perform second special move */
+#define DIBUTTON_SKIING_MENU 0x1D0004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_SKIING_GLANCE 0x1D004601 /* scroll view */
+#define DIBUTTON_SKIING_ZOOM 0x1D004407 /* Zoom view in / out */
+#define DIBUTTON_SKIING_LEFT_LINK 0x1D00C4E4 /* Fallback turn left button */
+#define DIBUTTON_SKIING_RIGHT_LINK 0x1D00C4EC /* Fallback turn right button */
+#define DIBUTTON_SKIING_FASTER_LINK 0x1D0144E0 /* Fallback increase speed button */
+#define DIBUTTON_SKIING_SLOWER_LINK 0x1D0144E8 /* Fallback decrease speed button */
+#define DIBUTTON_SKIING_DEVICE 0x1D0044FE /* Show input device and controls */
+#define DIBUTTON_SKIING_PAUSE 0x1D0044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Soccer - Offense
+ Offense ---*/
+#define DIVIRTUAL_SPORTS_SOCCER_OFFENSE 0x1E000000
+#define DIAXIS_SOCCERO_LATERAL 0x1E008201 /* Move / Aim: left / right */
+#define DIAXIS_SOCCERO_MOVE 0x1E010202 /* Move / Aim: up / down */
+#define DIAXIS_SOCCERO_BEND 0x1E018203 /* Bend to soccer shot/pass */
+#define DIBUTTON_SOCCERO_SHOOT 0x1E000401 /* Shoot the ball */
+#define DIBUTTON_SOCCERO_PASS 0x1E000402 /* Pass */
+#define DIBUTTON_SOCCERO_FAKE 0x1E000403 /* Fake */
+#define DIBUTTON_SOCCERO_PLAYER 0x1E000404 /* Select next player */
+#define DIBUTTON_SOCCERO_SPECIAL1 0x1E000405 /* Apply special move */
+#define DIBUTTON_SOCCERO_SELECT 0x1E000406 /* Select special move */
+#define DIBUTTON_SOCCERO_MENU 0x1E0004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_SOCCERO_GLANCE 0x1E004601 /* scroll view */
+#define DIBUTTON_SOCCERO_SUBSTITUTE 0x1E004407 /* Substitute one player for another */
+#define DIBUTTON_SOCCERO_SHOOTLOW 0x1E004408 /* Shoot the ball low */
+#define DIBUTTON_SOCCERO_SHOOTHIGH 0x1E004409 /* Shoot the ball high */
+#define DIBUTTON_SOCCERO_PASSTHRU 0x1E00440A /* Make a thru pass */
+#define DIBUTTON_SOCCERO_SPRINT 0x1E00440B /* Sprint / turbo boost */
+#define DIBUTTON_SOCCERO_CONTROL 0x1E00440C /* Obtain control of the ball */
+#define DIBUTTON_SOCCERO_HEAD 0x1E00440D /* Attempt to head the ball */
+#define DIBUTTON_SOCCERO_LEFT_LINK 0x1E00C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_SOCCERO_RIGHT_LINK 0x1E00C4EC /* Fallback sidestep right button */
+#define DIBUTTON_SOCCERO_FORWARD_LINK 0x1E0144E0 /* Fallback move forward button */
+#define DIBUTTON_SOCCERO_BACK_LINK 0x1E0144E8 /* Fallback move back button */
+#define DIBUTTON_SOCCERO_DEVICE 0x1E0044FE /* Show input device and controls */
+#define DIBUTTON_SOCCERO_PAUSE 0x1E0044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Soccer - Defense
+ Defense ---*/
+#define DIVIRTUAL_SPORTS_SOCCER_DEFENSE 0x1F000000
+#define DIAXIS_SOCCERD_LATERAL 0x1F008201 /* Move / Aim: left / right */
+#define DIAXIS_SOCCERD_MOVE 0x1F010202 /* Move / Aim: up / down */
+#define DIBUTTON_SOCCERD_BLOCK 0x1F000401 /* Attempt to block shot */
+#define DIBUTTON_SOCCERD_STEAL 0x1F000402 /* Attempt to steal ball */
+#define DIBUTTON_SOCCERD_FAKE 0x1F000403 /* Fake a block or a steal */
+#define DIBUTTON_SOCCERD_PLAYER 0x1F000404 /* Select next player */
+#define DIBUTTON_SOCCERD_SPECIAL 0x1F000405 /* Apply special move */
+#define DIBUTTON_SOCCERD_SELECT 0x1F000406 /* Select special move */
+#define DIBUTTON_SOCCERD_SLIDE 0x1F000407 /* Attempt a slide tackle */
+#define DIBUTTON_SOCCERD_MENU 0x1F0004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_SOCCERD_GLANCE 0x1F004601 /* scroll view */
+#define DIBUTTON_SOCCERD_FOUL 0x1F004408 /* Initiate a foul / hard-foul */
+#define DIBUTTON_SOCCERD_HEAD 0x1F004409 /* Attempt a Header */
+#define DIBUTTON_SOCCERD_CLEAR 0x1F00440A /* Attempt to clear the ball down the field */
+#define DIBUTTON_SOCCERD_GOALIECHARGE 0x1F00440B /* Make the goalie charge out of the box */
+#define DIBUTTON_SOCCERD_SUBSTITUTE 0x1F00440C /* Substitute one player for another */
+#define DIBUTTON_SOCCERD_LEFT_LINK 0x1F00C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_SOCCERD_RIGHT_LINK 0x1F00C4EC /* Fallback sidestep right button */
+#define DIBUTTON_SOCCERD_FORWARD_LINK 0x1F0144E0 /* Fallback move forward button */
+#define DIBUTTON_SOCCERD_BACK_LINK 0x1F0144E8 /* Fallback move back button */
+#define DIBUTTON_SOCCERD_DEVICE 0x1F0044FE /* Show input device and controls */
+#define DIBUTTON_SOCCERD_PAUSE 0x1F0044FC /* Start / Pause / Restart game */
+
+/*--- Sports - Racquet
+ Tennis - Table-Tennis - Squash ---*/
+#define DIVIRTUAL_SPORTS_RACQUET 0x20000000
+#define DIAXIS_RACQUET_LATERAL 0x20008201 /* Move / Aim: left / right */
+#define DIAXIS_RACQUET_MOVE 0x20010202 /* Move / Aim: up / down */
+#define DIBUTTON_RACQUET_SWING 0x20000401 /* Swing racquet */
+#define DIBUTTON_RACQUET_BACKSWING 0x20000402 /* Swing backhand */
+#define DIBUTTON_RACQUET_SMASH 0x20000403 /* Smash shot */
+#define DIBUTTON_RACQUET_SPECIAL 0x20000404 /* Special shot */
+#define DIBUTTON_RACQUET_SELECT 0x20000405 /* Select special shot */
+#define DIBUTTON_RACQUET_MENU 0x200004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_RACQUET_GLANCE 0x20004601 /* scroll view */
+#define DIBUTTON_RACQUET_TIMEOUT 0x20004406 /* Call for time out */
+#define DIBUTTON_RACQUET_SUBSTITUTE 0x20004407 /* Substitute one player for another */
+#define DIBUTTON_RACQUET_LEFT_LINK 0x2000C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_RACQUET_RIGHT_LINK 0x2000C4EC /* Fallback sidestep right button */
+#define DIBUTTON_RACQUET_FORWARD_LINK 0x200144E0 /* Fallback move forward button */
+#define DIBUTTON_RACQUET_BACK_LINK 0x200144E8 /* Fallback move back button */
+#define DIBUTTON_RACQUET_DEVICE 0x200044FE /* Show input device and controls */
+#define DIBUTTON_RACQUET_PAUSE 0x200044FC /* Start / Pause / Restart game */
+
+/*--- Arcade- 2D
+ Side to Side movement ---*/
+#define DIVIRTUAL_ARCADE_SIDE2SIDE 0x21000000
+#define DIAXIS_ARCADES_LATERAL 0x21008201 /* left / right */
+#define DIAXIS_ARCADES_MOVE 0x21010202 /* up / down */
+#define DIBUTTON_ARCADES_THROW 0x21000401 /* throw object */
+#define DIBUTTON_ARCADES_CARRY 0x21000402 /* carry object */
+#define DIBUTTON_ARCADES_ATTACK 0x21000403 /* attack */
+#define DIBUTTON_ARCADES_SPECIAL 0x21000404 /* apply special move */
+#define DIBUTTON_ARCADES_SELECT 0x21000405 /* select special move */
+#define DIBUTTON_ARCADES_MENU 0x210004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_ARCADES_VIEW 0x21004601 /* scroll view left / right / up / down */
+#define DIBUTTON_ARCADES_LEFT_LINK 0x2100C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_ARCADES_RIGHT_LINK 0x2100C4EC /* Fallback sidestep right button */
+#define DIBUTTON_ARCADES_FORWARD_LINK 0x210144E0 /* Fallback move forward button */
+#define DIBUTTON_ARCADES_BACK_LINK 0x210144E8 /* Fallback move back button */
+#define DIBUTTON_ARCADES_VIEW_UP_LINK 0x2107C4E0 /* Fallback scroll view up button */
+#define DIBUTTON_ARCADES_VIEW_DOWN_LINK 0x2107C4E8 /* Fallback scroll view down button */
+#define DIBUTTON_ARCADES_VIEW_LEFT_LINK 0x2107C4E4 /* Fallback scroll view left button */
+#define DIBUTTON_ARCADES_VIEW_RIGHT_LINK 0x2107C4EC /* Fallback scroll view right button */
+#define DIBUTTON_ARCADES_DEVICE 0x210044FE /* Show input device and controls */
+#define DIBUTTON_ARCADES_PAUSE 0x210044FC /* Start / Pause / Restart game */
+
+/*--- Arcade - Platform Game
+ Character moves around on screen ---*/
+#define DIVIRTUAL_ARCADE_PLATFORM 0x22000000
+#define DIAXIS_ARCADEP_LATERAL 0x22008201 /* Left / right */
+#define DIAXIS_ARCADEP_MOVE 0x22010202 /* Up / down */
+#define DIBUTTON_ARCADEP_JUMP 0x22000401 /* Jump */
+#define DIBUTTON_ARCADEP_FIRE 0x22000402 /* Fire */
+#define DIBUTTON_ARCADEP_CROUCH 0x22000403 /* Crouch */
+#define DIBUTTON_ARCADEP_SPECIAL 0x22000404 /* Apply special move */
+#define DIBUTTON_ARCADEP_SELECT 0x22000405 /* Select special move */
+#define DIBUTTON_ARCADEP_MENU 0x220004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_ARCADEP_VIEW 0x22004601 /* Scroll view */
+#define DIBUTTON_ARCADEP_FIRESECONDARY 0x22004406 /* Alternative fire button */
+#define DIBUTTON_ARCADEP_LEFT_LINK 0x2200C4E4 /* Fallback sidestep left button */
+#define DIBUTTON_ARCADEP_RIGHT_LINK 0x2200C4EC /* Fallback sidestep right button */
+#define DIBUTTON_ARCADEP_FORWARD_LINK 0x220144E0 /* Fallback move forward button */
+#define DIBUTTON_ARCADEP_BACK_LINK 0x220144E8 /* Fallback move back button */
+#define DIBUTTON_ARCADEP_VIEW_UP_LINK 0x2207C4E0 /* Fallback scroll view up button */
+#define DIBUTTON_ARCADEP_VIEW_DOWN_LINK 0x2207C4E8 /* Fallback scroll view down button */
+#define DIBUTTON_ARCADEP_VIEW_LEFT_LINK 0x2207C4E4 /* Fallback scroll view left button */
+#define DIBUTTON_ARCADEP_VIEW_RIGHT_LINK 0x2207C4EC /* Fallback scroll view right button */
+#define DIBUTTON_ARCADEP_DEVICE 0x220044FE /* Show input device and controls */
+#define DIBUTTON_ARCADEP_PAUSE 0x220044FC /* Start / Pause / Restart game */
+
+/*--- CAD - 2D Object Control
+ Controls to select and move objects in 2D ---*/
+#define DIVIRTUAL_CAD_2DCONTROL 0x23000000
+#define DIAXIS_2DCONTROL_LATERAL 0x23008201 /* Move view left / right */
+#define DIAXIS_2DCONTROL_MOVE 0x23010202 /* Move view up / down */
+#define DIAXIS_2DCONTROL_INOUT 0x23018203 /* Zoom - in / out */
+#define DIBUTTON_2DCONTROL_SELECT 0x23000401 /* Select Object */
+#define DIBUTTON_2DCONTROL_SPECIAL1 0x23000402 /* Do first special operation */
+#define DIBUTTON_2DCONTROL_SPECIAL 0x23000403 /* Select special operation */
+#define DIBUTTON_2DCONTROL_SPECIAL2 0x23000404 /* Do second special operation */
+#define DIBUTTON_2DCONTROL_MENU 0x230004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_2DCONTROL_HATSWITCH 0x23004601 /* Hat switch */
+#define DIAXIS_2DCONTROL_ROTATEZ 0x23024204 /* Rotate view clockwise / counterclockwise */
+#define DIBUTTON_2DCONTROL_DISPLAY 0x23004405 /* Shows next on-screen display options */
+#define DIBUTTON_2DCONTROL_DEVICE 0x230044FE /* Show input device and controls */
+#define DIBUTTON_2DCONTROL_PAUSE 0x230044FC /* Start / Pause / Restart game */
+
+/*--- CAD - 3D object control
+ Controls to select and move objects within a 3D environment ---*/
+#define DIVIRTUAL_CAD_3DCONTROL 0x24000000
+#define DIAXIS_3DCONTROL_LATERAL 0x24008201 /* Move view left / right */
+#define DIAXIS_3DCONTROL_MOVE 0x24010202 /* Move view up / down */
+#define DIAXIS_3DCONTROL_INOUT 0x24018203 /* Zoom - in / out */
+#define DIBUTTON_3DCONTROL_SELECT 0x24000401 /* Select Object */
+#define DIBUTTON_3DCONTROL_SPECIAL1 0x24000402 /* Do first special operation */
+#define DIBUTTON_3DCONTROL_SPECIAL 0x24000403 /* Select special operation */
+#define DIBUTTON_3DCONTROL_SPECIAL2 0x24000404 /* Do second special operation */
+#define DIBUTTON_3DCONTROL_MENU 0x240004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_3DCONTROL_HATSWITCH 0x24004601 /* Hat switch */
+#define DIAXIS_3DCONTROL_ROTATEX 0x24034204 /* Rotate view forward or up / backward or down */
+#define DIAXIS_3DCONTROL_ROTATEY 0x2402C205 /* Rotate view clockwise / counterclockwise */
+#define DIAXIS_3DCONTROL_ROTATEZ 0x24024206 /* Rotate view left / right */
+#define DIBUTTON_3DCONTROL_DISPLAY 0x24004405 /* Show next on-screen display options */
+#define DIBUTTON_3DCONTROL_DEVICE 0x240044FE /* Show input device and controls */
+#define DIBUTTON_3DCONTROL_PAUSE 0x240044FC /* Start / Pause / Restart game */
+
+/*--- CAD - 3D Navigation - Fly through
+ Controls for 3D modeling ---*/
+#define DIVIRTUAL_CAD_FLYBY 0x25000000
+#define DIAXIS_CADF_LATERAL 0x25008201 /* move view left / right */
+#define DIAXIS_CADF_MOVE 0x25010202 /* move view up / down */
+#define DIAXIS_CADF_INOUT 0x25018203 /* in / out */
+#define DIBUTTON_CADF_SELECT 0x25000401 /* Select Object */
+#define DIBUTTON_CADF_SPECIAL1 0x25000402 /* do first special operation */
+#define DIBUTTON_CADF_SPECIAL 0x25000403 /* Select special operation */
+#define DIBUTTON_CADF_SPECIAL2 0x25000404 /* do second special operation */
+#define DIBUTTON_CADF_MENU 0x250004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_CADF_HATSWITCH 0x25004601 /* Hat switch */
+#define DIAXIS_CADF_ROTATEX 0x25034204 /* Rotate view forward or up / backward or down */
+#define DIAXIS_CADF_ROTATEY 0x2502C205 /* Rotate view clockwise / counterclockwise */
+#define DIAXIS_CADF_ROTATEZ 0x25024206 /* Rotate view left / right */
+#define DIBUTTON_CADF_DISPLAY 0x25004405 /* shows next on-screen display options */
+#define DIBUTTON_CADF_DEVICE 0x250044FE /* Show input device and controls */
+#define DIBUTTON_CADF_PAUSE 0x250044FC /* Start / Pause / Restart game */
+
+/*--- CAD - 3D Model Control
+ Controls for 3D modeling ---*/
+#define DIVIRTUAL_CAD_MODEL 0x26000000
+#define DIAXIS_CADM_LATERAL 0x26008201 /* move view left / right */
+#define DIAXIS_CADM_MOVE 0x26010202 /* move view up / down */
+#define DIAXIS_CADM_INOUT 0x26018203 /* in / out */
+#define DIBUTTON_CADM_SELECT 0x26000401 /* Select Object */
+#define DIBUTTON_CADM_SPECIAL1 0x26000402 /* do first special operation */
+#define DIBUTTON_CADM_SPECIAL 0x26000403 /* Select special operation */
+#define DIBUTTON_CADM_SPECIAL2 0x26000404 /* do second special operation */
+#define DIBUTTON_CADM_MENU 0x260004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIHATSWITCH_CADM_HATSWITCH 0x26004601 /* Hat switch */
+#define DIAXIS_CADM_ROTATEX 0x26034204 /* Rotate view forward or up / backward or down */
+#define DIAXIS_CADM_ROTATEY 0x2602C205 /* Rotate view clockwise / counterclockwise */
+#define DIAXIS_CADM_ROTATEZ 0x26024206 /* Rotate view left / right */
+#define DIBUTTON_CADM_DISPLAY 0x26004405 /* shows next on-screen display options */
+#define DIBUTTON_CADM_DEVICE 0x260044FE /* Show input device and controls */
+#define DIBUTTON_CADM_PAUSE 0x260044FC /* Start / Pause / Restart game */
+
+/*--- Control - Media Equipment
+ Remote ---*/
+#define DIVIRTUAL_REMOTE_CONTROL 0x27000000
+#define DIAXIS_REMOTE_SLIDER 0x27050201 /* Slider for adjustment: volume / color / bass / etc */
+#define DIBUTTON_REMOTE_MUTE 0x27000401 /* Set volume on current device to zero */
+#define DIBUTTON_REMOTE_SELECT 0x27000402 /* Next/previous: channel/ track / chapter / picture / station */
+#define DIBUTTON_REMOTE_PLAY 0x27002403 /* Start or pause entertainment on current device */
+#define DIBUTTON_REMOTE_CUE 0x27002404 /* Move through current media */
+#define DIBUTTON_REMOTE_REVIEW 0x27002405 /* Move through current media */
+#define DIBUTTON_REMOTE_CHANGE 0x27002406 /* Select next device */
+#define DIBUTTON_REMOTE_RECORD 0x27002407 /* Start recording the current media */
+#define DIBUTTON_REMOTE_MENU 0x270004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIAXIS_REMOTE_SLIDER2 0x27054202 /* Slider for adjustment: volume */
+#define DIBUTTON_REMOTE_TV 0x27005C08 /* Select TV */
+#define DIBUTTON_REMOTE_CABLE 0x27005C09 /* Select cable box */
+#define DIBUTTON_REMOTE_CD 0x27005C0A /* Select CD player */
+#define DIBUTTON_REMOTE_VCR 0x27005C0B /* Select VCR */
+#define DIBUTTON_REMOTE_TUNER 0x27005C0C /* Select tuner */
+#define DIBUTTON_REMOTE_DVD 0x27005C0D /* Select DVD player */
+#define DIBUTTON_REMOTE_ADJUST 0x27005C0E /* Enter device adjustment menu */
+#define DIBUTTON_REMOTE_DIGIT0 0x2700540F /* Digit 0 */
+#define DIBUTTON_REMOTE_DIGIT1 0x27005410 /* Digit 1 */
+#define DIBUTTON_REMOTE_DIGIT2 0x27005411 /* Digit 2 */
+#define DIBUTTON_REMOTE_DIGIT3 0x27005412 /* Digit 3 */
+#define DIBUTTON_REMOTE_DIGIT4 0x27005413 /* Digit 4 */
+#define DIBUTTON_REMOTE_DIGIT5 0x27005414 /* Digit 5 */
+#define DIBUTTON_REMOTE_DIGIT6 0x27005415 /* Digit 6 */
+#define DIBUTTON_REMOTE_DIGIT7 0x27005416 /* Digit 7 */
+#define DIBUTTON_REMOTE_DIGIT8 0x27005417 /* Digit 8 */
+#define DIBUTTON_REMOTE_DIGIT9 0x27005418 /* Digit 9 */
+#define DIBUTTON_REMOTE_DEVICE 0x270044FE /* Show input device and controls */
+#define DIBUTTON_REMOTE_PAUSE 0x270044FC /* Start / Pause / Restart game */
+
+/*--- Control- Web
+ Help or Browser ---*/
+#define DIVIRTUAL_BROWSER_CONTROL 0x28000000
+#define DIAXIS_BROWSER_LATERAL 0x28008201 /* Move on screen pointer */
+#define DIAXIS_BROWSER_MOVE 0x28010202 /* Move on screen pointer */
+#define DIBUTTON_BROWSER_SELECT 0x28000401 /* Select current item */
+#define DIAXIS_BROWSER_VIEW 0x28018203 /* Move view up/down */
+#define DIBUTTON_BROWSER_REFRESH 0x28000402 /* Refresh */
+#define DIBUTTON_BROWSER_MENU 0x280004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIBUTTON_BROWSER_SEARCH 0x28004403 /* Use search tool */
+#define DIBUTTON_BROWSER_STOP 0x28004404 /* Cease current update */
+#define DIBUTTON_BROWSER_HOME 0x28004405 /* Go directly to "home" location */
+#define DIBUTTON_BROWSER_FAVORITES 0x28004406 /* Mark current site as favorite */
+#define DIBUTTON_BROWSER_NEXT 0x28004407 /* Select Next page */
+#define DIBUTTON_BROWSER_PREVIOUS 0x28004408 /* Select Previous page */
+#define DIBUTTON_BROWSER_HISTORY 0x28004409 /* Show/Hide History */
+#define DIBUTTON_BROWSER_PRINT 0x2800440A /* Print current page */
+#define DIBUTTON_BROWSER_DEVICE 0x280044FE /* Show input device and controls */
+#define DIBUTTON_BROWSER_PAUSE 0x280044FC /* Start / Pause / Restart game */
+
+/*--- Driving Simulator - Giant Walking Robot
+ Walking tank with weapons ---*/
+#define DIVIRTUAL_DRIVING_MECHA 0x29000000
+#define DIAXIS_MECHA_STEER 0x29008201 /* Turns mecha left/right */
+#define DIAXIS_MECHA_TORSO 0x29010202 /* Tilts torso forward/backward */
+#define DIAXIS_MECHA_ROTATE 0x29020203 /* Turns torso left/right */
+#define DIAXIS_MECHA_THROTTLE 0x29038204 /* Engine Speed */
+#define DIBUTTON_MECHA_FIRE 0x29000401 /* Fire */
+#define DIBUTTON_MECHA_WEAPONS 0x29000402 /* Select next weapon group */
+#define DIBUTTON_MECHA_TARGET 0x29000403 /* Select closest enemy available target */
+#define DIBUTTON_MECHA_REVERSE 0x29000404 /* Toggles throttle in/out of reverse */
+#define DIBUTTON_MECHA_ZOOM 0x29000405 /* Zoom in/out targeting reticule */
+#define DIBUTTON_MECHA_JUMP 0x29000406 /* Fires jump jets */
+#define DIBUTTON_MECHA_MENU 0x290004FD /* Show menu options */
+/*--- Priority 2 controls ---*/
+
+#define DIBUTTON_MECHA_CENTER 0x29004407 /* Center torso to legs */
+#define DIHATSWITCH_MECHA_GLANCE 0x29004601 /* Look around */
+#define DIBUTTON_MECHA_VIEW 0x29004408 /* Cycle through view options */
+#define DIBUTTON_MECHA_FIRESECONDARY 0x29004409 /* Alternative fire button */
+#define DIBUTTON_MECHA_LEFT_LINK 0x2900C4E4 /* Fallback steer left button */
+#define DIBUTTON_MECHA_RIGHT_LINK 0x2900C4EC /* Fallback steer right button */
+#define DIBUTTON_MECHA_FORWARD_LINK 0x290144E0 /* Fallback tilt torso forward button */
+#define DIBUTTON_MECHA_BACK_LINK 0x290144E8 /* Fallback tilt toroso backward button */
+#define DIBUTTON_MECHA_ROTATE_LEFT_LINK 0x290244E4 /* Fallback rotate toroso right button */
+#define DIBUTTON_MECHA_ROTATE_RIGHT_LINK 0x290244EC /* Fallback rotate torso left button */
+#define DIBUTTON_MECHA_FASTER_LINK 0x2903C4E0 /* Fallback increase engine speed */
+#define DIBUTTON_MECHA_SLOWER_LINK 0x2903C4E8 /* Fallback decrease engine speed */
+#define DIBUTTON_MECHA_DEVICE 0x290044FE /* Show input device and controls */
+#define DIBUTTON_MECHA_PAUSE 0x290044FC /* Start / Pause / Restart game */
+
+/*
+ * "ANY" semantics can be used as a last resort to get mappings for actions
+ * that match nothing in the chosen virtual genre. These semantics will be
+ * mapped at a lower priority that virtual genre semantics. Also, hardware
+ * vendors will not be able to provide sensible mappings for these unless
+ * they provide application specific mappings.
+ */
+#define DIAXIS_ANY_X_1 0xFF00C201
+#define DIAXIS_ANY_X_2 0xFF00C202
+#define DIAXIS_ANY_Y_1 0xFF014201
+#define DIAXIS_ANY_Y_2 0xFF014202
+#define DIAXIS_ANY_Z_1 0xFF01C201
+#define DIAXIS_ANY_Z_2 0xFF01C202
+#define DIAXIS_ANY_R_1 0xFF024201
+#define DIAXIS_ANY_R_2 0xFF024202
+#define DIAXIS_ANY_U_1 0xFF02C201
+#define DIAXIS_ANY_U_2 0xFF02C202
+#define DIAXIS_ANY_V_1 0xFF034201
+#define DIAXIS_ANY_V_2 0xFF034202
+#define DIAXIS_ANY_A_1 0xFF03C201
+#define DIAXIS_ANY_A_2 0xFF03C202
+#define DIAXIS_ANY_B_1 0xFF044201
+#define DIAXIS_ANY_B_2 0xFF044202
+#define DIAXIS_ANY_C_1 0xFF04C201
+#define DIAXIS_ANY_C_2 0xFF04C202
+#define DIAXIS_ANY_S_1 0xFF054201
+#define DIAXIS_ANY_S_2 0xFF054202
+
+#define DIAXIS_ANY_1 0xFF004201
+#define DIAXIS_ANY_2 0xFF004202
+#define DIAXIS_ANY_3 0xFF004203
+#define DIAXIS_ANY_4 0xFF004204
+
+#define DIPOV_ANY_1 0xFF004601
+#define DIPOV_ANY_2 0xFF004602
+#define DIPOV_ANY_3 0xFF004603
+#define DIPOV_ANY_4 0xFF004604
+
+#define DIBUTTON_ANY(instance) ( 0xFF004400 | instance )
+
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* __DINPUT_INCLUDED__ */
+
+/****************************************************************************
+ *
+ * Definitions for non-IDirectInput (VJoyD) features defined more recently
+ * than the current sdk files
+ *
+ ****************************************************************************/
+
+#ifdef _INC_MMSYSTEM
+#ifndef MMNOJOY
+
+#ifndef __VJOYDX_INCLUDED__
+#define __VJOYDX_INCLUDED__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Flag to indicate that the dwReserved2 field of the JOYINFOEX structure
+ * contains mini-driver specific data to be passed by VJoyD to the mini-
+ * driver instead of doing a poll.
+ */
+#define JOY_PASSDRIVERDATA 0x10000000l
+
+/*
+ * Informs the joystick driver that the configuration has been changed
+ * and should be reloaded from the registery.
+ * dwFlags is reserved and should be set to zero
+ */
+WINMMAPI MMRESULT WINAPI joyConfigChanged( DWORD dwFlags );
+
+#ifndef DIJ_RINGZERO
+/*
+ * Invoke the joystick control panel directly, using the passed window handle
+ * as the parent of the dialog. This API is only supported for compatibility
+ * purposes; new applications should use the RunControlPanel method of a
+ * device interface for a game controller.
+ * The API is called by using the function pointer returned by
+ * GetProcAddress( hCPL, TEXT("ShowJoyCPL") ) where hCPL is a HMODULE returned
+ * by LoadLibrary( TEXT("joy.cpl") ). The typedef is provided to allow
+ * declaration and casting of an appropriately typed variable.
+ */
+void WINAPI ShowJoyCPL( HWND hWnd );
+typedef void (WINAPI* LPFNSHOWJOYCPL)( HWND hWnd );
+#endif /* DIJ_RINGZERO */
+
+
+/*
+ * Hardware Setting indicating that the device is a headtracker
+ */
+#define JOY_HWS_ISHEADTRACKER 0x02000000l
+
+/*
+ * Hardware Setting indicating that the VxD is used to replace
+ * the standard analog polling
+ */
+#define JOY_HWS_ISGAMEPORTDRIVER 0x04000000l
+
+/*
+ * Hardware Setting indicating that the driver needs a standard
+ * gameport in order to communicate with the device.
+ */
+#define JOY_HWS_ISANALOGPORTDRIVER 0x08000000l
+
+/*
+ * Hardware Setting indicating that VJoyD should not load this
+ * driver, it will be loaded externally and will register with
+ * VJoyD of it's own accord.
+ */
+#define JOY_HWS_AUTOLOAD 0x10000000l
+
+/*
+ * Hardware Setting indicating that the driver acquires any
+ * resources needed without needing a devnode through VJoyD.
+ */
+#define JOY_HWS_NODEVNODE 0x20000000l
+
+
+/*
+ * Hardware Setting indicating that the device is a gameport bus
+ */
+#define JOY_HWS_ISGAMEPORTBUS 0x80000000l
+#define JOY_HWS_GAMEPORTBUSBUSY 0x00000001l
+
+/*
+ * Usage Setting indicating that the settings are volatile and
+ * should be removed if still present on a reboot.
+ */
+#define JOY_US_VOLATILE 0x00000008L
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* __VJOYDX_INCLUDED__ */
+
+#endif /* not MMNOJOY */
+#endif /* _INC_MMSYSTEM */
+
+/****************************************************************************
+ *
+ * Definitions for non-IDirectInput (VJoyD) features defined more recently
+ * than the current ddk files
+ *
+ ****************************************************************************/
+
+#ifndef DIJ_RINGZERO
+
+#ifdef _INC_MMDDK
+#ifndef MMNOJOYDEV
+
+#ifndef __VJOYDXD_INCLUDED__
+#define __VJOYDXD_INCLUDED__
+/*
+ * Poll type in which the do_other field of the JOYOEMPOLLDATA
+ * structure contains mini-driver specific data passed from an app.
+ */
+#define JOY_OEMPOLL_PASSDRIVERDATA 7
+
+#endif /* __VJOYDXD_INCLUDED__ */
+
+#endif /* not MMNOJOYDEV */
+#endif /* _INC_MMDDK */
+
+#endif /* DIJ_RINGZERO */
+
diff --git a/src/dep/include/DXSDK/include/dinputd.h b/src/dep/include/DXSDK/include/dinputd.h
new file mode 100644
index 0000000..d27039a
--- /dev/null
+++ b/src/dep/include/DXSDK/include/dinputd.h
@@ -0,0 +1,755 @@
+/****************************************************************************
+ *
+ * Copyright (C) 1995-2000 Microsoft Corporation. All Rights Reserved.
+ *
+ * File: dinputd.h
+ * Content: DirectInput include file for device driver implementors
+ *
+ ****************************************************************************/
+#ifndef __DINPUTD_INCLUDED__
+#define __DINPUTD_INCLUDED__
+
+#ifndef DIRECTINPUT_VERSION
+#define DIRECTINPUT_VERSION 0x0800
+#pragma message(__FILE__ ": DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800")
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/****************************************************************************
+ *
+ * Interfaces
+ *
+ ****************************************************************************/
+
+#ifndef DIJ_RINGZERO
+
+DEFINE_GUID(IID_IDirectInputEffectDriver, 0x02538130,0x898F,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
+DEFINE_GUID(IID_IDirectInputJoyConfig, 0x1DE12AB1,0xC9F5,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
+DEFINE_GUID(IID_IDirectInputPIDDriver, 0xEEC6993A,0xB3FD,0x11D2,0xA9,0x16,0x00,0xC0,0x4F,0xB9,0x86,0x38);
+
+DEFINE_GUID(IID_IDirectInputJoyConfig8, 0xeb0d7dfa,0x1990,0x4f27,0xb4,0xd6,0xed,0xf2,0xee,0xc4,0xa4,0x4c);
+
+#endif /* DIJ_RINGZERO */
+
+
+/****************************************************************************
+ *
+ * IDirectInputEffectDriver
+ *
+ ****************************************************************************/
+
+typedef struct DIOBJECTATTRIBUTES {
+ DWORD dwFlags;
+ WORD wUsagePage;
+ WORD wUsage;
+} DIOBJECTATTRIBUTES, *LPDIOBJECTATTRIBUTES;
+typedef const DIOBJECTATTRIBUTES *LPCDIOBJECTATTRIBUTES;
+
+typedef struct DIFFOBJECTATTRIBUTES {
+ DWORD dwFFMaxForce;
+ DWORD dwFFForceResolution;
+} DIFFOBJECTATTRIBUTES, *LPDIFFOBJECTATTRIBUTES;
+typedef const DIFFOBJECTATTRIBUTES *LPCDIFFOBJECTATTRIBUTES;
+
+typedef struct DIOBJECTCALIBRATION {
+ LONG lMin;
+ LONG lCenter;
+ LONG lMax;
+} DIOBJECTCALIBRATION, *LPDIOBJECTCALIBRATION;
+typedef const DIOBJECTCALIBRATION *LPCDIOBJECTCALIBRATION;
+
+typedef struct DIPOVCALIBRATION {
+ LONG lMin[5];
+ LONG lMax[5];
+} DIPOVCALIBRATION, *LPDIPOVCALIBRATION;
+typedef const DIPOVCALIBRATION *LPCDIPOVCALIBRATION;
+
+typedef struct DIEFFECTATTRIBUTES {
+ DWORD dwEffectId;
+ DWORD dwEffType;
+ DWORD dwStaticParams;
+ DWORD dwDynamicParams;
+ DWORD dwCoords;
+} DIEFFECTATTRIBUTES, *LPDIEFFECTATTRIBUTES;
+typedef const DIEFFECTATTRIBUTES *LPCDIEFFECTATTRIBUTES;
+
+typedef struct DIFFDEVICEATTRIBUTES {
+ DWORD dwFlags;
+ DWORD dwFFSamplePeriod;
+ DWORD dwFFMinTimeResolution;
+} DIFFDEVICEATTRIBUTES, *LPDIFFDEVICEATTRIBUTES;
+typedef const DIFFDEVICEATTRIBUTES *LPCDIFFDEVICEATTRIBUTES;
+
+typedef struct DIDRIVERVERSIONS {
+ DWORD dwSize;
+ DWORD dwFirmwareRevision;
+ DWORD dwHardwareRevision;
+ DWORD dwFFDriverVersion;
+} DIDRIVERVERSIONS, *LPDIDRIVERVERSIONS;
+typedef const DIDRIVERVERSIONS *LPCDIDRIVERVERSIONS;
+
+typedef struct DIDEVICESTATE {
+ DWORD dwSize;
+ DWORD dwState;
+ DWORD dwLoad;
+} DIDEVICESTATE, *LPDIDEVICESTATE;
+
+#define DEV_STS_EFFECT_RUNNING DIEGES_PLAYING
+
+#ifndef DIJ_RINGZERO
+
+typedef struct DIHIDFFINITINFO {
+ DWORD dwSize;
+ LPWSTR pwszDeviceInterface;
+ GUID GuidInstance;
+} DIHIDFFINITINFO, *LPDIHIDFFINITINFO;
+
+#undef INTERFACE
+#define INTERFACE IDirectInputEffectDriver
+
+DECLARE_INTERFACE_(IDirectInputEffectDriver, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInputEffectDriver methods ***/
+ STDMETHOD(DeviceID)(THIS_ DWORD,DWORD,DWORD,DWORD,LPVOID) PURE;
+ STDMETHOD(GetVersions)(THIS_ LPDIDRIVERVERSIONS) PURE;
+ STDMETHOD(Escape)(THIS_ DWORD,DWORD,LPDIEFFESCAPE) PURE;
+ STDMETHOD(SetGain)(THIS_ DWORD,DWORD) PURE;
+ STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD,DWORD) PURE;
+ STDMETHOD(GetForceFeedbackState)(THIS_ DWORD,LPDIDEVICESTATE) PURE;
+ STDMETHOD(DownloadEffect)(THIS_ DWORD,DWORD,LPDWORD,LPCDIEFFECT,DWORD) PURE;
+ STDMETHOD(DestroyEffect)(THIS_ DWORD,DWORD) PURE;
+ STDMETHOD(StartEffect)(THIS_ DWORD,DWORD,DWORD,DWORD) PURE;
+ STDMETHOD(StopEffect)(THIS_ DWORD,DWORD) PURE;
+ STDMETHOD(GetEffectStatus)(THIS_ DWORD,DWORD,LPDWORD) PURE;
+};
+
+typedef struct IDirectInputEffectDriver *LPDIRECTINPUTEFFECTDRIVER;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectInputEffectDriver_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInputEffectDriver_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectInputEffectDriver_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectInputEffectDriver_DeviceID(p,a,b,c,d,e) (p)->lpVtbl->DeviceID(p,a,b,c,d,e)
+#define IDirectInputEffectDriver_GetVersions(p,a) (p)->lpVtbl->GetVersions(p,a)
+#define IDirectInputEffectDriver_Escape(p,a,b,c) (p)->lpVtbl->Escape(p,a,b,c)
+#define IDirectInputEffectDriver_SetGain(p,a,b) (p)->lpVtbl->SetGain(p,a,b)
+#define IDirectInputEffectDriver_SendForceFeedbackCommand(p,a,b) (p)->lpVtbl->SendForceFeedbackCommand(p,a,b)
+#define IDirectInputEffectDriver_GetForceFeedbackState(p,a,b) (p)->lpVtbl->GetForceFeedbackState(p,a,b)
+#define IDirectInputEffectDriver_DownloadEffect(p,a,b,c,d,e) (p)->lpVtbl->DownloadEffect(p,a,b,c,d,e)
+#define IDirectInputEffectDriver_DestroyEffect(p,a,b) (p)->lpVtbl->DestroyEffect(p,a,b)
+#define IDirectInputEffectDriver_StartEffect(p,a,b,c,d) (p)->lpVtbl->StartEffect(p,a,b,c,d)
+#define IDirectInputEffectDriver_StopEffect(p,a,b) (p)->lpVtbl->StopEffect(p,a,b)
+#define IDirectInputEffectDriver_GetEffectStatus(p,a,b,c) (p)->lpVtbl->GetEffectStatus(p,a,b,c)
+#else
+#define IDirectInputEffectDriver_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInputEffectDriver_AddRef(p) (p)->AddRef()
+#define IDirectInputEffectDriver_Release(p) (p)->Release()
+#define IDirectInputEffectDriver_DeviceID(p,a,b,c,d,e) (p)->DeviceID(a,b,c,d,e)
+#define IDirectInputEffectDriver_GetVersions(p,a) (p)->GetVersions(a)
+#define IDirectInputEffectDriver_Escape(p,a,b,c) (p)->Escape(a,b,c)
+#define IDirectInputEffectDriver_SetGain(p,a,b) (p)->SetGain(a,b)
+#define IDirectInputEffectDriver_SendForceFeedbackCommand(p,a,b) (p)->SendForceFeedbackCommand(a,b)
+#define IDirectInputEffectDriver_GetForceFeedbackState(p,a,b) (p)->GetForceFeedbackState(a,b)
+#define IDirectInputEffectDriver_DownloadEffect(p,a,b,c,d,e) (p)->DownloadEffect(a,b,c,d,e)
+#define IDirectInputEffectDriver_DestroyEffect(p,a,b) (p)->DestroyEffect(a,b)
+#define IDirectInputEffectDriver_StartEffect(p,a,b,c,d) (p)->StartEffect(a,b,c,d)
+#define IDirectInputEffectDriver_StopEffect(p,a,b) (p)->StopEffect(a,b)
+#define IDirectInputEffectDriver_GetEffectStatus(p,a,b,c) (p)->GetEffectStatus(a,b,c)
+#endif
+
+
+#endif /* DIJ_RINGZERO */
+
+
+/****************************************************************************
+ *
+ * IDirectInputJoyConfig
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ *
+ * Definitions copied from the DDK
+ *
+ ****************************************************************************/
+
+#ifndef JOY_HW_NONE
+
+/* pre-defined joystick types */
+#define JOY_HW_NONE 0
+#define JOY_HW_CUSTOM 1
+#define JOY_HW_2A_2B_GENERIC 2
+#define JOY_HW_2A_4B_GENERIC 3
+#define JOY_HW_2B_GAMEPAD 4
+#define JOY_HW_2B_FLIGHTYOKE 5
+#define JOY_HW_2B_FLIGHTYOKETHROTTLE 6
+#define JOY_HW_3A_2B_GENERIC 7
+#define JOY_HW_3A_4B_GENERIC 8
+#define JOY_HW_4B_GAMEPAD 9
+#define JOY_HW_4B_FLIGHTYOKE 10
+#define JOY_HW_4B_FLIGHTYOKETHROTTLE 11
+#define JOY_HW_TWO_2A_2B_WITH_Y 12
+#define JOY_HW_LASTENTRY 13
+
+
+/* calibration flags */
+#define JOY_ISCAL_XY 0x00000001l /* XY are calibrated */
+#define JOY_ISCAL_Z 0x00000002l /* Z is calibrated */
+#define JOY_ISCAL_R 0x00000004l /* R is calibrated */
+#define JOY_ISCAL_U 0x00000008l /* U is calibrated */
+#define JOY_ISCAL_V 0x00000010l /* V is calibrated */
+#define JOY_ISCAL_POV 0x00000020l /* POV is calibrated */
+
+/* point of view constants */
+#define JOY_POV_NUMDIRS 4
+#define JOY_POVVAL_FORWARD 0
+#define JOY_POVVAL_BACKWARD 1
+#define JOY_POVVAL_LEFT 2
+#define JOY_POVVAL_RIGHT 3
+
+/* Specific settings for joystick hardware */
+#define JOY_HWS_HASZ 0x00000001l /* has Z info? */
+#define JOY_HWS_HASPOV 0x00000002l /* point of view hat present */
+#define JOY_HWS_POVISBUTTONCOMBOS 0x00000004l /* pov done through combo of buttons */
+#define JOY_HWS_POVISPOLL 0x00000008l /* pov done through polling */
+#define JOY_HWS_ISYOKE 0x00000010l /* joystick is a flight yoke */
+#define JOY_HWS_ISGAMEPAD 0x00000020l /* joystick is a game pad */
+#define JOY_HWS_ISCARCTRL 0x00000040l /* joystick is a car controller */
+/* X defaults to J1 X axis */
+#define JOY_HWS_XISJ1Y 0x00000080l /* X is on J1 Y axis */
+#define JOY_HWS_XISJ2X 0x00000100l /* X is on J2 X axis */
+#define JOY_HWS_XISJ2Y 0x00000200l /* X is on J2 Y axis */
+/* Y defaults to J1 Y axis */
+#define JOY_HWS_YISJ1X 0x00000400l /* Y is on J1 X axis */
+#define JOY_HWS_YISJ2X 0x00000800l /* Y is on J2 X axis */
+#define JOY_HWS_YISJ2Y 0x00001000l /* Y is on J2 Y axis */
+/* Z defaults to J2 Y axis */
+#define JOY_HWS_ZISJ1X 0x00002000l /* Z is on J1 X axis */
+#define JOY_HWS_ZISJ1Y 0x00004000l /* Z is on J1 Y axis */
+#define JOY_HWS_ZISJ2X 0x00008000l /* Z is on J2 X axis */
+/* POV defaults to J2 Y axis, if it is not button based */
+#define JOY_HWS_POVISJ1X 0x00010000l /* pov done through J1 X axis */
+#define JOY_HWS_POVISJ1Y 0x00020000l /* pov done through J1 Y axis */
+#define JOY_HWS_POVISJ2X 0x00040000l /* pov done through J2 X axis */
+/* R defaults to J2 X axis */
+#define JOY_HWS_HASR 0x00080000l /* has R (4th axis) info */
+#define JOY_HWS_RISJ1X 0x00100000l /* R done through J1 X axis */
+#define JOY_HWS_RISJ1Y 0x00200000l /* R done through J1 Y axis */
+#define JOY_HWS_RISJ2Y 0x00400000l /* R done through J2 X axis */
+/* U & V for future hardware */
+#define JOY_HWS_HASU 0x00800000l /* has U (5th axis) info */
+#define JOY_HWS_HASV 0x01000000l /* has V (6th axis) info */
+
+/* Usage settings */
+#define JOY_US_HASRUDDER 0x00000001l /* joystick configured with rudder */
+#define JOY_US_PRESENT 0x00000002l /* is joystick actually present? */
+#define JOY_US_ISOEM 0x00000004l /* joystick is an OEM defined type */
+
+/* reserved for future use -> as link to next possible dword */
+#define JOY_US_RESERVED 0x80000000l /* reserved */
+
+
+/* Settings for TypeInfo Flags1 */
+#define JOYTYPE_ZEROGAMEENUMOEMDATA 0x00000001l /* Zero GameEnum's OEM data field */
+#define JOYTYPE_NOAUTODETECTGAMEPORT 0x00000002l /* Device does not support Autodetect gameport*/
+#define JOYTYPE_NOHIDDIRECT 0x00000004l /* Do not use HID directly for this device */
+#define JOYTYPE_ANALOGCOMPAT 0x00000008l /* Expose the analog compatible ID */
+#define JOYTYPE_DEFAULTPROPSHEET 0x80000000l /* CPL overrides custom property sheet */
+
+/* Settings for TypeInfo Flags2 */
+#define JOYTYPE_DEVICEHIDE 0x00010000l /* Hide unclassified devices */
+#define JOYTYPE_MOUSEHIDE 0x00020000l /* Hide mice */
+#define JOYTYPE_KEYBHIDE 0x00040000l /* Hide keyboards */
+#define JOYTYPE_GAMEHIDE 0x00080000l /* Hide game controllers */
+#define JOYTYPE_HIDEACTIVE 0x00100000l /* Hide flags are active */
+#define JOYTYPE_INFOMASK 0x00E00000l /* Mask for type specific info */
+#define JOYTYPE_INFODEFAULT 0x00000000l /* Use default axis mappings */
+#define JOYTYPE_INFOYYPEDALS 0x00200000l /* Use Y as a combined pedals axis */
+#define JOYTYPE_INFOZYPEDALS 0x00400000l /* Use Z for accelerate, Y for brake */
+#define JOYTYPE_INFOYRPEDALS 0x00600000l /* Use Y for accelerate, R for brake */
+#define JOYTYPE_INFOZRPEDALS 0x00800000l /* Use Z for accelerate, R for brake */
+#define JOYTYPE_INFOZISSLIDER 0x00200000l /* Use Z as a slider */
+#define JOYTYPE_INFOZISZ 0x00400000l /* Use Z as Z axis */
+#define JOYTYPE_ENABLEINPUTREPORT 0x01000000l /* Enable initial input reports */
+
+/* struct for storing x,y, z, and rudder values */
+typedef struct joypos_tag {
+ DWORD dwX;
+ DWORD dwY;
+ DWORD dwZ;
+ DWORD dwR;
+ DWORD dwU;
+ DWORD dwV;
+} JOYPOS, FAR *LPJOYPOS;
+
+/* struct for storing ranges */
+typedef struct joyrange_tag {
+ JOYPOS jpMin;
+ JOYPOS jpMax;
+ JOYPOS jpCenter;
+} JOYRANGE,FAR *LPJOYRANGE;
+
+/*
+ * dwTimeout - value at which to timeout joystick polling
+ * jrvRanges - range of values app wants returned for axes
+ * jpDeadZone - area around center to be considered
+ * as "dead". specified as a percentage
+ * (0-100). Only X & Y handled by system driver
+ */
+typedef struct joyreguservalues_tag {
+ DWORD dwTimeOut;
+ JOYRANGE jrvRanges;
+ JOYPOS jpDeadZone;
+} JOYREGUSERVALUES, FAR *LPJOYREGUSERVALUES;
+
+typedef struct joyreghwsettings_tag {
+ DWORD dwFlags;
+ DWORD dwNumButtons;
+} JOYREGHWSETTINGS, FAR *LPJOYHWSETTINGS;
+
+/* range of values returned by the hardware (filled in by calibration) */
+/*
+ * jrvHardware - values returned by hardware
+ * dwPOVValues - POV values returned by hardware
+ * dwCalFlags - what has been calibrated
+ */
+typedef struct joyreghwvalues_tag {
+ JOYRANGE jrvHardware;
+ DWORD dwPOVValues[JOY_POV_NUMDIRS];
+ DWORD dwCalFlags;
+} JOYREGHWVALUES, FAR *LPJOYREGHWVALUES;
+
+/* hardware configuration */
+/*
+ * hws - hardware settings
+ * dwUsageSettings - usage settings
+ * hwv - values returned by hardware
+ * dwType - type of joystick
+ * dwReserved - reserved for OEM drivers
+ */
+typedef struct joyreghwconfig_tag {
+ JOYREGHWSETTINGS hws;
+ DWORD dwUsageSettings;
+ JOYREGHWVALUES hwv;
+ DWORD dwType;
+ DWORD dwReserved;
+} JOYREGHWCONFIG, FAR *LPJOYREGHWCONFIG;
+
+/* joystick calibration info structure */
+typedef struct joycalibrate_tag {
+ UINT wXbase;
+ UINT wXdelta;
+ UINT wYbase;
+ UINT wYdelta;
+ UINT wZbase;
+ UINT wZdelta;
+} JOYCALIBRATE;
+typedef JOYCALIBRATE FAR *LPJOYCALIBRATE;
+
+#endif
+
+#ifndef DIJ_RINGZERO
+
+#define MAX_JOYSTRING 256
+typedef BOOL (FAR PASCAL * LPDIJOYTYPECALLBACK)(LPCWSTR, LPVOID);
+
+#ifndef MAX_JOYSTICKOEMVXDNAME
+#define MAX_JOYSTICKOEMVXDNAME 260
+#endif
+
+#define DITC_REGHWSETTINGS 0x00000001
+#define DITC_CLSIDCONFIG 0x00000002
+#define DITC_DISPLAYNAME 0x00000004
+#define DITC_CALLOUT 0x00000008
+#define DITC_HARDWAREID 0x00000010
+#define DITC_FLAGS1 0x00000020
+#define DITC_FLAGS2 0x00000040
+#define DITC_MAPFILE 0x00000080
+
+
+
+/* This structure is defined for DirectX 5.0 compatibility */
+
+typedef struct DIJOYTYPEINFO_DX5 {
+ DWORD dwSize;
+ JOYREGHWSETTINGS hws;
+ CLSID clsidConfig;
+ WCHAR wszDisplayName[MAX_JOYSTRING];
+ WCHAR wszCallout[MAX_JOYSTICKOEMVXDNAME];
+} DIJOYTYPEINFO_DX5, *LPDIJOYTYPEINFO_DX5;
+typedef const DIJOYTYPEINFO_DX5 *LPCDIJOYTYPEINFO_DX5;
+
+/* This structure is defined for DirectX 6.1 compatibility */
+typedef struct DIJOYTYPEINFO_DX6 {
+ DWORD dwSize;
+ JOYREGHWSETTINGS hws;
+ CLSID clsidConfig;
+ WCHAR wszDisplayName[MAX_JOYSTRING];
+ WCHAR wszCallout[MAX_JOYSTICKOEMVXDNAME];
+ WCHAR wszHardwareId[MAX_JOYSTRING];
+ DWORD dwFlags1;
+} DIJOYTYPEINFO_DX6, *LPDIJOYTYPEINFO_DX6;
+typedef const DIJOYTYPEINFO_DX6 *LPCDIJOYTYPEINFO_DX6;
+
+typedef struct DIJOYTYPEINFO {
+ DWORD dwSize;
+ JOYREGHWSETTINGS hws;
+ CLSID clsidConfig;
+ WCHAR wszDisplayName[MAX_JOYSTRING];
+ WCHAR wszCallout[MAX_JOYSTICKOEMVXDNAME];
+#if(DIRECTINPUT_VERSION >= 0x05b2)
+ WCHAR wszHardwareId[MAX_JOYSTRING];
+ DWORD dwFlags1;
+#if(DIRECTINPUT_VERSION >= 0x0800)
+ DWORD dwFlags2;
+ WCHAR wszMapFile[MAX_JOYSTRING];
+#endif /* DIRECTINPUT_VERSION >= 0x0800 */
+#endif /* DIRECTINPUT_VERSION >= 0x05b2 */
+} DIJOYTYPEINFO, *LPDIJOYTYPEINFO;
+typedef const DIJOYTYPEINFO *LPCDIJOYTYPEINFO;
+#define DIJC_GUIDINSTANCE 0x00000001
+#define DIJC_REGHWCONFIGTYPE 0x00000002
+#define DIJC_GAIN 0x00000004
+#define DIJC_CALLOUT 0x00000008
+#define DIJC_WDMGAMEPORT 0x00000010
+
+/* This structure is defined for DirectX 5.0 compatibility */
+
+typedef struct DIJOYCONFIG_DX5 {
+ DWORD dwSize;
+ GUID guidInstance;
+ JOYREGHWCONFIG hwc;
+ DWORD dwGain;
+ WCHAR wszType[MAX_JOYSTRING];
+ WCHAR wszCallout[MAX_JOYSTRING];
+} DIJOYCONFIG_DX5, *LPDIJOYCONFIG_DX5;
+typedef const DIJOYCONFIG_DX5 *LPCDIJOYCONFIG_DX5;
+
+typedef struct DIJOYCONFIG {
+ DWORD dwSize;
+ GUID guidInstance;
+ JOYREGHWCONFIG hwc;
+ DWORD dwGain;
+ WCHAR wszType[MAX_JOYSTRING];
+ WCHAR wszCallout[MAX_JOYSTRING];
+#if(DIRECTINPUT_VERSION >= 0x05b2)
+ GUID guidGameport;
+#endif /* DIRECTINPUT_VERSION >= 0x05b2 */
+ } DIJOYCONFIG, *LPDIJOYCONFIG;
+typedef const DIJOYCONFIG *LPCDIJOYCONFIG;
+
+
+#define DIJU_USERVALUES 0x00000001
+#define DIJU_GLOBALDRIVER 0x00000002
+#define DIJU_GAMEPORTEMULATOR 0x00000004
+
+typedef struct DIJOYUSERVALUES {
+ DWORD dwSize;
+ JOYREGUSERVALUES ruv;
+ WCHAR wszGlobalDriver[MAX_JOYSTRING];
+ WCHAR wszGameportEmulator[MAX_JOYSTRING];
+} DIJOYUSERVALUES, *LPDIJOYUSERVALUES;
+typedef const DIJOYUSERVALUES *LPCDIJOYUSERVALUES;
+
+DEFINE_GUID(GUID_KeyboardClass, 0x4D36E96B,0xE325,0x11CE,0xBF,0xC1,0x08,0x00,0x2B,0xE1,0x03,0x18);
+DEFINE_GUID(GUID_MediaClass, 0x4D36E96C,0xE325,0x11CE,0xBF,0xC1,0x08,0x00,0x2B,0xE1,0x03,0x18);
+DEFINE_GUID(GUID_MouseClass, 0x4D36E96F,0xE325,0x11CE,0xBF,0xC1,0x08,0x00,0x2B,0xE1,0x03,0x18);
+DEFINE_GUID(GUID_HIDClass, 0x745A17A0,0x74D3,0x11D0,0xB6,0xFE,0x00,0xA0,0xC9,0x0F,0x57,0xDA);
+
+#undef INTERFACE
+#define INTERFACE IDirectInputJoyConfig
+
+DECLARE_INTERFACE_(IDirectInputJoyConfig, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInputJoyConfig methods ***/
+ STDMETHOD(Acquire)(THIS) PURE;
+ STDMETHOD(Unacquire)(THIS) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(SendNotify)(THIS) PURE;
+ STDMETHOD(EnumTypes)(THIS_ LPDIJOYTYPECALLBACK,LPVOID) PURE;
+ STDMETHOD(GetTypeInfo)(THIS_ LPCWSTR,LPDIJOYTYPEINFO,DWORD) PURE;
+ STDMETHOD(SetTypeInfo)(THIS_ LPCWSTR,LPCDIJOYTYPEINFO,DWORD) PURE;
+ STDMETHOD(DeleteType)(THIS_ LPCWSTR) PURE;
+ STDMETHOD(GetConfig)(THIS_ UINT,LPDIJOYCONFIG,DWORD) PURE;
+ STDMETHOD(SetConfig)(THIS_ UINT,LPCDIJOYCONFIG,DWORD) PURE;
+ STDMETHOD(DeleteConfig)(THIS_ UINT) PURE;
+ STDMETHOD(GetUserValues)(THIS_ LPDIJOYUSERVALUES,DWORD) PURE;
+ STDMETHOD(SetUserValues)(THIS_ LPCDIJOYUSERVALUES,DWORD) PURE;
+ STDMETHOD(AddNewHardware)(THIS_ HWND,REFGUID) PURE;
+ STDMETHOD(OpenTypeKey)(THIS_ LPCWSTR,DWORD,PHKEY) PURE;
+ STDMETHOD(OpenConfigKey)(THIS_ UINT,DWORD,PHKEY) PURE;
+};
+
+typedef struct IDirectInputJoyConfig *LPDIRECTINPUTJOYCONFIG;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectInputJoyConfig_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInputJoyConfig_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectInputJoyConfig_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectInputJoyConfig_Acquire(p) (p)->lpVtbl->Acquire(p)
+#define IDirectInputJoyConfig_Unacquire(p) (p)->lpVtbl->Unacquire(p)
+#define IDirectInputJoyConfig_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectInputJoyConfig_SendNotify(p) (p)->lpVtbl->SendNotify(p)
+#define IDirectInputJoyConfig_EnumTypes(p,a,b) (p)->lpVtbl->EnumTypes(p,a,b)
+#define IDirectInputJoyConfig_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c)
+#define IDirectInputJoyConfig_SetTypeInfo(p,a,b,c) (p)->lpVtbl->SetTypeInfo(p,a,b,c)
+#define IDirectInputJoyConfig_DeleteType(p,a) (p)->lpVtbl->DeleteType(p,a)
+#define IDirectInputJoyConfig_GetConfig(p,a,b,c) (p)->lpVtbl->GetConfig(p,a,b,c)
+#define IDirectInputJoyConfig_SetConfig(p,a,b,c) (p)->lpVtbl->SetConfig(p,a,b,c)
+#define IDirectInputJoyConfig_DeleteConfig(p,a) (p)->lpVtbl->DeleteConfig(p,a)
+#define IDirectInputJoyConfig_GetUserValues(p,a,b) (p)->lpVtbl->GetUserValues(p,a,b)
+#define IDirectInputJoyConfig_SetUserValues(p,a,b) (p)->lpVtbl->SetUserValues(p,a,b)
+#define IDirectInputJoyConfig_AddNewHardware(p,a,b) (p)->lpVtbl->AddNewHardware(p,a,b)
+#define IDirectInputJoyConfig_OpenTypeKey(p,a,b,c) (p)->lpVtbl->OpenTypeKey(p,a,b,c)
+#define IDirectInputJoyConfig_OpenConfigKey(p,a,b,c) (p)->lpVtbl->OpenConfigKey(p,a,b,c)
+#else
+#define IDirectInputJoyConfig_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInputJoyConfig_AddRef(p) (p)->AddRef()
+#define IDirectInputJoyConfig_Release(p) (p)->Release()
+#define IDirectInputJoyConfig_Acquire(p) (p)->Acquire()
+#define IDirectInputJoyConfig_Unacquire(p) (p)->Unacquire()
+#define IDirectInputJoyConfig_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
+#define IDirectInputJoyConfig_SendNotify(p) (p)->SendNotify()
+#define IDirectInputJoyConfig_EnumTypes(p,a,b) (p)->EnumTypes(a,b)
+#define IDirectInputJoyConfig_GetTypeInfo(p,a,b,c) (p)->GetTypeInfo(a,b,c)
+#define IDirectInputJoyConfig_SetTypeInfo(p,a,b,c) (p)->SetTypeInfo(a,b,c)
+#define IDirectInputJoyConfig_DeleteType(p,a) (p)->DeleteType(a)
+#define IDirectInputJoyConfig_GetConfig(p,a,b,c) (p)->GetConfig(a,b,c)
+#define IDirectInputJoyConfig_SetConfig(p,a,b,c) (p)->SetConfig(a,b,c)
+#define IDirectInputJoyConfig_DeleteConfig(p,a) (p)->DeleteConfig(a)
+#define IDirectInputJoyConfig_GetUserValues(p,a,b) (p)->GetUserValues(a,b)
+#define IDirectInputJoyConfig_SetUserValues(p,a,b) (p)->SetUserValues(a,b)
+#define IDirectInputJoyConfig_AddNewHardware(p,a,b) (p)->AddNewHardware(a,b)
+#define IDirectInputJoyConfig_OpenTypeKey(p,a,b,c) (p)->OpenTypeKey(a,b,c)
+#define IDirectInputJoyConfig_OpenConfigKey(p,a,b,c) (p)->OpenConfigKey(a,b,c)
+#endif
+
+#endif /* DIJ_RINGZERO */
+
+#if(DIRECTINPUT_VERSION >= 0x0800)
+
+#ifndef DIJ_RINGZERO
+
+#undef INTERFACE
+#define INTERFACE IDirectInputJoyConfig8
+
+DECLARE_INTERFACE_(IDirectInputJoyConfig8, IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ /*** IDirectInputJoyConfig8 methods ***/
+ STDMETHOD(Acquire)(THIS) PURE;
+ STDMETHOD(Unacquire)(THIS) PURE;
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(SendNotify)(THIS) PURE;
+ STDMETHOD(EnumTypes)(THIS_ LPDIJOYTYPECALLBACK,LPVOID) PURE;
+ STDMETHOD(GetTypeInfo)(THIS_ LPCWSTR,LPDIJOYTYPEINFO,DWORD) PURE;
+ STDMETHOD(SetTypeInfo)(THIS_ LPCWSTR,LPCDIJOYTYPEINFO,DWORD,LPWSTR) PURE;
+ STDMETHOD(DeleteType)(THIS_ LPCWSTR) PURE;
+ STDMETHOD(GetConfig)(THIS_ UINT,LPDIJOYCONFIG,DWORD) PURE;
+ STDMETHOD(SetConfig)(THIS_ UINT,LPCDIJOYCONFIG,DWORD) PURE;
+ STDMETHOD(DeleteConfig)(THIS_ UINT) PURE;
+ STDMETHOD(GetUserValues)(THIS_ LPDIJOYUSERVALUES,DWORD) PURE;
+ STDMETHOD(SetUserValues)(THIS_ LPCDIJOYUSERVALUES,DWORD) PURE;
+ STDMETHOD(AddNewHardware)(THIS_ HWND,REFGUID) PURE;
+ STDMETHOD(OpenTypeKey)(THIS_ LPCWSTR,DWORD,PHKEY) PURE;
+ STDMETHOD(OpenAppStatusKey)(THIS_ PHKEY) PURE;
+};
+
+typedef struct IDirectInputJoyConfig8 *LPDIRECTINPUTJOYCONFIG8;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirectInputJoyConfig8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectInputJoyConfig8_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectInputJoyConfig8_Release(p) (p)->lpVtbl->Release(p)
+#define IDirectInputJoyConfig8_Acquire(p) (p)->lpVtbl->Acquire(p)
+#define IDirectInputJoyConfig8_Unacquire(p) (p)->lpVtbl->Unacquire(p)
+#define IDirectInputJoyConfig8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectInputJoyConfig8_SendNotify(p) (p)->lpVtbl->SendNotify(p)
+#define IDirectInputJoyConfig8_EnumTypes(p,a,b) (p)->lpVtbl->EnumTypes(p,a,b)
+#define IDirectInputJoyConfig8_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c)
+#define IDirectInputJoyConfig8_SetTypeInfo(p,a,b,c,d) (p)->lpVtbl->SetTypeInfo(p,a,b,c,d)
+#define IDirectInputJoyConfig8_DeleteType(p,a) (p)->lpVtbl->DeleteType(p,a)
+#define IDirectInputJoyConfig8_GetConfig(p,a,b,c) (p)->lpVtbl->GetConfig(p,a,b,c)
+#define IDirectInputJoyConfig8_SetConfig(p,a,b,c) (p)->lpVtbl->SetConfig(p,a,b,c)
+#define IDirectInputJoyConfig8_DeleteConfig(p,a) (p)->lpVtbl->DeleteConfig(p,a)
+#define IDirectInputJoyConfig8_GetUserValues(p,a,b) (p)->lpVtbl->GetUserValues(p,a,b)
+#define IDirectInputJoyConfig8_SetUserValues(p,a,b) (p)->lpVtbl->SetUserValues(p,a,b)
+#define IDirectInputJoyConfig8_AddNewHardware(p,a,b) (p)->lpVtbl->AddNewHardware(p,a,b)
+#define IDirectInputJoyConfig8_OpenTypeKey(p,a,b,c) (p)->lpVtbl->OpenTypeKey(p,a,b,c)
+#define IDirectInputJoyConfig8_OpenAppStatusKey(p,a) (p)->lpVtbl->OpenAppStatusKey(p,a)
+#else
+#define IDirectInputJoyConfig8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectInputJoyConfig8_AddRef(p) (p)->AddRef()
+#define IDirectInputJoyConfig8_Release(p) (p)->Release()
+#define IDirectInputJoyConfig8_Acquire(p) (p)->Acquire()
+#define IDirectInputJoyConfig8_Unacquire(p) (p)->Unacquire()
+#define IDirectInputJoyConfig8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
+#define IDirectInputJoyConfig8_SendNotify(p) (p)->SendNotify()
+#define IDirectInputJoyConfig8_EnumTypes(p,a,b) (p)->EnumTypes(a,b)
+#define IDirectInputJoyConfig8_GetTypeInfo(p,a,b,c) (p)->GetTypeInfo(a,b,c)
+#define IDirectInputJoyConfig8_SetTypeInfo(p,a,b,c,d) (p)->SetTypeInfo(a,b,c,d)
+#define IDirectInputJoyConfig8_DeleteType(p,a) (p)->DeleteType(a)
+#define IDirectInputJoyConfig8_GetConfig(p,a,b,c) (p)->GetConfig(a,b,c)
+#define IDirectInputJoyConfig8_SetConfig(p,a,b,c) (p)->SetConfig(a,b,c)
+#define IDirectInputJoyConfig8_DeleteConfig(p,a) (p)->DeleteConfig(a)
+#define IDirectInputJoyConfig8_GetUserValues(p,a,b) (p)->GetUserValues(a,b)
+#define IDirectInputJoyConfig8_SetUserValues(p,a,b) (p)->SetUserValues(a,b)
+#define IDirectInputJoyConfig8_AddNewHardware(p,a,b) (p)->AddNewHardware(a,b)
+#define IDirectInputJoyConfig8_OpenTypeKey(p,a,b,c) (p)->OpenTypeKey(a,b,c)
+#define IDirectInputJoyConfig8_OpenAppStatusKey(p,a) (p)->OpenAppStatusKey(a)
+#endif
+
+#endif /* DIJ_RINGZERO */
+
+/****************************************************************************
+ *
+ * Notification Messages
+ *
+ ****************************************************************************/
+
+/* RegisterWindowMessage with this to get DirectInput notification messages */
+#define DIRECTINPUT_NOTIFICATION_MSGSTRINGA "DIRECTINPUT_NOTIFICATION_MSGSTRING"
+#define DIRECTINPUT_NOTIFICATION_MSGSTRINGW L"DIRECTINPUT_NOTIFICATION_MSGSTRING"
+
+#ifdef UNICODE
+#define DIRECTINPUT_NOTIFICATION_MSGSTRING DIRECTINPUT_NOTIFICATION_MSGSTRINGW
+#else
+#define DIRECTINPUT_NOTIFICATION_MSGSTRING DIRECTINPUT_NOTIFICATION_MSGSTRINGA
+#endif
+
+#define DIMSGWP_NEWAPPSTART 0x00000001
+#define DIMSGWP_DX8APPSTART 0x00000002
+#define DIMSGWP_DX8MAPPERAPPSTART 0x00000003
+
+#endif /* DIRECTINPUT_VERSION >= 0x0800 */
+
+#define DIAPPIDFLAG_NOTIME 0x00000001
+#define DIAPPIDFLAG_NOSIZE 0x00000002
+
+#define DIRECTINPUT_REGSTR_VAL_APPIDFLAGA "AppIdFlag"
+#define DIRECTINPUT_REGSTR_KEY_LASTAPPA "MostRecentApplication"
+#define DIRECTINPUT_REGSTR_KEY_LASTMAPAPPA "MostRecentMapperApplication"
+#define DIRECTINPUT_REGSTR_VAL_VERSIONA "Version"
+#define DIRECTINPUT_REGSTR_VAL_NAMEA "Name"
+#define DIRECTINPUT_REGSTR_VAL_IDA "Id"
+#define DIRECTINPUT_REGSTR_VAL_MAPPERA "UsesMapper"
+#define DIRECTINPUT_REGSTR_VAL_LASTSTARTA "MostRecentStart"
+
+#define DIRECTINPUT_REGSTR_VAL_APPIDFLAGW L"AppIdFlag"
+#define DIRECTINPUT_REGSTR_KEY_LASTAPPW L"MostRecentApplication"
+#define DIRECTINPUT_REGSTR_KEY_LASTMAPAPPW L"MostRecentMapperApplication"
+#define DIRECTINPUT_REGSTR_VAL_VERSIONW L"Version"
+#define DIRECTINPUT_REGSTR_VAL_NAMEW L"Name"
+#define DIRECTINPUT_REGSTR_VAL_IDW L"Id"
+#define DIRECTINPUT_REGSTR_VAL_MAPPERW L"UsesMapper"
+#define DIRECTINPUT_REGSTR_VAL_LASTSTARTW L"MostRecentStart"
+
+#ifdef UNICODE
+#define DIRECTINPUT_REGSTR_VAL_APPIDFLAG DIRECTINPUT_REGSTR_VAL_APPIDFLAGW
+#define DIRECTINPUT_REGSTR_KEY_LASTAPP DIRECTINPUT_REGSTR_KEY_LASTAPPW
+#define DIRECTINPUT_REGSTR_KEY_LASTMAPAPP DIRECTINPUT_REGSTR_KEY_LASTMAPAPPW
+#define DIRECTINPUT_REGSTR_VAL_VERSION DIRECTINPUT_REGSTR_VAL_VERSIONW
+#define DIRECTINPUT_REGSTR_VAL_NAME DIRECTINPUT_REGSTR_VAL_NAMEW
+#define DIRECTINPUT_REGSTR_VAL_ID DIRECTINPUT_REGSTR_VAL_IDW
+#define DIRECTINPUT_REGSTR_VAL_MAPPER DIRECTINPUT_REGSTR_VAL_MAPPERW
+#define DIRECTINPUT_REGSTR_VAL_LASTSTART DIRECTINPUT_REGSTR_VAL_LASTSTARTW
+#else
+#define DIRECTINPUT_REGSTR_VAL_APPIDFLAG DIRECTINPUT_REGSTR_VAL_APPIDFLAGA
+#define DIRECTINPUT_REGSTR_KEY_LASTAPP DIRECTINPUT_REGSTR_KEY_LASTAPPA
+#define DIRECTINPUT_REGSTR_KEY_LASTMAPAPP DIRECTINPUT_REGSTR_KEY_LASTMAPAPPA
+#define DIRECTINPUT_REGSTR_VAL_VERSION DIRECTINPUT_REGSTR_VAL_VERSIONA
+#define DIRECTINPUT_REGSTR_VAL_NAME DIRECTINPUT_REGSTR_VAL_NAMEA
+#define DIRECTINPUT_REGSTR_VAL_ID DIRECTINPUT_REGSTR_VAL_IDA
+#define DIRECTINPUT_REGSTR_VAL_MAPPER DIRECTINPUT_REGSTR_VAL_MAPPERA
+#define DIRECTINPUT_REGSTR_VAL_LASTSTART DIRECTINPUT_REGSTR_VAL_LASTSTARTA
+#endif
+
+
+/****************************************************************************
+ *
+ * Return Codes
+ *
+ ****************************************************************************/
+
+#define DIERR_NOMOREITEMS \
+ MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NO_MORE_ITEMS)
+
+/*
+ * Device driver-specific codes.
+ */
+
+#define DIERR_DRIVERFIRST 0x80040300L
+#define DIERR_DRIVERLAST 0x800403FFL
+
+/*
+ * Unless the specific driver has been precisely identified, no meaning
+ * should be attributed to these values other than that the driver
+ * originated the error. However, to illustrate the types of error that
+ * may be causing the failure, the PID force feedback driver distributed
+ * with DirectX 7 could return the following errors:
+ *
+ * DIERR_DRIVERFIRST + 1
+ * The requested usage was not found.
+ * DIERR_DRIVERFIRST + 2
+ * The parameter block couldn't be downloaded to the device.
+ * DIERR_DRIVERFIRST + 3
+ * PID initialization failed.
+ * DIERR_DRIVERFIRST + 4
+ * The provided values couldn't be scaled.
+ */
+
+
+/*
+ * Device installer errors.
+ */
+
+/*
+ * Registry entry or DLL for class installer invalid
+ * or class installer not found.
+ */
+#define DIERR_INVALIDCLASSINSTALLER 0x80040400L
+
+/*
+ * The user cancelled the install operation.
+ */
+#define DIERR_CANCELLED 0x80040401L
+
+/*
+ * The INF file for the selected device could not be
+ * found or is invalid or is damaged.
+ */
+#define DIERR_BADINF 0x80040402L
+
+/****************************************************************************
+ *
+ * Map files
+ *
+ ****************************************************************************/
+
+/*
+ * Delete particular data from default map file.
+ */
+#define DIDIFT_DELETE 0x01000000
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* __DINPUTD_INCLUDED__ */
diff --git a/src/dep/include/DXSDK/include/dls1.h b/src/dep/include/DXSDK/include/dls1.h
new file mode 100644
index 0000000..b33425d
--- /dev/null
+++ b/src/dep/include/DXSDK/include/dls1.h
@@ -0,0 +1,267 @@
+/*==========================================================================;
+//
+// dls1.h
+//
+//
+// Description:
+//
+// Interface defines and structures for the Instrument Collection Form
+// RIFF DLS.
+//
+//
+// Written by Sonic Foundry 1996. Released for public use.
+//
+//=========================================================================*/
+
+#ifndef _INC_DLS1
+#define _INC_DLS1
+
+/*//////////////////////////////////////////////////////////////////////////
+//
+//
+// Layout of an instrument collection:
+//
+//
+// RIFF [] 'DLS ' [dlid,colh,INSTLIST,WAVEPOOL,INFOLIST]
+//
+// INSTLIST
+// LIST [] 'lins'
+// LIST [] 'ins ' [dlid,insh,RGNLIST,ARTLIST,INFOLIST]
+// LIST [] 'ins ' [dlid,insh,RGNLIST,ARTLIST,INFOLIST]
+// LIST [] 'ins ' [dlid,insh,RGNLIST,ARTLIST,INFOLIST]
+//
+// RGNLIST
+// LIST [] 'lrgn'
+// LIST [] 'rgn ' [rgnh,wsmp,wlnk,ARTLIST]
+// LIST [] 'rgn ' [rgnh,wsmp,wlnk,ARTLIST]
+// LIST [] 'rgn ' [rgnh,wsmp,wlnk,ARTLIST]
+//
+// ARTLIST
+// LIST [] 'lart'
+// 'art1' level 1 Articulation connection graph
+// 'art2' level 2 Articulation connection graph
+// '3rd1' Possible 3rd party articulation structure 1
+// '3rd2' Possible 3rd party articulation structure 2 .... and so on
+//
+// WAVEPOOL
+// ptbl [] [pool table]
+// LIST [] 'wvpl'
+// [path],
+// [path],
+// LIST [] 'wave' [dlid,RIFFWAVE]
+// LIST [] 'wave' [dlid,RIFFWAVE]
+// LIST [] 'wave' [dlid,RIFFWAVE]
+// LIST [] 'wave' [dlid,RIFFWAVE]
+// LIST [] 'wave' [dlid,RIFFWAVE]
+//
+// INFOLIST
+// LIST [] 'INFO'
+// 'icmt' 'One of those crazy comments.'
+// 'icop' 'Copyright (C) 1996 Sonic Foundry'
+//
+/////////////////////////////////////////////////////////////////////////*/
+
+
+/*/////////////////////////////////////////////////////////////////////////
+// FOURCC's used in the DLS file
+/////////////////////////////////////////////////////////////////////////*/
+
+#define FOURCC_DLS mmioFOURCC('D','L','S',' ')
+#define FOURCC_DLID mmioFOURCC('d','l','i','d')
+#define FOURCC_COLH mmioFOURCC('c','o','l','h')
+#define FOURCC_WVPL mmioFOURCC('w','v','p','l')
+#define FOURCC_PTBL mmioFOURCC('p','t','b','l')
+#define FOURCC_PATH mmioFOURCC('p','a','t','h')
+#define FOURCC_wave mmioFOURCC('w','a','v','e')
+#define FOURCC_LINS mmioFOURCC('l','i','n','s')
+#define FOURCC_INS mmioFOURCC('i','n','s',' ')
+#define FOURCC_INSH mmioFOURCC('i','n','s','h')
+#define FOURCC_LRGN mmioFOURCC('l','r','g','n')
+#define FOURCC_RGN mmioFOURCC('r','g','n',' ')
+#define FOURCC_RGNH mmioFOURCC('r','g','n','h')
+#define FOURCC_LART mmioFOURCC('l','a','r','t')
+#define FOURCC_ART1 mmioFOURCC('a','r','t','1')
+#define FOURCC_WLNK mmioFOURCC('w','l','n','k')
+#define FOURCC_WSMP mmioFOURCC('w','s','m','p')
+#define FOURCC_VERS mmioFOURCC('v','e','r','s')
+
+/*/////////////////////////////////////////////////////////////////////////
+// Articulation connection graph definitions
+/////////////////////////////////////////////////////////////////////////*/
+
+/* Generic Sources */
+#define CONN_SRC_NONE 0x0000
+#define CONN_SRC_LFO 0x0001
+#define CONN_SRC_KEYONVELOCITY 0x0002
+#define CONN_SRC_KEYNUMBER 0x0003
+#define CONN_SRC_EG1 0x0004
+#define CONN_SRC_EG2 0x0005
+#define CONN_SRC_PITCHWHEEL 0x0006
+
+/* Midi Controllers 0-127 */
+#define CONN_SRC_CC1 0x0081
+#define CONN_SRC_CC7 0x0087
+#define CONN_SRC_CC10 0x008a
+#define CONN_SRC_CC11 0x008b
+
+/* Generic Destinations */
+#define CONN_DST_NONE 0x0000
+#define CONN_DST_ATTENUATION 0x0001
+#define CONN_DST_PITCH 0x0003
+#define CONN_DST_PAN 0x0004
+
+/* LFO Destinations */
+#define CONN_DST_LFO_FREQUENCY 0x0104
+#define CONN_DST_LFO_STARTDELAY 0x0105
+
+/* EG1 Destinations */
+#define CONN_DST_EG1_ATTACKTIME 0x0206
+#define CONN_DST_EG1_DECAYTIME 0x0207
+#define CONN_DST_EG1_RELEASETIME 0x0209
+#define CONN_DST_EG1_SUSTAINLEVEL 0x020a
+
+/* EG2 Destinations */
+#define CONN_DST_EG2_ATTACKTIME 0x030a
+#define CONN_DST_EG2_DECAYTIME 0x030b
+#define CONN_DST_EG2_RELEASETIME 0x030d
+#define CONN_DST_EG2_SUSTAINLEVEL 0x030e
+
+#define CONN_TRN_NONE 0x0000
+#define CONN_TRN_CONCAVE 0x0001
+
+typedef struct _DLSID {
+ ULONG ulData1;
+ USHORT usData2;
+ USHORT usData3;
+ BYTE abData4[8];
+} DLSID, FAR *LPDLSID;
+
+typedef struct _DLSVERSION {
+ DWORD dwVersionMS;
+ DWORD dwVersionLS;
+}DLSVERSION, FAR *LPDLSVERSION;
+
+
+typedef struct _CONNECTION {
+ USHORT usSource;
+ USHORT usControl;
+ USHORT usDestination;
+ USHORT usTransform;
+ LONG lScale;
+ }CONNECTION, FAR *LPCONNECTION;
+
+
+/* Level 1 Articulation Data */
+
+typedef struct _CONNECTIONLIST {
+ ULONG cbSize; /* size of the connection list structure */
+ ULONG cConnections; /* count of connections in the list */
+ } CONNECTIONLIST, FAR *LPCONNECTIONLIST;
+
+
+
+/*/////////////////////////////////////////////////////////////////////////
+// Generic type defines for regions and instruments
+/////////////////////////////////////////////////////////////////////////*/
+
+typedef struct _RGNRANGE {
+ USHORT usLow;
+ USHORT usHigh;
+}RGNRANGE, FAR * LPRGNRANGE;
+
+#define F_INSTRUMENT_DRUMS 0x80000000
+
+typedef struct _MIDILOCALE {
+ ULONG ulBank;
+ ULONG ulInstrument;
+}MIDILOCALE, FAR *LPMIDILOCALE;
+
+/*/////////////////////////////////////////////////////////////////////////
+// Header structures found in an DLS file for collection, instruments, and
+// regions.
+/////////////////////////////////////////////////////////////////////////*/
+
+#define F_RGN_OPTION_SELFNONEXCLUSIVE 0x0001
+
+typedef struct _RGNHEADER {
+ RGNRANGE RangeKey; /* Key range */
+ RGNRANGE RangeVelocity; /* Velocity Range */
+ USHORT fusOptions; /* Synthesis options for this range */
+ USHORT usKeyGroup; /* Key grouping for non simultaneous play */
+ /* 0 = no group, 1 up is group */
+ /* for Level 1 only groups 1-15 are allowed */
+}RGNHEADER, FAR *LPRGNHEADER;
+
+typedef struct _INSTHEADER {
+ ULONG cRegions; /* Count of regions in this instrument */
+ MIDILOCALE Locale; /* Intended MIDI locale of this instrument */
+}INSTHEADER, FAR *LPINSTHEADER;
+
+typedef struct _DLSHEADER {
+ ULONG cInstruments; /* Count of instruments in the collection */
+}DLSHEADER, FAR *LPDLSHEADER;
+
+/*////////////////////////////////////////////////////////////////////////////
+// definitions for the Wave link structure
+////////////////////////////////////////////////////////////////////////////*/
+
+/* **** For level 1 only WAVELINK_CHANNEL_MONO is valid **** */
+/* ulChannel allows for up to 32 channels of audio with each bit position */
+/* specifiying a channel of playback */
+
+#define WAVELINK_CHANNEL_LEFT 0x0001l
+#define WAVELINK_CHANNEL_RIGHT 0x0002l
+
+#define F_WAVELINK_PHASE_MASTER 0x0001
+
+typedef struct _WAVELINK { /* any paths or links are stored right after struct */
+ USHORT fusOptions; /* options flags for this wave */
+ USHORT usPhaseGroup; /* Phase grouping for locking channels */
+ ULONG ulChannel; /* channel placement */
+ ULONG ulTableIndex; /* index into the wave pool table, 0 based */
+}WAVELINK, FAR *LPWAVELINK;
+
+#define POOL_CUE_NULL 0xffffffffl
+
+typedef struct _POOLCUE {
+ ULONG ulOffset; /* Offset to the entry in the list */
+}POOLCUE, FAR *LPPOOLCUE;
+
+typedef struct _POOLTABLE {
+ ULONG cbSize; /* size of the pool table structure */
+ ULONG cCues; /* count of cues in the list */
+ } POOLTABLE, FAR *LPPOOLTABLE;
+
+/*////////////////////////////////////////////////////////////////////////////
+// Structures for the "wsmp" chunk
+////////////////////////////////////////////////////////////////////////////*/
+
+#define F_WSMP_NO_TRUNCATION 0x0001l
+#define F_WSMP_NO_COMPRESSION 0x0002l
+
+
+typedef struct _rwsmp {
+ ULONG cbSize;
+ USHORT usUnityNote; /* MIDI Unity Playback Note */
+ SHORT sFineTune; /* Fine Tune in log tuning */
+ LONG lAttenuation; /* Overall Attenuation to be applied to data */
+ ULONG fulOptions; /* Flag options */
+ ULONG cSampleLoops; /* Count of Sample loops, 0 loops is one shot */
+ } WSMPL, FAR *LPWSMPL;
+
+
+/* This loop type is a normal forward playing loop which is continually */
+/* played until the envelope reaches an off threshold in the release */
+/* portion of the volume envelope */
+
+#define WLOOP_TYPE_FORWARD 0
+
+typedef struct _rloop {
+ ULONG cbSize;
+ ULONG ulType; /* Loop Type */
+ ULONG ulStart; /* Start of loop in samples */
+ ULONG ulLength; /* Length of loop in samples */
+} WLOOP, FAR *LPWLOOP;
+
+#endif /*_INC_DLS1 */
+
diff --git a/src/dep/include/DXSDK/include/dls2.h b/src/dep/include/DXSDK/include/dls2.h
new file mode 100644
index 0000000..b372f35
--- /dev/null
+++ b/src/dep/include/DXSDK/include/dls2.h
@@ -0,0 +1,130 @@
+/*
+
+ dls2.h
+
+ Description:
+
+ Interface defines and structures for the DLS2 extensions of DLS.
+
+
+ Written by Microsoft 1998. Released for public use.
+
+*/
+
+#ifndef _INC_DLS2
+#define _INC_DLS2
+
+/*
+ FOURCC's used in the DLS2 file, in addition to DLS1 chunks
+*/
+
+#define FOURCC_RGN2 mmioFOURCC('r','g','n','2')
+#define FOURCC_LAR2 mmioFOURCC('l','a','r','2')
+#define FOURCC_ART2 mmioFOURCC('a','r','t','2')
+#define FOURCC_CDL mmioFOURCC('c','d','l',' ')
+#define FOURCC_DLID mmioFOURCC('d','l','i','d')
+
+/*
+ Articulation connection graph definitions. These are in addition to
+ the definitions in the DLS1 header.
+*/
+
+/* Generic Sources (in addition to DLS1 sources. */
+#define CONN_SRC_POLYPRESSURE 0x0007 /* Polyphonic Pressure */
+#define CONN_SRC_CHANNELPRESSURE 0x0008 /* Channel Pressure */
+#define CONN_SRC_VIBRATO 0x0009 /* Vibrato LFO */
+#define CONN_SRC_MONOPRESSURE 0x000a /* MIDI Mono pressure */
+
+
+/* Midi Controllers */
+#define CONN_SRC_CC91 0x00db /* Reverb Send */
+#define CONN_SRC_CC93 0x00dd /* Chorus Send */
+
+
+/* Generic Destinations */
+#define CONN_DST_GAIN 0x0001 /* Same as CONN_DST_ ATTENUATION, but more appropriate terminology. */
+#define CONN_DST_KEYNUMBER 0x0005 /* Key Number Generator */
+
+/* Audio Channel Output Destinations */
+#define CONN_DST_LEFT 0x0010 /* Left Channel Send */
+#define CONN_DST_RIGHT 0x0011 /* Right Channel Send */
+#define CONN_DST_CENTER 0x0012 /* Center Channel Send */
+#define CONN_DST_LEFTREAR 0x0013 /* Left Rear Channel Send */
+#define CONN_DST_RIGHTREAR 0x0014 /* Right Rear Channel Send */
+#define CONN_DST_LFE_CHANNEL 0x0015 /* LFE Channel Send */
+#define CONN_DST_CHORUS 0x0080 /* Chorus Send */
+#define CONN_DST_REVERB 0x0081 /* Reverb Send */
+
+/* Vibrato LFO Destinations */
+#define CONN_DST_VIB_FREQUENCY 0x0114 /* Vibrato Frequency */
+#define CONN_DST_VIB_STARTDELAY 0x0115 /* Vibrato Start Delay */
+
+/* EG1 Destinations */
+#define CONN_DST_EG1_DELAYTIME 0x020B /* EG1 Delay Time */
+#define CONN_DST_EG1_HOLDTIME 0x020C /* EG1 Hold Time */
+#define CONN_DST_EG1_SHUTDOWNTIME 0x020D /* EG1 Shutdown Time */
+
+
+/* EG2 Destinations */
+#define CONN_DST_EG2_DELAYTIME 0x030F /* EG2 Delay Time */
+#define CONN_DST_EG2_HOLDTIME 0x0310 /* EG2 Hold Time */
+
+
+/* Filter Destinations */
+#define CONN_DST_FILTER_CUTOFF 0x0500 /* Filter Cutoff Frequency */
+#define CONN_DST_FILTER_Q 0x0501 /* Filter Resonance */
+
+
+/* Transforms */
+#define CONN_TRN_CONVEX 0x0002 /* Convex Transform */
+#define CONN_TRN_SWITCH 0x0003 /* Switch Transform */
+
+
+/* Conditional chunk operators */
+ #define DLS_CDL_AND 0x0001 /* X = X & Y */
+ #define DLS_CDL_OR 0x0002 /* X = X | Y */
+ #define DLS_CDL_XOR 0x0003 /* X = X ^ Y */
+ #define DLS_CDL_ADD 0x0004 /* X = X + Y */
+ #define DLS_CDL_SUBTRACT 0x0005 /* X = X - Y */
+ #define DLS_CDL_MULTIPLY 0x0006 /* X = X * Y */
+ #define DLS_CDL_DIVIDE 0x0007 /* X = X / Y */
+ #define DLS_CDL_LOGICAL_AND 0x0008 /* X = X && Y */
+ #define DLS_CDL_LOGICAL_OR 0x0009 /* X = X || Y */
+ #define DLS_CDL_LT 0x000A /* X = (X < Y) */
+ #define DLS_CDL_LE 0x000B /* X = (X <= Y) */
+ #define DLS_CDL_GT 0x000C /* X = (X > Y) */
+ #define DLS_CDL_GE 0x000D /* X = (X >= Y) */
+ #define DLS_CDL_EQ 0x000E /* X = (X == Y) */
+ #define DLS_CDL_NOT 0x000F /* X = !X */
+ #define DLS_CDL_CONST 0x0010 /* 32-bit constant */
+ #define DLS_CDL_QUERY 0x0011 /* 32-bit value returned from query */
+ #define DLS_CDL_QUERYSUPPORTED 0x0012 /* Test to see if query is supported by synth */
+
+/*
+ Loop and release
+*/
+
+#define WLOOP_TYPE_RELEASE 1
+
+/*
+ WaveLink chunk
+*/
+
+#define F_WAVELINK_MULTICHANNEL 0x0002
+
+
+/*
+ DLSID queries for
+*/
+
+DEFINE_GUID(DLSID_GMInHardware, 0x178f2f24, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12);
+DEFINE_GUID(DLSID_GSInHardware, 0x178f2f25, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12);
+DEFINE_GUID(DLSID_XGInHardware, 0x178f2f26, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12);
+DEFINE_GUID(DLSID_SupportsDLS1, 0x178f2f27, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12);
+DEFINE_GUID(DLSID_SupportsDLS2, 0xf14599e5, 0x4689, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6);
+DEFINE_GUID(DLSID_SampleMemorySize, 0x178f2f28, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12);
+DEFINE_GUID(DLSID_ManufacturersID, 0xb03e1181, 0x8095, 0x11d2, 0xa1, 0xef, 0x0, 0x60, 0x8, 0x33, 0xdb, 0xd8);
+DEFINE_GUID(DLSID_ProductID, 0xb03e1182, 0x8095, 0x11d2, 0xa1, 0xef, 0x0, 0x60, 0x8, 0x33, 0xdb, 0xd8);
+DEFINE_GUID(DLSID_SamplePlaybackRate, 0x2a91f713, 0xa4bf, 0x11d2, 0xbb, 0xdf, 0x0, 0x60, 0x8, 0x33, 0xdb, 0xd8);
+
+#endif /* _INC_DLS2 */
diff --git a/src/dep/include/DXSDK/include/dmdls.h b/src/dep/include/DXSDK/include/dmdls.h
new file mode 100644
index 0000000..8d06778
--- /dev/null
+++ b/src/dep/include/DXSDK/include/dmdls.h
@@ -0,0 +1,199 @@
+/************************************************************************
+* *
+* dmdls.h -- DLS download definitions for DirectMusic API's *
+* *
+* Copyright (c) Microsoft Corporation. All rights reserved. *
+* *
+************************************************************************/
+
+#ifndef _DMDLS_
+#define _DMDLS_
+
+#include "dls1.h"
+
+typedef long PCENT; /* Pitch cents */
+typedef long GCENT; /* Gain cents */
+typedef long TCENT; /* Time cents */
+typedef long PERCENT; /* Per.. cent! */
+
+typedef LONGLONG REFERENCE_TIME;
+typedef REFERENCE_TIME *LPREFERENCE_TIME;
+
+#ifndef MAKE_FOURCC
+#define MAKEFOURCC(ch0, ch1, ch2, ch3) \
+ ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
+ ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
+
+
+typedef DWORD FOURCC; /* a four character code */
+#endif
+
+typedef struct _DMUS_DOWNLOADINFO
+{
+ DWORD dwDLType; /* Instrument or Wave */
+ DWORD dwDLId; /* Unique identifier to tag this download. */
+ DWORD dwNumOffsetTableEntries; /* Number of index in the offset address table. */
+ DWORD cbSize; /* Total size of this memory chunk. */
+} DMUS_DOWNLOADINFO;
+
+#define DMUS_DOWNLOADINFO_INSTRUMENT 1
+#define DMUS_DOWNLOADINFO_WAVE 2
+#define DMUS_DOWNLOADINFO_INSTRUMENT2 3 /* New version for better DLS2 support. */
+
+/* Support for oneshot and streaming wave data
+ */
+#define DMUS_DOWNLOADINFO_WAVEARTICULATION 4 /* Wave articulation data */
+#define DMUS_DOWNLOADINFO_STREAMINGWAVE 5 /* One chunk of a streaming */
+#define DMUS_DOWNLOADINFO_ONESHOTWAVE 6
+
+#define DMUS_DEFAULT_SIZE_OFFSETTABLE 1
+
+/* Flags for DMUS_INSTRUMENT's ulFlags member */
+
+#define DMUS_INSTRUMENT_GM_INSTRUMENT (1 << 0)
+
+typedef struct _DMUS_OFFSETTABLE
+{
+ ULONG ulOffsetTable[DMUS_DEFAULT_SIZE_OFFSETTABLE];
+} DMUS_OFFSETTABLE;
+
+typedef struct _DMUS_INSTRUMENT
+{
+ ULONG ulPatch;
+ ULONG ulFirstRegionIdx;
+ ULONG ulGlobalArtIdx; /* If zero the instrument does not have an articulation */
+ ULONG ulFirstExtCkIdx; /* If zero no 3rd party entenstion chunks associated with the instrument */
+ ULONG ulCopyrightIdx; /* If zero no Copyright information associated with the instrument */
+ ULONG ulFlags;
+} DMUS_INSTRUMENT;
+
+typedef struct _DMUS_REGION
+{
+ RGNRANGE RangeKey;
+ RGNRANGE RangeVelocity;
+ USHORT fusOptions;
+ USHORT usKeyGroup;
+ ULONG ulRegionArtIdx; /* If zero the region does not have an articulation */
+ ULONG ulNextRegionIdx; /* If zero no more regions */
+ ULONG ulFirstExtCkIdx; /* If zero no 3rd party entenstion chunks associated with the region */
+ WAVELINK WaveLink;
+ WSMPL WSMP; /* If WSMP.cSampleLoops > 1 then a WLOOP is included */
+ WLOOP WLOOP[1];
+} DMUS_REGION;
+
+typedef struct _DMUS_LFOPARAMS
+{
+ PCENT pcFrequency;
+ TCENT tcDelay;
+ GCENT gcVolumeScale;
+ PCENT pcPitchScale;
+ GCENT gcMWToVolume;
+ PCENT pcMWToPitch;
+} DMUS_LFOPARAMS;
+
+typedef struct _DMUS_VEGPARAMS
+{
+ TCENT tcAttack;
+ TCENT tcDecay;
+ PERCENT ptSustain;
+ TCENT tcRelease;
+ TCENT tcVel2Attack;
+ TCENT tcKey2Decay;
+} DMUS_VEGPARAMS;
+
+typedef struct _DMUS_PEGPARAMS
+{
+ TCENT tcAttack;
+ TCENT tcDecay;
+ PERCENT ptSustain;
+ TCENT tcRelease;
+ TCENT tcVel2Attack;
+ TCENT tcKey2Decay;
+ PCENT pcRange;
+} DMUS_PEGPARAMS;
+
+typedef struct _DMUS_MSCPARAMS
+{
+ PERCENT ptDefaultPan;
+} DMUS_MSCPARAMS;
+
+typedef struct _DMUS_ARTICPARAMS
+{
+ DMUS_LFOPARAMS LFO;
+ DMUS_VEGPARAMS VolEG;
+ DMUS_PEGPARAMS PitchEG;
+ DMUS_MSCPARAMS Misc;
+} DMUS_ARTICPARAMS;
+
+typedef struct _DMUS_ARTICULATION /* Articulation chunk for DMUS_DOWNLOADINFO_INSTRUMENT format. */
+{
+ ULONG ulArt1Idx; /* DLS Level 1 articulation chunk */
+ ULONG ulFirstExtCkIdx; /* 3rd party extenstion chunks associated with the articulation */
+} DMUS_ARTICULATION;
+
+typedef struct _DMUS_ARTICULATION2 /* Articulation chunk for DMUS_DOWNLOADINFO_INSTRUMENT2 format. */
+{
+ ULONG ulArtIdx; /* DLS Level 1/2 articulation chunk */
+ ULONG ulFirstExtCkIdx; /* 3rd party extenstion chunks associated with the articulation */
+ ULONG ulNextArtIdx; /* Additional articulation chunks */
+} DMUS_ARTICULATION2;
+
+#define DMUS_MIN_DATA_SIZE 4
+/* The actual number is determined by cbSize of struct _DMUS_EXTENSIONCHUNK */
+
+typedef struct _DMUS_EXTENSIONCHUNK
+{
+ ULONG cbSize; /* Size of extension chunk */
+ ULONG ulNextExtCkIdx; /* If zero no more 3rd party entenstion chunks */
+ FOURCC ExtCkID;
+ BYTE byExtCk[DMUS_MIN_DATA_SIZE]; /* The actual number that follows is determined by cbSize */
+} DMUS_EXTENSIONCHUNK;
+
+/* The actual number is determined by cbSize of struct _DMUS_COPYRIGHT */
+
+typedef struct _DMUS_COPYRIGHT
+{
+ ULONG cbSize; /* Size of copyright information */
+ BYTE byCopyright[DMUS_MIN_DATA_SIZE]; /* The actual number that follows is determined by cbSize */
+} DMUS_COPYRIGHT;
+
+typedef struct _DMUS_WAVEDATA
+{
+ ULONG cbSize;
+ BYTE byData[DMUS_MIN_DATA_SIZE];
+} DMUS_WAVEDATA;
+
+typedef struct _DMUS_WAVE
+{
+ ULONG ulFirstExtCkIdx; /* If zero no 3rd party entenstion chunks associated with the wave */
+ ULONG ulCopyrightIdx; /* If zero no Copyright information associated with the wave */
+ ULONG ulWaveDataIdx; /* Location of actual wave data. */
+ WAVEFORMATEX WaveformatEx;
+} DMUS_WAVE;
+
+typedef struct _DMUS_NOTERANGE *LPDMUS_NOTERANGE;
+typedef struct _DMUS_NOTERANGE
+{
+ DWORD dwLowNote; /* Sets the low note for the range of MIDI note events to which the instrument responds.*/
+ DWORD dwHighNote; /* Sets the high note for the range of MIDI note events to which the instrument responds.*/
+} DMUS_NOTERANGE;
+
+typedef struct _DMUS_WAVEARTDL
+{
+ ULONG ulDownloadIdIdx; /* Download ID's of each buffer */
+ ULONG ulBus; /* Playback bus */
+ ULONG ulBuffers; /* Buffers */
+ ULONG ulMasterDLId; /* Download ID of master voice of slave group */
+ USHORT usOptions; /* Same as DLS2 region options */
+} DMUS_WAVEARTDL,
+ *LPDMUS_WAVEARTDL;
+
+typedef struct _DMUS_WAVEDL
+{
+ ULONG cbWaveData; /* Bytes of wave data */
+} DMUS_WAVEDL,
+ *LPDMUS_WAVEDL;
+
+#endif
+
+
diff --git a/src/dep/include/DXSDK/include/dmerror.h b/src/dep/include/DXSDK/include/dmerror.h
new file mode 100644
index 0000000..9279f73
--- /dev/null
+++ b/src/dep/include/DXSDK/include/dmerror.h
@@ -0,0 +1,843 @@
+/************************************************************************
+* *
+* dmerror.h -- Error codes returned by DirectMusic API's *
+* *
+* Copyright (c) Microsoft Corporation. All rights reserved. *
+* *
+************************************************************************/
+
+#ifndef _DMERROR_
+#define _DMERROR_
+
+#define FACILITY_DIRECTMUSIC 0x878 /* Shared with DirectSound */
+#define DMUS_ERRBASE 0x1000 /* Make error codes human readable in hex */
+
+#ifndef MAKE_HRESULT
+#define MAKE_HRESULT(sev,fac,code) \
+ ((HRESULT) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) )
+#endif
+
+#define MAKE_DMHRESULTSUCCESS(code) MAKE_HRESULT(0, FACILITY_DIRECTMUSIC, (DMUS_ERRBASE + (code)))
+#define MAKE_DMHRESULTERROR(code) MAKE_HRESULT(1, FACILITY_DIRECTMUSIC, (DMUS_ERRBASE + (code)))
+
+/* DMUS_S_PARTIALLOAD
+ *
+ * The object could only load partially. This can happen if some components are
+ * not registered properly, such as embedded tracks and tools. This can also happen
+ * if some content is missing. For example, if a segment uses a DLS collection that
+ * is not in the loader's current search directory.
+ */
+#define DMUS_S_PARTIALLOAD MAKE_DMHRESULTSUCCESS(0x091)
+
+/* DMUS_S_PARTIALDOWNLOAD
+ *
+ * Return value from IDirectMusicBand::Download() which indicates that
+ * some of the instruments safely downloaded, but others failed. This usually
+ * occurs when some instruments are on PChannels not supported by the performance
+ * or port.
+ */
+#define DMUS_S_PARTIALDOWNLOAD MAKE_DMHRESULTSUCCESS(0x092)
+
+/* DMUS_S_REQUEUE
+ *
+ * Return value from IDirectMusicTool::ProcessPMsg() which indicates to the
+ * performance that it should cue the PMsg again automatically.
+ */
+#define DMUS_S_REQUEUE MAKE_DMHRESULTSUCCESS(0x200)
+
+/* DMUS_S_FREE
+ *
+ * Return value from IDirectMusicTool::ProcessPMsg() which indicates to the
+ * performance that it should free the PMsg automatically.
+ */
+#define DMUS_S_FREE MAKE_DMHRESULTSUCCESS(0x201)
+
+/* DMUS_S_END
+ *
+ * Return value from IDirectMusicTrack::Play() which indicates to the
+ * segment that the track has no more data after mtEnd.
+ */
+#define DMUS_S_END MAKE_DMHRESULTSUCCESS(0x202)
+
+/* DMUS_S_STRING_TRUNCATED
+ *
+ * Returned string has been truncated to fit the buffer size.
+ */
+#define DMUS_S_STRING_TRUNCATED MAKE_DMHRESULTSUCCESS(0x210)
+
+/* DMUS_S_LAST_TOOL
+ *
+ * Returned from IDirectMusicGraph::StampPMsg(), this indicates that the PMsg
+ * is already stamped with the last tool in the graph. The returned PMsg's
+ * tool pointer is now NULL.
+ */
+#define DMUS_S_LAST_TOOL MAKE_DMHRESULTSUCCESS(0x211)
+
+/* DMUS_S_OVER_CHORD
+ *
+ * Returned from IDirectMusicPerformance::MusicToMIDI(), this indicates
+ * that no note has been calculated because the music value has the note
+ * at a position higher than the top note of the chord. This applies only
+ * to DMUS_PLAYMODE_NORMALCHORD play mode. This success code indicates
+ * that the caller should not do anything with the note. It is not meant
+ * to be played against this chord.
+ */
+#define DMUS_S_OVER_CHORD MAKE_DMHRESULTSUCCESS(0x212)
+
+/* DMUS_S_UP_OCTAVE
+ *
+ * Returned from IDirectMusicPerformance::MIDIToMusic(), and
+ * IDirectMusicPerformance::MusicToMIDI(), this indicates
+ * that the note conversion generated a note value that is below 0,
+ * so it has been bumped up one or more octaves to be in the proper
+ * MIDI range of 0 through 127.
+ * Note that this is valid for MIDIToMusic() when using play modes
+ * DMUS_PLAYMODE_FIXEDTOCHORD and DMUS_PLAYMODE_FIXEDTOKEY, both of
+ * which store MIDI values in wMusicValue. With MusicToMIDI(), it is
+ * valid for all play modes.
+ * Ofcourse, DMUS_PLAYMODE_FIXED will never return this success code.
+ */
+#define DMUS_S_UP_OCTAVE MAKE_DMHRESULTSUCCESS(0x213)
+
+/* DMUS_S_DOWN_OCTAVE
+ *
+ * Returned from IDirectMusicPerformance::MIDIToMusic(), and
+ * IDirectMusicPerformance::MusicToMIDI(), this indicates
+ * that the note conversion generated a note value that is above 127,
+ * so it has been bumped down one or more octaves to be in the proper
+ * MIDI range of 0 through 127.
+ * Note that this is valid for MIDIToMusic() when using play modes
+ * DMUS_PLAYMODE_FIXEDTOCHORD and DMUS_PLAYMODE_FIXEDTOKEY, both of
+ * which store MIDI values in wMusicValue. With MusicToMIDI(), it is
+ * valid for all play modes.
+ * Ofcourse, DMUS_PLAYMODE_FIXED will never return this success code.
+ */
+#define DMUS_S_DOWN_OCTAVE MAKE_DMHRESULTSUCCESS(0x214)
+
+/* DMUS_S_NOBUFFERCONTROL
+ *
+ * Although the audio output from the port will be routed to the
+ * same device as the given DirectSound buffer, buffer controls
+ * such as pan and volume will not affect the output.
+ *
+ */
+#define DMUS_S_NOBUFFERCONTROL MAKE_DMHRESULTSUCCESS(0x215)
+
+/* DMUS_S_GARBAGE_COLLECTED
+ *
+ * The requested operation was not performed because during CollectGarbage
+ * the loader determined that the object had been released.
+ */
+#define DMUS_S_GARBAGE_COLLECTED MAKE_DMHRESULTSUCCESS(0x216)
+
+/* DMUS_E_DRIVER_FAILED
+ *
+ * An unexpected error was returned from a device driver, indicating
+ * possible failure of the driver or hardware.
+ */
+#define DMUS_E_DRIVER_FAILED MAKE_DMHRESULTERROR(0x0101)
+
+/* DMUS_E_PORTS_OPEN
+ *
+ * The requested operation cannot be performed while there are
+ * instantiated ports in any process in the system.
+ */
+#define DMUS_E_PORTS_OPEN MAKE_DMHRESULTERROR(0x0102)
+
+/* DMUS_E_DEVICE_IN_USE
+ *
+ * The requested device is already in use (possibly by a non-DirectMusic
+ * client) and cannot be opened again.
+ */
+#define DMUS_E_DEVICE_IN_USE MAKE_DMHRESULTERROR(0x0103)
+
+/* DMUS_E_INSUFFICIENTBUFFER
+ *
+ * Buffer is not large enough for requested operation.
+ */
+#define DMUS_E_INSUFFICIENTBUFFER MAKE_DMHRESULTERROR(0x0104)
+
+/* DMUS_E_BUFFERNOTSET
+ *
+ * No buffer was prepared for the download data.
+ */
+#define DMUS_E_BUFFERNOTSET MAKE_DMHRESULTERROR(0x0105)
+
+/* DMUS_E_BUFFERNOTAVAILABLE
+ *
+ * Download failed due to inability to access or create download buffer.
+ */
+#define DMUS_E_BUFFERNOTAVAILABLE MAKE_DMHRESULTERROR(0x0106)
+
+/* DMUS_E_NOTADLSCOL
+ *
+ * Error parsing DLS collection. File is corrupt.
+ */
+#define DMUS_E_NOTADLSCOL MAKE_DMHRESULTERROR(0x0108)
+
+/* DMUS_E_INVALIDOFFSET
+ *
+ * Wave chunks in DLS collection file are at incorrect offsets.
+ */
+#define DMUS_E_INVALIDOFFSET MAKE_DMHRESULTERROR(0x0109)
+
+/* DMUS_E_ALREADY_LOADED
+ *
+ * Second attempt to load a DLS collection that is currently open.
+ */
+#define DMUS_E_ALREADY_LOADED MAKE_DMHRESULTERROR(0x0111)
+
+/* DMUS_E_INVALIDPOS
+ *
+ * Error reading wave data from DLS collection. Indicates bad file.
+ */
+#define DMUS_E_INVALIDPOS MAKE_DMHRESULTERROR(0x0113)
+
+/* DMUS_E_INVALIDPATCH
+ *
+ * There is no instrument in the collection that matches patch number.
+ */
+#define DMUS_E_INVALIDPATCH MAKE_DMHRESULTERROR(0x0114)
+
+/* DMUS_E_CANNOTSEEK
+ *
+ * The IStream* doesn't support Seek().
+ */
+#define DMUS_E_CANNOTSEEK MAKE_DMHRESULTERROR(0x0115)
+
+/* DMUS_E_CANNOTWRITE
+ *
+ * The IStream* doesn't support Write().
+ */
+#define DMUS_E_CANNOTWRITE MAKE_DMHRESULTERROR(0x0116)
+
+/* DMUS_E_CHUNKNOTFOUND
+ *
+ * The RIFF parser doesn't contain a required chunk while parsing file.
+ */
+#define DMUS_E_CHUNKNOTFOUND MAKE_DMHRESULTERROR(0x0117)
+
+/* DMUS_E_INVALID_DOWNLOADID
+ *
+ * Invalid download id was used in the process of creating a download buffer.
+ */
+#define DMUS_E_INVALID_DOWNLOADID MAKE_DMHRESULTERROR(0x0119)
+
+/* DMUS_E_NOT_DOWNLOADED_TO_PORT
+ *
+ * Tried to unload an object that was not downloaded or previously unloaded.
+ */
+#define DMUS_E_NOT_DOWNLOADED_TO_PORT MAKE_DMHRESULTERROR(0x0120)
+
+/* DMUS_E_ALREADY_DOWNLOADED
+ *
+ * Buffer was already downloaded to synth.
+ */
+#define DMUS_E_ALREADY_DOWNLOADED MAKE_DMHRESULTERROR(0x0121)
+
+/* DMUS_E_UNKNOWN_PROPERTY
+ *
+ * The specified property item was not recognized by the target object.
+ */
+#define DMUS_E_UNKNOWN_PROPERTY MAKE_DMHRESULTERROR(0x0122)
+
+/* DMUS_E_SET_UNSUPPORTED
+ *
+ * The specified property item may not be set on the target object.
+ */
+#define DMUS_E_SET_UNSUPPORTED MAKE_DMHRESULTERROR(0x0123)
+
+/* DMUS_E_GET_UNSUPPORTED
+ *
+ * The specified property item may not be retrieved from the target object.
+ */
+#define DMUS_E_GET_UNSUPPORTED MAKE_DMHRESULTERROR(0x0124)
+
+/* DMUS_E_NOTMONO
+ *
+ * Wave chunk has more than one interleaved channel. DLS format requires MONO.
+ */
+#define DMUS_E_NOTMONO MAKE_DMHRESULTERROR(0x0125)
+
+/* DMUS_E_BADARTICULATION
+ *
+ * Invalid articulation chunk in DLS collection.
+ */
+#define DMUS_E_BADARTICULATION MAKE_DMHRESULTERROR(0x0126)
+
+/* DMUS_E_BADINSTRUMENT
+ *
+ * Invalid instrument chunk in DLS collection.
+ */
+#define DMUS_E_BADINSTRUMENT MAKE_DMHRESULTERROR(0x0127)
+
+/* DMUS_E_BADWAVELINK
+ *
+ * Wavelink chunk in DLS collection points to invalid wave.
+ */
+#define DMUS_E_BADWAVELINK MAKE_DMHRESULTERROR(0x0128)
+
+/* DMUS_E_NOARTICULATION
+ *
+ * Articulation missing from instrument in DLS collection.
+ */
+#define DMUS_E_NOARTICULATION MAKE_DMHRESULTERROR(0x0129)
+
+/* DMUS_E_NOTPCM
+ *
+ * Downoaded DLS wave is not in PCM format.
+*/
+#define DMUS_E_NOTPCM MAKE_DMHRESULTERROR(0x012A)
+
+/* DMUS_E_BADWAVE
+ *
+ * Bad wave chunk in DLS collection
+ */
+#define DMUS_E_BADWAVE MAKE_DMHRESULTERROR(0x012B)
+
+/* DMUS_E_BADOFFSETTABLE
+ *
+ * Offset Table for download buffer has errors.
+ */
+#define DMUS_E_BADOFFSETTABLE MAKE_DMHRESULTERROR(0x012C)
+
+/* DMUS_E_UNKNOWNDOWNLOAD
+ *
+ * Attempted to download unknown data type.
+ */
+#define DMUS_E_UNKNOWNDOWNLOAD MAKE_DMHRESULTERROR(0x012D)
+
+/* DMUS_E_NOSYNTHSINK
+ *
+ * The operation could not be completed because no sink was connected to
+ * the synthesizer.
+ */
+#define DMUS_E_NOSYNTHSINK MAKE_DMHRESULTERROR(0x012E)
+
+/* DMUS_E_ALREADYOPEN
+ *
+ * An attempt was made to open the software synthesizer while it was already
+ * open.
+ * ASSERT?
+ */
+#define DMUS_E_ALREADYOPEN MAKE_DMHRESULTERROR(0x012F)
+
+/* DMUS_E_ALREADYCLOSE
+ *
+ * An attempt was made to close the software synthesizer while it was already
+ * open.
+ * ASSERT?
+ */
+#define DMUS_E_ALREADYCLOSED MAKE_DMHRESULTERROR(0x0130)
+
+/* DMUS_E_SYNTHNOTCONFIGURED
+ *
+ * The operation could not be completed because the software synth has not
+ * yet been fully configured.
+ * ASSERT?
+ */
+#define DMUS_E_SYNTHNOTCONFIGURED MAKE_DMHRESULTERROR(0x0131)
+
+/* DMUS_E_SYNTHACTIVE
+ *
+ * The operation cannot be carried out while the synthesizer is active.
+ */
+#define DMUS_E_SYNTHACTIVE MAKE_DMHRESULTERROR(0x0132)
+
+/* DMUS_E_CANNOTREAD
+ *
+ * An error occurred while attempting to read from the IStream* object.
+ */
+#define DMUS_E_CANNOTREAD MAKE_DMHRESULTERROR(0x0133)
+
+/* DMUS_E_DMUSIC_RELEASED
+ *
+ * The operation cannot be performed because the final instance of the
+ * DirectMusic object was released. Ports cannot be used after final
+ * release of the DirectMusic object.
+ */
+#define DMUS_E_DMUSIC_RELEASED MAKE_DMHRESULTERROR(0x0134)
+
+/* DMUS_E_BUFFER_EMPTY
+ *
+ * There was no data in the referenced buffer.
+ */
+#define DMUS_E_BUFFER_EMPTY MAKE_DMHRESULTERROR(0x0135)
+
+/* DMUS_E_BUFFER_FULL
+ *
+ * There is insufficient space to insert the given event into the buffer.
+ */
+#define DMUS_E_BUFFER_FULL MAKE_DMHRESULTERROR(0x0136)
+
+/* DMUS_E_PORT_NOT_CAPTURE
+ *
+ * The given operation could not be carried out because the port is a
+ * capture port.
+ */
+#define DMUS_E_PORT_NOT_CAPTURE MAKE_DMHRESULTERROR(0x0137)
+
+/* DMUS_E_PORT_NOT_RENDER
+ *
+ * The given operation could not be carried out because the port is a
+ * render port.
+ */
+#define DMUS_E_PORT_NOT_RENDER MAKE_DMHRESULTERROR(0x0138)
+
+/* DMUS_E_DSOUND_NOT_SET
+ *
+ * The port could not be created because no DirectSound has been specified.
+ * Specify a DirectSound interface via the IDirectMusic::SetDirectSound
+ * method; pass NULL to have DirectMusic manage usage of DirectSound.
+ */
+#define DMUS_E_DSOUND_NOT_SET MAKE_DMHRESULTERROR(0x0139)
+
+/* DMUS_E_ALREADY_ACTIVATED
+ *
+ * The operation cannot be carried out while the port is active.
+ */
+#define DMUS_E_ALREADY_ACTIVATED MAKE_DMHRESULTERROR(0x013A)
+
+/* DMUS_E_INVALIDBUFFER
+ *
+ * Invalid DirectSound buffer was handed to port.
+ */
+#define DMUS_E_INVALIDBUFFER MAKE_DMHRESULTERROR(0x013B)
+
+/* DMUS_E_WAVEFORMATNOTSUPPORTED
+ *
+ * Invalid buffer format was handed to the synth sink.
+ */
+#define DMUS_E_WAVEFORMATNOTSUPPORTED MAKE_DMHRESULTERROR(0x013C)
+
+/* DMUS_E_SYNTHINACTIVE
+ *
+ * The operation cannot be carried out while the synthesizer is inactive.
+ */
+#define DMUS_E_SYNTHINACTIVE MAKE_DMHRESULTERROR(0x013D)
+
+/* DMUS_E_DSOUND_ALREADY_SET
+ *
+ * IDirectMusic::SetDirectSound has already been called. It may not be
+ * changed while in use.
+ */
+#define DMUS_E_DSOUND_ALREADY_SET MAKE_DMHRESULTERROR(0x013E)
+
+/* DMUS_E_INVALID_EVENT
+ *
+ * The given event is invalid (either it is not a valid MIDI message
+ * or it makes use of running status). The event cannot be packed
+ * into the buffer.
+ */
+#define DMUS_E_INVALID_EVENT MAKE_DMHRESULTERROR(0x013F)
+
+/* DMUS_E_UNSUPPORTED_STREAM
+ *
+ * The IStream* object does not contain data supported by the loading object.
+ */
+#define DMUS_E_UNSUPPORTED_STREAM MAKE_DMHRESULTERROR(0x0150)
+
+/* DMUS_E_ALREADY_INITED
+ *
+ * The object has already been initialized.
+ */
+#define DMUS_E_ALREADY_INITED MAKE_DMHRESULTERROR(0x0151)
+
+/* DMUS_E_INVALID_BAND
+ *
+ * The file does not contain a valid band.
+ */
+#define DMUS_E_INVALID_BAND MAKE_DMHRESULTERROR(0x0152)
+
+/* DMUS_E_TRACK_HDR_NOT_FIRST_CK
+ *
+ * The IStream* object's data does not have a track header as the first chunk,
+ * and therefore can not be read by the segment object.
+ */
+#define DMUS_E_TRACK_HDR_NOT_FIRST_CK MAKE_DMHRESULTERROR(0x0155)
+
+/* DMUS_E_TOOL_HDR_NOT_FIRST_CK
+ *
+ * The IStream* object's data does not have a tool header as the first chunk,
+ * and therefore can not be read by the graph object.
+ */
+#define DMUS_E_TOOL_HDR_NOT_FIRST_CK MAKE_DMHRESULTERROR(0x0156)
+
+/* DMUS_E_INVALID_TRACK_HDR
+ *
+ * The IStream* object's data contains an invalid track header (ckid is 0 and
+ * fccType is NULL,) and therefore can not be read by the segment object.
+ */
+#define DMUS_E_INVALID_TRACK_HDR MAKE_DMHRESULTERROR(0x0157)
+
+/* DMUS_E_INVALID_TOOL_HDR
+ *
+ * The IStream* object's data contains an invalid tool header (ckid is 0 and
+ * fccType is NULL,) and therefore can not be read by the graph object.
+ */
+#define DMUS_E_INVALID_TOOL_HDR MAKE_DMHRESULTERROR(0x0158)
+
+/* DMUS_E_ALL_TOOLS_FAILED
+ *
+ * The graph object was unable to load all tools from the IStream* object data.
+ * This may be due to errors in the stream, or the tools being incorrectly
+ * registered on the client.
+ */
+#define DMUS_E_ALL_TOOLS_FAILED MAKE_DMHRESULTERROR(0x0159)
+
+/* DMUS_E_ALL_TRACKS_FAILED
+ *
+ * The segment object was unable to load all tracks from the IStream* object data.
+ * This may be due to errors in the stream, or the tracks being incorrectly
+ * registered on the client.
+ */
+#define DMUS_E_ALL_TRACKS_FAILED MAKE_DMHRESULTERROR(0x0160)
+
+/* DMUS_E_NOT_FOUND
+ *
+ * The requested item was not contained by the object.
+ */
+#define DMUS_E_NOT_FOUND MAKE_DMHRESULTERROR(0x0161)
+
+/* DMUS_E_NOT_INIT
+ *
+ * A required object is not initialized or failed to initialize.
+ */
+#define DMUS_E_NOT_INIT MAKE_DMHRESULTERROR(0x0162)
+
+/* DMUS_E_TYPE_DISABLED
+ *
+ * The requested parameter type is currently disabled. Parameter types may
+ * be enabled and disabled by certain calls to SetParam().
+ */
+#define DMUS_E_TYPE_DISABLED MAKE_DMHRESULTERROR(0x0163)
+
+/* DMUS_E_TYPE_UNSUPPORTED
+ *
+ * The requested parameter type is not supported on the object.
+ */
+#define DMUS_E_TYPE_UNSUPPORTED MAKE_DMHRESULTERROR(0x0164)
+
+/* DMUS_E_TIME_PAST
+ *
+ * The time is in the past, and the operation can not succeed.
+ */
+#define DMUS_E_TIME_PAST MAKE_DMHRESULTERROR(0x0165)
+
+/* DMUS_E_TRACK_NOT_FOUND
+ *
+ * The requested track is not contained by the segment.
+ */
+#define DMUS_E_TRACK_NOT_FOUND MAKE_DMHRESULTERROR(0x0166)
+
+/* DMUS_E_TRACK_NO_CLOCKTIME_SUPPORT
+ *
+ * The track does not support clock time playback or getparam.
+ */
+#define DMUS_E_TRACK_NO_CLOCKTIME_SUPPORT MAKE_DMHRESULTERROR(0x0167)
+
+/* DMUS_E_NO_MASTER_CLOCK
+ *
+ * There is no master clock in the performance. Be sure to call
+ * IDirectMusicPerformance::Init().
+ */
+#define DMUS_E_NO_MASTER_CLOCK MAKE_DMHRESULTERROR(0x0170)
+
+/* DMUS_E_LOADER_NOCLASSID
+ *
+ * The class id field is required and missing in the DMUS_OBJECTDESC.
+ */
+#define DMUS_E_LOADER_NOCLASSID MAKE_DMHRESULTERROR(0x0180)
+
+/* DMUS_E_LOADER_BADPATH
+ *
+ * The requested file path is invalid.
+ */
+#define DMUS_E_LOADER_BADPATH MAKE_DMHRESULTERROR(0x0181)
+
+/* DMUS_E_LOADER_FAILEDOPEN
+ *
+ * File open failed - either file doesn't exist or is locked.
+ */
+#define DMUS_E_LOADER_FAILEDOPEN MAKE_DMHRESULTERROR(0x0182)
+
+/* DMUS_E_LOADER_FORMATNOTSUPPORTED
+ *
+ * Search data type is not supported.
+ */
+#define DMUS_E_LOADER_FORMATNOTSUPPORTED MAKE_DMHRESULTERROR(0x0183)
+
+/* DMUS_E_LOADER_FAILEDCREATE
+ *
+ * Unable to find or create object.
+ */
+#define DMUS_E_LOADER_FAILEDCREATE MAKE_DMHRESULTERROR(0x0184)
+
+/* DMUS_E_LOADER_OBJECTNOTFOUND
+ *
+ * Object was not found.
+ */
+#define DMUS_E_LOADER_OBJECTNOTFOUND MAKE_DMHRESULTERROR(0x0185)
+
+/* DMUS_E_LOADER_NOFILENAME
+ *
+ * The file name is missing from the DMUS_OBJECTDESC.
+ */
+#define DMUS_E_LOADER_NOFILENAME MAKE_DMHRESULTERROR(0x0186)
+
+/* DMUS_E_INVALIDFILE
+ *
+ * The file requested is not a valid file.
+ */
+#define DMUS_E_INVALIDFILE MAKE_DMHRESULTERROR(0x0200)
+
+/* DMUS_E_ALREADY_EXISTS
+ *
+ * The tool is already contained in the graph. Create a new instance.
+ */
+#define DMUS_E_ALREADY_EXISTS MAKE_DMHRESULTERROR(0x0201)
+
+/* DMUS_E_OUT_OF_RANGE
+ *
+ * Value is out of range, for instance the requested length is longer than
+ * the segment.
+ */
+#define DMUS_E_OUT_OF_RANGE MAKE_DMHRESULTERROR(0x0202)
+
+/* DMUS_E_SEGMENT_INIT_FAILED
+ *
+ * Segment initialization failed, most likely due to a critical memory situation.
+ */
+#define DMUS_E_SEGMENT_INIT_FAILED MAKE_DMHRESULTERROR(0x0203)
+
+/* DMUS_E_ALREADY_SENT
+ *
+ * The DMUS_PMSG has already been sent to the performance object via
+ * IDirectMusicPerformance::SendPMsg().
+ */
+#define DMUS_E_ALREADY_SENT MAKE_DMHRESULTERROR(0x0204)
+
+/* DMUS_E_CANNOT_FREE
+ *
+ * The DMUS_PMSG was either not allocated by the performance via
+ * IDirectMusicPerformance::AllocPMsg(), or it was already freed via
+ * IDirectMusicPerformance::FreePMsg().
+ */
+#define DMUS_E_CANNOT_FREE MAKE_DMHRESULTERROR(0x0205)
+
+/* DMUS_E_CANNOT_OPEN_PORT
+ *
+ * The default system port could not be opened.
+ */
+#define DMUS_E_CANNOT_OPEN_PORT MAKE_DMHRESULTERROR(0x0206)
+
+/* DMUS_E_CANNOT_CONVERT
+ *
+ * A call to MIDIToMusic() or MusicToMIDI() resulted in an error because
+ * the requested conversion could not happen. This usually occurs when the
+ * provided DMUS_CHORD_KEY structure has an invalid chord or scale pattern.
+ */
+#define DMUS_E_CANNOT_CONVERT MAKE_DMHRESULTERROR(0x0207)
+/* misspelling in previous versions of DirectX preserved for backward compatibility */
+#define DMUS_E_CONNOT_CONVERT DMUS_E_CANNOT_CONVERT
+
+/* DMUS_E_DESCEND_CHUNK_FAIL
+ *
+ * DMUS_E_DESCEND_CHUNK_FAIL is returned when the end of the file
+ * was reached before the desired chunk was found.
+ */
+#define DMUS_E_DESCEND_CHUNK_FAIL MAKE_DMHRESULTERROR(0x0210)
+
+/* DMUS_E_NOT_LOADED
+ *
+ * An attempt to use this object failed because it first needs to
+ * be loaded.
+ */
+#define DMUS_E_NOT_LOADED MAKE_DMHRESULTERROR(0x0211)
+
+/* DMUS_E_SCRIPT_LANGUAGE_INCOMPATIBLE
+ *
+ * The activeX scripting engine for the script's language is not compatible with
+ * DirectMusic.
+ *
+ */
+#define DMUS_E_SCRIPT_LANGUAGE_INCOMPATIBLE MAKE_DMHRESULTERROR(0x0213)
+
+/* DMUS_E_SCRIPT_UNSUPPORTED_VARTYPE
+ *
+ * A varient was used that had a type that is not supported by DirectMusic.
+ *
+ */
+#define DMUS_E_SCRIPT_UNSUPPORTED_VARTYPE MAKE_DMHRESULTERROR(0x0214)
+
+/* DMUS_E_SCRIPT_ERROR_IN_SCRIPT
+ *
+ * An error was encountered while parsing or executing the script.
+ * The pErrorInfo parameter (if supplied) was filled with information about the error.
+ */
+#define DMUS_E_SCRIPT_ERROR_IN_SCRIPT MAKE_DMHRESULTERROR(0x0215)
+
+/* DMUS_E_SCRIPT_CANTLOAD_OLEAUT32
+ *
+ * Loading of oleaut32.dll failed. VBScript and other activeX scripting languages
+ * require use of oleaut32.dll. On platforms where oleaut32.dll is not present, only
+ * the DirectMusicScript language, which doesn't require oleaut32.dll can be used.
+ */
+#define DMUS_E_SCRIPT_CANTLOAD_OLEAUT32 MAKE_DMHRESULTERROR(0x0216)
+
+/* DMUS_E_SCRIPT_LOADSCRIPT_ERROR
+ *
+ * An error occured while parsing a script loaded using LoadScript. The script that
+ * was loaded contains an error.
+ */
+#define DMUS_E_SCRIPT_LOADSCRIPT_ERROR MAKE_DMHRESULTERROR(0x0217)
+
+/* DMUS_E_SCRIPT_INVALID_FILE
+ *
+ * The script file is invalid.
+ */
+#define DMUS_E_SCRIPT_INVALID_FILE MAKE_DMHRESULTERROR(0x0218)
+
+/* DMUS_E_INVALID_SCRIPTTRACK
+ *
+ * The file contains an invalid script track.
+ */
+#define DMUS_E_INVALID_SCRIPTTRACK MAKE_DMHRESULTERROR(0x0219)
+
+/* DMUS_E_SCRIPT_VARIABLE_NOT_FOUND
+ *
+ * The script does not contain a variable with the specified name.
+ */
+#define DMUS_E_SCRIPT_VARIABLE_NOT_FOUND MAKE_DMHRESULTERROR(0x021A)
+
+/* DMUS_E_SCRIPT_ROUTINE_NOT_FOUND
+ *
+ * The script does not contain a routine with the specified name.
+ */
+#define DMUS_E_SCRIPT_ROUTINE_NOT_FOUND MAKE_DMHRESULTERROR(0x021B)
+
+/* DMUS_E_SCRIPT_CONTENT_READONLY
+ *
+ * Scripts variables for content referenced or embedded in a script cannot be set.
+ */
+#define DMUS_E_SCRIPT_CONTENT_READONLY MAKE_DMHRESULTERROR(0x021C)
+
+/* DMUS_E_SCRIPT_NOT_A_REFERENCE
+ *
+ * Attempt was made to set a script's variable by reference to a value that was
+ * not an object type.
+ */
+#define DMUS_E_SCRIPT_NOT_A_REFERENCE MAKE_DMHRESULTERROR(0x021D)
+
+/* DMUS_E_SCRIPT_VALUE_NOT_SUPPORTED
+ *
+ * Attempt was made to set a script's variable by value to an object that does
+ * not support a default value property.
+ */
+#define DMUS_E_SCRIPT_VALUE_NOT_SUPPORTED MAKE_DMHRESULTERROR(0x021E)
+
+/* DMUS_E_INVALID_SEGMENTTRIGGERTRACK
+ *
+ * The file contains an invalid segment trigger track.
+ */
+#define DMUS_E_INVALID_SEGMENTTRIGGERTRACK MAKE_DMHRESULTERROR(0x0220)
+
+/* DMUS_E_INVALID_LYRICSTRACK
+ *
+ * The file contains an invalid lyrics track.
+ */
+#define DMUS_E_INVALID_LYRICSTRACK MAKE_DMHRESULTERROR(0x0221)
+
+/* DMUS_E_INVALID_PARAMCONTROLTRACK
+ *
+ * The file contains an invalid parameter control track.
+ */
+#define DMUS_E_INVALID_PARAMCONTROLTRACK MAKE_DMHRESULTERROR(0x0222)
+
+/* DMUS_E_AUDIOVBSCRIPT_SYNTAXERROR
+ *
+ * A script written in AudioVBScript could not be read because it contained a statement that
+ * is not allowed by the AudioVBScript language.
+ */
+#define DMUS_E_AUDIOVBSCRIPT_SYNTAXERROR MAKE_DMHRESULTERROR(0x0223)
+
+/* DMUS_E_AUDIOVBSCRIPT_RUNTIMEERROR
+ *
+ * A script routine written in AudioVBScript failed because an invalid operation occurred. For example,
+ * adding the number 3 to a segment object would produce this error. So would attempting to call a routine
+ * that doesn't exist.
+ */
+#define DMUS_E_AUDIOVBSCRIPT_RUNTIMEERROR MAKE_DMHRESULTERROR(0x0224)
+
+/* DMUS_E_AUDIOVBSCRIPT_OPERATIONFAILURE
+ *
+ * A script routine written in AudioVBScript failed because a function outside of a script failed to complete.
+ * For example, a call to PlaySegment that fails to play because of low memory would return this error.
+ */
+#define DMUS_E_AUDIOVBSCRIPT_OPERATIONFAILURE MAKE_DMHRESULTERROR(0x0225)
+
+/* DMUS_E_AUDIOPATHS_NOT_VALID
+ *
+ * The Performance has set up some PChannels using the AssignPChannel command, which
+ * makes it not capable of supporting audio paths.
+ */
+#define DMUS_E_AUDIOPATHS_NOT_VALID MAKE_DMHRESULTERROR(0x0226)
+
+/* DMUS_E_AUDIOPATHS_IN_USE
+ *
+ * This is the inverse of the previous error.
+ * The Performance has set up some audio paths, which makes is incompatible
+ * with the calls to allocate pchannels, etc.
+ */
+#define DMUS_E_AUDIOPATHS_IN_USE MAKE_DMHRESULTERROR(0x0227)
+
+/* DMUS_E_NO_AUDIOPATH_CONFIG
+ *
+ * A segment was asked for its embedded audio path configuration,
+ * but there isn't any.
+ */
+#define DMUS_E_NO_AUDIOPATH_CONFIG MAKE_DMHRESULTERROR(0x0228)
+
+/* DMUS_E_AUDIOPATH_INACTIVE
+ *
+ * An audiopath is inactive, perhaps because closedown was called.
+ */
+#define DMUS_E_AUDIOPATH_INACTIVE MAKE_DMHRESULTERROR(0x0229)
+
+/* DMUS_E_AUDIOPATH_NOBUFFER
+ *
+ * An audiopath failed to create because a requested buffer could not be created.
+ */
+#define DMUS_E_AUDIOPATH_NOBUFFER MAKE_DMHRESULTERROR(0x022A)
+
+/* DMUS_E_AUDIOPATH_NOPORT
+ *
+ * An audiopath could not be used for playback because it lacked port assignments.
+ */
+#define DMUS_E_AUDIOPATH_NOPORT MAKE_DMHRESULTERROR(0x022B)
+
+/* DMUS_E_NO_AUDIOPATH
+ *
+ * Attempt was made to play segment in audiopath mode and there was no audiopath.
+ */
+#define DMUS_E_NO_AUDIOPATH MAKE_DMHRESULTERROR(0x022C)
+
+/* DMUS_E_INVALIDCHUNK
+ *
+ * Invalid data was found in a RIFF file chunk.
+ */
+#define DMUS_E_INVALIDCHUNK MAKE_DMHRESULTERROR(0x022D)
+
+/* DMUS_E_AUDIOPATH_NOGLOBALFXBUFFER
+ *
+ * Attempt was made to create an audiopath that sends to a global effects buffer which did not exist.
+ */
+#define DMUS_E_AUDIOPATH_NOGLOBALFXBUFFER MAKE_DMHRESULTERROR(0x022E)
+
+/* DMUS_E_INVALID_CONTAINER_OBJECT
+ *
+ * The file does not contain a valid container object.
+ */
+#define DMUS_E_INVALID_CONTAINER_OBJECT MAKE_DMHRESULTERROR(0x022F)
+
+#endif
diff --git a/src/dep/include/DXSDK/include/dmksctrl.h b/src/dep/include/DXSDK/include/dmksctrl.h
new file mode 100644
index 0000000..2f81bac
--- /dev/null
+++ b/src/dep/include/DXSDK/include/dmksctrl.h
@@ -0,0 +1,166 @@
+/************************************************************************
+* *
+* dmksctrl.h -- Definition of IKsControl *
+* *
+* Copyright (c) Microsoft Corporation. All rights reserved. *
+* *
+* This header file contains the definition of IKsControl, which *
+* duplicates definitions from ks.h and ksproxy.h. Your code should *
+* include ks.h and ksproxy.h directly if you have them (they are *
+* provided in the Windows 98 DDK and will be in the Windows NT 5 *
+* SDK). *
+* *
+************************************************************************/
+
+#ifndef _DMKSCTRL_
+#define _DMKSCTRL_
+
+#if _MSC_VER >= 1200
+#pragma warning(push)
+#endif
+#pragma warning(disable:4201) /* Disable warnings on anonymous unions */
+
+#include
+
+#include
+
+#if !defined(_NTRTL_)
+ #ifndef DEFINE_GUIDEX
+ #define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name
+ #endif /* !defined(DEFINE_GUIDEX) */
+
+ #ifndef STATICGUIDOF
+ #define STATICGUIDOF(guid) STATIC_##guid
+ #endif /* !defined(STATICGUIDOF) */
+#endif /* !defined(_NTRTL_) */
+
+#ifndef STATIC_IID_IKsControl
+#define STATIC_IID_IKsControl\
+ 0x28F54685L, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
+#endif /* STATIC_IID_IKsControl */
+
+/*
+ * Warning: This will prevent the rest of ks.h from being pulled in if ks.h is
+ * included after dmksctrl.h. Make sure you do not include both headers in
+ * the same source file.
+ */
+#ifndef _KS_
+#define _KS_
+
+#if (defined(_MSC_EXTENSIONS) || defined(__cplusplus)) && !defined(CINTERFACE)
+typedef struct {
+ union {
+ struct {
+ GUID Set;
+ ULONG Id;
+ ULONG Flags;
+ };
+ LONGLONG Alignment;
+ };
+} KSIDENTIFIER, *PKSIDENTIFIER;
+#else
+typedef struct {
+ union {
+ struct {
+ GUID Set;
+ ULONG Id;
+ ULONG Flags;
+ } Data;
+ LONGLONG Alignment;
+ };
+} KSIDENTIFIER, *PKSIDENTIFIER;
+#endif
+
+typedef KSIDENTIFIER KSPROPERTY, *PKSPROPERTY, KSMETHOD, *PKSMETHOD, KSEVENT, *PKSEVENT;
+
+#define KSMETHOD_TYPE_NONE 0x00000000
+#define KSMETHOD_TYPE_READ 0x00000001
+#define KSMETHOD_TYPE_WRITE 0x00000002
+#define KSMETHOD_TYPE_MODIFY 0x00000003
+#define KSMETHOD_TYPE_SOURCE 0x00000004
+
+#define KSMETHOD_TYPE_SEND 0x00000001
+#define KSMETHOD_TYPE_SETSUPPORT 0x00000100
+#define KSMETHOD_TYPE_BASICSUPPORT 0x00000200
+
+#define KSPROPERTY_TYPE_GET 0x00000001
+#define KSPROPERTY_TYPE_SET 0x00000002
+#define KSPROPERTY_TYPE_SETSUPPORT 0x00000100
+#define KSPROPERTY_TYPE_BASICSUPPORT 0x00000200
+#define KSPROPERTY_TYPE_RELATIONS 0x00000400
+#define KSPROPERTY_TYPE_SERIALIZESET 0x00000800
+#define KSPROPERTY_TYPE_UNSERIALIZESET 0x00001000
+#define KSPROPERTY_TYPE_SERIALIZERAW 0x00002000
+#define KSPROPERTY_TYPE_UNSERIALIZERAW 0x00004000
+#define KSPROPERTY_TYPE_SERIALIZESIZE 0x00008000
+#define KSPROPERTY_TYPE_DEFAULTVALUES 0x00010000
+
+#define KSPROPERTY_TYPE_TOPOLOGY 0x10000000
+#endif /* _KS_ */
+
+#ifndef _IKsControl_
+#define _IKsControl_
+
+#ifdef DECLARE_INTERFACE_
+
+
+#undef INTERFACE
+#define INTERFACE IKsControl
+DECLARE_INTERFACE_(IKsControl, IUnknown)
+{
+ /* IUnknown */
+ STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /*IKsControl*/
+ STDMETHOD(KsProperty)(
+ THIS_
+ IN PKSPROPERTY Property,
+ IN ULONG PropertyLength,
+ IN OUT LPVOID PropertyData,
+ IN ULONG DataLength,
+ OUT ULONG* BytesReturned
+ ) PURE;
+ STDMETHOD(KsMethod)(
+ THIS_
+ IN PKSMETHOD Method,
+ IN ULONG MethodLength,
+ IN OUT LPVOID MethodData,
+ IN ULONG DataLength,
+ OUT ULONG* BytesReturned
+ ) PURE;
+ STDMETHOD(KsEvent)(
+ THIS_
+ IN PKSEVENT Event OPTIONAL,
+ IN ULONG EventLength,
+ IN OUT LPVOID EventData,
+ IN ULONG DataLength,
+ OUT ULONG* BytesReturned
+ ) PURE;
+};
+
+#endif /* DECLARE_INTERFACE_ */
+#endif /* _IKsControl_ */
+
+#include
+
+DEFINE_GUID(IID_IKsControl, 0x28F54685, 0x06FD, 0x11D2, 0xB2, 0x7A, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96);
+
+/* These formats are in ksmedia.h
+ */
+#ifndef _KSMEDIA_
+
+DEFINE_GUID(KSDATAFORMAT_SUBTYPE_MIDI, 0x1D262760L, 0xE957, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00);
+DEFINE_GUID(KSDATAFORMAT_SUBTYPE_DIRECTMUSIC, 0x1a82f8bc, 0x3f8b, 0x11d2, 0xb7, 0x74, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
+
+#endif
+
+#if _MSC_VER >= 1200
+#pragma warning(pop)
+#endif
+
+#endif /* _DMKSCTRL */
+
+
+
diff --git a/src/dep/include/DXSDK/include/dmplugin.h b/src/dep/include/DXSDK/include/dmplugin.h
new file mode 100644
index 0000000..7c7d311
--- /dev/null
+++ b/src/dep/include/DXSDK/include/dmplugin.h
@@ -0,0 +1,280 @@
+/************************************************************************
+* *
+* dmplugin.h -- This module contains the API for plugins for the *
+* DirectMusic performance layer *
+* *
+* Copyright (c) Microsoft Corporation. All rights reserved. *
+* *
+************************************************************************/
+
+#ifndef _DMPLUGIN_
+#define _DMPLUGIN_
+
+#include
+
+#define COM_NO_WINDOWS_H
+#include
+
+#include
+#include
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+interface IDirectMusicTrack;
+interface IDirectMusicTool;
+interface IDirectMusicTool8;
+interface IDirectMusicTrack8;
+interface IDirectMusicPerformance;
+interface IDirectMusicPerformance8;
+interface IDirectMusicSegment;
+interface IDirectMusicSegment8;
+interface IDirectMusicSegmentState;
+interface IDirectMusicSegmentState8;
+interface IDirectMusicGraph;
+#ifndef __cplusplus
+typedef interface IDirectMusicTrack IDirectMusicTrack;
+typedef interface IDirectMusicTool IDirectMusicTool;
+typedef interface IDirectMusicTool8 IDirectMusicTool8;
+typedef interface IDirectMusicTrack8 IDirectMusicTrack8;
+typedef interface IDirectMusicPerformance IDirectMusicPerformance;
+typedef interface IDirectMusicPerformance8 IDirectMusicPerformance8;
+typedef interface IDirectMusicSegment IDirectMusicSegment;
+typedef interface IDirectMusicSegment8 IDirectMusicSegment8;
+typedef interface IDirectMusicSegmentState IDirectMusicSegmentState;
+typedef interface IDirectMusicSegmentState8 IDirectMusicSegmentState8;
+typedef interface IDirectMusicGraph IDirectMusicGraph;
+#endif
+
+typedef struct _DMUS_PMSG DMUS_PMSG;
+typedef long MUSIC_TIME;
+
+/* Registry location for tools */
+#define DMUS_REGSTR_PATH_TOOLS "Software\\Microsoft\\DirectMusic\\Tools"
+
+/*////////////////////////////////////////////////////////////////////
+// IDirectMusicTool */
+#undef INTERFACE
+#define INTERFACE IDirectMusicTool
+DECLARE_INTERFACE_(IDirectMusicTool, IUnknown)
+{
+ /* IUnknown */
+ STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* IDirectMusicTool */
+ STDMETHOD(Init) (THIS_ IDirectMusicGraph* pGraph) PURE;
+ STDMETHOD(GetMsgDeliveryType) (THIS_ DWORD* pdwDeliveryType ) PURE;
+ STDMETHOD(GetMediaTypeArraySize)(THIS_ DWORD* pdwNumElements ) PURE;
+ STDMETHOD(GetMediaTypes) (THIS_ DWORD** padwMediaTypes,
+ DWORD dwNumElements) PURE;
+ STDMETHOD(ProcessPMsg) (THIS_ IDirectMusicPerformance* pPerf,
+ DMUS_PMSG* pPMSG) PURE;
+ STDMETHOD(Flush) (THIS_ IDirectMusicPerformance* pPerf,
+ DMUS_PMSG* pPMSG,
+ REFERENCE_TIME rtTime) PURE;
+};
+
+/*////////////////////////////////////////////////////////////////////
+// IDirectMusicTool8 */
+#undef INTERFACE
+#define INTERFACE IDirectMusicTool8
+DECLARE_INTERFACE_(IDirectMusicTool8, IDirectMusicTool)
+{
+ /* IUnknown */
+ STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* IDirectMusicTool */
+ STDMETHOD(Init) (THIS_ IDirectMusicGraph* pGraph) PURE;
+ STDMETHOD(GetMsgDeliveryType) (THIS_ DWORD* pdwDeliveryType ) PURE;
+ STDMETHOD(GetMediaTypeArraySize)(THIS_ DWORD* pdwNumElements ) PURE;
+ STDMETHOD(GetMediaTypes) (THIS_ DWORD** padwMediaTypes,
+ DWORD dwNumElements) PURE;
+ STDMETHOD(ProcessPMsg) (THIS_ IDirectMusicPerformance* pPerf,
+ DMUS_PMSG* pPMSG) PURE;
+ STDMETHOD(Flush) (THIS_ IDirectMusicPerformance* pPerf,
+ DMUS_PMSG* pPMSG,
+ REFERENCE_TIME rtTime) PURE;
+ /* IDirectMusicTool8 */
+ STDMETHOD(Clone) (THIS_ IDirectMusicTool ** ppTool) PURE;
+};
+
+
+/* The following flags are sent in the IDirectMusicTrack::Play() method */
+/* inside the dwFlags parameter */
+typedef enum enumDMUS_TRACKF_FLAGS
+{
+ DMUS_TRACKF_SEEK = 1, /* set on a seek */
+ DMUS_TRACKF_LOOP = 2, /* set on a loop (repeat) */
+ DMUS_TRACKF_START = 4, /* set on first call to Play */
+ DMUS_TRACKF_FLUSH = 8, /* set when this call is in response to a flush on the perfomance */
+ DMUS_TRACKF_DIRTY = 0x10, /* set when the track should consider any cached values from a previous call to GetParam to be invalidated */
+ /* The following flags are DX8 only. */
+ DMUS_TRACKF_NOTIFY_OFF = 0x20, /* tells track not to send notifications. */
+ DMUS_TRACKF_PLAY_OFF = 0x40, /* tells track not to play anything (but can still send notifications.) */
+ DMUS_TRACKF_LOOPEND = 0x80, /* set when the end of range is also a loop end. */
+ DMUS_TRACKF_STOP = 0x100, /* set when the end of range is also end of playing this segment. */
+ DMUS_TRACKF_RECOMPOSE = 0x200, /* set to indicate the track should compose. */
+ DMUS_TRACKF_CLOCK = 0x400, /* set when time parameters are in reference (clock) time. Only valid for PlayEx(). */
+} DMUS_TRACKF_FLAGS;
+
+/* The following flags are sent in the IDirectMusicTrack8::GetParamEx() and SetParamEx() methods */
+/* inside the dwFlags parameter */
+#define DMUS_TRACK_PARAMF_CLOCK 0x01 /* set when the time is measured is in reference (clock) time */
+
+/*////////////////////////////////////////////////////////////////////
+// IDirectMusicTrack */
+#undef INTERFACE
+#define INTERFACE IDirectMusicTrack
+DECLARE_INTERFACE_(IDirectMusicTrack, IUnknown)
+{
+ /* IUnknown */
+ STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* IDirectMusicTrack */
+ STDMETHOD(Init) (THIS_ IDirectMusicSegment* pSegment) PURE;
+ STDMETHOD(InitPlay) (THIS_ IDirectMusicSegmentState* pSegmentState,
+ IDirectMusicPerformance* pPerformance,
+ void** ppStateData,
+ DWORD dwVirtualTrackID,
+ DWORD dwFlags) PURE;
+ STDMETHOD(EndPlay) (THIS_ void* pStateData) PURE;
+ STDMETHOD(Play) (THIS_ void* pStateData,
+ MUSIC_TIME mtStart,
+ MUSIC_TIME mtEnd,
+ MUSIC_TIME mtOffset,
+ DWORD dwFlags,
+ IDirectMusicPerformance* pPerf,
+ IDirectMusicSegmentState* pSegSt,
+ DWORD dwVirtualID) PURE;
+ STDMETHOD(GetParam) (THIS_ REFGUID rguidType,
+ MUSIC_TIME mtTime,
+ MUSIC_TIME* pmtNext,
+ void* pParam) PURE;
+ STDMETHOD(SetParam) (THIS_ REFGUID rguidType,
+ MUSIC_TIME mtTime,
+ void* pParam) PURE;
+ STDMETHOD(IsParamSupported) (THIS_ REFGUID rguidType) PURE;
+ STDMETHOD(AddNotificationType) (THIS_ REFGUID rguidNotificationType) PURE;
+ STDMETHOD(RemoveNotificationType) (THIS_ REFGUID rguidNotificationType) PURE;
+ STDMETHOD(Clone) (THIS_ MUSIC_TIME mtStart,
+ MUSIC_TIME mtEnd,
+ IDirectMusicTrack** ppTrack) PURE;
+};
+
+/*////////////////////////////////////////////////////////////////////
+// IDirectMusicTrack8 */
+#undef INTERFACE
+#define INTERFACE IDirectMusicTrack8
+DECLARE_INTERFACE_(IDirectMusicTrack8, IDirectMusicTrack)
+{
+ /* IUnknown */
+ STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* IDirectMusicTrack */
+ STDMETHOD(Init) (THIS_ IDirectMusicSegment* pSegment) PURE;
+ STDMETHOD(InitPlay) (THIS_ IDirectMusicSegmentState* pSegmentState,
+ IDirectMusicPerformance* pPerformance,
+ void** ppStateData,
+ DWORD dwVirtualTrackID,
+ DWORD dwFlags) PURE;
+ STDMETHOD(EndPlay) (THIS_ void* pStateData) PURE;
+ STDMETHOD(Play) (THIS_ void* pStateData,
+ MUSIC_TIME mtStart,
+ MUSIC_TIME mtEnd,
+ MUSIC_TIME mtOffset,
+ DWORD dwFlags,
+ IDirectMusicPerformance* pPerf,
+ IDirectMusicSegmentState* pSegSt,
+ DWORD dwVirtualID) PURE;
+ STDMETHOD(GetParam) (THIS_ REFGUID rguidType,
+ MUSIC_TIME mtTime,
+ MUSIC_TIME* pmtNext,
+ void* pParam) PURE;
+ STDMETHOD(SetParam) (THIS_ REFGUID rguidType,
+ MUSIC_TIME mtTime,
+ void* pParam) PURE;
+ STDMETHOD(IsParamSupported) (THIS_ REFGUID rguidType) PURE;
+ STDMETHOD(AddNotificationType) (THIS_ REFGUID rguidNotificationType) PURE;
+ STDMETHOD(RemoveNotificationType) (THIS_ REFGUID rguidNotificationType) PURE;
+ STDMETHOD(Clone) (THIS_ MUSIC_TIME mtStart,
+ MUSIC_TIME mtEnd,
+ IDirectMusicTrack** ppTrack) PURE;
+ /* IDirectMusicTrack8 */
+ STDMETHOD(PlayEx) (THIS_ void* pStateData,
+ REFERENCE_TIME rtStart,
+ REFERENCE_TIME rtEnd,
+ REFERENCE_TIME rtOffset,
+ DWORD dwFlags,
+ IDirectMusicPerformance* pPerf,
+ IDirectMusicSegmentState* pSegSt,
+ DWORD dwVirtualID) PURE;
+ STDMETHOD(GetParamEx) (THIS_ REFGUID rguidType, /* Command type. */
+ REFERENCE_TIME rtTime, /* Time, in ref time if dwFlags == DMUS_TRACK_PARAMF_CLOCK. Otherwise, music time. */
+ REFERENCE_TIME* prtNext, /* Time of next parameter, relative to rtTime, in music or clock time units. */
+ void* pParam, /* Pointer to the parameter data. */
+ void * pStateData, /* State data for track instance. */
+ DWORD dwFlags) PURE; /* Control flags. */
+ STDMETHOD(SetParamEx) (THIS_ REFGUID rguidType,
+ REFERENCE_TIME rtTime,
+ void* pParam, /* Pointer to the parameter data. */
+ void * pStateData, /* State data for track instance. */
+ DWORD dwFlags) PURE; /* Control flags. */
+ STDMETHOD(Compose) (THIS_ IUnknown* pContext, /* Context for composition */
+ DWORD dwTrackGroup,
+ IDirectMusicTrack** ppResultTrack) PURE;
+ STDMETHOD(Join) (THIS_ IDirectMusicTrack* pNewTrack,
+ MUSIC_TIME mtJoin,
+ IUnknown* pContext, /* Context for joining */
+ DWORD dwTrackGroup,
+ IDirectMusicTrack** ppResultTrack) PURE;
+};
+
+/* CLSID's */
+DEFINE_GUID(CLSID_DirectMusicTempoTrack,0xd2ac2885, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(CLSID_DirectMusicSeqTrack,0xd2ac2886, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(CLSID_DirectMusicSysExTrack,0xd2ac2887, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(CLSID_DirectMusicTimeSigTrack,0xd2ac2888, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(CLSID_DirectMusicChordTrack,0xd2ac288b, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(CLSID_DirectMusicCommandTrack,0xd2ac288c, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(CLSID_DirectMusicStyleTrack,0xd2ac288d, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(CLSID_DirectMusicMotifTrack,0xd2ac288e, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(CLSID_DirectMusicSignPostTrack,0xf17e8672, 0xc3b4, 0x11d1, 0x87, 0xb, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(CLSID_DirectMusicBandTrack,0xd2ac2894, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(CLSID_DirectMusicChordMapTrack,0xd2ac2896, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(CLSID_DirectMusicMuteTrack,0xd2ac2898, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+
+/* New CLSID's for DX8 */
+DEFINE_GUID(CLSID_DirectMusicScriptTrack,0x4108fa85, 0x3586, 0x11d3, 0x8b, 0xd7, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xb6); /* {4108FA85-3586-11d3-8BD7-00600893B1B6} */
+DEFINE_GUID(CLSID_DirectMusicMarkerTrack,0x55a8fd00, 0x4288, 0x11d3, 0x9b, 0xd1, 0x8a, 0xd, 0x61, 0xc8, 0x88, 0x35);
+DEFINE_GUID(CLSID_DirectMusicSegmentTriggerTrack, 0xbae4d665, 0x4ea1, 0x11d3, 0x8b, 0xda, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xb6); /* {BAE4D665-4EA1-11d3-8BDA-00600893B1B6} */
+DEFINE_GUID(CLSID_DirectMusicLyricsTrack, 0x995c1cf5, 0x54ff, 0x11d3, 0x8b, 0xda, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xb6); /* {995C1CF5-54FF-11d3-8BDA-00600893B1B6} */
+DEFINE_GUID(CLSID_DirectMusicParamControlTrack, 0x4be0537b, 0x5c19, 0x11d3, 0x8b, 0xdc, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xb6); /* {4BE0537B-5C19-11d3-8BDC-00600893B1B6} */
+DEFINE_GUID(CLSID_DirectMusicWaveTrack,0xeed36461, 0x9ea5, 0x11d3, 0x9b, 0xd1, 0x0, 0x80, 0xc7, 0x15, 0xa, 0x74);
+
+/* IID's */
+DEFINE_GUID(IID_IDirectMusicTrack, 0xf96029a1, 0x4282, 0x11d2, 0x87, 0x17, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(IID_IDirectMusicTool,0xd2ac28ba, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+
+/* Interface IDs for DX8 */
+/* changed interfaces (GUID only) */
+DEFINE_GUID(IID_IDirectMusicTool8, 0xe674303, 0x3b05, 0x11d3, 0x9b, 0xd1, 0xf9, 0xe7, 0xf0, 0xa0, 0x15, 0x36);
+DEFINE_GUID(IID_IDirectMusicTrack8, 0xe674304, 0x3b05, 0x11d3, 0x9b, 0xd1, 0xf9, 0xe7, 0xf0, 0xa0, 0x15, 0x36);
+
+#ifdef __cplusplus
+}; /* extern "C" */
+#endif
+
+#include
+
+#endif /* #ifndef _DMPLUGIN_ */
diff --git a/src/dep/include/DXSDK/include/dmusbuff.h b/src/dep/include/DXSDK/include/dmusbuff.h
new file mode 100644
index 0000000..6841401
--- /dev/null
+++ b/src/dep/include/DXSDK/include/dmusbuff.h
@@ -0,0 +1,41 @@
+/***************************************************************************
+* *
+* DMusBuff.h -- This module defines the buffer format for DirectMusic *
+* Shared file between user mode and kernel mode components *
+* *
+* Copyright (c) 1998, Microsoft Corp. All rights reserved. *
+* *
+***************************************************************************/
+
+#ifndef _DMusBuff_
+#define _DMusBuff_
+
+/* Format of DirectMusic events in a buffer
+ *
+ * A buffer contains 1 or more events, each with the following header.
+ * Immediately following the header is the event data. The header+data
+ * size is rounded to the nearest quadword (8 bytes).
+ */
+
+#include /* Do not pad at end - that's where the data is */
+typedef struct _DMUS_EVENTHEADER *LPDMUS_EVENTHEADER;
+typedef struct _DMUS_EVENTHEADER
+{
+ DWORD cbEvent; /* Unrounded bytes in event */
+ DWORD dwChannelGroup; /* Channel group of event */
+ REFERENCE_TIME rtDelta; /* Delta from start time of entire buffer */
+ DWORD dwFlags; /* Flags DMUS_EVENT_xxx */
+} DMUS_EVENTHEADER;
+#include
+
+#define DMUS_EVENT_STRUCTURED 0x00000001 /* Unstructured data (SysEx, etc.) */
+
+/* The number of bytes to allocate for an event with 'cb' data bytes.
+ */
+#define QWORD_ALIGN(x) (((x) + 7) & ~7)
+#define DMUS_EVENT_SIZE(cb) QWORD_ALIGN(sizeof(DMUS_EVENTHEADER) + cb)
+
+
+#endif /* _DMusBuff_ */
+
+
diff --git a/src/dep/include/DXSDK/include/dmusicc.h b/src/dep/include/DXSDK/include/dmusicc.h
new file mode 100644
index 0000000..74f1868
--- /dev/null
+++ b/src/dep/include/DXSDK/include/dmusicc.h
@@ -0,0 +1,784 @@
+/************************************************************************
+* *
+* dmusicc.h -- This module defines the DirectMusic core API's *
+* *
+* Copyright (c) Microsoft Corporation. All rights reserved. *
+* *
+************************************************************************/
+
+#ifndef _DMUSICC_
+#define _DMUSICC_
+
+#include
+
+#define COM_NO_WINDOWS_H
+#include
+
+#include
+
+#include "dls1.h"
+#include "dmerror.h"
+#include "dmdls.h"
+#include "dsound.h"
+#include "dmusbuff.h"
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef ULONGLONG SAMPLE_TIME;
+typedef ULONGLONG SAMPLE_POSITION;
+typedef SAMPLE_TIME *LPSAMPLE_TIME;
+
+#define DMUS_MAX_DESCRIPTION 128
+#define DMUS_MAX_DRIVER 128
+
+typedef struct _DMUS_BUFFERDESC *LPDMUS_BUFFERDESC;
+typedef struct _DMUS_BUFFERDESC
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ GUID guidBufferFormat;
+ DWORD cbBuffer;
+} DMUS_BUFFERDESC;
+
+/* DMUS_EFFECT_ flags are used in the dwEffectFlags fields of both DMUS_PORTCAPS
+ * and DMUS_PORTPARAMS.
+ */
+#define DMUS_EFFECT_NONE 0x00000000
+#define DMUS_EFFECT_REVERB 0x00000001
+#define DMUS_EFFECT_CHORUS 0x00000002
+#define DMUS_EFFECT_DELAY 0x00000004
+
+/* For DMUS_PORTCAPS dwClass
+ */
+#define DMUS_PC_INPUTCLASS (0)
+#define DMUS_PC_OUTPUTCLASS (1)
+
+/* For DMUS_PORTCAPS dwFlags
+ */
+#define DMUS_PC_DLS (0x00000001) // Supports DLS downloading and DLS level 1.
+#define DMUS_PC_EXTERNAL (0x00000002) // External MIDI module.
+#define DMUS_PC_SOFTWARESYNTH (0x00000004) // Software synthesizer.
+#define DMUS_PC_MEMORYSIZEFIXED (0x00000008) // Memory size is fixed.
+#define DMUS_PC_GMINHARDWARE (0x00000010) // GM sound set is built in, no need to download.
+#define DMUS_PC_GSINHARDWARE (0x00000020) // GS sound set is built in.
+#define DMUS_PC_XGINHARDWARE (0x00000040) // XG sound set is built in.
+#define DMUS_PC_DIRECTSOUND (0x00000080) // Connects to DirectSound via a DirectSound buffer.
+#define DMUS_PC_SHAREABLE (0x00000100) // Synth can be actively shared by multiple apps at once.
+#define DMUS_PC_DLS2 (0x00000200) // Supports DLS2 instruments.
+#define DMUS_PC_AUDIOPATH (0x00000400) // Multiple outputs can be connected to DirectSound for audiopaths.
+#define DMUS_PC_WAVE (0x00000800) // Supports streaming and one shot waves.
+
+#define DMUS_PC_SYSTEMMEMORY (0x7FFFFFFF) // Sample memory is system memory.
+
+
+typedef struct _DMUS_PORTCAPS
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ GUID guidPort;
+ DWORD dwClass;
+ DWORD dwType;
+ DWORD dwMemorySize;
+ DWORD dwMaxChannelGroups;
+ DWORD dwMaxVoices;
+ DWORD dwMaxAudioChannels;
+ DWORD dwEffectFlags;
+ WCHAR wszDescription[DMUS_MAX_DESCRIPTION];
+} DMUS_PORTCAPS;
+
+typedef DMUS_PORTCAPS *LPDMUS_PORTCAPS;
+
+/* Values for DMUS_PORTCAPS dwType. This field indicates the underlying
+ * driver type of the port.
+ */
+#define DMUS_PORT_WINMM_DRIVER (0)
+#define DMUS_PORT_USER_MODE_SYNTH (1)
+#define DMUS_PORT_KERNEL_MODE (2)
+
+/* These flags (set in dwValidParams) indicate which other members of the */
+/* DMUS_PORTPARAMS are valid. */
+/* */
+#define DMUS_PORTPARAMS_VOICES 0x00000001
+#define DMUS_PORTPARAMS_CHANNELGROUPS 0x00000002
+#define DMUS_PORTPARAMS_AUDIOCHANNELS 0x00000004
+#define DMUS_PORTPARAMS_SAMPLERATE 0x00000008
+#define DMUS_PORTPARAMS_EFFECTS 0x00000020
+#define DMUS_PORTPARAMS_SHARE 0x00000040
+#define DMUS_PORTPARAMS_FEATURES 0x00000080 /* DirectX 8.0 and above */
+
+typedef struct _DMUS_PORTPARAMS
+{
+ DWORD dwSize;
+ DWORD dwValidParams;
+ DWORD dwVoices;
+ DWORD dwChannelGroups;
+ DWORD dwAudioChannels;
+ DWORD dwSampleRate;
+ DWORD dwEffectFlags;
+ BOOL fShare;
+} DMUS_PORTPARAMS7;
+
+typedef struct _DMUS_PORTPARAMS8
+{
+ DWORD dwSize;
+ DWORD dwValidParams;
+ DWORD dwVoices;
+ DWORD dwChannelGroups;
+ DWORD dwAudioChannels;
+ DWORD dwSampleRate;
+ DWORD dwEffectFlags;
+ BOOL fShare;
+ DWORD dwFeatures;
+} DMUS_PORTPARAMS8;
+
+#define DMUS_PORT_FEATURE_AUDIOPATH 0x00000001 /* Supports audiopath connection to DirectSound buffers. */
+#define DMUS_PORT_FEATURE_STREAMING 0x00000002 /* Supports streaming waves through the synth. */
+
+
+typedef DMUS_PORTPARAMS8 DMUS_PORTPARAMS;
+typedef DMUS_PORTPARAMS *LPDMUS_PORTPARAMS;
+
+typedef struct _DMUS_SYNTHSTATS *LPDMUS_SYNTHSTATS;
+typedef struct _DMUS_SYNTHSTATS8 *LPDMUS_SYNTHSTATS8;
+typedef struct _DMUS_SYNTHSTATS
+{
+ DWORD dwSize; /* Size in bytes of the structure */
+ DWORD dwValidStats; /* Flags indicating which fields below are valid. */
+ DWORD dwVoices; /* Average number of voices playing. */
+ DWORD dwTotalCPU; /* Total CPU usage as percent * 100. */
+ DWORD dwCPUPerVoice; /* CPU per voice as percent * 100. */
+ DWORD dwLostNotes; /* Number of notes lost in 1 second. */
+ DWORD dwFreeMemory; /* Free memory in bytes */
+ long lPeakVolume; /* Decibel level * 100. */
+} DMUS_SYNTHSTATS;
+
+typedef struct _DMUS_SYNTHSTATS8
+{
+ DWORD dwSize; /* Size in bytes of the structure */
+ DWORD dwValidStats; /* Flags indicating which fields below are valid. */
+ DWORD dwVoices; /* Average number of voices playing. */
+ DWORD dwTotalCPU; /* Total CPU usage as percent * 100. */
+ DWORD dwCPUPerVoice; /* CPU per voice as percent * 100. */
+ DWORD dwLostNotes; /* Number of notes lost in 1 second. */
+ DWORD dwFreeMemory; /* Free memory in bytes */
+ long lPeakVolume; /* Decibel level * 100. */
+ DWORD dwSynthMemUse; /* Memory used by synth wave data */
+} DMUS_SYNTHSTATS8;
+
+#define DMUS_SYNTHSTATS_VOICES (1 << 0)
+#define DMUS_SYNTHSTATS_TOTAL_CPU (1 << 1)
+#define DMUS_SYNTHSTATS_CPU_PER_VOICE (1 << 2)
+#define DMUS_SYNTHSTATS_LOST_NOTES (1 << 3)
+#define DMUS_SYNTHSTATS_PEAK_VOLUME (1 << 4)
+#define DMUS_SYNTHSTATS_FREE_MEMORY (1 << 5)
+
+#define DMUS_SYNTHSTATS_SYSTEMMEMORY DMUS_PC_SYSTEMMEMORY
+
+typedef struct _DMUS_WAVES_REVERB_PARAMS
+{
+ float fInGain; /* Input gain in dB (to avoid output overflows) */
+ float fReverbMix; /* Reverb mix in dB. 0dB means 100% wet reverb (no direct signal)
+ Negative values gives less wet signal.
+ The coeficients are calculated so that the overall output level stays
+ (approximately) constant regardless of the ammount of reverb mix. */
+ float fReverbTime; /* The reverb decay time, in milliseconds. */
+ float fHighFreqRTRatio; /* The ratio of the high frequencies to the global reverb time.
+ Unless very 'splashy-bright' reverbs are wanted, this should be set to
+ a value < 1.0.
+ For example if dRevTime==1000ms and dHighFreqRTRatio=0.1 than the
+ decay time for high frequencies will be 100ms.*/
+
+} DMUS_WAVES_REVERB_PARAMS;
+
+/* Note: Default values for Reverb are:
+ fInGain = 0.0dB (no change in level)
+ fReverbMix = -10.0dB (a reasonable reverb mix)
+ fReverbTime = 1000.0ms (one second global reverb time)
+ fHighFreqRTRatio = 0.001 (the ratio of the high frequencies to the global reverb time)
+*/
+
+typedef enum
+{
+ DMUS_CLOCK_SYSTEM = 0,
+ DMUS_CLOCK_WAVE = 1
+} DMUS_CLOCKTYPE;
+
+#define DMUS_CLOCKF_GLOBAL 0x00000001
+
+typedef struct _DMUS_CLOCKINFO7 *LPDMUS_CLOCKINFO7;
+typedef struct _DMUS_CLOCKINFO7
+{
+ DWORD dwSize;
+ DMUS_CLOCKTYPE ctType;
+ GUID guidClock; /* Identifies this time source */
+ WCHAR wszDescription[DMUS_MAX_DESCRIPTION];
+} DMUS_CLOCKINFO7;
+
+typedef struct _DMUS_CLOCKINFO8 *LPDMUS_CLOCKINFO8;
+typedef struct _DMUS_CLOCKINFO8
+{
+ DWORD dwSize;
+ DMUS_CLOCKTYPE ctType;
+ GUID guidClock; /* Identifies this time source */
+ WCHAR wszDescription[DMUS_MAX_DESCRIPTION];
+ DWORD dwFlags;
+} DMUS_CLOCKINFO8;
+
+typedef DMUS_CLOCKINFO8 DMUS_CLOCKINFO;
+typedef DMUS_CLOCKINFO *LPDMUS_CLOCKINFO;
+
+/* Default bus identifiers
+ *
+ * The first 17 are direct mappings to the destinations defined in both
+ * the MMA DLS Level 2 specification and the Microsoft Multi-Channel audio
+ * specification.
+ */
+#define DSBUSID_FIRST_SPKR_LOC 0
+#define DSBUSID_FRONT_LEFT 0
+#define DSBUSID_LEFT 0 /* Front left is also just left */
+#define DSBUSID_FRONT_RIGHT 1
+#define DSBUSID_RIGHT 1 /* Ditto front right */
+#define DSBUSID_FRONT_CENTER 2
+#define DSBUSID_LOW_FREQUENCY 3
+#define DSBUSID_BACK_LEFT 4
+#define DSBUSID_BACK_RIGHT 5
+#define DSBUSID_FRONT_LEFT_OF_CENTER 6
+#define DSBUSID_FRONT_RIGHT_OF_CENTER 7
+#define DSBUSID_BACK_CENTER 8
+#define DSBUSID_SIDE_LEFT 9
+#define DSBUSID_SIDE_RIGHT 10
+#define DSBUSID_TOP_CENTER 11
+#define DSBUSID_TOP_FRONT_LEFT 12
+#define DSBUSID_TOP_FRONT_CENTER 13
+#define DSBUSID_TOP_FRONT_RIGHT 14
+#define DSBUSID_TOP_BACK_LEFT 15
+#define DSBUSID_TOP_BACK_CENTER 16
+#define DSBUSID_TOP_BACK_RIGHT 17
+#define DSBUSID_LAST_SPKR_LOC 17
+
+#define DSBUSID_IS_SPKR_LOC(id) ( ((id) >= DSBUSID_FIRST_SPKR_LOC) && ((id) <= DSBUSID_LAST_SPKR_LOC) )
+
+/* These bus identifiers are for the standard DLS effect sends
+ */
+#define DSBUSID_REVERB_SEND 64
+#define DSBUSID_CHORUS_SEND 65
+
+/* Dynamic bus identifiers start here. See the documentation for how
+ * synthesizers map the output of voices to static and dynamic
+ * bus identifiers.
+ */
+#define DSBUSID_DYNAMIC_0 512
+
+/* Null bus, used to identify busses that have no function mapping.
+*/
+#define DSBUSID_NULL 0xFFFFFFFF
+
+interface IDirectMusic;
+interface IDirectMusic8;
+interface IDirectMusicBuffer;
+interface IDirectMusicPort;
+interface IDirectMusicThru;
+interface IReferenceClock;
+
+#ifndef __cplusplus
+
+typedef interface IDirectMusic IDirectMusic;
+typedef interface IDirectMusic8 IDirectMusic8;
+typedef interface IDirectMusicPort IDirectMusicPort;
+typedef interface IDirectMusicBuffer IDirectMusicBuffer;
+typedef interface IDirectMusicThru IDirectMusicThru;
+typedef interface IReferenceClock IReferenceClock;
+
+#endif /* C++ */
+
+typedef IDirectMusic *LPDIRECTMUSIC;
+typedef IDirectMusic8 *LPDIRECTMUSIC8;
+typedef IDirectMusicPort *LPDIRECTMUSICPORT;
+typedef IDirectMusicBuffer *LPDIRECTMUSICBUFFER;
+
+#undef INTERFACE
+#define INTERFACE IDirectMusic
+DECLARE_INTERFACE_(IDirectMusic, IUnknown)
+{
+ /* IUnknown */
+ STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* IDirectMusic */
+ STDMETHOD(EnumPort) (THIS_ DWORD dwIndex,
+ LPDMUS_PORTCAPS pPortCaps) PURE;
+ STDMETHOD(CreateMusicBuffer) (THIS_ LPDMUS_BUFFERDESC pBufferDesc,
+ LPDIRECTMUSICBUFFER *ppBuffer,
+ LPUNKNOWN pUnkOuter) PURE;
+ STDMETHOD(CreatePort) (THIS_ REFCLSID rclsidPort,
+ LPDMUS_PORTPARAMS pPortParams,
+ LPDIRECTMUSICPORT *ppPort,
+ LPUNKNOWN pUnkOuter) PURE;
+ STDMETHOD(EnumMasterClock) (THIS_ DWORD dwIndex,
+ LPDMUS_CLOCKINFO lpClockInfo) PURE;
+ STDMETHOD(GetMasterClock) (THIS_ LPGUID pguidClock,
+ IReferenceClock **ppReferenceClock) PURE;
+ STDMETHOD(SetMasterClock) (THIS_ REFGUID rguidClock) PURE;
+ STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE;
+ STDMETHOD(GetDefaultPort) (THIS_ LPGUID pguidPort) PURE;
+ STDMETHOD(SetDirectSound) (THIS_ LPDIRECTSOUND pDirectSound,
+ HWND hWnd) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirectMusic8
+DECLARE_INTERFACE_(IDirectMusic8, IDirectMusic)
+{
+ /* IUnknown */
+ STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* IDirectMusic */
+ STDMETHOD(EnumPort) (THIS_ DWORD dwIndex,
+ LPDMUS_PORTCAPS pPortCaps) PURE;
+ STDMETHOD(CreateMusicBuffer) (THIS_ LPDMUS_BUFFERDESC pBufferDesc,
+ LPDIRECTMUSICBUFFER *ppBuffer,
+ LPUNKNOWN pUnkOuter) PURE;
+ STDMETHOD(CreatePort) (THIS_ REFCLSID rclsidPort,
+ LPDMUS_PORTPARAMS pPortParams,
+ LPDIRECTMUSICPORT *ppPort,
+ LPUNKNOWN pUnkOuter) PURE;
+ STDMETHOD(EnumMasterClock) (THIS_ DWORD dwIndex,
+ LPDMUS_CLOCKINFO lpClockInfo) PURE;
+ STDMETHOD(GetMasterClock) (THIS_ LPGUID pguidClock,
+ IReferenceClock **ppReferenceClock) PURE;
+ STDMETHOD(SetMasterClock) (THIS_ REFGUID rguidClock) PURE;
+ STDMETHOD(Activate) (THIS_ BOOL fEnable) PURE;
+ STDMETHOD(GetDefaultPort) (THIS_ LPGUID pguidPort) PURE;
+ STDMETHOD(SetDirectSound) (THIS_ LPDIRECTSOUND pDirectSound,
+ HWND hWnd) PURE;
+ /* IDirectMusic8 */
+ STDMETHOD(SetExternalMasterClock)
+ (THIS_ IReferenceClock *pClock) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDirectMusicBuffer
+DECLARE_INTERFACE_(IDirectMusicBuffer, IUnknown)
+{
+ /* IUnknown */
+ STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* IDirectMusicBuffer */
+ STDMETHOD(Flush) (THIS) PURE;
+ STDMETHOD(TotalTime) (THIS_ LPREFERENCE_TIME prtTime) PURE;
+
+ STDMETHOD(PackStructured) (THIS_ REFERENCE_TIME rt,
+ DWORD dwChannelGroup,
+ DWORD dwChannelMessage) PURE;
+
+ STDMETHOD(PackUnstructured) (THIS_ REFERENCE_TIME rt,
+ DWORD dwChannelGroup,
+ DWORD cb,
+ LPBYTE lpb) PURE;
+
+ STDMETHOD(ResetReadPtr) (THIS) PURE;
+ STDMETHOD(GetNextEvent) (THIS_ LPREFERENCE_TIME prt,
+ LPDWORD pdwChannelGroup,
+ LPDWORD pdwLength,
+ LPBYTE *ppData) PURE;
+
+ STDMETHOD(GetRawBufferPtr) (THIS_ LPBYTE *ppData) PURE;
+ STDMETHOD(GetStartTime) (THIS_ LPREFERENCE_TIME prt) PURE;
+ STDMETHOD(GetUsedBytes) (THIS_ LPDWORD pcb) PURE;
+ STDMETHOD(GetMaxBytes) (THIS_ LPDWORD pcb) PURE;
+ STDMETHOD(GetBufferFormat) (THIS_ LPGUID pGuidFormat) PURE;
+
+ STDMETHOD(SetStartTime) (THIS_ REFERENCE_TIME rt) PURE;
+ STDMETHOD(SetUsedBytes) (THIS_ DWORD cb) PURE;
+};
+
+typedef IDirectMusicBuffer IDirectMusicBuffer8;
+typedef IDirectMusicBuffer8 *LPDIRECTMUSICBUFFER8;
+
+#undef INTERFACE
+#define INTERFACE IDirectMusicInstrument
+DECLARE_INTERFACE_(IDirectMusicInstrument, IUnknown)
+{
+ /* IUnknown */
+ STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* IDirectMusicInstrument */
+ STDMETHOD(GetPatch) (THIS_ DWORD* pdwPatch) PURE;
+ STDMETHOD(SetPatch) (THIS_ DWORD dwPatch) PURE;
+};
+
+typedef IDirectMusicInstrument IDirectMusicInstrument8;
+typedef IDirectMusicInstrument8 *LPDIRECTMUSICINSTRUMENT8;
+
+#undef INTERFACE
+#define INTERFACE IDirectMusicDownloadedInstrument
+DECLARE_INTERFACE_(IDirectMusicDownloadedInstrument, IUnknown)
+{
+ /* IUnknown */
+ STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* IDirectMusicDownloadedInstrument */
+ /* None at this time */
+};
+
+typedef IDirectMusicDownloadedInstrument IDirectMusicDownloadedInstrument8;
+typedef IDirectMusicDownloadedInstrument8 *LPDIRECTMUSICDOWNLOADEDINSTRUMENT8;
+
+#undef INTERFACE
+#define INTERFACE IDirectMusicCollection
+DECLARE_INTERFACE_(IDirectMusicCollection, IUnknown)
+{
+ /* IUnknown */
+ STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* IDirectMusicCollection */
+ STDMETHOD(GetInstrument) (THIS_ DWORD dwPatch,
+ IDirectMusicInstrument** ppInstrument) PURE;
+ STDMETHOD(EnumInstrument) (THIS_ DWORD dwIndex,
+ DWORD* pdwPatch,
+ LPWSTR pwszName,
+ DWORD dwNameLen) PURE;
+};
+
+typedef IDirectMusicCollection IDirectMusicCollection8;
+typedef IDirectMusicCollection8 *LPDIRECTMUSICCOLLECTION8;
+
+#undef INTERFACE
+#define INTERFACE IDirectMusicDownload
+DECLARE_INTERFACE_(IDirectMusicDownload , IUnknown)
+{
+ /* IUnknown */
+ STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* IDirectMusicDownload */
+ STDMETHOD(GetBuffer) (THIS_ void** ppvBuffer,
+ DWORD* pdwSize) PURE;
+};
+
+typedef IDirectMusicDownload IDirectMusicDownload8;
+typedef IDirectMusicDownload8 *LPDIRECTMUSICDOWNLOAD8;
+
+#undef INTERFACE
+#define INTERFACE IDirectMusicPortDownload
+DECLARE_INTERFACE_(IDirectMusicPortDownload, IUnknown)
+{
+ /* IUnknown */
+ STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* IDirectMusicPortDownload */
+ STDMETHOD(GetBuffer) (THIS_ DWORD dwDLId,
+ IDirectMusicDownload** ppIDMDownload) PURE;
+ STDMETHOD(AllocateBuffer) (THIS_ DWORD dwSize,
+ IDirectMusicDownload** ppIDMDownload) PURE;
+ STDMETHOD(GetDLId) (THIS_ DWORD* pdwStartDLId,
+ DWORD dwCount) PURE;
+ STDMETHOD(GetAppend) (THIS_ DWORD* pdwAppend) PURE;
+ STDMETHOD(Download) (THIS_ IDirectMusicDownload* pIDMDownload) PURE;
+ STDMETHOD(Unload) (THIS_ IDirectMusicDownload* pIDMDownload) PURE;
+};
+
+typedef IDirectMusicPortDownload IDirectMusicPortDownload8;
+typedef IDirectMusicPortDownload8 *LPDIRECTMUSICPORTDOWNLOAD8;
+
+/* Standard values for voice priorities. Numerically higher priorities are higher in priority.
+ * These priorities are used to set the voice priority for all voices on a channel. They are
+ * used in the dwPriority parameter of IDirectMusicPort::GetPriority and returned in the
+ * lpwPriority parameter of pdwPriority.
+ *
+ * These priorities are shared with DirectSound.
+ */
+
+#ifndef _DIRECTAUDIO_PRIORITIES_DEFINED_
+#define _DIRECTAUDIO_PRIORITIES_DEFINED_
+
+#define DAUD_CRITICAL_VOICE_PRIORITY (0xF0000000)
+#define DAUD_HIGH_VOICE_PRIORITY (0xC0000000)
+#define DAUD_STANDARD_VOICE_PRIORITY (0x80000000)
+#define DAUD_LOW_VOICE_PRIORITY (0x40000000)
+#define DAUD_PERSIST_VOICE_PRIORITY (0x10000000)
+
+/* These are the default priorities assigned if not overridden. By default priorities are
+ * equal across channel groups (e.g. channel 5 on channel group 1 has the same priority as
+ * channel 5 on channel group 2).
+ *
+ * In accordance with DLS level 1, channel 10 has the highest priority, followed by 1 through 16
+ * except for 10.
+ */
+#define DAUD_CHAN1_VOICE_PRIORITY_OFFSET (0x0000000E)
+#define DAUD_CHAN2_VOICE_PRIORITY_OFFSET (0x0000000D)
+#define DAUD_CHAN3_VOICE_PRIORITY_OFFSET (0x0000000C)
+#define DAUD_CHAN4_VOICE_PRIORITY_OFFSET (0x0000000B)
+#define DAUD_CHAN5_VOICE_PRIORITY_OFFSET (0x0000000A)
+#define DAUD_CHAN6_VOICE_PRIORITY_OFFSET (0x00000009)
+#define DAUD_CHAN7_VOICE_PRIORITY_OFFSET (0x00000008)
+#define DAUD_CHAN8_VOICE_PRIORITY_OFFSET (0x00000007)
+#define DAUD_CHAN9_VOICE_PRIORITY_OFFSET (0x00000006)
+#define DAUD_CHAN10_VOICE_PRIORITY_OFFSET (0x0000000F)
+#define DAUD_CHAN11_VOICE_PRIORITY_OFFSET (0x00000005)
+#define DAUD_CHAN12_VOICE_PRIORITY_OFFSET (0x00000004)
+#define DAUD_CHAN13_VOICE_PRIORITY_OFFSET (0x00000003)
+#define DAUD_CHAN14_VOICE_PRIORITY_OFFSET (0x00000002)
+#define DAUD_CHAN15_VOICE_PRIORITY_OFFSET (0x00000001)
+#define DAUD_CHAN16_VOICE_PRIORITY_OFFSET (0x00000000)
+
+
+#define DAUD_CHAN1_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN1_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN2_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN2_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN3_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN3_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN4_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN4_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN5_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN5_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN6_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN6_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN7_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN7_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN8_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN8_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN9_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN9_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN10_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN10_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN11_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN11_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN12_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN12_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN13_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN13_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN14_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN14_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN15_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN15_VOICE_PRIORITY_OFFSET)
+#define DAUD_CHAN16_DEF_VOICE_PRIORITY (DAUD_STANDARD_VOICE_PRIORITY | DAUD_CHAN16_VOICE_PRIORITY_OFFSET)
+
+#endif /* _DIRECTAUDIO_PRIORITIES_DEFINED_ */
+
+
+#undef INTERFACE
+#define INTERFACE IDirectMusicPort
+DECLARE_INTERFACE_(IDirectMusicPort, IUnknown)
+{
+ /* IUnknown */
+ STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* IDirectMusicPort */
+ /* */
+ STDMETHOD(PlayBuffer) (THIS_ LPDIRECTMUSICBUFFER pBuffer) PURE;
+ STDMETHOD(SetReadNotificationHandle) (THIS_ HANDLE hEvent) PURE;
+ STDMETHOD(Read) (THIS_ LPDIRECTMUSICBUFFER pBuffer) PURE;
+ STDMETHOD(DownloadInstrument) (THIS_ IDirectMusicInstrument *pInstrument,
+ IDirectMusicDownloadedInstrument **ppDownloadedInstrument,
+ DMUS_NOTERANGE *pNoteRanges,
+ DWORD dwNumNoteRanges) PURE;
+ STDMETHOD(UnloadInstrument) (THIS_ IDirectMusicDownloadedInstrument *pDownloadedInstrument) PURE;
+ STDMETHOD(GetLatencyClock) (THIS_ IReferenceClock **ppClock) PURE;
+ STDMETHOD(GetRunningStats) (THIS_ LPDMUS_SYNTHSTATS pStats) PURE;
+ STDMETHOD(Compact) (THIS) PURE;
+ STDMETHOD(GetCaps) (THIS_ LPDMUS_PORTCAPS pPortCaps) PURE;
+ STDMETHOD(DeviceIoControl) (THIS_ DWORD dwIoControlCode,
+ LPVOID lpInBuffer,
+ DWORD nInBufferSize,
+ LPVOID lpOutBuffer,
+ DWORD nOutBufferSize,
+ LPDWORD lpBytesReturned,
+ LPOVERLAPPED lpOverlapped) PURE;
+ STDMETHOD(SetNumChannelGroups) (THIS_ DWORD dwChannelGroups) PURE;
+ STDMETHOD(GetNumChannelGroups) (THIS_ LPDWORD pdwChannelGroups) PURE;
+ STDMETHOD(Activate) (THIS_ BOOL fActive) PURE;
+ STDMETHOD(SetChannelPriority) (THIS_ DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority) PURE;
+ STDMETHOD(GetChannelPriority) (THIS_ DWORD dwChannelGroup, DWORD dwChannel, LPDWORD pdwPriority) PURE;
+ STDMETHOD(SetDirectSound) (THIS_ LPDIRECTSOUND pDirectSound, LPDIRECTSOUNDBUFFER pDirectSoundBuffer) PURE;
+ STDMETHOD(GetFormat) (THIS_ LPWAVEFORMATEX pWaveFormatEx, LPDWORD pdwWaveFormatExSize, LPDWORD pdwBufferSize) PURE;
+};
+
+typedef IDirectMusicPort IDirectMusicPort8;
+typedef IDirectMusicPort8 *LPDIRECTMUSICPORT8;
+
+#undef INTERFACE
+#define INTERFACE IDirectMusicThru
+DECLARE_INTERFACE_(IDirectMusicThru, IUnknown)
+{
+ /* IUnknown */
+ STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* IDirectMusicThru
+ */
+ STDMETHOD(ThruChannel) (THIS_ DWORD dwSourceChannelGroup,
+ DWORD dwSourceChannel,
+ DWORD dwDestinationChannelGroup,
+ DWORD dwDestinationChannel,
+ LPDIRECTMUSICPORT pDestinationPort) PURE;
+};
+
+typedef IDirectMusicThru IDirectMusicThru8;
+typedef IDirectMusicThru8 *LPDIRECTMUSICTHRU8;
+
+#ifndef __IReferenceClock_INTERFACE_DEFINED__
+#define __IReferenceClock_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IReferenceClock,0x56a86897,0x0ad4,0x11ce,0xb0,0x3a,0x00,0x20,0xaf,0x0b,0xa7,0x70);
+
+#undef INTERFACE
+#define INTERFACE IReferenceClock
+DECLARE_INTERFACE_(IReferenceClock, IUnknown)
+{
+ /* IUnknown */
+ STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID FAR *) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* IReferenceClock */
+ /* */
+
+ /* get the time now */
+ STDMETHOD(GetTime) (THIS_ REFERENCE_TIME *pTime) PURE;
+
+ /* ask for an async notification that a time has elapsed */
+ STDMETHOD(AdviseTime) (THIS_ REFERENCE_TIME baseTime, /* base time */
+ REFERENCE_TIME streamTime, /* stream offset time */
+ HANDLE hEvent, /* advise via this event */
+ DWORD * pdwAdviseCookie) PURE; /* where your cookie goes */
+
+ /* ask for an async periodic notification that a time has elapsed */
+ STDMETHOD(AdvisePeriodic) (THIS_ REFERENCE_TIME startTime, /* starting at this time */
+ REFERENCE_TIME periodTime, /* time between notifications */
+ HANDLE hSemaphore, /* advise via a semaphore */
+ DWORD * pdwAdviseCookie) PURE; /* where your cookie goes */
+
+ /* cancel a request for notification */
+ STDMETHOD(Unadvise) (THIS_ DWORD dwAdviseCookie) PURE;
+};
+
+#endif /* __IReferenceClock_INTERFACE_DEFINED__ */
+
+DEFINE_GUID(CLSID_DirectMusic,0x636b9f10,0x0c7d,0x11d1,0x95,0xb2,0x00,0x20,0xaf,0xdc,0x74,0x21);
+DEFINE_GUID(CLSID_DirectMusicCollection,0x480ff4b0, 0x28b2, 0x11d1, 0xbe, 0xf7, 0x0, 0xc0, 0x4f, 0xbf, 0x8f, 0xef);
+DEFINE_GUID(CLSID_DirectMusicSynth,0x58C2B4D0,0x46E7,0x11D1,0x89,0xAC,0x00,0xA0,0xC9,0x05,0x41,0x29);
+
+DEFINE_GUID(IID_IDirectMusic,0x6536115a,0x7b2d,0x11d2,0xba,0x18,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(IID_IDirectMusicBuffer,0xd2ac2878, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(IID_IDirectMusicPort, 0x08f2d8c9,0x37c2,0x11d2,0xb9,0xf9,0x00,0x00,0xf8,0x75,0xac,0x12);
+DEFINE_GUID(IID_IDirectMusicThru, 0xced153e7, 0x3606, 0x11d2, 0xb9, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12);
+DEFINE_GUID(IID_IDirectMusicPortDownload,0xd2ac287a, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(IID_IDirectMusicDownload,0xd2ac287b, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(IID_IDirectMusicCollection,0xd2ac287c, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(IID_IDirectMusicInstrument,0xd2ac287d, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(IID_IDirectMusicDownloadedInstrument,0xd2ac287e, 0xb39b, 0x11d1, 0x87, 0x4, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+
+
+/* Alternate interface ID for IID_IDirectMusic, available in DX7 release and after. */
+DEFINE_GUID(IID_IDirectMusic2,0x6fc2cae1, 0xbc78, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6);
+
+DEFINE_GUID(IID_IDirectMusic8,0x2d3629f7,0x813d,0x4939,0x85,0x08,0xf0,0x5c,0x6b,0x75,0xfd,0x97);
+
+#define IID_IDirectMusicThru8 IID_IDirectMusicThru
+#define IID_IDirectMusicPortDownload8 IID_IDirectMusicPortDownload
+#define IID_IDirectMusicDownload8 IID_IDirectMusicDownload
+#define IID_IDirectMusicCollection8 IID_IDirectMusicCollection
+#define IID_IDirectMusicInstrument8 IID_IDirectMusicInstrument
+#define IID_IDirectMusicDownloadedInstrument8 IID_IDirectMusicDownloadedInstrument
+#define IID_IDirectMusicPort8 IID_IDirectMusicPort
+
+
+/* Property Query GUID_DMUS_PROP_GM_Hardware - Local GM set, no need to download
+ * Property Query GUID_DMUS_PROP_GS_Hardware - Local GS set, no need to download
+ * Property Query GUID_DMUS_PROP_XG_Hardware - Local XG set, no need to download
+ * Property Query GUID_DMUS_PROP_DLS1 - Support DLS level 1
+ * Property Query GUID_DMUS_PROP_INSTRUMENT2 - Support new INSTRUMENT2 download format
+ * Property Query GUID_DMUS_PROP_XG_Capable - Support minimum requirements of XG
+ * Property Query GUID_DMUS_PROP_GS_Capable - Support minimum requirements of GS
+ * Property Query GUID_DMUS_PROP_SynthSink_DSOUND - Synthsink talks to DirectSound
+ * Property Query GUID_DMUS_PROP_SynthSink_WAVE - Synthsink talks to Wave device
+ *
+ * Item 0: Supported
+ * Returns a DWORD which is non-zero if the feature is supported
+ */
+DEFINE_GUID(GUID_DMUS_PROP_GM_Hardware, 0x178f2f24, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12);
+DEFINE_GUID(GUID_DMUS_PROP_GS_Hardware, 0x178f2f25, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12);
+DEFINE_GUID(GUID_DMUS_PROP_XG_Hardware, 0x178f2f26, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12);
+DEFINE_GUID(GUID_DMUS_PROP_XG_Capable, 0x6496aba1, 0x61b0, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6);
+DEFINE_GUID(GUID_DMUS_PROP_GS_Capable, 0x6496aba2, 0x61b0, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6);
+DEFINE_GUID(GUID_DMUS_PROP_DLS1, 0x178f2f27, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12);
+DEFINE_GUID(GUID_DMUS_PROP_DLS2, 0xf14599e5, 0x4689, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6);
+DEFINE_GUID(GUID_DMUS_PROP_INSTRUMENT2, 0x865fd372, 0x9f67, 0x11d2, 0x87, 0x2a, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(GUID_DMUS_PROP_SynthSink_DSOUND,0xaa97844, 0xc877, 0x11d1, 0x87, 0xc, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(GUID_DMUS_PROP_SynthSink_WAVE,0xaa97845, 0xc877, 0x11d1, 0x87, 0xc, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+DEFINE_GUID(GUID_DMUS_PROP_SampleMemorySize, 0x178f2f28, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12);
+DEFINE_GUID(GUID_DMUS_PROP_SamplePlaybackRate, 0x2a91f713, 0xa4bf, 0x11d2, 0xbb, 0xdf, 0x0, 0x60, 0x8, 0x33, 0xdb, 0xd8);
+
+/* Property Get/Set GUID_DMUS_PROP_WriteLatency
+ *
+ * Item 0: Synth buffer write latency, in milliseconds
+ * Get/Set SynthSink latency, the average time after the play head that the next buffer gets written.
+ */
+DEFINE_GUID(GUID_DMUS_PROP_WriteLatency,0x268a0fa0, 0x60f2, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6);
+
+/* Property Get/Set GUID_DMUS_PROP_WritePeriod
+ *
+ * Item 0: Synth buffer write period, in milliseconds
+ * Get/Set SynthSink buffer write period, time span between successive writes.
+ */
+DEFINE_GUID(GUID_DMUS_PROP_WritePeriod,0x268a0fa1, 0x60f2, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6);
+
+/* Property Get GUID_DMUS_PROP_MemorySize
+ *
+ * Item 0: Memory size
+ * Returns a DWORD containing the total number of bytes of sample RAM
+ */
+DEFINE_GUID(GUID_DMUS_PROP_MemorySize, 0x178f2f28, 0xc364, 0x11d1, 0xa7, 0x60, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12);
+
+/* Property Set GUID_DMUS_PROP_WavesReverb
+ *
+ * Item 0: DMUS_WAVES_REVERB structure
+ * Sets reverb parameters
+ */
+DEFINE_GUID(GUID_DMUS_PROP_WavesReverb,0x4cb5622, 0x32e5, 0x11d2, 0xaf, 0xa6, 0x0, 0xaa, 0x0, 0x24, 0xd8, 0xb6);
+
+/* Property Set GUID_DMUS_PROP_Effects
+ *
+ * Item 0: DWORD with effects flags.
+ * Get/Set effects bits, same as dwEffectFlags in DMUS_PORTPARAMS and DMUS_PORTCAPS:
+ * DMUS_EFFECT_NONE
+ * DMUS_EFFECT_REVERB
+ * DMUS_EFFECT_CHORUS
+ */
+DEFINE_GUID(GUID_DMUS_PROP_Effects, 0xcda8d611, 0x684a, 0x11d2, 0x87, 0x1e, 0x0, 0x60, 0x8, 0x93, 0xb1, 0xbd);
+
+/* Property Set GUID_DMUS_PROP_LegacyCaps
+ *
+ * Item 0: The MIDINCAPS or MIDIOUTCAPS which describes the port's underlying WinMM device. This property is only supported
+ * by ports which wrap WinMM devices.
+ */
+
+DEFINE_GUID(GUID_DMUS_PROP_LegacyCaps,0xcfa7cdc2, 0x00a1, 0x11d2, 0xaa, 0xd5, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12);
+
+/* Property Set GUID_DMUS_PROP_Volume
+ *
+ * Item 0: A long which contains an offset, in 1/100 dB, to be added to the final volume
+ *
+ */
+DEFINE_GUID(GUID_DMUS_PROP_Volume, 0xfedfae25L, 0xe46e, 0x11d1, 0xaa, 0xce, 0x00, 0x00, 0xf8, 0x75, 0xac, 0x12);
+
+/* Min and Max values for setting volume with GUID_DMUS_PROP_Volume */
+
+#define DMUS_VOLUME_MAX 2000 /* +20 dB */
+#define DMUS_VOLUME_MIN -20000 /* -200 dB */
+
+#ifdef __cplusplus
+}; /* extern "C" */
+#endif
+
+#include
+
+#endif /* #ifndef _DMUSICC_ */
diff --git a/src/dep/include/DXSDK/include/dmusicf.h b/src/dep/include/DXSDK/include/dmusicf.h
new file mode 100644
index 0000000..4f51838
--- /dev/null
+++ b/src/dep/include/DXSDK/include/dmusicf.h
@@ -0,0 +1,2199 @@
+/************************************************************************
+* *
+* dmusicf.h -- This module defines the DirectMusic file formats *
+* *
+* Copyright (c) Microsoft Corporation. All rights reserved. *
+* *
+************************************************************************/
+
+#ifndef _DMUSICF_
+#define _DMUSICF_
+
+
+#include
+
+#define COM_NO_WINDOWS_H
+#include
+
+#include
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+interface IDirectMusicCollection;
+#ifndef __cplusplus
+typedef interface IDirectMusicCollection IDirectMusicCollection;
+#endif
+
+/* Common chunks */
+
+#define DMUS_FOURCC_GUID_CHUNK mmioFOURCC('g','u','i','d')
+#define DMUS_FOURCC_INFO_LIST mmioFOURCC('I','N','F','O')
+#define DMUS_FOURCC_UNFO_LIST mmioFOURCC('U','N','F','O')
+#define DMUS_FOURCC_UNAM_CHUNK mmioFOURCC('U','N','A','M')
+#define DMUS_FOURCC_UART_CHUNK mmioFOURCC('U','A','R','T')
+#define DMUS_FOURCC_UCOP_CHUNK mmioFOURCC('U','C','O','P')
+#define DMUS_FOURCC_USBJ_CHUNK mmioFOURCC('U','S','B','J')
+#define DMUS_FOURCC_UCMT_CHUNK mmioFOURCC('U','C','M','T')
+#define DMUS_FOURCC_CATEGORY_CHUNK mmioFOURCC('c','a','t','g')
+#define DMUS_FOURCC_VERSION_CHUNK mmioFOURCC('v','e','r','s')
+
+/* The following structures are used by the Tracks, and are the packed structures */
+/* that are passed to the Tracks inside the IStream. */
+
+
+typedef struct _DMUS_IO_SEQ_ITEM
+{
+ MUSIC_TIME mtTime;
+ MUSIC_TIME mtDuration;
+ DWORD dwPChannel;
+ short nOffset;
+ BYTE bStatus;
+ BYTE bByte1;
+ BYTE bByte2;
+} DMUS_IO_SEQ_ITEM;
+
+
+typedef struct _DMUS_IO_CURVE_ITEM
+{
+ MUSIC_TIME mtStart;
+ MUSIC_TIME mtDuration;
+ MUSIC_TIME mtResetDuration;
+ DWORD dwPChannel;
+ short nOffset;
+ short nStartValue;
+ short nEndValue;
+ short nResetValue;
+ BYTE bType;
+ BYTE bCurveShape;
+ BYTE bCCData;
+ BYTE bFlags;
+ /* Following was added for DirectX8. */
+ WORD wParamType; /* RPN or NRPN parameter number. */
+ WORD wMergeIndex; /* Allows multiple parameters to be merged (pitchbend, volume, and expression.) */
+} DMUS_IO_CURVE_ITEM;
+
+
+typedef struct _DMUS_IO_TEMPO_ITEM
+{
+ MUSIC_TIME lTime;
+ double dblTempo;
+} DMUS_IO_TEMPO_ITEM;
+
+
+typedef struct _DMUS_IO_SYSEX_ITEM
+{
+ MUSIC_TIME mtTime;
+ DWORD dwPChannel;
+ DWORD dwSysExLength;
+} DMUS_IO_SYSEX_ITEM;
+
+typedef DMUS_CHORD_KEY DMUS_CHORD_PARAM; /* DMUS_CHORD_KEY defined in dmusici.h */
+
+typedef struct _DMUS_RHYTHM_PARAM
+{
+ DMUS_TIMESIGNATURE TimeSig;
+ DWORD dwRhythmPattern;
+} DMUS_RHYTHM_PARAM;
+
+typedef struct _DMUS_TEMPO_PARAM
+{
+ MUSIC_TIME mtTime;
+ double dblTempo;
+} DMUS_TEMPO_PARAM;
+
+
+typedef struct _DMUS_MUTE_PARAM
+{
+ DWORD dwPChannel;
+ DWORD dwPChannelMap;
+ BOOL fMute;
+} DMUS_MUTE_PARAM;
+
+/* Style chunks */
+
+#define DMUS_FOURCC_STYLE_FORM mmioFOURCC('D','M','S','T')
+#define DMUS_FOURCC_STYLE_CHUNK mmioFOURCC('s','t','y','h')
+#define DMUS_FOURCC_PART_LIST mmioFOURCC('p','a','r','t')
+#define DMUS_FOURCC_PART_CHUNK mmioFOURCC('p','r','t','h')
+#define DMUS_FOURCC_NOTE_CHUNK mmioFOURCC('n','o','t','e')
+#define DMUS_FOURCC_CURVE_CHUNK mmioFOURCC('c','r','v','e')
+#define DMUS_FOURCC_MARKER_CHUNK mmioFOURCC('m','r','k','r')
+#define DMUS_FOURCC_RESOLUTION_CHUNK mmioFOURCC('r','s','l','n')
+#define DMUS_FOURCC_ANTICIPATION_CHUNK mmioFOURCC('a','n','p','n')
+#define DMUS_FOURCC_PATTERN_LIST mmioFOURCC('p','t','t','n')
+#define DMUS_FOURCC_PATTERN_CHUNK mmioFOURCC('p','t','n','h')
+#define DMUS_FOURCC_RHYTHM_CHUNK mmioFOURCC('r','h','t','m')
+#define DMUS_FOURCC_PARTREF_LIST mmioFOURCC('p','r','e','f')
+#define DMUS_FOURCC_PARTREF_CHUNK mmioFOURCC('p','r','f','c')
+#define DMUS_FOURCC_STYLE_PERS_REF_LIST mmioFOURCC('p','r','r','f')
+#define DMUS_FOURCC_MOTIFSETTINGS_CHUNK mmioFOURCC('m','t','f','s')
+
+/* Flags used by variations: these make up the DWORDs in dwVariationChoices. */
+
+/* These flags determine the types of chords supported by a given variation in DirectMusic */
+/* mode. The first seven flags (bits 1-7) are set if the variation supports major chords */
+/* rooted in scale positions, so, e.g., if bits 1, 2, and 4 are set, the variation */
+/* supports major chords rooted in the tonic, second, and fourth scale positions. The */
+/* next seven flags serve the same purpose, but for minor chords, and the following seven */
+/* flags serve the same purpose for chords that are not major or minor (e.g., SUS 4 */
+/* chords). Bits 22, 23, and 24 are set if the variation supports chords rooted in the */
+/* scale, chords rooted sharp of scale tones, and chords rooted flat of scale tones, */
+/* respectively. For example, to support a C# minor chord in the scale of C Major, */
+/* bits 8 (for tonic minor) and 24 (for sharp) need to be set. Bits 25, 26, an 27 handle */
+/* chords that are triads, 6th or 7th chords, and chords with extensions, respectively. */
+/* bits 28 and 29 handle chords that are followed by tonic and dominant chords, */
+/* respectively. */
+#define DMUS_VARIATIONF_MAJOR 0x0000007F /* Seven positions in the scale - major chords. */
+#define DMUS_VARIATIONF_MINOR 0x00003F80 /* Seven positions in the scale - minor chords. */
+#define DMUS_VARIATIONF_OTHER 0x001FC000 /* Seven positions in the scale - other chords. */
+#define DMUS_VARIATIONF_ROOT_SCALE 0x00200000 /* Handles chord roots in the scale. */
+#define DMUS_VARIATIONF_ROOT_FLAT 0x00400000 /* Handles flat chord roots (based on scale notes). */
+#define DMUS_VARIATIONF_ROOT_SHARP 0x00800000 /* Handles sharp chord roots (based on scale notes). */
+#define DMUS_VARIATIONF_TYPE_TRIAD 0x01000000 /* Handles simple chords - triads. */
+#define DMUS_VARIATIONF_TYPE_6AND7 0x02000000 /* Handles simple chords - 6 and 7. */
+#define DMUS_VARIATIONF_TYPE_COMPLEX 0x04000000 /* Handles complex chords. */
+#define DMUS_VARIATIONF_DEST_TO1 0x08000000 /* Handles transitions to 1 chord. */
+#define DMUS_VARIATIONF_DEST_TO5 0x10000000 /* Handles transitions to 5 chord. */
+#define DMUS_VARIATIONF_DEST_OTHER 0x40000000 /* Handles transitions to chords other than 1 . */
+
+/* legacy mask for variation modes */
+#define DMUS_VARIATIONF_MODES 0xE0000000
+/* Bits 29 and 31 of the variation flags are the Mode bits. If both are 0, it's IMA. */
+/* If bit 29 is 1, it's Direct Music. */
+#define DMUS_VARIATIONF_MODES_EX (0x20000000 | 0x80000000)
+#define DMUS_VARIATIONF_IMA25_MODE 0x00000000
+#define DMUS_VARIATIONF_DMUS_MODE 0x20000000
+
+/* Set this if the part uses marker events */
+#define DMUS_PARTF_USE_MARKERS 0x1
+/* Set this if the part is allowed to switch only on chord-aligned markers */
+#define DMUS_PARTF_ALIGN_CHORDS 0x2
+
+/* These specify if the marker event signals whether to stop a variation or start a
+pattern/variation (or both), and whether new variations must align with a chord */
+#define DMUS_MARKERF_START 0x1
+#define DMUS_MARKERF_STOP 0x2
+#define DMUS_MARKERF_CHORD_ALIGN 0x4
+
+/* if this flag is set, variation settings in a playing pattern-based track's state data will
+persist in the track after it stops playing */
+#define DMUS_PATTERNF_PERSIST_CONTROL 0x1
+
+/* These specify possible values for DMUS_IO_PARTREF.bRandomVariation
+ all but DMUS_VARIATIONT_SEQUENTIAL and DMUS_VARIATIONT_RANDOM are DirectX8. */
+typedef enum enumDMUS_VARIATIONT_TYPES
+{
+ DMUS_VARIATIONT_SEQUENTIAL = 0, /* Play sequential starting with variation 1. */
+ DMUS_VARIATIONT_RANDOM = 1, /* Play randomly. */
+ DMUS_VARIATIONT_RANDOM_START = 2, /* Play sequential starting with a random variation. */
+ DMUS_VARIATIONT_NO_REPEAT = 3, /* Play randomly, but don't play the same variation twice. */
+ DMUS_VARIATIONT_RANDOM_ROW = 4 /* Play randomly as a row: don't repeat any variation until all have played. */
+} DMUS_VARIATIONT_TYPES;
+
+/* These specify possible values for DMUS_IO_PATTERN.wEmbellishment (DirectX8) */
+typedef enum enumDMUS_EMBELLISHT_TYPES
+{
+ DMUS_EMBELLISHT_NORMAL = 0,
+ DMUS_EMBELLISHT_FILL = 1,
+ DMUS_EMBELLISHT_BREAK = 2,
+ DMUS_EMBELLISHT_INTRO = 4,
+ DMUS_EMBELLISHT_END = 8,
+ DMUS_EMBELLISHT_MOTIF = 16,
+ DMUS_EMBELLISHT_ALL = 0xFFFF
+} DMUS_EMBELLISHT_TYPES;
+
+#pragma pack(2)
+
+typedef struct _DMUS_IO_TIMESIG
+{
+ /* Time signatures define how many beats per measure, which note receives */
+ /* the beat, and the grid resolution. */
+ BYTE bBeatsPerMeasure; /* beats per measure (top of time sig) */
+ BYTE bBeat; /* what note receives the beat (bottom of time sig.) */
+ /* we can assume that 0 means 256th note */
+ WORD wGridsPerBeat; /* grids per beat */
+} DMUS_IO_TIMESIG;
+
+typedef struct _DMUS_IO_STYLE
+{
+ DMUS_IO_TIMESIG timeSig; /* Styles have a default Time Signature */
+ double dblTempo;
+} DMUS_IO_STYLE;
+
+typedef struct _DMUS_IO_VERSION
+{
+ DWORD dwVersionMS; /* Version # high-order 32 bits */
+ DWORD dwVersionLS; /* Version # low-order 32 bits */
+} DMUS_IO_VERSION;
+
+typedef struct _DMUS_IO_PATTERN
+{
+ DMUS_IO_TIMESIG timeSig; /* Patterns can override the Style's Time sig. */
+ BYTE bGrooveBottom; /* bottom of groove range */
+ BYTE bGrooveTop; /* top of groove range */
+ WORD wEmbellishment; /* Fill, Break, Intro, End, Normal, Motif */
+ WORD wNbrMeasures; /* length in measures */
+ BYTE bDestGrooveBottom; /* bottom of groove range for next pattern */
+ BYTE bDestGrooveTop; /* top of groove range for next pattern */
+ DWORD dwFlags; /* various flags */
+} DMUS_IO_PATTERN;
+
+typedef struct _DMUS_IO_STYLEPART
+{
+ DMUS_IO_TIMESIG timeSig; /* can override pattern's */
+ DWORD dwVariationChoices[32]; /* MOAW choice bitfield */
+ GUID guidPartID; /* identifies the part */
+ WORD wNbrMeasures; /* length of the Part */
+ BYTE bPlayModeFlags; /* see PLAYMODE flags */
+ BYTE bInvertUpper; /* inversion upper limit */
+ BYTE bInvertLower; /* inversion lower limit */
+ BYTE bPad[3]; /* for DWORD alignment */
+ DWORD dwFlags; /* various flags */
+} DMUS_IO_STYLEPART;
+
+typedef struct _DMUS_IO_PARTREF
+{
+ GUID guidPartID; /* unique ID for matching up with parts */
+ WORD wLogicalPartID; /* corresponds to port/device/midi channel OBSOLETE */
+ BYTE bVariationLockID; /* parts with the same ID lock variations. */
+ /* high bit is used to identify master Part */
+ BYTE bSubChordLevel; /* tells which sub chord level this part wants */
+ BYTE bPriority; /* 256 priority levels. Parts with lower priority */
+ /* aren't played first when a device runs out of */
+ /* notes */
+ BYTE bRandomVariation; /* when set, matching variations play in random order */
+ /* when clear, matching variations play sequentially */
+ WORD wPad; /* not used */
+ DWORD dwPChannel; /* replaces wLogicalPartID */
+} DMUS_IO_PARTREF;
+
+typedef struct _DMUS_IO_STYLENOTE
+{
+ MUSIC_TIME mtGridStart; /* when this note occurs */
+ DWORD dwVariation; /* variation bits */
+ MUSIC_TIME mtDuration; /* how long this note lasts */
+ short nTimeOffset; /* offset from mtGridStart */
+ WORD wMusicValue; /* Position in scale. */
+ BYTE bVelocity; /* Note velocity. */
+ BYTE bTimeRange; /* Range to randomize start time. */
+ BYTE bDurRange; /* Range to randomize duration. */
+ BYTE bVelRange; /* Range to randomize velocity. */
+ BYTE bInversionID; /* Identifies inversion group to which this note belongs */
+ BYTE bPlayModeFlags; /* Can override part */
+ /* Following exists only under DirectX8 and on */
+ BYTE bNoteFlags; /* values from DMUS_NOTEF_FLAGS */
+} DMUS_IO_STYLENOTE;
+
+typedef struct _DMUS_IO_STYLECURVE
+{
+ MUSIC_TIME mtGridStart; /* when this curve occurs */
+ DWORD dwVariation; /* variation bits */
+ MUSIC_TIME mtDuration; /* how long this curve lasts */
+ MUSIC_TIME mtResetDuration;/* how long after the end of the curve to reset the curve */
+ short nTimeOffset; /* offset from mtGridStart */
+ short nStartValue; /* curve's start value */
+ short nEndValue; /* curve's end value */
+ short nResetValue; /* the value to which to reset the curve */
+ BYTE bEventType; /* type of curve */
+ BYTE bCurveShape; /* shape of curve */
+ BYTE bCCData; /* CC# */
+ BYTE bFlags; /* Bit 1=TRUE means to send nResetValue. Otherwise, don't.
+ Other bits are reserved. */
+ /* Following was added for DirectX8. */
+ WORD wParamType; /* RPN or NRPN parameter number. */
+ WORD wMergeIndex; /* Allows multiple parameters to be merged (pitchbend, volume, and expression.) */
+} DMUS_IO_STYLECURVE;
+
+typedef struct _DMUS_IO_STYLEMARKER
+{
+ MUSIC_TIME mtGridStart; /* when this marker occurs */
+ DWORD dwVariation; /* variation bits */
+ WORD wMarkerFlags; /* how the marker is used */
+} DMUS_IO_STYLEMARKER;
+
+typedef struct _DMUS_IO_STYLERESOLUTION
+{
+ DWORD dwVariation; /* variation bits */
+ WORD wMusicValue; /* Position in scale. */
+ BYTE bInversionID; /* Identifies inversion group to which this note belongs */
+ BYTE bPlayModeFlags; /* Can override part */
+} DMUS_IO_STYLERESOLUTION;
+
+typedef struct _DMUS_IO_STYLE_ANTICIPATION
+{
+ MUSIC_TIME mtGridStart; /* when this anticipation occurs */
+ DWORD dwVariation; /* variation bits */
+ short nTimeOffset; /* offset from mtGridStart */
+ BYTE bTimeRange; /* Range to randomize start time. */
+} DMUS_IO_STYLE_ANTICIPATION;
+
+typedef struct _DMUS_IO_MOTIFSETTINGS
+{
+ DWORD dwRepeats; /* Number of repeats. By default, 0. */
+ MUSIC_TIME mtPlayStart; /* Start of playback. By default, 0. */
+ MUSIC_TIME mtLoopStart; /* Start of looping portion. By default, 0. */
+ MUSIC_TIME mtLoopEnd; /* End of loop. Must be greater than mtLoopStart. Or, 0, indicating loop full motif. */
+ DWORD dwResolution; /* Default resolution. */
+} DMUS_IO_MOTIFSETTINGS;
+
+#pragma pack()
+
+
+/*
+RIFF
+(
+ 'DMST' // Style
+ // Style header chunk
+ // Every Style has a GUID
+ [] // Name, author, copyright info., comments
+ [] // version chunk
+ ... // Array of parts in the Style, used by patterns
+ ... // Array of patterns in the Style
+ ... // Array of bands in the Style
+ []...// Optional array of chord map references in the Style
+)
+
+ //
+ styh
+ (
+
+ )
+
+ //
+ guid
+ (
+
+ )
+
+ //
+ vers
+ (
+
+ )
+
+ //
+ LIST
+ (
+ 'part'
+ // Part header chunk
+ [] // Name, author, copyright info., comments
+ [] // Optional chunk containing an array of notes in Part
+ [] // Optional chunk containing an array of curves in Part
+ [] // Optional chunk containing an array of markers in Part
+ [] // Optional chunk containing an array of variation resolutions in Part
+ [] // Optional chunk containing an array of resolution anticipations in Part
+ )
+
+ //
+ prth
+ (
+
+ )
+
+ //
+ 'note'
+ (
+ // sizeof DMUS_IO_STYLENOTE:DWORD
+ ...
+ )
+
+ //
+ 'crve'
+ (
+ // sizeof DMUS_IO_STYLECURVE:DWORD
+ ...
+ )
+
+ //
+ 'mrkr'
+ (
+ // sizeof DMUS_IO_STYLEMARKER:DWORD
+ ...
+ )
+
+ //
+ 'rsln'
+ (
+ // sizeof DMUS_IO_STYLERESOLUTION:DWORD
+ ...
+ )
+
+ //
+ 'anpn'
+ (
+ // sizeof DMUS_IO_STYLE_ANTICIPATION:DWORD
+ ...
+ )
+
+ //
+ LIST
+ (
+ 'pttn'
+ // Pattern header chunk
+ // Chunk containing an array of rhythms for chord matching
+ [] // Name, author, copyright info., comments
+ [] // Motif settings chunk
+ [] // Optional band to be associated with the pattern (for motifs)
+ ... // Array of part reference id's
+ )
+
+ //
+ ptnh
+ (
+
+ )
+
+ //
+ 'rhtm'
+ (
+ // DWORD's representing rhythms for chord matching based on number
+ // of measures in the pattern
+ )
+
+
+ // pref-list
+ LIST
+ (
+ 'pref'
+ // part ref chunk
+ )
+
+ //
+ prfc
+ (
+
+ )
+
+ //
+ mtfs
+ (
+
+ )
+
+ //
+ LIST
+ (
+ 'prrf'
+ ... // Array of Chordmap references
+ )
+*/
+
+/* Pattern chunk, for use in Pattern tracks */
+
+#define DMUS_FOURCC_PATTERN_FORM mmioFOURCC('D','M','P','T')
+
+/*
+RIFF
+(
+ 'DMPT' // Pattern
+ // Style header chunk
+ // The pattern, in single pattern format (includes DMUS_FOURCC_PART_LIST chunks)
+)
+*/
+
+
+/* Chord and command file formats */
+
+/* These specify possible values for DMUS_IO_COMMAND.bRepeatMode (DirectX8) */
+typedef enum enumDMUS_PATTERNT_TYPES
+{
+ DMUS_PATTERNT_RANDOM = 0, /* Play randomly. (DirectX7 behavior) */
+ DMUS_PATTERNT_REPEAT = 1, /* Repeat last pattern. */
+ DMUS_PATTERNT_SEQUENTIAL = 2, /* Play sequential starting with first matching pattern. */
+ DMUS_PATTERNT_RANDOM_START = 3, /* Play sequential starting with a random pattern. */
+ DMUS_PATTERNT_NO_REPEAT = 4, /* Play randomly, but don't play the same pattern twice. */
+ DMUS_PATTERNT_RANDOM_ROW = 5 /* Play randomly as a row: don't repeat any pattern until all have played. */
+} DMUS_PATTERNT_TYPES;
+
+
+#define DMUS_FOURCC_CHORDTRACK_LIST mmioFOURCC('c','o','r','d')
+#define DMUS_FOURCC_CHORDTRACKHEADER_CHUNK mmioFOURCC('c','r','d','h')
+#define DMUS_FOURCC_CHORDTRACKBODY_CHUNK mmioFOURCC('c','r','d','b')
+
+#define DMUS_FOURCC_COMMANDTRACK_CHUNK mmioFOURCC('c','m','n','d')
+
+typedef struct _DMUS_IO_CHORD
+{
+ WCHAR wszName[16]; /* Name of the chord */
+ MUSIC_TIME mtTime; /* Time of this chord */
+ WORD wMeasure; /* Measure this falls on */
+ BYTE bBeat; /* Beat this falls on */
+ BYTE bFlags; /* Various flags */
+} DMUS_IO_CHORD;
+
+typedef struct _DMUS_IO_SUBCHORD
+{
+ DWORD dwChordPattern; /* Notes in the subchord */
+ DWORD dwScalePattern; /* Notes in the scale */
+ DWORD dwInversionPoints; /* Where inversions can occur */
+ DWORD dwLevels; /* Which levels are supported by this subchord */
+ BYTE bChordRoot; /* Root of the subchord */
+ BYTE bScaleRoot; /* Root of the scale */
+} DMUS_IO_SUBCHORD;
+
+typedef struct _DMUS_IO_COMMAND
+{
+ MUSIC_TIME mtTime; /* Time of this command */
+ WORD wMeasure; /* Measure this falls on */
+ BYTE bBeat; /* Beat this falls on */
+ BYTE bCommand; /* Command type (see #defines below) */
+ BYTE bGrooveLevel; /* Groove level (0 if command is not a groove) */
+ BYTE bGrooveRange; /* Groove range */
+ BYTE bRepeatMode; /* Used to control selection of patterns with same groove level */
+} DMUS_IO_COMMAND;
+
+
+/*
+
+ //
+ LIST
+ (
+ 'cord'
+
+ ... // Chord body chunks
+ )
+
+ //
+ crdh
+ (
+ // Scale: dword (upper 8 bits for root, lower 24 for scale)
+ )
+
+ //
+ crdb
+ (
+ // sizeof DMUS_IO_CHORD:dword
+
+ // # of DMUS_IO_SUBCHORDS:dword
+ // sizeof DMUS_IO_SUBCHORDS:dword
+ // a number of
+ )
+
+
+ //
+ 'cmnd'
+ (
+ //sizeof DMUS_IO_COMMAND: DWORD
+ ...
+ )
+
+*/
+
+/* File io for DirectMusic Tool and ToolGraph objects
+*/
+
+/* RIFF ids: */
+
+#define DMUS_FOURCC_TOOLGRAPH_FORM mmioFOURCC('D','M','T','G')
+#define DMUS_FOURCC_TOOL_LIST mmioFOURCC('t','o','l','l')
+#define DMUS_FOURCC_TOOL_FORM mmioFOURCC('D','M','T','L')
+#define DMUS_FOURCC_TOOL_CHUNK mmioFOURCC('t','o','l','h')
+
+/* io structures: */
+
+typedef struct _DMUS_IO_TOOL_HEADER
+{
+ GUID guidClassID; /* Class id of tool. */
+ long lIndex; /* Position in graph. */
+ DWORD cPChannels; /* Number of items in channels array. */
+ FOURCC ckid; /* chunk ID of tool's data chunk if 0 fccType valid. */
+ FOURCC fccType; /* list type if NULL ckid valid. */
+ DWORD dwPChannels[1]; /* Array of PChannels, size determined by cPChannels. */
+} DMUS_IO_TOOL_HEADER;
+
+/*
+RIFF
+(
+ 'DMTG' // DirectMusic ToolGraph chunk
+ [] // GUID for ToolGraph
+ [] // Optional version info
+ [] // Name, author, copyright info., comments
+ // List of Tools
+)
+
+ //
+ 'guid'
+ (
+
+ )
+
+ //
+ vers
+ (
+
+ )
+
+ //
+ LIST
+ (
+ 'toll' // Array of tools
+ ... // Each tool is encapsulated in a RIFF chunk
+ )
+
+// Tools are embedded in a graph. Theoretically, they can be saved as individual files too.
+RIFF
+(
+ 'DMTL'
+
+ [] // Tool data. Must be a RIFF readable chunk.
+)
+
+ // // Tool header chunk
+ (
+ 'tolh'
+ // Tool header
+ )
+*/
+
+/* The AudioPath file carries everything for describing a specific audio path,
+ including Tool Graph and Buffer Descriptor.
+ This can even be used for configuring a complete performance.
+*/
+
+#define DMUS_FOURCC_AUDIOPATH_FORM mmioFOURCC('D','M','A','P')
+
+/*
+RIFF
+(
+ 'DMAP' // DirectMusic AudioPath chunk
+ [] // GUID for this Audio Path configuration
+ [] // Optional version info
+ [] // Name, author, copyright info., comments
+ [] // Optional ToolGraph
+ [] // Optional list of port configurations
+ []...// Optional array of DirectSound buffer descriptors
+)
+*/
+
+#define DMUS_FOURCC_PORTCONFIGS_LIST mmioFOURCC('p','c','s','l')
+#define DMUS_FOURCC_PORTCONFIG_LIST mmioFOURCC('p','c','f','l')
+#define DMUS_FOURCC_PORTCONFIG_ITEM mmioFOURCC('p','c','f','h')
+#define DMUS_FOURCC_PORTPARAMS_ITEM mmioFOURCC('p','p','r','h')
+#define DMUS_FOURCC_DSBUFFER_LIST mmioFOURCC('d','b','f','l')
+#define DMUS_FOURCC_DSBUFFATTR_ITEM mmioFOURCC('d','d','a','h')
+#define DMUS_FOURCC_PCHANNELS_LIST mmioFOURCC('p','c','h','l')
+#define DMUS_FOURCC_PCHANNELS_ITEM mmioFOURCC('p','c','h','h')
+
+typedef struct _DMUS_IO_PORTCONFIG_HEADER
+{
+ GUID guidPort; /* GUID of requested port. */
+ DWORD dwPChannelBase; /* PChannel that this should start on. */
+ DWORD dwPChannelCount; /* How many channels. */
+ DWORD dwFlags; /* Various flags. */
+} DMUS_IO_PORTCONFIG_HEADER;
+
+#define DMUS_PORTCONFIGF_DRUMSON10 1 /* This port configured for drums on channel 10. */
+#define DMUS_PORTCONFIGF_USEDEFAULT 2 /* Use the default port. */
+
+/* Each portconfig has one or more pchannel to buffer mappings. Each buffer
+ is identified by a guid. Each pchannel can map to one or more buffers.
+ This is defined with one or more DMUS_IO_PCHANNELTOBUFFER_HEADER
+ structures. Each defines a range of PChannels and the set of buffers
+ that they connect to.
+*/
+
+typedef struct _DMUS_IO_PCHANNELTOBUFFER_HEADER
+{
+ DWORD dwPChannelBase; /* PChannel that this should start on. */
+ DWORD dwPChannelCount; /* How many PChannels. */
+ DWORD dwBufferCount; /* How many buffers do these connect to. */
+ DWORD dwFlags; /* Various flags. Currently reserved for future use. Must be 0. */
+} DMUS_IO_PCHANNELTOBUFFER_HEADER;
+
+/* Each buffer is represented by an DSBC form. This is wrapped by the
+ DMUS_IO_BUFFER_ATTRIBUTES_HEADER which identifies how to use the
+ buffer. In particular, it indicates whether this gets dynamically duplicated
+ or all references to this should share the same instance.
+ To resolve references, the unique GUID of the buffer is also stored
+ in this structure.
+*/
+
+typedef struct _DMUS_IO_BUFFER_ATTRIBUTES_HEADER
+{
+ GUID guidBufferID; /* Each buffer config has a unique ID. */
+ DWORD dwFlags; /* Various flags. */
+} DMUS_IO_BUFFER_ATTRIBUTES_HEADER;
+
+/* DMUS_IO_BUFFER_ATTRIBUTES_HEADER.dwFlags: */
+#define DMUS_BUFFERF_SHARED 1 /* Share this with other audio paths, instead of creating unique copies. */
+#define DMUS_BUFFERF_DEFINED 2 /* Use one of the standard predefined buffers (see GUID_Buffer... in dmusici.h.) */
+#define DMUS_BUFFERF_MIXIN 8 /* This is a mixin buffer. */
+
+/*
+
+LIST
+(
+ 'pcsl' // Array of port configurations
+ ... // One or more port configurations, each in a list chunk
+)
+
+LIST
+(
+ 'pcfl' // List container for one port configuration.
+ // Portconfig header chunk.
+ // Port params, to be used to create the port.
+ []...// Optional array of DirectSound buffer descriptors
+ [] // Optional list of pchannel to buffer assignments
+
+)
+
+ // // Port config header chunk
+ (
+ 'pcfh'
+ // Port config header
+ )
+
+ // // Port params header chunk
+ (
+ 'pprh'
+ // Port params header
+ )
+
+LIST
+(
+ 'pchl' // List container for one or more pchannel to buffer assignments.
+ ... // One or more pchannel to buffer assignment headers and data.
+
+ //
+ (
+ 'pchh'
+ // Description of PChannels
+ ... // Array of GUIDs defining the buffers they all connect to.
+ )
+)
+
+LIST
+(
+ 'dbfl' // List container for one buffer and buffer attributes header.
+ // Buffer attributes header.
+ [] // Buffer configuration. Not required when header uses a predefined buffer type.
+
+ //
+ (
+ 'ddah'
+ // Buffer attributes.
+ )
+)
+*/
+
+/* File io for DirectMusic Band Track object */
+
+
+/* RIFF ids: */
+#define DMUS_FOURCC_BANDTRACK_FORM mmioFOURCC('D','M','B','T')
+#define DMUS_FOURCC_BANDTRACK_CHUNK mmioFOURCC('b','d','t','h')
+#define DMUS_FOURCC_BANDS_LIST mmioFOURCC('l','b','d','l')
+#define DMUS_FOURCC_BAND_LIST mmioFOURCC('l','b','n','d')
+#define DMUS_FOURCC_BANDITEM_CHUNK mmioFOURCC('b','d','i','h')
+#define DMUS_FOURCC_BANDITEM_CHUNK2 mmioFOURCC('b','d','2','h')
+
+/* io structures */
+typedef struct _DMUS_IO_BAND_TRACK_HEADER
+{
+ BOOL bAutoDownload; /* Determines if Auto-Download is enabled. */
+} DMUS_IO_BAND_TRACK_HEADER;
+
+typedef struct _DMUS_IO_BAND_ITEM_HEADER
+{
+ MUSIC_TIME lBandTime; /* Position in track list. */
+} DMUS_IO_BAND_ITEM_HEADER;
+
+typedef struct _DMUS_IO_BAND_ITEM_HEADER2
+{
+ MUSIC_TIME lBandTimeLogical; /* Position in track list. Time in the music with which band change is associated. */
+ MUSIC_TIME lBandTimePhysical; /* Precise time band change will take effect. Should be close to logical time. */
+} DMUS_IO_BAND_ITEM_HEADER2;
+
+/*
+RIFF
+(
+ 'DMBT' // DirectMusic Band Track form-type
+ [] // Band track header
+ [] // GUID for band track
+ [] // Optional version info
+ [] // Name, author, copyright info., comments
+ // List of Band items
+)
+
+ //
+ 'bdth'
+ (
+
+ )
+
+ //
+ 'guid'
+ (
+
+ )
+
+ //
+ vers
+ (
+
+ )
+
+ //
+ LIST
+ (
+ 'lbdl'
+ ... // Array of bands, each encapsulated in a list chunk
+ )
+
+ //
+ LIST
+ (
+ 'lbnd'
+ or // bdih is a legacy format. bd2h is preferred for new content.
+ // Band
+ )
+
+ // or // band item header
+ (
+ or // Band item header
+ )
+*/
+
+
+/* File io for DirectMusic Band object
+*/
+
+/* RIFF ids: */
+
+#define DMUS_FOURCC_BAND_FORM mmioFOURCC('D','M','B','D')
+#define DMUS_FOURCC_INSTRUMENTS_LIST mmioFOURCC('l','b','i','l')
+#define DMUS_FOURCC_INSTRUMENT_LIST mmioFOURCC('l','b','i','n')
+#define DMUS_FOURCC_INSTRUMENT_CHUNK mmioFOURCC('b','i','n','s')
+
+/* Flags for DMUS_IO_INSTRUMENT
+ */
+#define DMUS_IO_INST_PATCH (1 << 0) /* dwPatch is valid. */
+#define DMUS_IO_INST_BANKSELECT (1 << 1) /* dwPatch contains a valid Bank Select MSB and LSB part */
+#define DMUS_IO_INST_ASSIGN_PATCH (1 << 3) /* dwAssignPatch is valid */
+#define DMUS_IO_INST_NOTERANGES (1 << 4) /* dwNoteRanges is valid */
+#define DMUS_IO_INST_PAN (1 << 5) /* bPan is valid */
+#define DMUS_IO_INST_VOLUME (1 << 6 ) /* bVolume is valid */
+#define DMUS_IO_INST_TRANSPOSE (1 << 7) /* nTranspose is valid */
+#define DMUS_IO_INST_GM (1 << 8) /* Instrument is from GM collection */
+#define DMUS_IO_INST_GS (1 << 9) /* Instrument is from GS collection */
+#define DMUS_IO_INST_XG (1 << 10) /* Instrument is from XG collection */
+#define DMUS_IO_INST_CHANNEL_PRIORITY (1 << 11) /* dwChannelPriority is valid */
+#define DMUS_IO_INST_USE_DEFAULT_GM_SET (1 << 12) /* Always use the default GM set for this patch, */
+ /* don't rely on the synth caps stating GM or GS in hardware. */
+#define DMUS_IO_INST_PITCHBENDRANGE (1 << 13) /* nPitchBendRange is valid */
+
+/* io structures */
+typedef struct _DMUS_IO_INSTRUMENT
+{
+ DWORD dwPatch; /* MSB, LSB and Program change to define instrument */
+ DWORD dwAssignPatch; /* MSB, LSB and Program change to assign to instrument when downloading */
+ DWORD dwNoteRanges[4]; /* 128 bits; one for each MIDI note instrument needs to able to play */
+ DWORD dwPChannel; /* PChannel instrument plays on */
+ DWORD dwFlags; /* DMUS_IO_INST_ flags */
+ BYTE bPan; /* Pan for instrument */
+ BYTE bVolume; /* Volume for instrument */
+ short nTranspose; /* Number of semitones to transpose notes */
+ DWORD dwChannelPriority; /* Channel priority */
+ short nPitchBendRange; /* Number of semitones shifted by pitch bend */
+} DMUS_IO_INSTRUMENT;
+
+/*
+// bands can be embedded in other forms
+RIFF
+(
+ 'DMBD' // DirectMusic Band chunk
+ [] // GUID for band
+ [] // Optional version info
+ [] // Name, author, copyright info., comments
+ // List of Instruments
+)
+
+ //
+ 'guid'
+ (
+
+ )
+
+ //
+ vers
+ (
+
+ )
+
+ //
+ LIST
+ (
+ 'lbil' // Array of instruments
+ ... // Each instrument is encapsulated in a list
+ )
+
+ //
+ LIST
+ (
+ 'lbin'
+
+ [] // Optional reference to DLS Collection file.
+ )
+
+ // // Instrument chunk
+ (
+ 'bins'
+ // Instrument header
+ )
+*/
+
+/* This RIFF id and io struct have been added to allow wave files (and the wave object) to
+ differentiate between streaming and one-shot waves, and to give a prefetch for streaming
+ waves */
+
+#define DMUS_FOURCC_WAVEHEADER_CHUNK mmioFOURCC('w','a','v','h')
+
+typedef struct _DMUS_IO_WAVE_HEADER
+{
+ REFERENCE_TIME rtReadAhead; /* How far ahead in the stream wave data will be read (in REFERENCE_TIME). Ignored for one-shot waves. */
+ DWORD dwFlags; /* Various flags, including whether this is a streaming wave and whether it can be invalidated. */
+} DMUS_IO_WAVE_HEADER;
+
+
+/* File io for Wave track */
+
+/* RIFF ids: */
+
+#define DMUS_FOURCC_WAVETRACK_LIST mmioFOURCC('w','a','v','t')
+#define DMUS_FOURCC_WAVETRACK_CHUNK mmioFOURCC('w','a','t','h')
+#define DMUS_FOURCC_WAVEPART_LIST mmioFOURCC('w','a','v','p')
+#define DMUS_FOURCC_WAVEPART_CHUNK mmioFOURCC('w','a','p','h')
+#define DMUS_FOURCC_WAVEITEM_LIST mmioFOURCC('w','a','v','i')
+#define DMUS_FOURCC_WAVE_LIST mmioFOURCC('w','a','v','e')
+#define DMUS_FOURCC_WAVEITEM_CHUNK mmioFOURCC('w','a','i','h')
+
+/* This flag is included in DMUS_IO_WAVE_TRACK_HEADER.dwFlags. If set, the track will get its
+ variations from a pattern track, via GetParam(GUID_Variations). */
+#define DMUS_WAVETRACKF_SYNC_VAR 0x1
+/* This is also included in DMUS_IO_WAVE_TRACK_HEADER.dwFlags. If set, variation control
+ information will persist from one playback instance to the next.*/
+#define DMUS_WAVETRACKF_PERSIST_CONTROL 0x2
+
+typedef struct _DMUS_IO_WAVE_TRACK_HEADER
+{
+ long lVolume; /* Gain, in 1/100th of dB, to be applied to all waves. Note: All gain values should be negative. */
+ DWORD dwFlags; /* Flags, including whether this track syncs to a pattern track for its variations. */
+} DMUS_IO_WAVE_TRACK_HEADER;
+
+typedef struct _DMUS_IO_WAVE_PART_HEADER
+{
+ long lVolume; /* Gain, in 1/100th of dB, to be applied to all waves in wave part. Note: All gain values should be negative. */
+ DWORD dwVariations; /* Variation mask for which of 32 variations */
+ DWORD dwPChannel; /* PChannel */
+ DWORD dwLockToPart; /* Part ID to lock to. */
+ DWORD dwFlags; /* Flags, including stuff for managing how variations are chosen (in low-order nibble) */
+ DWORD dwIndex; /* Index for distinguishing multiple parts on the same PChannel*/
+} DMUS_IO_WAVE_PART_HEADER;
+
+typedef struct _DMUS_IO_WAVE_ITEM_HEADER
+{
+ long lVolume; /* Gain, in 1/100th of dB. Note: All gain values should be negative. */
+ long lPitch; /* Pitch offset in 1/100th of a semitone. */
+ DWORD dwVariations; /* Variation flags for which of 32 variations this wave belongs to. */
+ REFERENCE_TIME rtTime; /* Start time, in REFERENCE_TIME, if clock time track, or MUSIC_TIME for music time track. */
+ REFERENCE_TIME rtStartOffset; /* Distance into wave to start playback, in reference time units. */
+ REFERENCE_TIME rtReserved; /* Reserved field. */
+ REFERENCE_TIME rtDuration; /* Duration, in REFERENCE_TIME or MUSIC_TIME, depending on track timing format. */
+ MUSIC_TIME mtLogicalTime; /* If in music track format, this indicates the musical boundary where this belongs. Otherwise, ignored. */
+ DWORD dwLoopStart; /* Start point for a looping wave. */
+ DWORD dwLoopEnd; /* End point for a looping wave. */
+ DWORD dwFlags; /* Various flags, including whether this is a streaming wave and whether it can be invalidated. */
+ WORD wVolumeRange; /* Random range for volume. */
+ WORD wPitchRange; /* Random range for pitch. */
+} DMUS_IO_WAVE_ITEM_HEADER;
+
+/*
+LIST
+{
+ 'wavt' // Wave track chunk
+ // Wave track header
+ ... // Array of Wave Parts
+}
+ //
+ 'wath'
+ {
+
+ }
+
+ //
+ LIST
+ {
+ 'wavp'
+ // Wave Part Header
+ // List of wave items
+ }
+
+ //
+ 'waph'
+ {
+
+ }
+
+ //
+ LIST
+ {
+ 'wavi'
+ ... // Array of waves; each wave is encapsulated in a list
+ }
+
+ //
+ LIST
+ {
+ 'wave'
+ // Wave item header
+ // Reference to wave object
+ }
+
+ //
+ 'waih'
+ {
+
+ }
+
+*/
+
+/* File io for DirectMusic Container file. This embeds a set of related files. And,
+ in turn, it can be embedded within a segment or script file.
+*/
+
+#define DMUS_FOURCC_CONTAINER_FORM mmioFOURCC('D','M','C','N')
+#define DMUS_FOURCC_CONTAINER_CHUNK mmioFOURCC('c','o','n','h')
+#define DMUS_FOURCC_CONTAINED_ALIAS_CHUNK mmioFOURCC('c','o','b','a')
+#define DMUS_FOURCC_CONTAINED_OBJECT_CHUNK mmioFOURCC('c','o','b','h')
+#define DMUS_FOURCC_CONTAINED_OBJECTS_LIST mmioFOURCC('c','o','s','l')
+#define DMUS_FOURCC_CONTAINED_OBJECT_LIST mmioFOURCC('c','o','b','l')
+
+typedef struct _DMUS_IO_CONTAINER_HEADER
+{
+ DWORD dwFlags; /* Flags. */
+} DMUS_IO_CONTAINER_HEADER;
+
+#define DMUS_CONTAINER_NOLOADS (1 << 1) /* Contained items are not loaded when the container is loaded.
+ Entries will be created in the loader (via SetObject) but
+ the actual objects will not be created until they are
+ specifically loaded at a later time. */
+
+typedef struct _DMUS_IO_CONTAINED_OBJECT_HEADER
+{
+ GUID guidClassID; /* Class id of object. */
+ DWORD dwFlags; /* Flags, for example DMUS_CONTAINED_OBJF_KEEP. */
+ FOURCC ckid; /* chunk ID of track's data chunk if 0 fccType valid. */
+ FOURCC fccType; /* list type if NULL ckid valid */
+ /* Note that LIST:DMRF may be used for ckid and fccType in order to reference an
+ object instead of embedding it within the container. */
+} DMUS_IO_CONTAINED_OBJECT_HEADER;
+
+#define DMUS_CONTAINED_OBJF_KEEP 1 /* Keep the object cached in the loader after the container is released. */
+
+/*
+RIFF
+(
+ 'DMCN' // DirectMusic Container chunk
+ // Container header chunk
+ [] // GUID for container
+ [] // Optional version info
+ [] // Name, author, copyright info., comments
+ // List of objects.
+)
+
+ //
+ 'conh'
+ (
+
+ )
+
+ //
+ 'guid'
+ (
+
+ )
+
+ //
+ vers
+ (
+
+ )
+
+ LIST
+ (
+ 'cosl' // Array of embedded objects.
+ ... // Each object is encapsulated in a LIST chunk
+ )
+
+ // // Encapsulates one object
+ LIST
+ (
+ 'cobl'
+ [] // Alias. An alternative name by which this object is known
+ // within the container.
+ // Required header, includes CLASS ID for object.
+ [] or // Object data of the type specified in .
+ // If DMRF, it is a reference of where to find the object.
+ // Otherwise, it could be any RIFF readable chunk in the
+ // exact same format as a file. The object will load
+ // itself from this data.
+ )
+
+ //
+ 'coba'
+ (
+ // Alias, stored as NULL terminated string of WCHARs
+ )
+
+ //