//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//
//  Copyright (C) Microsoft Corporation, 1998 - 1999
//
//  File:       directxstruct.idl
//
//--------------------------------------------------------------------------

// Direct.idl : IDL source for Direct.dll
// +++++++++++++++++++++++++++++++++++++
// This file will be processed by the MIDL tool to
// produce the type library (Direct.tlb) and marshalling code.
//
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



///////////////////////////////////////////////////////////
// General Types 

#ifdef C_ONLY

	#define DXDRIVERINFO_CDESC DxDriverInfo
	#define DXDRIVERINFOEX_CDESC DxDriverInfoEx
	#define RECT_CDESC Rect
	#define DXGUID_CDESC DxGuid
	#define DPAPPLICATIONDESC2_CDESC DpApplicationDesc2  
	#define DIRECTXREGISTERAPP_CDESC DirectXRegisterApp
	#define PALETTEENTRY_CDESC PaletteEntry

	#define D3DRECT_CDESC D3dRect
	#define D3DROTATION_CDESC D3dRotation
	#define D3DVECTOR_CDESC D3dVector
	#define D3DCOLORVALUE_CDESC D3dColorValue
	#define D3DHVERTEX_CDESC D3dHVertex
	#define D3DTLVERTEX_CDESC D3dTLVertex
	#define D3DLVERTEX_CDESC D3dLVertex
	#define D3DVERTEX_CDESC D3dVertex
	#define DXVERTEX_CDESC DxVertex
	#define D3DCLIPSTATUS_CDESC D3dClipStatus
	#define D3DVIEWPORT_CDESC D3dViewport
	#define D3DVIEWPORT2_CDESC D3dViewport2
	#define D3DVIEWPORT7_CDESC D3dViewport7
	#define D3DLIGHTINGCAPS_CDESC D3dLightingCaps
	#define D3DPRIMCAPS_CDESC D3dPrimCaps
	#define D3DDEVICEDESC_CDESC D3dDeviceDesc
	//#define D3DFINDDEVICERESULT_CDESC D3dFindDeviceResult
	//#define D3DFINDDEVICERESULT2_CDESC D3dFindDeviceResult2 
	#define D3DMATERIAL_CDESC  D3dMaterial
	#define D3DMATERIAL7_CDESC  D3dMaterial7
	#define D3DLIGHT2_CDESC D3dLight2
	#define D3DLIGHT7_CDESC D3dLight7
	#define D3DMATRIX_CDESC D3dMatrix
	#define D3DRMRAY_CDESC D3dRMRay
	#define D3DSTATUS_CDESC D3dStatus
	#define D3DDEVINFO_TEXTUREMANAGER_CDESC D3dDevInfo_TextureManager
	#define D3DSTATS_CDESC D3dStats
	#define D3DTRANSFORMDATA_CDESC D3dTransFormData
	#define D3DLIGHTDATA_CDESC D3dLightData
	#define D3DRMQUATERNION_CDESC D3dRMQuaternion
	#define D3DRMVECTOR4D_CDESC D3dRMVector4d
	#define D3DRMBOX_CDESC D3dRMBox
	#define D3DRMPICKDESC_CDESC D3dRMPickDesc
	#define D3DRMPICKDESC2_CDESC D3dRMPickDesc2
	#define D3DRMIMAGE_CDESC D3dRMImage
	#define D3DRMVERTEX_CDESC D3dRMVertex
	#define D3DVERTEXBUFFERDESC_CDESC D3dVertexBufferDesc
	#define D3DRMMATERIALOVERRIDE_CDESC D3dMaterialOverride


	#define DDCOLORKEY_CDESC DDColorKey
	#define DDSCAPS_CDESC DDSCaps
	#define DDPIXELFORMAT_CDESC DDPixelFormat
	#define DDSURFACEDESC2_CDESC DDSurfaceDesc2
	#define DDCAPS_CDESC DDCaps
	#define DDCAPS2_CDESC DDCaps2
	#define DDSCAPS2_CDESC DDSCaps2
	#define DDBLTFX_CDESC DDBltFx
	#define DDVIDEOPORTINFO_CDESC DDVideoPortInfo 
	#define DDCOLORCONTROL_CDESC DDColorControl
	#define DDGAMMARAMP_CDESC  DDGammaRamp
	#define DDVIDEOPORTBANDWIDTH_CDESC DDVideoPortBandWidth
	#define DDVIDEOPORTCAPS_CDESC DDVideoPortCaps
	#define DDVIDEOPORTDESC_CDESC DDVideoPortDesc
	#define DDVIDEOPORTINFO_CDESC DDVideoPortInfo
	#define DDVIDEOPORTCONNECT_CDESC DDVideoPortConnect


	#define DSBCAPS_CDESC DSBCaps
	#define DSCAPS_CDESC DSCaps
	#define WAVEFORMATEX_CDESC WaveFormatex
	#define DSBUFFERDESC_CDESC DSBufferDesc
	#define DSCURSORS_CDESC DSCursors
	#define DSRESOURCEDESC_CDESC DSResourceDesc
	#define DS3DBUFFER_CDESC DS3dBuffer
	#define DS3DLISTENER_CDESC DS3dListener
	#define DSCBCAPS_CDESC DSCBCaps
	#define DSCCAPS_CDESC DSCCaps
	#define DSCBUFFERDESC_CDESC DSCBufferDesc
	#define DSBPOSITIONNOTIFY_CDESC DSBPositionNotify

	#define DPCHAT_CDESC DPChat
	#define DPCOMPOUNDADDRESSELEMENT_CDESC DPCompoundAddressElement
	#define DPCREDENTIALS_CDESC DPCredentials
	#define DPSECURITYDESC_CDESC DPSecurityDesc
	#define DPSESSIONDESC2_CDESC DPSessionDesc2
	#define DPLAPPINFO_CDESC DPLAppInfo
	#define DPPLAYERIDS_CDESC DPPlayerIds
	#define DPCAPS_CDESC DPCaps
	#define DPPLAYERINFO_CDESC DPPlayerInfo
	#define DPSERVICEPROVIDERINFO_CDESC DPServiceProviderInfo
	#define DPCONNECTION_CDESC DPConnection
	#define DPSERVICEPROVIDER_CDESC DPServiceProvider

	#define DIDEVCAPS_CDESC DIDevCaps
	#define DIDEVICEOBJECTDATA_CDESC DIDeviceObjectData
	#define DIDEVICEINSTANCE_CDESC DIDeviceInstance
	#define DIDEVICEOBJECTINSTANCE_CDESC DIDeviceObjectInstance
	//#define DICONDITION_CDESC DICondition
	#define DIPROPERTY_CDESC DIProperty
	#define DIENVELOPE_CDESC DIEvelope
	#define DICUSTOMFORCE_CDESC DICustomForce
	#define DIPERIODIC_CDESC DIPeriodic
	#define DICONSTANCEFORCE_CDESC DIConstantForce
	#define DIRAMPFORCE_CDESC DIRampForce
	#define DIEFFECT_CDESC  DIEffect 
	#define DIEFFESCAPE_CDESC DIEffEscape
	#define DIEFFECTINFO_CDESC DIEffectInfo
	#define DIOBJECTDATAFORMAT_CDESC  DIObjectDataFormat
	#define DIDATAFORMAT_CDESC DIDataFormat
	#define DIMOUSESTATE_CDESC DIMouseState
	#define DIKEYBOARDSTATE_CDESC DIKeyboardState
	#define DIJOYSTATE_CDESC DIJoyState
	#define DIJOYSTATE2_CDESC DIJoyState2

	#define D3DDEVICEDESC7_CDESC D3dDeviceDesc7
	//#define D3DFINDDEVICERESULT7_CDESC D3dFindDeviceResult7


	#define d3dLightCapsFlags			long
	#define d3dLightingModelFlags			long
	#define d3dCapsMisc 				long
	#define d3dCapsRaster 				long
	#define d3dCapsCmp 				long
	#define d3dCapsBlend				long
	#define d3dCapsTexture				long
	#define d3dCapsShade				long
	#define d3dCapsTextureFilter			long
	//#define d3dCapsTextureBlend			long
	#define d3dCapsTextureAddress			long
	#define d3dDeviceDescFlags			long
	#define d3dColorModel				long
	#define d3dDeviceDescCaps			long
	#define d3dTransformCaps			long
	#define d3dStencilCapsFlags			long
	#define d3dFVFCapsFlags				long
	#define d3dTexOpCapsFlags			long
	#define d3dLightFlags				long
	#define d3dSetStatusFlags			long
	#define d3dClipFlags				long
	#define d3dClipStatusFlags 			long
	//#define d3dFindDeviceSearchFlags 		long
	#define ddSurfaceCapsFlags 			long
	#define ddSurfaceCaps2Flags 			long
	#define ddPixelFormatFlags 			long
	#define ddSurfaceDescFlags 			long
	#define ddSurfaceCapsFlags 			long
	#define ddCaps1Flags				long
	#define ddCaps2Flags				long
	#define ddCKeyCapsFlags				long
	#define ddFXCapsFlags				long
	#define ddFXAlphaCapsFlags			long
	#define ddPCapsFlags				long
	#define ddStereoCapsFlags			long
	#define ddBltFXFlags				long
	#define ddColorFlags				long
	#define d3dVBCapsFlags				long
	#define d3dFVFFlags				long
	#define	dsbCapsFlags			long
	#define dsCapsFlags				long
	#define ds3dModeFlags				long
	#define dscbCapsFlags				long
	#define dscCapsFlags				long
	#define WaveFormatFlags				long
	#define dpSessionFlags				long
	#define dpCapsFlags				long
	#define dpPlayerTypeFlags			long
	#define diDevCapsFlags				long
	#define diDeviceType				long
	#define diDFTFlags				long
	#define diDeviceObjInstanceFlags		long
	#define d3drmPMeshStatusFlags			long
	#define d3drmMaterialOverrideFlags		long
	#define dBoolFlags				long
	#define diCommonDataFormats			long	
	#define diDataFormatFlags			long
	#define ddOverFxFlags long
	#define diConditionFlags long

	
    #define CONST_DMUS_PC_CLASS                 long
    #define CONST_DMUS_PC_FLAGS                 long
    #define CONST_DMUS_PORT_TYPE                long
    #define CONST_DMUS_PORTPARAMS_FLAGS         long


#endif




// New types


#ifdef C_ONLY 
	typedef struct DXDRIVERINFO_CDESC
	{
		BSTR strGuid;
		BSTR strDescription;
		BSTR strName;
	
	} DXDRIVERINFO_CDESC;

	typedef struct DXDRIVERINFOEX_CDESC
	{
		BSTR strGuid;
		BSTR strDescription;
		BSTR strName;
		long hMonitor;
	} DXDRIVERINFOEX_CDESC;

	typedef struct RECT_CDESC
	{
		long left;
		long top;
		long right;
		long bottom;
	} RECT_CDESC;	

#else
	[helpcontext(400100)]
	typedef struct RECT_CDESC
	{
		long Left;
		long Top;
		long Right;
		long Bottom;
	} RECT_CDESC;	


#endif


    [hidden] 
    typedef struct DXGUID_CDESC {
		long data1;
		short data2;
		short data3;
		Byte  data4[8];
	} DXGUID_CDESC;


	[helpcontext(400200)]
	typedef struct DPAPPLICATIONDESC2_CDESC
    	{ 
		long  lFlags; 
		BSTR  strApplicationName; 
    	BSTR  strGuid;
		BSTR  strFilename; 
		BSTR  strCommandLine; 
		BSTR  strPath; 
		BSTR  strCurrentDirectory; 
		BSTR  strDescription;
		BSTR  strAppLauncherName;
	} DPAPPLICATIONDESC2_CDESC; 

	[helpcontext(400300)]
	typedef struct DIRECTXREGISTERAPP_CDESC
    	{ 
		long  lFlags; 
		BSTR  strApplicationName; 
    		BSTR  strGuid;
		BSTR  strFilename; 
		BSTR  strCommandLine; 
		BSTR  strPath; 
		BSTR  strCurrentDirectory; 		
	} DIRECTXREGISTERAPP_CDESC; 

	[helpcontext(400400)]
	typedef struct PALETTEENTRY_CDESC
	{
		Byte red;
		Byte green;
		Byte blue;
		Byte flags;
	} PALETTEENTRY_CDESC;

	//
	// D3D Types 
	//
	[helpcontext(400500)]
	typedef struct D3DRECT_CDESC {
		long x1;
		long y1;
		long x2;
		long y2;
	} D3DRECT_CDESC;


