File loading improvements.
This commit is contained in:
parent
85147ee96d
commit
12acfb2285
|
@ -202,6 +202,7 @@ HRESULT WINAPI IDirectMusicLoader8Impl_LoadObjectFromFile (LPDIRECTMUSICLOADER8
|
||||||
DMUSIC_FillBandFromFileHandle (NULL, fd);
|
DMUSIC_FillBandFromFileHandle (NULL, fd);
|
||||||
} else if (IsEqualGUID(rguidClassID, &CLSID_DirectMusicContainer)) {
|
} else if (IsEqualGUID(rguidClassID, &CLSID_DirectMusicContainer)) {
|
||||||
FIXME("wanted 'con'\n");
|
FIXME("wanted 'con'\n");
|
||||||
|
DMUSIC_FillContainerFromFileHandle (NULL, fd);
|
||||||
} else if (IsEqualGUID(rguidClassID, &CLSID_DirectMusicCollection)) {
|
} else if (IsEqualGUID(rguidClassID, &CLSID_DirectMusicCollection)) {
|
||||||
FIXME("wanted 'dls'\n");
|
FIXME("wanted 'dls'\n");
|
||||||
} else if (IsEqualGUID(rguidClassID, &CLSID_DirectMusicChordMap)) {
|
} else if (IsEqualGUID(rguidClassID, &CLSID_DirectMusicChordMap)) {
|
||||||
|
@ -211,6 +212,7 @@ HRESULT WINAPI IDirectMusicLoader8Impl_LoadObjectFromFile (LPDIRECTMUSICLOADER8
|
||||||
DMUSIC_FillSegmentFromFileHandle (NULL, fd);
|
DMUSIC_FillSegmentFromFileHandle (NULL, fd);
|
||||||
} else if (IsEqualGUID(rguidClassID, &CLSID_DirectMusicScript)) {
|
} else if (IsEqualGUID(rguidClassID, &CLSID_DirectMusicScript)) {
|
||||||
FIXME("wanted 'spt'\n");
|
FIXME("wanted 'spt'\n");
|
||||||
|
DMUSIC_FillScriptFromFileHandle (NULL, fd);
|
||||||
} else if (IsEqualGUID(rguidClassID, &CLSID_DirectMusicSong)) {
|
} else if (IsEqualGUID(rguidClassID, &CLSID_DirectMusicSong)) {
|
||||||
FIXME("wanted 'sng'\n");
|
FIXME("wanted 'sng'\n");
|
||||||
} else if (IsEqualGUID(rguidClassID, &CLSID_DirectMusicStyle)) {
|
} else if (IsEqualGUID(rguidClassID, &CLSID_DirectMusicStyle)) {
|
||||||
|
@ -240,6 +242,13 @@ HRESULT WINAPI IDirectMusicLoader8Impl_LoadObjectFromFile (LPDIRECTMUSICLOADER8
|
||||||
container->ref = 1;
|
container->ref = 1;
|
||||||
*ppObject = container;
|
*ppObject = container;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
} else if (IsEqualGUID(iidInterfaceID, &IID_IDirectMusicScript)) {
|
||||||
|
IDirectMusicScriptImpl* script;
|
||||||
|
script = HeapAlloc(GetProcessHeap(), 0, sizeof(IDirectMusicScriptImpl));
|
||||||
|
script->lpVtbl = &DirectMusicScript_Vtbl;
|
||||||
|
script->ref = 1;
|
||||||
|
*ppObject = script;
|
||||||
|
return S_OK;
|
||||||
} else {
|
} else {
|
||||||
FIXME("bad iid\n");
|
FIXME("bad iid\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,8 +76,7 @@ HRESULT WINAPI IDirectMusicPerformance8Impl_Init (LPDIRECTMUSICPERFORMANCE8 ifac
|
||||||
{
|
{
|
||||||
ICOM_THIS(IDirectMusicPerformance8Impl,iface);
|
ICOM_THIS(IDirectMusicPerformance8Impl,iface);
|
||||||
|
|
||||||
FIXME("(iface = %p, dmusic = %p, dsound = %p, hwnd = %p): forward to IDirectMusicPerformanceImpl::Init\n", This, ppDirectMusic, pDirectSound, hWnd);
|
FIXME("(iface = %p, dmusic = %p, dsound = %p, hwnd = %p)\n", This, ppDirectMusic, pDirectSound, hWnd);
|
||||||
|
|
||||||
if (This->dmusic || This->dsound)
|
if (This->dmusic || This->dsound)
|
||||||
return DMUS_E_ALREADY_INITED;
|
return DMUS_E_ALREADY_INITED;
|
||||||
|
|
||||||
|
@ -317,7 +316,7 @@ HRESULT WINAPI IDirectMusicPerformance8Impl_RemovePort (LPDIRECTMUSICPERFORMANCE
|
||||||
|
|
||||||
HRESULT WINAPI IDirectMusicPerformance8Impl_AssignPChannelBlock (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwBlockNum, IDirectMusicPort* pPort, DWORD dwGroup)
|
HRESULT WINAPI IDirectMusicPerformance8Impl_AssignPChannelBlock (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwBlockNum, IDirectMusicPort* pPort, DWORD dwGroup)
|
||||||
{
|
{
|
||||||
int i, j, range /* min value in range */;
|
int i, j, range /* min value in range */;
|
||||||
ICOM_THIS(IDirectMusicPerformance8Impl,iface);
|
ICOM_THIS(IDirectMusicPerformance8Impl,iface);
|
||||||
|
|
||||||
FIXME("(%p, %ld, %p, %ld): semi-stub\n", This, dwBlockNum, pPort, dwGroup-1);
|
FIXME("(%p, %ld, %p, %ld): semi-stub\n", This, dwBlockNum, pPort, dwGroup-1);
|
||||||
|
|
|
@ -185,6 +185,65 @@ typedef struct _BandTrack
|
||||||
|
|
||||||
} BandTrack;
|
} BandTrack;
|
||||||
|
|
||||||
|
typedef struct _Part
|
||||||
|
{
|
||||||
|
DMUS_IO_STYLEPART header;
|
||||||
|
UNFO_List UNFO;
|
||||||
|
DWORD nrofnotes;
|
||||||
|
DMUS_IO_STYLENOTE* notes;
|
||||||
|
DWORD nrofcurves;
|
||||||
|
DMUS_IO_STYLECURVE* curves;
|
||||||
|
DWORD nrofmarkers;
|
||||||
|
DMUS_IO_STYLEMARKER* markers;
|
||||||
|
DWORD nrofresolutions;
|
||||||
|
DMUS_IO_STYLERESOLUTION* resolutions;
|
||||||
|
DWORD nrofanticipations;
|
||||||
|
DMUS_IO_STYLE_ANTICIPATION* anticipations;
|
||||||
|
} Part;
|
||||||
|
|
||||||
|
typedef struct _Pattern
|
||||||
|
{
|
||||||
|
DMUS_IO_PATTERN header;
|
||||||
|
DWORD nrofrhytms;
|
||||||
|
DWORD* rhytms;
|
||||||
|
UNFO_List UNFO;
|
||||||
|
DMUS_IO_MOTIFSETTINGS motsettings;
|
||||||
|
/* IDirectMusicBandImpl band */
|
||||||
|
DWORD nrofpartrefs;
|
||||||
|
/* FIXME: only in singular form for now */
|
||||||
|
UNFO_List partrefUNFO;
|
||||||
|
DMUS_IO_PARTREF partref;
|
||||||
|
} Pattern;
|
||||||
|
|
||||||
|
typedef struct _WaveTrack
|
||||||
|
{
|
||||||
|
DMUS_IO_WAVE_TRACK_HEADER header;
|
||||||
|
/* FIXME: only in singular form now */
|
||||||
|
DMUS_IO_WAVE_PART_HEADER partHeader;
|
||||||
|
DMUS_IO_WAVE_ITEM_HEADER itemHeader;
|
||||||
|
Reference reference;
|
||||||
|
} WaveTrack;
|
||||||
|
|
||||||
|
typedef struct _SegTriggerTrack
|
||||||
|
{
|
||||||
|
DMUS_IO_SEGMENT_TRACK_HEADER header;
|
||||||
|
/* FIXME: only in singular form now */
|
||||||
|
DMUS_IO_SEGMENT_ITEM_HEADER itemHeader;
|
||||||
|
Reference reference;
|
||||||
|
WCHAR* motifName;
|
||||||
|
} SegTriggerTrack;
|
||||||
|
|
||||||
|
typedef struct _TimeSigTrack {
|
||||||
|
DWORD nrofitems;
|
||||||
|
DMUS_IO_TIMESIGNATURE_ITEM* items;
|
||||||
|
} TimeSigTrack;
|
||||||
|
|
||||||
|
typedef struct _ScriptEvent {
|
||||||
|
DMUS_IO_SCRIPTTRACK_EVENTHEADER header;
|
||||||
|
Reference reference;
|
||||||
|
WCHAR* name;
|
||||||
|
} ScriptEvent;
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* ClassFactory
|
* ClassFactory
|
||||||
*
|
*
|
||||||
|
@ -1099,10 +1158,13 @@ extern HRESULT WINAPI IDirectMusicSongImpl_EnumSegment (LPDIRECTMUSICSONG iface,
|
||||||
*/
|
*/
|
||||||
void register_waveport (LPGUID lpGUID, LPCSTR lpszDesc, LPCSTR lpszDrvName, LPVOID lpContext);
|
void register_waveport (LPGUID lpGUID, LPCSTR lpszDesc, LPCSTR lpszDrvName, LPVOID lpContext);
|
||||||
/* Loader Helper Functions */
|
/* Loader Helper Functions */
|
||||||
HRESULT WINAPI DMUSIC_FillSegmentFromFileHandle (IDirectMusicSegment8Impl *segment, HANDLE fd);
|
|
||||||
HRESULT WINAPI DMUSIC_FillTrackFromFileHandle (IDirectMusicTrack8Impl *segment, HANDLE fd);
|
|
||||||
HRESULT WINAPI DMUSIC_FillReferenceFromFileHandle (Reference reference, HANDLE fd);
|
|
||||||
HRESULT WINAPI DMUSIC_FillUNFOFromFileHandle (UNFO_List UNFO, HANDLE fd);
|
|
||||||
HRESULT WINAPI DMUSIC_FillBandFromFileHandle (IDirectMusicBandImpl *band, HANDLE fd);
|
HRESULT WINAPI DMUSIC_FillBandFromFileHandle (IDirectMusicBandImpl *band, HANDLE fd);
|
||||||
|
HRESULT WINAPI DMUSIC_FillContainerFromFileHandle (IDirectMusicContainerImpl *container, HANDLE fd);
|
||||||
|
HRESULT WINAPI DMUSIC_FillReferenceFromFileHandle (Reference reference, HANDLE fd);
|
||||||
|
HRESULT WINAPI DMUSIC_FillScriptFromFileHandle (IDirectMusicScriptImpl *script, HANDLE fd);
|
||||||
|
HRESULT WINAPI DMUSIC_FillSegmentFromFileHandle (IDirectMusicSegment8Impl *segment, HANDLE fd);
|
||||||
|
HRESULT WINAPI DMUSIC_FillStyleFromFileHandle (IDirectMusicStyle8Impl *style, HANDLE fd);
|
||||||
|
HRESULT WINAPI DMUSIC_FillTrackFromFileHandle (IDirectMusicTrack8Impl *segment, HANDLE fd);
|
||||||
|
HRESULT WINAPI DMUSIC_FillUNFOFromFileHandle (UNFO_List UNFO, HANDLE fd);
|
||||||
|
|
||||||
#endif /* __WINE_DMUSIC_PRIVATE_H */
|
#endif /* __WINE_DMUSIC_PRIVATE_H */
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue