Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
4.4 KiB

  1. //+-------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. //
  5. // Copyright (C) Microsoft Corporation, 1998 - 1999
  6. //
  7. // File: dsound3dbuffer.cpp
  8. //
  9. //--------------------------------------------------------------------------
  10. // dSound3DBuffer.cpp : Implementation of CDirectApp and DLL registration.
  11. // DHF_DS entire file
  12. #include "stdafx.h"
  13. #include "Direct.h"
  14. #include "dSound.h"
  15. #include "dms.h"
  16. #include "dSoundObj.h"
  17. #include "dSoundBufferObj.h"
  18. #include "dSound3DBuffer.h"
  19. #include "dSound3DListener.h"
  20. #define SAFE_RELEASE(p) { __try { if(p) { DPF(1,"------ DXVB: SafeRelease About to call release:"); int i = 0; i = (p)->Release(); DPF1(1,"--DirectPlaySound3DBuffer SafeRelease (RefCount = %d)\n",i); if (!i) { (p)=NULL;}} } __except(EXCEPTION_EXECUTE_HANDLER) { DPF(1,"------ DXVB: SafeRelease Exception Handler hit(??):") (p) = NULL;} }
  21. C_dxj_DirectSound3dBufferObject::C_dxj_DirectSound3dBufferObject(){
  22. DPF(1,"------ DXVB: Constructor Creation DirectSound3DBuffer Object\n ");
  23. m__dxj_DirectSound3dBuffer = NULL;
  24. }
  25. ///////////////////////////////////////////////////////////////////
  26. // ~C_dxj_DirectPlayVoiceClientObject
  27. ///////////////////////////////////////////////////////////////////
  28. C_dxj_DirectSound3dBufferObject::~C_dxj_DirectSound3dBufferObject()
  29. {
  30. DPF(1,"------ DXVB: Entering ~C_dxj_DirectSound3dBufferObject destructor \n");
  31. SAFE_RELEASE(m__dxj_DirectSound3dBuffer);
  32. DPF(1,"------ DXVB: Leaving ~C_dxj_DirectPlayVoiceClientObject destructor \n");
  33. }
  34. GETSET_OBJECT(_dxj_DirectSound3dBuffer);
  35. PASS_THROUGH_CAST_2_R(_dxj_DirectSound3dBuffer, getConeAngles, GetConeAngles, long*,(DWORD*), long*,(DWORD*));
  36. PASS_THROUGH_CAST_1_R(_dxj_DirectSound3dBuffer, getConeOrientation, GetConeOrientation, D3DVECTOR_CDESC*, (_D3DVECTOR*));
  37. PASS_THROUGH1_R(_dxj_DirectSound3dBuffer, getConeOutsideVolume, GetConeOutsideVolume, long*);
  38. PASS_THROUGH1_R(_dxj_DirectSound3dBuffer, getMaxDistance, GetMaxDistance, float*);
  39. PASS_THROUGH1_R(_dxj_DirectSound3dBuffer, getMinDistance, GetMinDistance, float*);
  40. PASS_THROUGH_CAST_1_R(_dxj_DirectSound3dBuffer, getMode, GetMode, long *,(DWORD*));
  41. PASS_THROUGH_CAST_1_R(_dxj_DirectSound3dBuffer, getPosition, GetPosition, D3DVECTOR_CDESC*, (_D3DVECTOR*));
  42. PASS_THROUGH_CAST_1_R(_dxj_DirectSound3dBuffer, getVelocity, GetVelocity, D3DVECTOR_CDESC*, (_D3DVECTOR*));
  43. PASS_THROUGH_CAST_3_R(_dxj_DirectSound3dBuffer, setConeAngles, SetConeAngles, long,(DWORD) ,long,(DWORD) ,long,(DWORD));
  44. PASS_THROUGH_CAST_4_R(_dxj_DirectSound3dBuffer, setConeOrientation, SetConeOrientation, float,(float), float,(float), float,(float), long,(DWORD));
  45. PASS_THROUGH_CAST_2_R(_dxj_DirectSound3dBuffer, setConeOutsideVolume, SetConeOutsideVolume, long, (long),long,(DWORD));
  46. PASS_THROUGH_CAST_2_R(_dxj_DirectSound3dBuffer, setMaxDistance, SetMaxDistance, float, (float),long,(DWORD));
  47. PASS_THROUGH_CAST_2_R(_dxj_DirectSound3dBuffer, setMinDistance, SetMinDistance, float,(float),long,(DWORD));
  48. PASS_THROUGH_CAST_2_R(_dxj_DirectSound3dBuffer, setMode, SetMode, long,(unsigned long) , long,(DWORD));
  49. PASS_THROUGH_CAST_4_R(_dxj_DirectSound3dBuffer, setPosition, SetPosition, float,(float), float,(float), float,(float), long,(DWORD));
  50. PASS_THROUGH_CAST_4_R(_dxj_DirectSound3dBuffer, setVelocity, SetVelocity, float,(float), float,(float), float,(float), long,(DWORD));
  51. /////////////////////////////////////////////////////////////////////////////
  52. STDMETHODIMP C_dxj_DirectSound3dBufferObject::getAllParameters( DS3DBUFFER_CDESC* lobj )
  53. {
  54. if(!lobj)
  55. return E_POINTER;
  56. lobj->lSize = sizeof(DS3DBUFFER);
  57. return m__dxj_DirectSound3dBuffer->GetAllParameters( (LPDS3DBUFFER)lobj );
  58. }
  59. /////////////////////////////////////////////////////////////////////////////
  60. STDMETHODIMP C_dxj_DirectSound3dBufferObject::setAllParameters( DS3DBUFFER_CDESC *lobj, long apply)
  61. {
  62. if(!lobj)
  63. return E_POINTER;
  64. lobj->lSize = sizeof(DS3DBUFFER);
  65. return m__dxj_DirectSound3dBuffer->SetAllParameters( (LPDS3DBUFFER)lobj, (DWORD)apply );
  66. }
  67. /////////////////////////////////////////////////////////////////////////////
  68. STDMETHODIMP C_dxj_DirectSound3dBufferObject::getDirectSoundBuffer( I_dxj_DirectSoundBuffer **retv)
  69. {
  70. HRESULT hr;
  71. IDirectSoundBuffer *pdsb;
  72. hr=m__dxj_DirectSound3dBuffer->QueryInterface(IID_IDirectSoundBuffer,(void**)&pdsb);
  73. if FAILED(hr) return hr;
  74. INTERNAL_CREATE(_dxj_DirectSoundBuffer,pdsb,retv);
  75. return hr;
  76. }