//  not needed according to shanee
//	typedef struct D3DROTATION_CDESC {
//		float x;	
//		float y;
//		float z;
//		float t;
//	} D3DROTATION_CDESC;

	[helpcontext(400600)]
	typedef struct D3DVECTOR_CDESC {
		float x;	
		float y;
		float z;
	} D3DVECTOR_CDESC;

	[helpcontext(400700)]
	typedef struct D3DCOLORVALUE_CDESC {
    		float r;
        	float g;
		float b;
		float a;
	} D3DCOLORVALUE_CDESC;

	[helpcontext(400800)]
	typedef struct D3DLINEPATTERN_CDESC {
    		long repeatFactor;
        	long linePatern;
	} D3DLINEPATTERN_CDESC;

	[helpcontext(400900)]
	typedef struct D3DTLVERTEX_CDESC {
        float    sx;             /* Screen coordinates */
        float    sy;
        float    sz;
        float    rhw;            /* Reciprocal of homogeneous w */
        long    color;          /* Vertex color */
        long    specular;       /* Specular component of vertex */
        float    tu;             /* Texture coordinates */
        float    tv;
	} D3DTLVERTEX_CDESC;


	[helpcontext(401000)]
	typedef struct D3DLVERTEX_CDESC {
        float     x;             /* Homogeneous coordinates */
        float     y;
        float     z;
	  [hidden]	 long reserved;
        long     color;         /* Vertex color */
        long     specular;      /* Specular component of vertex */
        float     tu;            /* Texture coordinates */
        float     tv;
	} D3DLVERTEX_CDESC;


	[helpcontext(401100)]
	typedef struct D3DVERTEX_CDESC {
        float     x;             /* Homogeneous coordinates */
        float     y;
        float     z;
        float     nx;            /* Normal */
        float     ny;
        float     nz;
        float     tu;            /* Texture coordinates */
        float     tv;
	} D3DVERTEX_CDESC;




	[helpcontext(401200)]
	typedef struct D3DCLIPSTATUS_CDESC {
		d3dClipStatusFlags lFlags; 
		d3dClipFlags lStatus; 
		float minx, maxx; 
		float miny, maxy; 
		float minz, maxz; 
	} D3DCLIPSTATUS_CDESC ;




	[helpcontext(401300)]
	typedef struct D3DVIEWPORT7_CDESC {		
		long    lX;
		long    lY;
		long    lWidth;
		long    lHeight;
		float   minZ;
		float   maxZ;
	} D3DVIEWPORT7_CDESC;




	[helpcontext(401400)]
	typedef struct D3DLIGHTINGCAPS_CDESC {
		[hidden]	long				lSize;
				d3dLightCapsFlags		lCaps;
				d3dLightingModelFlags	lLightingModel;
				long				lNumLights;
	} D3DLIGHTINGCAPS_CDESC;


	[helpcontext(401500)]
	typedef struct D3DPRIMCAPS_CDESC { 
		[hidden]	long lSize;                // size of structure
				d3dCapsMisc lMiscCaps;            // miscellaneous caps
				d3dCapsRaster lRasterCaps;          // raster caps
				d3dCapsCmp lZCmpCaps;            // z-comparison caps
				d3dCapsBlend lSrcBlendCaps;        // source blending caps
				d3dCapsBlend lDestBlendCaps;       // destination blending caps
				d3dCapsCmp lAlphaCmpCaps;        // alpha-test comparison caps
				d3dCapsShade lShadeCaps;           // shading caps
				d3dCapsTexture lTextureCaps;         // texture caps
				d3dCapsTextureFilter lTextureFilterCaps;   // texture filtering caps
				//d3dCapsTextureBlend lTextureBlendCaps;    // texture blending caps
				long lReserved1;
				d3dCapsTextureAddress lTextureAddressCaps;  // texture addressing caps
				long lStippleWidth;        // stipple width
				long lStippleHeight;       // stipple height
	} D3DPRIMCAPS_CDESC; 







  #ifndef JAVA_ONLY



		[helpcontext(401600)]
		typedef struct D3DDEVICEDESC7_CDESC
		{
				d3dDeviceDescCaps		lDevCaps;				
				D3DPRIMCAPS_CDESC		dpcLineCaps;
				D3DPRIMCAPS_CDESC		dpcTriCaps;	
		
				long			lDeviceRenderBitDepth;
				long    		lDeviceZBufferBitDepth;
		
				long			lMinTextureWidth,lMinTextureHeight;
				long			lMaxTextureWidth,lMaxTextureHeight;
			
				long            lMaxTextureRepeat;
			    long            lMaxTextureAspectRatio;
				long            lMaxAnisotropy;   
			
				float			dvGuardBandLeft;
				float			dvGuardBandTop;    
				float			dvGuardBandRight;
				float			dvGuardBandBottom;  

				float			dvExtentsAdjust;
				d3dStencilCapsFlags            lStencilCaps;   

				d3dFVFCapsFlags		           lFVFCaps;
				d3dTexOpCapsFlags			   lTextureOpCaps;
				short           nMaxTextureBlendStages;
				short           nMaxSimultaneousTextures;

				long            lMaxActiveLights;
				float			dvMaxVertexW;


				[hidden]	DXGUID_CDESC	deviceGuid;	

				short					nMaxUserClipPlanes;
				short					nMaxVertexBlendMatrices;
				d3dVTXPCapsFlags		lVertexProcessingCaps;				

	[hidden]		long			lReserved1;
	[hidden]		long			lReserved2;
	[hidden]		long			lReserved3;
	[hidden]		long			lReserved4;
				
	
		
		} D3DDEVICEDESC7_CDESC;
	#else

		typedef struct D3DDEVICEDESC7_CDESC
		{
				long  lDevCaps;				
				
		[hidden]	long dpcLineCaps_lSize;                // size of structure
				long dpcLineCaps_lMiscCaps;            // miscellaneous caps
				long dpcLineCaps_lRasterCaps;          // raster caps
				long dpcLineCaps_lZCmpCaps;            // z-comparison caps
				long dpcLineCaps_lSrcBlendCaps;        // source blending caps
				long dpcLineCaps_lDestBlendCaps;       // destination blending caps
				long dpcLineCaps_lAlphaCmpCaps;        // alpha-test comparison caps
				long dpcLineCaps_lShadeCaps;           // shading caps
				long dpcLineCaps_lTextureCaps;         // texture caps
				long dpcLineCaps_lTextureFilterCaps;   // texture filtering caps
				long dpcLineCaps_lTextureBlendCaps;    // texture blending caps
				long dpcLineCaps_lTextureAddressCaps;  // texture addressing caps
				long dpcLineCaps_lStippleWidth;        // stipple width
				long dpcLineCaps_lStippleHeight;       // stipple height

		[hidden]	long dpcTriCaps_lSize;                // size of structure
				long dpcTriCaps_lMiscCaps;            // miscellaneous caps
				long dpcTriCaps_lRasterCaps;          // raster caps
				long dpcTriCaps_lZCmpCaps;            // z-comparison caps
				long dpcTriCaps_lSrcBlendCaps;        // source blending caps
				long dpcTriCaps_lDestBlendCaps;       // destination blending caps
				long dpcTriCaps_lAlphaCmpCaps;        // alpha-test comparison caps
				long dpcTriCaps_lShadeCaps;           // shading caps
				long dpcTriCaps_lTextureCaps;         // texture caps
				long dpcTriCaps_lTextureFilterCaps;   // texture filtering caps
				long dpcTriCaps_lTextureBlendCaps;    // texture blending caps
				long dpcTriCaps_lTextureAddressCaps;  // texture addressing caps
				long dpcTriCaps_lStippleWidth;        // stipple width
				long dpcTriCaps_lStippleHeight;       // stipple height

		
				long			lDeviceRenderBitDepth;
				long    		lDeviceZBufferBitDepth;
		
				long			lMinTextureWidth,lMinTextureHeight;
				long			lMaxTextureWidth,lMaxTextureHeight;
			
				long            lMaxTextureRepeat;
			    long            lMaxTextureAspectRatio;
				long            lMaxAnisotropy;   
			
				float			dvGuardBandLeft;
				float			dvGuardBandTop;    
				float			dvGuardBandRight;
				float			dvGuardBandBottom;  

				float			dvExtentsAdjust;
				d3dStencilCapsFlags            lStencilCaps;   

				d3dFVFCapsFlags		           lFVFCaps;
				d3dTexOpCapsFlags			   lTextureOpCaps;
				short           nMaxTextureBlendStages;
				short           nMaxSimultaneousTextures;

				long            lMaxActiveLights;
				float			dvMaxVertexW;


				[hidden]	DXGUID_CDESC	deviceGuid;	

				short			nMaxUserClipPlanes;
				short			nMaxVertexBlendMatrices;
				d3dVTXCapsFlags		lVertexProcessingCaps;

[hidden]			long			lReserved1;
[hidden]			long			lReserved2;
[hidden]			long			lReserved3;
[hidden]			long			lReserved4;


			} D3DDEVICEDESC7_CDESC;

	#endif




	#ifndef JAVA_ONLY
		[helpcontext(401700)]
		typedef struct D3DMATERIAL7_CDESC  {
			D3DCOLORVALUE_CDESC		diffuse;
			D3DCOLORVALUE_CDESC		ambient;
			D3DCOLORVALUE_CDESC		specular;
			D3DCOLORVALUE_CDESC		emissive;
			float				power;
		} D3DMATERIAL7_CDESC;
	#else
		typedef struct D3DMATERIAL7_CDESC  {			
			float			diffuse_r;			//d3dColorValue
			float			diffuse_g;
			float			diffuse_b;
			float			diffuse_a;
			float			ambient_r;			//D3DCOLORVALUE
			float			ambient_g;
			float			ambient_b;
			float			ambient_a;
			float			specular_r;			//D3DCOLORVALUE
			float			specular_g;
			float			specular_b;
			float			specular_a;
			float			emissive_r;			//D3DCOLORVALUE
			float			emissive_g;
			float			emissive_b;
			float			emissive_a;
			float			power;
		} D3DMATERIAL7_CDESC;

	#endif







	#ifndef JAVA_ONLY

		[helpcontext(401800)]
		typedef struct D3DLIGHT7_CDESC {	
		    	d3dLightType  dltType;
			D3DCOLORVALUE diffuse;
			D3DCOLORVALUE specular;
			D3DCOLORVALUE ambient;
			D3DVECTOR_CDESC position;
			D3DVECTOR_CDESC direction;
	    		float			range;
	    		float			falloff;
	    		float			attenuation0;
	    		float			attenuation1;
	    		float			attenuation2;
	    		float			theta;
	    		float			phi;			
		} D3DLIGHT7_CDESC ;

	
	#else	


		typedef struct D3DLIGHT7_CDESC {
			d3dLightType  dltType;

			float	  diffuse_r;		//D3DCOLORVALUE
			float	  diffuse_g;		//D3DCOLORVALUE
			float	  diffuse_b;		//D3DCOLORVALUE
			float	  diffuse_a;		//D3DCOLORVALUE


			float	  specular_r;		//D3DCOLORVALUE
			float	  specular_g;		//D3DCOLORVALUE
			float	  specular_b;		//D3DCOLORVALUE
			float	  specular_a;		//D3DCOLORVALUE


			float	  ambient_r;		//D3DCOLORVALUE
			float	  ambient_g;		//D3DCOLORVALUE
			float	  ambient_b;		//D3DCOLORVALUE
			float	  ambient_a;		//D3DCOLORVALUE


			float	  position_x;		//D3DVECTOR     
			float	  position_y;
			float	  position_z;
			float	  direction_x;		//D3DVECTOR     
			float	  direction_y;
			float	  direction_z;
			float     range;
			float     falloff;
			float     attenuation0;
			float     attenuation1;
			float     attenuation2;
			float     theta;
			float     phi;
			d3dLightFlags		lFlags;
		} D3DLIGHT7_CDESC ;
	#endif



	
	[helpcontext(401900)]
	typedef struct D3DMATRIX_CDESC {
		float rc11;
		float rc12;
		float rc13;
		float rc14;
		float rc21;
		float rc22;
		float rc23;
		float rc24;
		float rc31;
		float rc32;
		float rc33;
		float rc34;
		float rc41;
		float rc42;
		float rc43;
		float rc44;
	} D3DMATRIX_CDESC;

	#ifndef JAVA_ONLY
		
		[helpcontext(402000)]
		typedef struct D3DRMRAY_CDESC
		{   D3DVECTOR_CDESC dir;
			D3DVECTOR_CDESC pos;
		} D3DRMRAY_CDESC;
	#else
		typedef struct D3DRMRAY_CDESC
		{   float dir_x;
			float dir_y;
			float dir_z;
			float pos_x;
			float pos_y;
			float pos_z;
		} D3DRMRAY_CDESC;

	#endif









	////////////////////////////////////////////////////////////////////
	// Direct 3D Retain Mode types 

	#ifndef JAVA_ONLY

		[helpcontext(402100)]
		typedef struct D3DRMQUATERNION_CDESC
		{   
			float s;		
			D3DVECTOR_CDESC v;
		} D3DRMQUATERNION_CDESC;
	#else
		typedef struct D3DRMQUATERNION_CDESC
		{   
			float s;		
			float v_x;	
			float v_y;	
			float v_z;	
		} D3DRMQUATERNION_CDESC;
	#endif


	[helpcontext(402200)]
	typedef struct D3DRMVECTOR4D_CDESC
	{
		float x;
		float y;
		float z;
		float w;
	} D3DRMVECTOR4D_CDESC;

	#ifndef JAVA_ONLY


		
		[helpcontext(402300)]
		typedef struct D3DRMBOX_CDESC
		{
			D3DVECTOR_CDESC min;
			D3DVECTOR_CDESC max;
		} D3DRMBOX_CDESC;
	#else
		typedef struct D3DRMBOX_CDESC
		{
			float min_x;			// replaces min - cant concat structures
			float min_y;
			float min_z;

			float max_x;                    // replaces max - cant concat structures
			float max_y;
			float max_z;
		} D3DRMBOX_CDESC;
	#endif

	#ifndef JAVA_ONLY

		
		[helpcontext(402400)]
		typedef struct D3DRMPICKDESC_CDESC
		{
			long lFaceIdx;
			long lGroupIdx;
			D3DVECTOR_CDESC vPosition;
		} D3DRMPICKDESC_CDESC;
	#else

		typedef struct D3DRMPICKDESC_CDESC
		{
			long lFaceIdx;
			long lGroupIdx;
			
			float vPosition_x;				// replaces vPosition - cant concat structures
			float vPosition_y;
			float vPosition_z;

		} D3DRMPICKDESC_CDESC;

	#endif



	#ifndef JAVA_ONLY

	
		[helpcontext(402500)]
		typedef struct D3DRMPICKDESC2_CDESC
		{

			long			lFaceIdx;
			long			lGroupIdx;
			D3DVECTOR_CDESC 	vPostion;
			float			tu;
			float			tv;
			D3DVECTOR_CDESC 	vNormal;
			long			color;
		}  D3DRMPICKDESC2_CDESC;
	#else
		typedef struct  D3DRMPICKDESC2_CDESC
		{
			long	lFaceIdx;
			long	lGroupIdx;
			float	vPostion_x;	
			float	vPostion_y;
			float	vPostion_z;
			float	tu;
			float	tv;
			float	vNormal_x;
			float vNormal_y;
			float vNormal_z;
			long	color;
			} D3DRMPICKDESC2_CDESC;

	#endif


	#ifndef JAVA_ONLY


		
		[helpcontext(402600)]
		typedef struct D3DRMVERTEX_CDESC
		{
			D3DVECTOR_CDESC	position;
			D3DVECTOR_CDESC	normal;
    		float tu;
    		float tv;
			long color;
		} D3DRMVERTEX_CDESC;

	#else


		typedef struct D3DRMVERTEX_CDESC
		{
			float position_x;		//x position
			float position_y;		//y
			float position_z;		//z
			float normal_x;	//x normal
			float normal_y;	//y
			float normal_z;	//z
    		float tu;
    		float tv;
			long color;
		} D3DRMVERTEX_CDESC;

	#endif




 
