//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (C) Microsoft Corporation, 1998 - 1998 // // File: dmstyleobj.cpp // //-------------------------------------------------------------------------- // dmPerformanceObj.cpp #include "dmusici.h" #include "dmusicc.h" #include "dmusicf.h" #include "stdafx.h" #include "Direct.h" #include "dms.h" #include "dmChordMapObj.h" #include "dmSegmentObj.h" #include "dmStyleObj.h" #include "dmBandObj.h" extern void *g_dxj_DirectMusicStyle; extern void *g_dxj_DirectMusicSegment; extern void *g_dxj_DirectMusicChordMap; extern void *g_dxj_DirectMusicBand; extern HRESULT BSTRtoGUID(LPGUID,BSTR); CONSTRUCTOR(_dxj_DirectMusicStyle, {}); DESTRUCTOR(_dxj_DirectMusicStyle, {}); GETSET_OBJECT(_dxj_DirectMusicStyle); typedef IDirectMusicSegment* LPDIRECTMUSICSEGMENT; typedef IDirectMusicPerformance* LPDIRECTMUSICPERFORMANCE; typedef IDirectMusicChordMap* LPDIRECTMUSICCHORDMAP; typedef IDirectMusicStyle* LPDIRECTMUSICSTYLE; HRESULT C_dxj_DirectMusicStyleObject:: getBandName( /* [in] */ long index, /* [retval][out] */ BSTR __RPC_FAR *name) { HRESULT hr; WCHAR wstring[MAX_PATH]; ZeroMemory(wstring,MAX_PATH); hr=m__dxj_DirectMusicStyle->EnumBand((DWORD)index,wstring); if (hr!=S_OK) return hr; *name=SysAllocString(wstring); return hr; } HRESULT C_dxj_DirectMusicStyleObject:: getBandCount( long *count) { WCHAR wstring[MAX_PATH]; ZeroMemory(wstring,MAX_PATH); DWORD i=0; while (S_OK==m__dxj_DirectMusicStyle->EnumBand((DWORD)i++,wstring)){ //make sure dmusic is doing what its docs say it does if (i>1000000) return E_FAIL; } *count=(long)i-1; return S_OK; } HRESULT C_dxj_DirectMusicStyleObject:: getBand( /* [in] */ BSTR name, /* [retval][out] */ I_dxj_DirectMusicBand __RPC_FAR *__RPC_FAR *ret) { HRESULT hr; IDirectMusicBand *pBand=NULL; hr=m__dxj_DirectMusicStyle->GetBand(name,&pBand); if FAILED(hr) return hr; if (!pBand) return E_FAIL; INTERNAL_CREATE_NOADDREF(_dxj_DirectMusicBand,pBand,ret); return hr; } HRESULT C_dxj_DirectMusicStyleObject::getDefaultBand( /* [retval][out] */ I_dxj_DirectMusicBand __RPC_FAR *__RPC_FAR *ret) { HRESULT hr; IDirectMusicBand *pBand=NULL; *ret=NULL; hr=m__dxj_DirectMusicStyle->GetDefaultBand(&pBand); if FAILED(hr) return hr; if (hr==S_FALSE) return S_OK; if (!pBand) return E_FAIL; INTERNAL_CREATE_NOADDREF(_dxj_DirectMusicBand,pBand,ret); return hr; } HRESULT C_dxj_DirectMusicStyleObject:: getMotifName( /* [in] */ long index, /* [retval][out] */ BSTR __RPC_FAR *name) { HRESULT hr; WCHAR wstring[MAX_PATH]; ZeroMemory(wstring,MAX_PATH); hr=m__dxj_DirectMusicStyle->EnumMotif((DWORD)index,wstring); if (hr!=S_OK) return hr; *name=SysAllocString(wstring); return hr; } HRESULT C_dxj_DirectMusicStyleObject:: getMotifCount( long *count) { WCHAR wstring[MAX_PATH]; ZeroMemory(wstring,MAX_PATH); DWORD i=0; while (S_OK==m__dxj_DirectMusicStyle->EnumMotif((DWORD)i++,wstring)){ //make sure dmusic is doing what its docs say it does if (i>1000000) return E_FAIL; } *count=(long)i-1; return S_OK; } HRESULT C_dxj_DirectMusicStyleObject:: getMotif( /* [in] */ BSTR name, /* [retval][out] */ I_dxj_DirectMusicSegment __RPC_FAR *__RPC_FAR *ret) { HRESULT hr; IDirectMusicSegment *pSeg=NULL; hr=m__dxj_DirectMusicStyle->GetMotif(name,&pSeg); if FAILED(hr) return hr; if (!pSeg) return E_FAIL; INTERNAL_CREATE_NOADDREF(_dxj_DirectMusicSegment,pSeg,ret); return hr; } HRESULT C_dxj_DirectMusicStyleObject:: getChordMapName( /* [in] */ long index, /* [retval][out] */ BSTR __RPC_FAR *name) { HRESULT hr; WCHAR wstring[MAX_PATH]; ZeroMemory(wstring,MAX_PATH); hr=m__dxj_DirectMusicStyle->EnumChordMap((DWORD)index,wstring); if (hr!=S_OK) return hr; *name=SysAllocString(wstring); return hr; } HRESULT C_dxj_DirectMusicStyleObject:: getChordMapCount( long *count) { WCHAR wstring[MAX_PATH]; ZeroMemory(wstring,MAX_PATH); DWORD i=0; while (S_OK==m__dxj_DirectMusicStyle->EnumChordMap((DWORD)i++,wstring)){ //make sure dmusic is doing what its docs say it does if (i>1000000) return E_FAIL; } *count=(long)i-1; return S_OK; } HRESULT C_dxj_DirectMusicStyleObject:: getChordMap( /* [in] */ BSTR name, /* [retval][out] */ I_dxj_DirectMusicChordMap __RPC_FAR *__RPC_FAR *ret) { HRESULT hr; IDirectMusicChordMap *pMap=NULL; hr=m__dxj_DirectMusicStyle->GetChordMap(name,&pMap); if FAILED(hr) return hr; if (!pMap) return E_FAIL; INTERNAL_CREATE_NOADDREF(_dxj_DirectMusicChordMap,pMap,ret); return hr; } HRESULT C_dxj_DirectMusicStyleObject:: getDefaultChordMap( /* [retval][out] */ I_dxj_DirectMusicChordMap __RPC_FAR *__RPC_FAR *ret) { HRESULT hr; IDirectMusicChordMap *pMap=NULL; *ret=NULL; hr=m__dxj_DirectMusicStyle->GetDefaultChordMap(&pMap); if (hr==S_FALSE) return S_OK; if FAILED(hr) return hr; if (!pMap) return E_FAIL; INTERNAL_CREATE_NOADDREF(_dxj_DirectMusicChordMap,pMap,ret); return hr; } HRESULT C_dxj_DirectMusicStyleObject:: getEmbellishmentMinLength( /* [in] */ long type, /* [in] */ long level, /* [retval][out] */ long __RPC_FAR *ret) { HRESULT hr; DWORD dwMin=0; DWORD dwMax=0; hr=m__dxj_DirectMusicStyle->GetEmbellishmentLength((DWORD)type,(DWORD)level,&dwMin,&dwMax); *ret=(long)dwMin; return hr; } HRESULT C_dxj_DirectMusicStyleObject:: getEmbellishmentMaxLength( /* [in] */ long type, /* [in] */ long level, /* [retval][out] */ long __RPC_FAR *ret) { HRESULT hr; DWORD dwMin=0; DWORD dwMax=0; hr=m__dxj_DirectMusicStyle->GetEmbellishmentLength((DWORD)type,(DWORD)level,&dwMin,&dwMax); *ret=(long)dwMax; return hr; } HRESULT C_dxj_DirectMusicStyleObject::getTempo( /* [retval][out] */ double __RPC_FAR *ret) { HRESULT hr; hr=m__dxj_DirectMusicStyle->GetTempo(ret); return hr; } HRESULT C_dxj_DirectMusicStyleObject::getTimeSignature( /* [out][in] */ DMUS_TIMESIGNATURE_CDESC __RPC_FAR *pTimeSig) { HRESULT hr; if (!pTimeSig) return E_INVALIDARG; hr=m__dxj_DirectMusicStyle->GetTimeSignature((DMUS_TIMESIGNATURE*)pTimeSig); return hr; } // GetDC