windows-nt/Source/XPSP1/NT/multimedia/directx/dxvb/dx7vb/dxglob7obj.h
2020-09-26 16:20:57 +08:00

306 lines
12 KiB
C++

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1998 - 1999
//
// File: dxglob7obj.h
//
//--------------------------------------------------------------------------
#include "resource.h" // main symbols
typedef HRESULT (__stdcall *DDRAWCREATE)( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter );
typedef HRESULT (__stdcall *DDCREATECLIPPER)( DWORD dwFlags, LPDIRECTDRAWCLIPPER FAR *lplpDDClipper, IUnknown FAR *pUnkOuter );
typedef HRESULT (__stdcall *DDENUMERATE)(LPDDENUMCALLBACK, LPVOID);
typedef HRESULT (__stdcall *DDENUMERATEEX)(LPDDENUMCALLBACKEX, LPVOID, DWORD);
typedef HRESULT (__stdcall *DIRECT3DRMCREATE)(LPDIRECT3DRM *lpCreate);
typedef HRESULT (__stdcall *DSOUNDCREATE)(GUID FAR * lpGUID, LPDIRECTSOUND * ppDS, IUnknown FAR *pUnkOuter );
typedef HRESULT (__stdcall *DSOUNDCAPTURECREATE)(GUID FAR * lpGUID, LPDIRECTSOUNDCAPTURE * ppDS, IUnknown FAR *pUnkOuter );
typedef HRESULT (CALLBACK *DSOUNDENUMERATE)(LPDSENUMCALLBACK lpCallback, LPVOID lpContext );
typedef HRESULT (CALLBACK *DSOUNDCAPTUREENUMERATE)(LPDSENUMCALLBACK lpCallback, LPVOID lpContext );
typedef HRESULT (__stdcall *DIRECTPLAYCREATE)( LPGUID lpGUID, LPDIRECTPLAY *lplpDP, IUnknown *pUnk);
typedef HRESULT (__stdcall *DIRECTPLAYENUMERATE)( LPDPENUMDPCALLBACK, LPVOID );
typedef HRESULT (__stdcall *DIRECTPLAYLOBBYCREATE)(LPGUID, LPDIRECTPLAYLOBBY *, IUnknown *, LPVOID, DWORD );
typedef HRESULT (__stdcall *DDRAWCREATEEX)( GUID FAR * rGuid, LPVOID *lplpDD, REFIID iid,IUnknown FAR *pUnkOuter );
typedef struct tag_EVENTTHREADINFO {
HANDLE hEvent;
struct tag_EVENTTHREADINFO *pNext;
IStream *pStream;
I_dxj_DirectXEvent *pCallback;
DWORD threadID;
HANDLE hThread;
BOOL fEnd;
HANDLE hEndEvent;
} EVENTTHREADINFO;
class C_dxj_DirectX7Object :
public I_dxj_DirectX7,
public CComCoClass<C_dxj_DirectX7Object, &CLSID__dxj_DirectX7>, public CComObjectRoot
{
public:
C_dxj_DirectX7Object() ;
virtual ~C_dxj_DirectX7Object() ;
BEGIN_COM_MAP(C_dxj_DirectX7Object)
COM_INTERFACE_ENTRY(I_dxj_DirectX7)
END_COM_MAP()
DECLARE_REGISTRY(CLSID__dxj_DirectX7, "DIRECT.DirectX6.0", "DIRECT.DirectX6.0", IDS_DIRECTX6_DESC, THREADFLAGS_BOTH)
// Use DECLARE_NOT_AGGREGATABLE(C_dxj_DirectSoundResourceObject) if you don't want your object
// to support aggregation
DECLARE_AGGREGATABLE(C_dxj_DirectX7Object)
public:
HRESULT STDMETHODCALLTYPE direct3dRMCreate(
/* [retval][out] */ I_dxj_Direct3dRM3 __RPC_FAR *__RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE directDrawCreate(
/* [in] */ BSTR guid,
/* [retval][out] */ I_dxj_DirectDraw7 __RPC_FAR *__RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE getDDEnum(
/* [retval][out] */ I_dxj_DirectDrawEnum __RPC_FAR *__RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE directSoundCreate(
/* [in] */ BSTR guid,
/* [retval][out] */ I_dxj_DirectSound __RPC_FAR *__RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE directSoundCaptureCreate(
/* [in] */ BSTR guid,
/* [retval][out] */ I_dxj_DirectSoundCapture __RPC_FAR *__RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE getDSEnum(
/* [retval][out] */ I_dxj_DSEnum __RPC_FAR *__RPC_FAR *retVal);
HRESULT STDMETHODCALLTYPE getDSCaptureEnum(
/* [retval][out] */ I_dxj_DSEnum __RPC_FAR *__RPC_FAR *retVal);
HRESULT STDMETHODCALLTYPE directInputCreate(
/* [retval][out] */ I_dxj_DirectInput __RPC_FAR *__RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE directPlayCreate(
/* [in] */ BSTR guid,
/* [retval][out] */ I_dxj_DirectPlay4 __RPC_FAR *__RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE directPlayLobbyCreate(
/* [retval][out] */ I_dxj_DirectPlayLobby3 __RPC_FAR *__RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE getDPEnum(
/* [retval][out] */ I_dxj_DPEnumServiceProviders __RPC_FAR *__RPC_FAR *retval);
HRESULT STDMETHODCALLTYPE colorGetAlpha(
/* [in] */ long color,
/* [retval][out] */ float __RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE colorGetBlue(
/* [in] */ long color,
/* [retval][out] */ float __RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE colorGetGreen(
/* [in] */ long color,
/* [retval][out] */ float __RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE colorGetRed(
/* [in] */ long color,
/* [retval][out] */ float __RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE createColorRGB(
/* [in] */ float r,
/* [in] */ float g,
/* [in] */ float b,
/* [retval][out] */ long __RPC_FAR *color);
HRESULT STDMETHODCALLTYPE createColorRGBA(
/* [in] */ float r,
/* [in] */ float g,
/* [in] */ float b,
/* [in] */ float a,
/* [retval][out] */ long __RPC_FAR *color);
HRESULT STDMETHODCALLTYPE matrixFromQuaternion(
/* [out] */ D3dMatrix __RPC_FAR *matrix,
/* [in] */ D3dRMQuaternion __RPC_FAR *quat);
HRESULT STDMETHODCALLTYPE quaternionRotation(
/* [out] */ D3dRMQuaternion __RPC_FAR *quat,
/* [in] */ D3dVector __RPC_FAR *axis,
/* [in] */ float theta);
HRESULT STDMETHODCALLTYPE quaternionMultiply(
/* [out] */ D3dRMQuaternion __RPC_FAR *quat,
/* [in] */ D3dRMQuaternion __RPC_FAR *quatA,
/* [in] */ D3dRMQuaternion __RPC_FAR *quatB);
HRESULT STDMETHODCALLTYPE quaternionSlerp(
/* [out] */ D3dRMQuaternion __RPC_FAR *quat,
/* [in] */ D3dRMQuaternion __RPC_FAR *quatA,
/* [in] */ D3dRMQuaternion __RPC_FAR *quatB,
/* [in] */ float alpha);
HRESULT STDMETHODCALLTYPE vectorAdd(
/* [out] */ D3dVector __RPC_FAR *v,
/* [in] */ D3dVector __RPC_FAR *vA,
/* [in] */ D3dVector __RPC_FAR *vB);
HRESULT STDMETHODCALLTYPE vectorCrossProduct(
/* [out] */ D3dVector __RPC_FAR *v,
/* [in] */ D3dVector __RPC_FAR *vA,
/* [in] */ D3dVector __RPC_FAR *vB);
HRESULT STDMETHODCALLTYPE vectorDotProduct(
/* [in] */ D3dVector __RPC_FAR *vA,
/* [in] */ D3dVector __RPC_FAR *vB,
/* [retval][out] */ float __RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE vectorModulus(
/* [in] */ D3dVector __RPC_FAR *vA,
/* [retval][out] */ float __RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE vectorNormalize(
/* [out][in] */ D3dVector __RPC_FAR *v);
HRESULT STDMETHODCALLTYPE vectorRandom(
/* [out][in] */ D3dVector __RPC_FAR *v);
HRESULT STDMETHODCALLTYPE vectorReflect(
/* [out] */ D3dVector __RPC_FAR *vDest,
/* [in] */ D3dVector __RPC_FAR *vRay,
/* [in] */ D3dVector __RPC_FAR *vNormal);
HRESULT STDMETHODCALLTYPE vectorRotate(
/* [out] */ D3dVector __RPC_FAR *vDest,
/* [in] */ D3dVector __RPC_FAR *vA,
/* [in] */ D3dVector __RPC_FAR *vAxis,
/* [in] */ float theta);
HRESULT STDMETHODCALLTYPE vectorScale(
/* [out] */ D3dVector __RPC_FAR *vDest,
/* [in] */ D3dVector __RPC_FAR *vA,
/* [in] */ float factor);
HRESULT STDMETHODCALLTYPE vectorSubtract(
/* [out] */ D3dVector __RPC_FAR *v,
/* [in] */ D3dVector __RPC_FAR *vA,
/* [in] */ D3dVector __RPC_FAR *vB);
HRESULT STDMETHODCALLTYPE vectorCopy(
/* [out][in] */ D3dVector __RPC_FAR *vDest,
/* [in] */ D3dVector __RPC_FAR *vSrc);
HRESULT STDMETHODCALLTYPE rotateXMatrix(
/* [out][in] */ D3dMatrix __RPC_FAR *mDest,
/* [in] */ float radians);
HRESULT STDMETHODCALLTYPE rotateYMatrix(
/* [out][in] */ D3dMatrix __RPC_FAR *mDest,
/* [in] */ float radians);
HRESULT STDMETHODCALLTYPE rotateZMatrix(
/* [out][in] */ D3dMatrix __RPC_FAR *mDest,
/* [in] */ float radians);
HRESULT STDMETHODCALLTYPE viewMatrix(
/* [out][in] */ D3dMatrix __RPC_FAR *mDest,
/* [in] */ D3dVector __RPC_FAR *vFrom,
/* [in] */ D3dVector __RPC_FAR *vTo,
/* [in] */ D3dVector __RPC_FAR *vUp,
/* [in] */ float roll);
HRESULT STDMETHODCALLTYPE matrixMultiply(
/* [out][in] */ D3dMatrix __RPC_FAR *mDest,
/* [in] */ D3dMatrix __RPC_FAR *mA,
/* [in] */ D3dMatrix __RPC_FAR *mB);
HRESULT STDMETHODCALLTYPE projectionMatrix(
/* [out][in] */ D3dMatrix __RPC_FAR *mDest,
/* [in] */ float nearPlane,
/* [in] */ float farplane,
/* [in] */ float fov);
HRESULT STDMETHODCALLTYPE copyMatrix(
/* [out][in] */ D3dMatrix __RPC_FAR *mDest,
/* [in] */ D3dMatrix __RPC_FAR *mSrc);
HRESULT STDMETHODCALLTYPE identityMatrix(
/* [out][in] */ D3dMatrix __RPC_FAR *mDest);
HRESULT STDMETHODCALLTYPE zeroMatrix(
/* [out][in] */ D3dMatrix __RPC_FAR *mDest);
HRESULT STDMETHODCALLTYPE tickCount(
/* [retval][out] */ long __RPC_FAR *retv);
HRESULT STDMETHODCALLTYPE systemBpp(
/* [retval][out] */ long __RPC_FAR *retv);
HRESULT STDMETHODCALLTYPE directMusicLoaderCreate(
/* [retval][out] */ I_dxj_DirectMusicLoader __RPC_FAR *__RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE directMusicComposerCreate(
/* [retval][out] */ I_dxj_DirectMusicComposer __RPC_FAR *__RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE directMusicPerformanceCreate(
/* [retval][out] */ I_dxj_DirectMusicPerformance __RPC_FAR *__RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE getWindowRect(
/* [in] */ long hwnd,
/* [out][in] */ Rect __RPC_FAR *r) ;
HRESULT STDMETHODCALLTYPE createEvent(
/* [in] */ I_dxj_DirectXEvent __RPC_FAR *event,
/* [retval][out] */ long __RPC_FAR *h) ;
HRESULT STDMETHODCALLTYPE setEvent(
/* [in] */ long eventId) ;
HRESULT STDMETHODCALLTYPE destroyEvent(
/* [in] */ long eventId) ;
HRESULT STDMETHODCALLTYPE createD3DVertex(float x, float y, float z, float nx, float ny, float nz, float tu, float tv, D3dVertex *v);
HRESULT STDMETHODCALLTYPE createD3DLVertex(float x, float y, float z, long color, long specular, float tu, float tv, D3dLVertex *v);
HRESULT STDMETHODCALLTYPE createD3DTLVertex(float sx, float sy, float sz, float rhw, long color, long specular, float tu, float tv, D3dTLVertex *v);
HRESULT STDMETHODCALLTYPE directDraw4Create(
/* [in] */ BSTR guid,
/* [retval][out] */ I_dxj_DirectDraw4 __RPC_FAR *__RPC_FAR *ret);
HRESULT STDMETHODCALLTYPE createNewGuid(BSTR *ret);
void LoadDDRAW();
void LoadDPLAY();
void LoadDSOUND();
void LoadDINPUT();
void LoadD3DRM();
private:
DDRAWCREATE m_pDirectDrawCreate;
DDRAWCREATEEX m_pDirectDrawCreateEx;
DDCREATECLIPPER m_pDirectDrawCreateClipper;
DSOUNDCREATE m_pDirectSoundCreate;
DSOUNDCAPTURECREATE m_pDirectSoundCaptureCreate;
DSOUNDENUMERATE m_pDirectSoundEnumerate;
DSOUNDCAPTUREENUMERATE m_pDirectSoundCaptureEnumerate;
DIRECTPLAYCREATE m_pDirectPlayCreate;
DIRECTPLAYENUMERATE m_pDirectPlayEnumerate;
DIRECTPLAYLOBBYCREATE m_pDirectPlayLobbyCreate;
DIRECT3DRMCREATE m_pDirect3DRMCreate;
DDENUMERATE m_pDirectDrawEnumerate;
DDENUMERATEEX m_pDirectDrawEnumerateEx;
EVENTTHREADINFO *m_pEventList;
};