///////////////////////////////////////////////////////////////
//
// Direct Draw Types  
//
///////////////////////////////////////////////////////////////


		
	[helpcontext(402700)]
	typedef struct DDCOLORKEY_CDESC {
		long low;
		long high;
	} DDCOLORKEY_CDESC;


		
	[helpcontext(402800)]
	typedef struct DDSCAPS2_CDESC {
		ddSurfaceCapsFlags	lCaps;
		ddSurfaceCaps2Flags lCaps2;
		long lCaps3;
		long lCaps4;
	} DDSCAPS2_CDESC;




		
	[helpcontext(402900)]
	typedef struct DDPIXELFORMAT_CDESC
	{
		[hidden]long  lSize;	 //private 

		ddPixelFormatFlags  lFlags;
		long  lFourCC;
[hidden]	long  internalVal1; 
		
		// union { DWORD dwRGBBitCount; 
		// DWORD dwYUVBitCount;
		// DWORD dwZBufferBitDepth;
		// DWORD dwAlphaBitDepth;
		// DWORD dwLuminanceBitCount; // new for DirectX 6.0
	      // DWORD dwBumpBitCount;      // new for DirectX 6.0}
[hidden]	long  internalVal2;  		
		// union  DWORD dwRBitMask; 
        	//DWORD dwYBitMask; 
	      //DWORD dwStencilBitDepth;   // new for DirectX 6.0
        	//DWORD dwLuminanceBitMask;  // new for DirectX 6.0
        	//DWORD dwBumpDuBitMask;     // new for DirectX 6.0
		//} DUMMYUNIONNAMEN(2); 
[hidden]	long internalVal3;				
		//union { DWORD dwGBitMask; 
        	//		DWORD dwUBitMask; 
        	//		DWORD dwZBitMask;          // new for DirectX 6.0
        	//		DWORD dwBumpDvBitMask;     // new for DirectX 6.0
		//} DUMMYUNIONNAMEN(3);   		
[hidden]	long internalVal4;		
		// union     {         DWORD dwBBitMask; 
        	//	DWORD dwVBitMask; 
        	//	DWORD dwStencilBitMask;    // new for DirectX 6.0
        	//	DWORD dwBumpLuminanceBitMask;  // new for DirectX 6.0
		//	} DUMMYUNIONNAMEN(4); 
[hidden]	long internalVal5;		
		//union     {         DWORD dwRGBAlphaBitMask; 
        	//	DWORD dwYUVAlphaBitMask; 
        	//	DWORD dwLuminanceAlphaBitMask; // new for DirectX 6.0
        	//	DWORD dwRGBZBitMask;
		//  DWORD dwYUVZBitMask; 
		//} DUMMYUNIONNAMEN(5);


		//union for internalVal1		
		long lRGBBitCount;
		long lYUVBitCount;
		long lZBufferBitDepth;
		long lAlphaBitDepth;
		long lLuminanceBitCount;
		long lBumpBitCount;

		// union for internalVal2
		long lRBitMask;
		long lYBitMask;
		long lStencilBitDepth;
		long lLuminanceBitMask;
		long lBumpDuBitMask;

		// union for internalVal3
		long lGBitMask;
		long lUBitMask;
		long lZBitMask;
		long lBumpDvBitMask;

		// union for internalVal4
		long lBBitMask;
		long lVBitMask;
		long lStencilBitMask;
		long lBumpLuminanceBitMask;

		// union for internalVal5
		long lRGBAlphaBitMask; 
        	long lYUVAlphaBitMask; 
        	long lLuminanceAlphaBitMask; // new for DirectX 6.0
        	long lRGBZBitMask;
		long lYUVZBitMask; 
		

	} DDPIXELFORMAT_CDESC;


#ifndef JAVA_ONLY
		
	[helpcontext(403000)]
	typedef struct DDSURFACEDESC2_CDESC {
	[hidden]	long      lSize;
		ddSurfaceDescFlags          lFlags;
		long						lHeight;
		long						lWidth;
		long						lPitch;	//union with lLinearSize
		long						lBackBufferCount;
		long						lZBufferBitDepth; //union with lMipMapCount and lRefreshRate
		long						lAlphaBitDepth;
	[hidden]long					lReserved;
	[hidden]long					lpSurface;	
    		DDCOLORKEY_CDESC		ddckCKDestOverlay;
    		DDCOLORKEY_CDESC		ddckCKDestBlt;
    		DDCOLORKEY_CDESC		ddckCKSrcOverlay;
    		DDCOLORKEY_CDESC		ddckCKSrcBlt;
	    	DDPIXELFORMAT_CDESC		ddpfPixelFormat;
    		DDSCAPS2_CDESC  		ddsCaps;
		long						lTextureStage;
		long						lLinearSize;
		long						lMipMapCount;
		long						lRefreshRate;
	} DDSURFACEDESC2_CDESC; 
#else

	typedef struct DDSURFACEDESC2_CDESC {
[hidden] 	long          lSize;
		ddSurfaceDescFlags          lFlags;
		long          lHeight;
		long          lWidth;
		long		  lPitch;	//union with lLinearSize
		long		  lBackBufferCount;
		long		  lZBufferBitDepth; //union with lMipMapCount and lRefreshRate
		long		  lAlphaBitDepth;
		long		  lReserved;
[hidden]	long	  	lpSurface;	
		long     	ddckCKDestOverlay_low;
		long     	ddckCKDestOverlay_high;
            long        ddckCKDestBlt_low;
            long        ddckCKDestBlt_high;
		long		ddckCKSrcOverlay_low;
		long		ddckCKSrcOverlay_high;
		long     	ddckCKSrcBlt_low;
		long     	ddckCKSrcBlt_high;

		[hidden]long  ddpfPixelFormat_lSize;	 //private 

		long  ddpfPixelFormat_lFlags;
		long  ddpfPixelFormat_lFourCC;
		
		long  ddpfPixelFormat_internalVal1;
		long  ddpfPixelFormat_internalVal2;
		long  ddpfPixelFormat_internalVal3;
		long  ddpfPixelFormat_internalVal4;
		long  ddpfPixelFormat_internalVal5;

		//union for internalVal1		
		long ddpfPixelFormat_lRGBBitCount;
		long ddpfPixelFormat_lYUVBitCount;
		long ddpfPixelFormat_lZBufferBitDepth;
		long ddpfPixelFormat_lAlphaBitDepth;
		long ddpfPixelFormat_lLuminanceBitCount;
		long ddpfPixelFormat_lBumpBitCount;

		// union for internalVal2
		long ddpfPixelFormat_lRBitMask;
		long ddpfPixelFormat_lYBitMask;
		long ddpfPixelFormat_lStencilBitDepth;
		long ddpfPixelFormat_lLuminanceBitMask;
		long ddpfPixelFormat_lBumpDiBitMask;

		// union for internalVal3
		long ddpfPixelFormat_lGBitMask;
		long ddpfPixelFormat_lUBitMask;
		long ddpfPixelFormat_lZBitMask;
		long ddpfPixelFormat_lBumpDvBitMask;

		// union for internalVal4
		long ddpfPixelFormat_lBBitMask;
		long ddpfPixelFormat_lVBitMask;
		long ddpfPixelFormat_lStencilBitMask;
		long ddpfPixelFormat_lBumpLuminanceBitMask;

		// union for internalVal5
		long ddpfPixelFormat_lRGBAlphaBitMask; 
       	long ddpfPixelFormat_lYUVAlphaBitMask; 
	      long ddpfPixelFormat_lLuminanceAlphaBitMask; // new for DirectX 6.0
      	long ddpfPixelFormat_lRGBZBitMask;
		long ddpfPixelFormat_lYUVZBitMask; 

	
	    	ddSurfaceCapsFlags        		ddsCaps_lCaps;
		ddSurfaceCaps2Flags        		ddsCaps_lCaps2;
		long        					ddsCaps_lCaps3;
		long        					ddsCaps_lCaps4;
		long							lTextureStage;

		//unions
		long				lLinearSize;
		long				lMipMapCount;
		long				lRefreshRate;

	} DDSURFACEDESC2_CDESC; 
#endif


		
	[helpcontext(403100)]
	typedef struct DDCAPS_CDESC
	{
		[hidden]long		lSize;		//private
		ddCaps1Flags		lCaps;
		ddCaps2Flags		lCaps2;
		ddCKeyCapsFlags		lCKeyCaps;
		ddFXCapsFlags		lFXCaps;
[hidden] long	lFXAlphaCaps;
		ddPCapsFlags		lPalCaps;
		ddStereoCapsFlags	lSVCaps;
		long	lAlphaBltConstBitDepths;
		long	lAlphaBltPixelBitDepths;
		long	lAlphaBltSurfaceBitDepths;
		long	lAlphaOverlayConstBitDepths;
		long	lAlphaOverlayPixelBitDepths;
		long	lAlphaOverlaySurfaceBitDepths;
		long	lZBufferBitDepths;
		long	lVidMemTotal;
		long	lVidMemFree;
		long	lMaxVisibleOverlays;
		long	lCurrVisibleOverlays;
		long	lNumFourCCCodes;
		long	lAlignBoundarySrc;
		long	lAlignSizeSrc;
		long	lAlignBoundaryDest;
		long	lAlignSizeDest;
		long	lAlignStrideAlign;
#ifndef JAVA_ONLY
		long	lRops[8];
#else
		long	lRops_0;
		long	lRops_1;
		long	lRops_2;
		long	lRops_3;
		long	lRops_4;
		long	lRops_5;
		long	lRops_6;
		long	lRops_7;
#endif

		long    lReservedCaps;
		long 	lMinOverlayStretch;
		long	lMaxOverlayStretch;
		long	lMinLiveVideoStretch;
		long	lMaxLiveVideoStretch;
		long	lMinHwCodecStretch;
		long	lMaxHwCodecStretch;
		long	lReserved1;
		long 	lReserved2;
		long	lReserved3;

		ddCaps1Flags	lSVBCaps;
		ddCKeyCapsFlags	lSVBCKeyCaps;
    	ddFXCapsFlags	lSVBFXCaps;             //  .

#ifndef JAVA_ONLY
		long	lSVBRops[8];
#else
		long	lSVBRops_0;
		long	lSVBRops_1;
		long	lSVBRops_2;
		long	lSVBRops_3;
		long	lSVBRops_4;
		long	lSVBRops_5;
		long	lSVBRops_6;
		long	lSVBRops_7;
#endif
		ddCaps1Flags	lVSBCaps;
		ddCKeyCapsFlags	lVSBCKeyCaps;
    	ddFXCapsFlags	lVSBFXCaps;             //  .

#ifndef JAVA_ONLY
		long	lVSRops[8];
#else
		long	lVSBRops_0;
		long	lVSBRops_1;
		long	lVSBRops_2;
		long	lVSBRops_3;
		long	lVSBRops_4;
		long	lVSBRops_5;
		long	lVSBRops_6;
		long	lVSBRops_7;
#endif
	
		ddCaps1Flags	lSSBCaps;
		ddCKeyCapsFlags	lSSBCKeyCaps;
	    	ddFXCapsFlags	lSSBFXCaps;		             //  .

#ifndef JAVA_ONLY
		long	lSSBRops[8];
#else
		long	lSSBRops_0;
		long	lSSBRops_1;
		long	lSSBRops_2;
		long	lSSBRops_3;
		long	lSSBRops_4;
		long	lSSBRops_5;
		long	lSSBRops_6;
		long	lSSBRops_7;
#endif
    		long			lMaxVideoPorts;         // maximum number of live video ports
    		long			lCurrVideoPorts;        // current number of live video ports
		ddCaps2Flags	lSVBCaps2;           // additional system-to-video blit caps
    	
		ddCaps1Flags	lNLVBCaps;              // nonlocal-to-local video memory blit caps
    		ddCaps2Flags	lNLVBCaps2;             //  .    	
		ddCKeyCapsFlags	lNLVBCKeyCaps;          //  .
    		ddFXCapsFlags	lNLVBFXCaps;            //  .
#ifndef JAVA_ONLY
			long lNLVBRops[8];
#else
    		long  lNLVBRops_0;
    		long  lNLVBRops_1;
    		long  lNLVBRops_2;
    		long  lNLVBRops_3;
    		long  lNLVBRops_4;
    		long  lNLVBRops_5;
    		long  lNLVBRops_6;
    		long  lNLVBRops_7;
#endif
             DDSCAPS2  ddsCaps;
	} DDCAPS_CDESC;



			
	[helpcontext(403200)]
	typedef struct DDBLTFX_CDESC {
	    [hidden] long  lSize;					//private
	    ddBltFXFlags  lDDFX;
	    long  lROP;
	    long  lDDROP;
	    long  lRotationAngle;
	    long  lZBufferOpCode;
	    long  lZBufferLow;
	    long  lZBufferHigh;
	    long  lZBufferBaseDest;
	    long  lZDestConstBitDepth;
	    long  lZDestConst;				//union with lpDDSZBufferDesc
	    long  lZSrcConstBitDepth;         
	    long  lZSrcConst;				//union with lpDDSZBufferSrc
	    long  lAlphaEdgeBlendBitDepth;	
	    long  lAlphaEdgeBlend;			
	    long  lReserved;					//private 
	    long  lAlphaDestConstBitDepth;	
          long  lAlphaDestConst;           //union    with lpDDSAlphaDest
	    long  lAlphaSrcConstBitDepth;      
          long  lAlphaSrcConst;            //union	with lpDDSAlphaSrc
	    long  lFill;				 //union with FillDepth and FillPixel
	    long  ddckDestColorKey_low;
	    long  ddckDestColorKey_high;
	    long  ddckSrcColorKey_low;
	    long  ddckSrcColorKey_high;

	} DDBLTFX_CDESC;



		
    [helpcontext(403300)]
    typedef struct DDCOLORCONTROL_CDESC {
	[hidden]	long   lSize;
			ddColorFlags   lFlags;
			long   lBrightness;
			long   lContrast;
			long   lHue;
			long   lSaturation;
			long   lSharpness;
			long   lGamma;
			long   lColorEnable;
			long   lReserved1;
	} DDCOLORCONTROL_CDESC;

			
	[helpcontext(403400)]
	typedef struct DDGAMMARAMP_CDESC  {
			short                red[256];    
			short                green[256];
		    short                blue[256];
	} DDGAMMARAMP_CDESC;



			
	[helpcontext(403500)]
	typedef struct D3DVERTEXBUFFERDESC_CDESC {
		
		[hidden] long lSize;
				d3dVBCapsFlags lCaps;
				d3dFVFFlags lFVF;
				long lNumVertices;
	} D3DVERTEXBUFFERDESC_CDESC;



//////////////////////////////////////////////////////////////////////
// Direct Sound types  
//////////////////////////////////////////////////////////////////////


			
	[helpcontext(403600)]
	typedef struct DSBCAPS_CDESC
	{
	     [hidden] long  lSize;
	     dsbCapsFlags  lFlags;
	     long  lBufferBytes;
	     long  lUnlockTransferRate;
	     long  lPlayCpuOverhead;
	} DSBCAPS_CDESC;
	
			
	[helpcontext(403700)]
	typedef struct DSCAPS_CDESC {
	     [hidden] long  lSize;
	     dsCapsFlags  lFlags;
	     long  lMinSecondarySampleRate;
	     long  lMaxSecondarySampleRate;
	     long  lPrimaryBuffers;
	     long  lMaxHwMixingAllBuffers;
	     long  lMaxHwMixingStaticBuffers;
	     long  lMaxHwMixingStreamingBuffers;
	     long  lFreeHwMixingAllBuffers;
	     long  lFreeHwMixingStaticBuffers;
	     long  lFreeHwMixingStreamingBuffers;
	
	     long  lMaxHw3DAllBuffers;
	     long  lMaxHw3DStaticBuffers;
	     long  lMaxHw3DStreamingBuffers;
	     long  lFreeHw3DAllBuffers;
	     long  lFreeHw3DStaticBuffers;
	     long  lFreeHw3DStreamingBuffers;
	     long  lTotalHwMemBytes;
	     long  lFreeHwMemBytes;
	     long  lMaxContigFreeHwMemBytes;
	     long  lUnlockTransferRateHwBuffers;
	     long  lPlayCpuOverheadSwBuffers;
	
	     long  lReserved1;
	     long  lReserved2;
	} DSCAPS_CDESC;
	
			
	[helpcontext(403800)]
	typedef struct WAVEFORMATEX_CDESC
	{
	     short  nFormatTag;          /* format type */
	     short  nChannels;			/* number of channels (i.e. mono, stereo...) */
	     long   lSamplesPerSec;		/* sample rate */
	     long   lAvgBytesPerSec;		/* for buffer estimation */
	     short  nBlockAlign;			/* block size of data */
	     short  nBitsPerSample;      /* number of bits per sample of mono data */
	     short  nSize;				/* nbytes of the extra information */
	     long   lExtra;				// was byte* seen as an array - extra information (after cbSize)
	} WAVEFORMATEX_CDESC;
	
			
	[helpcontext(403900)]
	typedef struct DSBUFFERDESC_CDESC 				//docdoc: requires WaveFormatex
	{
	     [hidden]	long  lSize;
	     dsbCapsFlags  lFlags;
	     long  lBufferBytes;
	     [hidden] long  lReserved;
		[hidden]	long  lpwfxFormat;			// WaveFormatex   *lpwfxFormat;
	} DSBUFFERDESC_CDESC;
	
			
	[helpcontext(404000)]
	typedef struct DSCURSORS_CDESC
	{
	     long   lPlay;				// Play cursor
	     long   lWrite;				// Write Cursor
	} DSCURSORS_CDESC;

	
	//
	// 3D Sound
	//
#ifndef JAVA_ONLY


			
	[helpcontext(404100)]
	typedef struct DS3DBUFFER_CDESC
	{
	[hidden]	long	lSize;
	D3DVECTOR_CDESC	vPostion;
	D3DVECTOR_CDESC	vVelocity;
	long			lInsideConeAngle;
	long			lOutsideConeAngle;
	D3DVECTOR_CDESC	vConeOrientation;
	long			lConeOutsideVolume;
	float			minDistance;
	float			maxDistance;
	ds3dModeFlags	lMode;
	}DS3DBUFFER_CDESC;

#else

			
	[helpcontext(404200)]
	typedef struct DS3DBUFFER_CDESC
	{
	[hidden]	long	lSize;
	float	vPostion_x;
	float	vPostion_y;
	float	vPostion_z;

	float	vVelocity_x;
	float	vVelocity_y;
	float	vVelocity_z;


	long			lInsideConeAngle;
	long			lOutsideConeAngle;
	float	vConeOrientation_x;
	float	vConeOrientation_y;
	float	vConeOrientation_z;

	long			lConeOutsideVolume;
	float			minDistance;
	float			maxDistance;
	ds3dModeFlags	lMode;
	}DS3DBUFFER_CDESC;
#endif
#ifndef JAVA_ONLY


			
	[helpcontext(404300)]
	typedef struct DS3DLISTENER_CDESC
	{
	    	[hidden] long lSize;	// will be private in java 
		D3DVECTOR_CDESC	vPosition;
		D3DVECTOR_CDESC	vVelocity;
		D3DVECTOR_CDESC	vOrientFront;
		D3DVECTOR_CDESC	vOrientTop;

	    	float distanceFactor;
	    	float rolloffFactor;
	    	float dopplerFactor;
	
	} DS3DLISTENER_CDESC;
#else
	typedef struct DS3DLISTENER_CDESC
	{
	    [hidden] long lSize;	// will be private in java 
		float	vPostion_x;
		float	vPostion_y;
		float	vPostion_z;

		float	vVelocity_x;
		float	vVelocity_y;
		float	vVelocity_z;

		float	vOrientFront_x;
		float	vOrientFront_y;
		float	vOrientFront_z;

		float	vOrientTop_x;
		float	vOrientTop_y;
		float	vOrientTop_z;

		float distanceFactor;
		float rolloffFactor;
		float dopplerFactor;
	
	} DS3DLISTENER_CDESC;

#endif


				
	[helpcontext(404400)]
	typedef struct DSCBCAPS_CDESC
	{
		[hidden] long   lSize;
		dscbCapsFlags   lFlags;
		long   lBufferBytes;
		long   lReserved;
	} DSCBCAPS_CDESC;

				
	[helpcontext(404500)]
	typedef struct DSCCAPS_CDESC
	{
		[hidden] long   lSize;
		dscCapsFlags	lFlags;
		WaveFormatFlags lFormats;
		long   lChannels;
	} DSCCAPS_CDESC;

#ifndef JAVA_ONLY
				
	[helpcontext(404600)]
	typedef struct DSCBUFFERDESC_CDESC
	{
		[hidden]long           lSize;		
		dscbCapsFlags          lFlags;
		long                   lBufferBytes;
		[hidden]	long       lReserved;
      	[hidden]    long       pFormat;
        	WAVEFORMATEX_CDESC     fxFormat;                
	} DSCBUFFERDESC_CDESC;
#else
	 typedef struct DSCBUFFERDESC_CDESC
	{
		[hidden]long           lSize;
		dscbCapsFlags          lFlags;
		long                   lBufferBytes;
		[hidden]long           lReserved;
        	[hidden]long           pFormat;
    		short  fxFormat_nFormatTag;          /* format type */
	     	short  fxFormat_nChannels;			/* number of channels (i.e. mono, stereo...) */
	     	long   fxFormat_lSamplesPerSec;		/* sample rate */
	     	long   fxFormat_lAvgBytesPerSec;		/* for buffer estimation */
	     	short  fxFormat_nBlockAlign;			/* block size of data */
	     	short  fxFormat_nBitsPerSample;      /* number of bits per sample of mono data */
	     	short  fxFormat_nSize;				/* nbytes of the extra information */
	     	long   fxFormat_lExtra;				// was byte* seen as an array - extra information (after cbSize)
	} DSCBUFFERDESC_CDESC;

#endif

			
	[helpcontext(404700)]
	typedef struct DSBPOSITIONNOTIFY_CDESC {
		long  lOffset;
		long  hEventNotify;
	} DSBPOSITIONNOTIFY_CDESC;
 

//////////////////////////////////////////////////////////////////////
// Direct Play Types


			
	[helpcontext(404800)]
	typedef struct DPCREDENTIALS_CDESC{      
		long  lFlags;		//must be zero
		BSTR strUsername;
		BSTR strPassword;
		BSTR strDomain;
	} DPCREDENTIALS_CDESC;

				
	[helpcontext(404900)]
	typedef struct DPSECURITYDESC_CDESC {
		long lFlags;		//must be zero
		BSTR strSSPIProvider;
		BSTR strCAPIProvider;
		long lCAPIProviderType;       
		long lEncryptionAlgorithm; 
	} DPSECURITYDESC_CDESC;

#ifdef C_ONLY
	//internal to our app
	typedef struct DPLAPPINFO_CDESC{
		BSTR strGuidApplication;
		BSTR strAppName;
	} DPLAPPINFO_CDESC;

	typedef struct DPSESSIONDESC2_CDESC{
		dpSessionFlags lFlags;
		BSTR  strGuidInstance;
		BSTR  strGuidApplication;
		long	lMaxPlayers;
		long	lCurrentPlayers;
		BSTR	strSessionName;
		BSTR	strPassword;
		long	lUser1;
		long	lUser2;
		long	lUser3;
		long	lUser4;
	} DPSESSIONDESC2_CDESC;
#endif


	// DHF begin - _dxj_DirectPlay2, DirectPlayLobby
    			
	[helpcontext(405000)]
	typedef struct DPCAPS_CDESC {
		 [hidden] long	lSize;
		 dpCapsFlags    	lFlags;
		 long			lMaxBufferSize;
		 long			lMaxQueueSize;
		 long			lMaxPlayers;
		 long			lHundredBaud;
		 long			lLatency;
		 long			lMaxLocalPlayers;
		 long			lHeaderLength;
		 long			lTimeout;
	} DPCAPS_CDESC;

#ifdef C_ONLY
			
    typedef struct DPCHAT_CDESC {
		[hidden]	long lSize;
					long lFlags;	//mustbe zero
		[hidden]	long lpszMessage;
		[hidden]	long lpwzMessage;
	    			BSTR message;
    } DPCHAT_CDESC;

	typedef struct DPPLAYERINFO_CDESC {
			long				lDPID;
			dpPlayerTypeFlags	lPlayerType;
			BSTR				strShortName;
			BSTR				strLongName;
			long lFlags;		//spead across DPENUMGROUPS and DPENUMPLAYERS
	} DPPLAYERINFO_CDESC;


	typedef struct DPSERVICEPROVIDERINFO_CDESC {
			BSTR strGuid;
			BSTR strName;
			long lMajorVersion;
			long lMinorVersion;
			long lFlags;		//??
	} DPSERVICEPROVIDERINFO_CDESC;

	typedef struct DPCONNECTION_CDESC {
			BSTR strGuid;			
			BSTR strShortName;
			BSTR strLongName;
			long lFlags;		//not used
	} DPCONNECTION_CDESC;

	typedef struct DPSERVICEPROVIDER_CDESC
	{
		BSTR strGuid;
		BSTR strName;
		long lMajorVersion;
		long lMinorVersion;
	} DPSERVICEPROVIDER_CDESC;


	[hidden]	//replaced by object
	typedef struct DIDEVICEINSTANCE_CDESC {
		[hidden]	long lSize;
		BSTR			strGuidInstance;
		BSTR			strGuidProduct;
		diDeviceType    lDevType;
		BSTR			strInstanceName;
		BSTR			strProductName;
		BSTR			strGuidFFDriver;
		short			nUsagePage;
		short			nUsage;
	} DIDEVICEINSTANCE_CDESC;


	[hidden]	//replaced by object
	typedef struct DIDEVICEOBJECTINSTANCE_CDESC {
		[hidden]	long lSize;
		BSTR							strGuidType;
		long							lOfs;
		diDFTFlags						lType;
		diDeviceObjInstanceFlags		lFlags;
		BSTR strName;
		long lFFMaxForce;
		long lFFForceResolution;
		short nCollectionNumber;
		short nDesignatorIndex;
		short nUsagePage;
		short nUsage;
		long lDimension;
		short nExponent;
		short nReserved;
		} DIDEVICEOBJECTINSTANCE_CDESC;


#endif

	//
	// DInput
	//
	[helpcontext(405100)]
	typedef struct DIDEVCAPS_CDESC {
		[hidden]	long lSize;
		diDevCapsFlags lFlags;
		diDeviceType lDevType;
		long lAxes;
		long lButtons;
		long lPOVs;
		long lFFSamplePeriod;
		long lFFMinTimeResolution;
		long lFirmwareRevision;
		long lHardwareRevision;
		long lDriverVersion;
	} DIDEVCAPS_CDESC;

	[helpcontext(405200)]            
	typedef struct DIDEVICEOBJECTDATA_CDESC{
		long lOfs;
		long lData;
		long lTimeStamp;
		long lSequence;
	} DIDEVICEOBJECTDATA_CDESC;


	[helpcontext(405300)]
	typedef struct DIPROPRANGE_CDESC {
  		    long lSize;
			[hidden]long lHeaderSize;
			long lObj;
			long lHow;
			long lMin;
			long lMax;
	} DIPROPRANGE_CDESC;

	[helpcontext(405400)]
	typedef struct DIPROPLONG_CDESC {
  		    long lSize;
			[hidden]long lHeaderSize;
			long lObj;
			long lHow;
			long lData;			
	} DIPROPLONG_CDESC;


	[helpcontext(405500)]
	typedef struct DIOBJECTDATAFORMAT_CDESC {
			BSTR strGuid;
			long lOfs;
			diDFTFlags				 lType;
			diDeviceObjInstanceFlags lFlags;
	} DIOBJECTDATAFORMAT_CDESC;



	[helpcontext(405600)]
	typedef struct DIDATAFORMAT_CDESC {
	[hidden]	long lSize;
			long lObjSize;
			diDataFormatFlags lFlags;
			long dataSize;
			long numObjs;
	[hidden]	long pData;

	} DIDATAFORMAT_CDESC;

#ifndef JAVA_ONLY

	[helpcontext(405700)]
	typedef struct DIMOUSESTATE_CDESC {
		   long x;
		   long y;
		   long z;
		   Byte buttons[4];
	} DIMOUSESTATE_CDESC;

#else

	typedef struct DIMOUSESTATE_CDESC {
		   long x;
		   long y;
		   long z;
		   Byte buttons_0;
		   Byte buttons_1;
		   Byte buttons_2;
		   Byte buttons_3;
	} DIMOUSESTATE_CDESC;
#endif


	[helpcontext(405800)]
	typedef struct DIKEYBOARDSTATE_CDESC {
			Byte key[256];
	} DIKEYBOARDSTATE_CDESC;

#ifndef JAVA_ONLY


	[helpcontext(405900)]
	typedef struct DIJOYSTATE_CDESC {
			long x;
			long y;
			long z;
			long rx;
			long ry;
			long rz;
			long slider[2];
			long POV[4];
			Byte buttons[32];
	}   DIJOYSTATE_CDESC;
#else
	typedef struct DIJOYSTATE_CDESC {
			long x;
			long y;
			long z;
			long rx;
			long ry;
			long rz;
			long slider_0;
			long slider_1;
			long POV_0;
			long POV_1;
			long POV_2;
			long POV_3;
			Byte buttons_0;
			Byte buttons_1;
			Byte buttons_2;			
			Byte buttons_3;
			Byte buttons_4;
			Byte buttons_5;
			Byte buttons_6;
			Byte buttons_7;
			Byte buttons_8;
			Byte buttons_9;
			Byte buttons_10;
			Byte buttons_11;
			Byte buttons_12;
			Byte buttons_13;
			Byte buttons_14;
			Byte buttons_15;
			Byte buttons_16;
			Byte buttons_17;
			Byte buttons_18;
			Byte buttons_19;
			Byte buttons_20;
			Byte buttons_21;
			Byte buttons_22;
			Byte buttons_23;
			Byte buttons_24;
			Byte buttons_25;
			Byte buttons_26;
			Byte buttons_27;
			Byte buttons_28;
			Byte buttons_29;
			Byte buttons_30;
			Byte buttons_31;
			

	}   DIJOYSTATE_CDESC;
#endif



	[helpcontext(406000)]
      typedef struct DIJOYSTATE2_CDESC {
			long x;
			long y;
			long z;
			long rx;
			long ry;
			long rz;
			long slider[2];
			long POV[4];
			Byte buttons[128];
			long vx;
			long vy;
			long vz;
			long vrx;
			long vry;
			long vrz;
			long vslider[2];
			long ax;
			long ay;
			long az;
			long arx;
			long ary;
			long arz;
			long aslider[2];
			long fx;
			long fy;
			long fz;
			long frx;
			long fry;
			long frz;
			long fslider[2];
	} DIJOYSTATE2_CDESC;


	[helpcontext(406100)]
	typedef struct D3DRMPMESHLOADSTATUS_CDESC {    
	[hidden] long lSize;		    
		long					lPMeshSize;	
	      long					lBaseMeshSize;	
		long					lBytesLoaded;
		long					lVerticesLoaded;	
    		long					lFacesLoaded;
		d3drmPMeshStatusFlags	lFlags;
	} D3DRMPMESHLOADSTATUS_CDESC;


	[helpcontext(406200)]
	typedef struct D3DRMANIMATIONKEY_CDESC
	{
	    	[hidden] long lSize;
	    	long lKeyType;
    		float dvTime;
		long  lID;	
		float dvX;
		float dvY;
		float dvZ;
		float dvS;
	} D3DRMANIMATIONKEY_CDESC;

	


	[helpcontext(406300)]
	typedef struct D3DRMMATERIALOVERRIDE_CDESC
	{ 
	[hidden]	long							lSize;     
			d3drmMaterialOverrideFlags      lFlags;     
			D3DCOLORVALUE					dcDiffuse;  
			D3DCOLORVALUE					dcAmbient;   
			D3DCOLORVALUE					dcEmissive; 
			D3DCOLORVALUE					dcSpecular;
			float      dvPower;
	[hidden]	LPUNKNOWN     pTex;
	} 	D3DRMMATERIALOVERRIDE_CDESC;






// DMUSIC


typedef enum CONST_DMUS_NOTIFICATION_TYPE 
{
	DMUS_NOTIFY_ON_CHORD =1,
	DMUS_NOTIFY_ON_COMMAND =2,
	DMUS_NOTIFY_ON_MEASUREANDBEAT =3,
	DMUS_NOTIFY_ON_PERFORMANCE=4,
	DMUS_NOTIFY_ON_SEGMENT=5,
} CONST_DMUS_NOTIFICATION_TYPE;

[helpcontext(406400)]
typedef struct DMUS_TIMESIGNATURE_CDESC {
    long   mtTime;
    Byte   beatsPerMeasure;
    Byte   beat;
    short  gridsPerBeat;
} DMUS_TIMESIGNATURE_CDESC;

#define MUSIC_TIME long

[helpcontext(406500)]
typedef struct DMUS_NOTIFICATION_PMSG_CDESC 
{   
[hidden]	long	lFlags;
			long	ctTime;
			long	mtTime;
			long	lNotificationType;			
			long	lNotificationOption;
			long	lField1;
			long	lField2;
} DMUS_NOTIFICATION_PMSG_CDESC;


[helpcontext(406600)]
typedef struct DMUS_CURVE_PMSG_CDESC {
	MUSIC_TIME mtDuration;
	MUSIC_TIME mtOriginalStart;
	MUSIC_TIME mtResetDuration;
	short      startValue;
	short      endValue;
	short      resetValue;
	short      measure;
	short      offset;
	Byte       beat;
	Byte       grid;
	Byte       type;
	Byte       curveShape;
	Byte       ccData;
	Byte       flags;
} DMUS_CURVE_PMSG_CDESC;

[helpcontext(406700)]
typedef struct DMUS_NOTE_PMSG_CDESC {
	MUSIC_TIME mtDuration;
	short      musicValue;
	short      measure;
	short      offset;
	Byte       beat;
	Byte       grid;
	Byte       velocity;
	Byte       flags;
	Byte       timeRange;
	Byte       durRange;
	Byte       velRange;
	Byte       playModeFlags;
	Byte       subChordLevel;
	Byte       midiValue;
	short      transpose;	//becomes byte
} DMUS_NOTE_PMSG_CDESC;

[helpcontext(406800)]
typedef struct DMUS_PORTCAPS_CDESC { 
	[hidden]	long dwSize; 
                                CONST_DMUS_PC_FLAGS lFlags;
      [hidden]	DXGUID guidPort; 
                                CONST_DMUS_PC_CLASS lClass;   
                                CONST_DMUS_PORT_TYPE lType;    
				long lMemorySize;
				long lMaxChannelGroups;   
				long lMaxVoices;  
				long lMaxAudioChannels;
				long lEffectFlags;    
	[hidden]	short wszDescription[128];
} DMUS_PORTCAPS_CDESC;


#ifdef DX61

	[helpcontext(406900)]
	typedef struct D3DHVERTEX_CDESC {
	  long		lFlags;      /* Homogeneous clipping flags */
     	  float	    	hx;
        float		hy;
        float		hz;
	} D3DHVERTEX_CDESC;



	#ifndef JAVA_ONLY
		[helpcontext(407000)]
		typedef struct D3DLIGHT2_CDESC {
			[hidden] long lSize;
		    	d3dLightType  dltType;
			D3DCOLORVALUE_CDESC color;
			D3DVECTOR_CDESC position;
			D3DVECTOR_CDESC direction;
	    		float			range;
		    	float			falloff;
		    	float			attenuation0;
		    	float			attenuation1;
	    		float			attenuation2;
		    	float			theta;
		    	float			phi;
			d3dLightFlags			lFlags;
		} D3DLIGHT2_CDESC ;

	
	#else	


		typedef struct D3DLIGHT2_CDESC {
			long		  lSize;
			d3dLightType  dltType;
			float	  color_r;			//D3DCOLORVALUE
			float	  color_g;			//D3DCOLORVALUE
			float	  color_b;			//D3DCOLORVALUE
			float	  color_a;			//D3DCOLORVALUE
			float	  position_x;		//D3DVECTOR     
			float	  position_y;
			float	  position_z;
			float	  direction_x;		//D3DVECTOR     
			float	  direction_y;
			float	  direction_z;
			float     range;
			float     falloff;
			float     attenuation0;
			float     attenuation1;
			float     attenuation2;
			float     theta;
			float     phi;
			d3dLightFlags		lFlags;
		} D3DLIGHT2_CDESC ;
	#endif

	[helpcontext(407100)]
	typedef struct D3DLIGHTDATA_CDESC
	{
		    		long       	lSize;
		[hidden]	long		pIn;
	    			long       	lInSize;
		[hidden]	long		pOut;				
	    			long       	lOutSize;
	} D3DLIGHTDATA_CDESC;

	#ifndef JAVA_ONLY
		[helpcontext(407200)]
		typedef struct D3DMATERIAL_CDESC  {
			[hidden] long				lSize;
			D3DCOLORVALUE_CDESC		diffuse;
			D3DCOLORVALUE_CDESC		ambient;
			D3DCOLORVALUE_CDESC		specular;
			D3DCOLORVALUE_CDESC		emmisive;
			float				power;
			long				hTexture;
			long				lRampSize;			//union with hTexture!!!
		} D3DMATERIAL_CDESC;
	#else
		typedef struct D3DMATERIAL_CDESC  {
			long 			lSize;
			float			diffuse_r;			//d3dColorValue
			float			diffuse_g;
			float			diffuse_b;
			float			diffuse_a;
			float			ambient_r;			//D3DCOLORVALUE
			float			ambient_g;
			float			ambient_b;
			float			ambient_a;
			float			specular_r;			//D3DCOLORVALUE
			float			specular_g;
			float			specular_b;
			float			specular_a;
			float			emissive_r;			//D3DCOLORVALUE
			float			emissive_g;
			float			emissive_b;
			float			emissive_a;
			float			power;
			long			hTexture;
  			long		    	lRampSize;			//union with hTexture
		} D3DMATERIAL_CDESC;

	#endif

	[helpcontext(407300)]
	typedef struct D3DSTATS_CDESC
	{
		[hidden] long lSize;
		long lTrianglesDrawn;
		long lLinesDrawn;			
		long lPointsDrawn;
		long lSpansDrawn;
		long lVerticesProcessed;
	} D3DSTATS_CDESC;

	#ifndef JAVA_ONLY

		[helpcontext(407400)]
		typedef struct D3DTRANSFORMDATA_CDESC
		{
	    		[hidden]long        	lSize;
	    		[hidden]long		pIn;
			[hidden]long        	lInSize;
			[hidden]long		pOut;
			[hidden]long		lOutSize;
	    		[hidden]long		pHOut;	    
	    			d3dClipFlags      lClip;
	    			d3dClipFlags      lClipIntersection;
	    			d3dClipFlags      lClipUnion;
				D3DRECT_CDESC	rExtent;
		} D3DTRANSFORMDATA_CDESC;
	#else

		typedef struct D3DTRANSFORMDATA_CDESC 
		{
	    				long         lSize;
	    		[hidden]long		 pIn;
	    				long         lInSize;
			[hidden]	long		 pOut;
	    				long		 lOutSize;
	    		[hidden]long		 pHOut;	    
	    				d3dClipFlags lClip;
	    				d3dClipFlags lClipIntersection;
	    				d3dClipFlags lClipUnion;
						long	 	 rExtent_x1;
						long		 rExtent_y1;
						long		 rExtent_x2;
						long		 rExtent_y2;
		} D3DTRANSFORMDATA_CDESC;

	#endif

	[helpcontext(407500)]
	[hidden] typedef struct D3DVIEWPORT_CDESC {
		[hidden] long    lSize;
		long    lX;
		long    lY;
		long    lWidth;
		long    lHeight;
		float   scaleX;
		float   scaleY;
		float   maxX;
		float   maxY;
		float   minZ;
		float   maxZ;
	} D3DVIEWPORT_CDESC ;
 
	[helpcontext(407600)]
	typedef struct D3DVIEWPORT2_CDESC {
		[hidden] long    lSize;
		long    lX;
		long    lY;
		long    lWidth;
		long    lHeight;
		float   clipX;
		float   clipY;
		float   clipWidth;
		float   clipHeight;
		float   minZ;
		float   maxZ;
	} D3DVIEWPORT2_CDESC;


#endif


[helpcontext(407700)]
typedef struct DIENVELOPE_CDESC {
   [hidden] long lSize;  
   long lAttackLevel; 
   long lAttackTime; 
   long lFadeLevel; 
   long lFadeTime; 
} DIENVELOPE_CDESC;

[helpcontext(407800)]
typedef struct DIRAMPFORCE_CDESC {
	long lRangeStart;	//ramp force
	long lRangeEnd;		//ramp force
} DIRAMPFORCE_CDESC;
  
[helpcontext(407900)]
typedef struct DIPERIODICFORCE_CDESC {
	long lMagnitude;	//periodic 
	long lOffset;		//periodic
	long lPhase;		//periodic
	long lPeriod;		//periodic
} DIPERIODICFORCE_CDESC;

[helpcontext(408000)]
typedef struct DICONDITION_CDESC {
	long lOffset;				//condition
	long lPositiveCoefficient;	//condition
	long lNegativeCoefficient;	//condition
	long lPositiveSaturation;	//condition
	long lNegativeSaturation;	//condition
	long lDeadBand;				//condition	
	//VARIANT_BOOL bDirectional;	//condition
} DICONDITION_CDESC;

[helpcontext(408100)]
typedef struct DICONSTANTFORCE_CDESC {
	long lMagnitude;			
} DICONSTANTFORCE_CDESC;

[hidden]
typedef struct DIAXISOFFSETS_CDESC{
	long x;			
	long y;			
} DIAXISOFFSETS_CDESC;

[helpcontext(408200)]
typedef struct DIEFFECT_CDESC {
      [hidden] long dwSize;
	long lFlags;						//dwTriggerButton and rgdwAxes 
									//use	DIEFF_OBJECTIDS 
									//		DIEFF_OBJECTOFFSETS 
									//rglDirection
									//depends	DIEFF_CARTESIAN 
									//			DIEFF_POLAR 
									//	DIEFF_SPHERICAL 
	long lDuration;					//durration of the effect
      long lSamplePeriod;				//period
	long lGain;						//magnitude???
	long lTriggerButton;				//DIEFF_OBJECTIDS 
	long lTriggerRepeatInterval;
	[hidden] long cAxes;			//4
	[hidden] long lprgdwAxes;		//DIEFF_OBJECTIDS 
									//
      [hidden] long lprglDirection;  
	[hidden] long lpEnvelope; 
      [hidden] long cbTypeSpecificParams; 
	[hidden] long lpvTypeSpecificParams; 

      long lStartDelay; 
	long x;							// x
	long y;							// y	
	

	DIRAMPFORCE_CDESC rampForce;
	DIPERIODICFORCE_CDESC periodicForce;	
	DICONSTANTFORCE_CDESC constantForce;	
	DICONDITION_CDESC conditionX;					
	DICONDITION_CDESC conditionY;
	diConditionFlags  conditionFlags;					
	BOOL bUseEnvelope;
	DIENVELOPE_CDESC envelope;
	[hidden] DIAXISOFFSETS_CDESC axisOffsets;
} DIEFFECT_CDESC;


[helpcontext(408300)]
typedef struct D3DDEVINFO_TEXTUREMANAGER_CDESC {
	//cant be VARIANT_BOOL because that would only be 16 bit
    long		    bThrashing;                 /* indicates if thrashing */
    long			lNumEvicts;                /* number of textures evicted */
    long			lNumVidCreates;            /* number of textures created in video memory */
    long			lNumTexturesUsed;          /* number of textures used */
    long			lNumUsedTexInVid;          /* number of used textures present in video memory */
    long			lWorkingSet;               /* number of textures in video memory */
    long			lWorkingSetBytes;          /* number of bytes in video memory */
    long			lTotalManaged;             /* total number of managed textures */
    long			lTotalBytes;               /* total number of bytes of managed textures */
   long			lLastPri;                  /* priority of last texture evicted */
} D3DDEVINFO_TEXTUREMANAGER_CDESC;


//need to add to master help
[helpcontext(408400)]
typedef struct DDOVERLAYFX_CDESC{ 
    [hidden]	long lSize; 
				long lAlphaEdgeBlendBitDepth; 
				long lAlphaEdgeBlend; 
	[hidden]	long lReserved; 
				long lAlphaDestConstBitDepth; 
				long lAlphaDestConst;	//union        LPDIRECTDRAWSURFACE lpDDSAlphaDest; 
				long lAlphaSrcConstBitDepth; 
				long lAlphaSrcConst;	//union         LPDIRECTDRAWSURFACE lpDDSAlphaSrc; 
				
			    DDCOLORKEY_CDESC dckDestColorkey; 
				DDCOLORKEY_CDESC dckSrcColorkey; 
				
				ddOverFxFlags lDDFX; 
				long lFlags; 
} DDOVERLAYFX_CDESC;


[helpcontext(408500)]
typedef struct D3DDEVINFO_TEXTURING_CDESC {
    long   lNumLoads;                 /* counts Load() API calls */
    long   lApproxBytesLoaded;        /* Approximate number bytes loaded via Load() */
    long   lNumPreLoads;              /* counts PreLoad() API calls */
    long   lNumSet;                   /* counts SetTexture() API calls */
    long   lNumCreates;               /* counts texture creates */
    long   lNumDestroys;              /* counts texture destroys */
    long   lNumSetPriorities;         /* counts SetPriority() API calls */
    long   lNumSetLODs;               /* counts SetLOD() API calls */
    long   lNumLocks;                 /* counts number of texture locks */
    long   lNumGetDCs;                /* counts number of GetDCs to textures */
} D3DDEVINFO_TEXTURING_CDESC;
