1 /* DirectMusicComposer Private Include
3 * Copyright (C) 2003 Rok Mandeljc
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Library General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 #ifndef __WINE_DMCOMPOS_PRIVATE_H
21 #define __WINE_DMCOMPOS_PRIVATE_H
26 #include "wine/debug.h"
37 /*****************************************************************************
40 typedef struct IDirectMusicChordMapImpl IDirectMusicChordMapImpl
;
41 typedef struct IDirectMusicComposerImpl IDirectMusicComposerImpl
;
43 typedef struct IDirectMusicChordMapObject IDirectMusicChordMapObject
;
44 typedef struct IDirectMusicChordMapObjectStream IDirectMusicChordMapObjectStream
;
46 typedef struct IDirectMusicChordMapTrack IDirectMusicChordMapTrack
;
47 typedef struct IDirectMusicChordMapTrackStream IDirectMusicChordMapTrackStream
;
48 typedef struct IDirectMusicSignPostTrack IDirectMusicSignPostTrack
;
49 typedef struct IDirectMusicSignPostTrackStream IDirectMusicSignPostTrackStream
;
51 /*****************************************************************************
52 * Predeclare the interface implementation structures
54 extern ICOM_VTABLE(IDirectMusicChordMap
) DirectMusicChordMap_Vtbl
;
55 extern ICOM_VTABLE(IDirectMusicComposer
) DirectMusicComposer_Vtbl
;
57 extern ICOM_VTABLE(IDirectMusicObject
) DirectMusicChordMapObject_Vtbl
;
58 extern ICOM_VTABLE(IPersistStream
) DirectMusicChordMapObjectStream_Vtbl
;
60 extern ICOM_VTABLE(IDirectMusicTrack8
) DirectMusicChordMapTrack_Vtbl
;
61 extern ICOM_VTABLE(IPersistStream
) DirectMusicChordMapTrackStream_Vtbl
;
62 extern ICOM_VTABLE(IDirectMusicTrack8
) DirectMusicSignPostTrack_Vtbl
;
63 extern ICOM_VTABLE(IPersistStream
) DirectMusicSignPostTrackStream_Vtbl
;
65 /*****************************************************************************
69 /* can support IID_IDirectMusicChordMap
70 * return always an IDirectMusicChordMapImpl
72 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicChordMap (LPCGUID lpcGUID
, LPDIRECTMUSICCHORDMAP
* ppDMCM
, LPUNKNOWN pUnkOuter
);
73 /* can support IID_IDirectMusicComposer
74 * return always an IDirectMusicComposerImpl
76 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicComposer (LPCGUID lpcGUID
, LPDIRECTMUSICCOMPOSER
* ppDMCP
, LPUNKNOWN pUnkOuter
);
78 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicChordMapObject (LPCGUID lpcGUID
, LPDIRECTMUSICOBJECT
* ppObject
, LPUNKNOWN pUnkOuter
);
80 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicChordMapTrack (LPCGUID lpcGUID
, LPDIRECTMUSICTRACK8
* ppTrack
, LPUNKNOWN pUnkOuter
);
81 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicSignPostTrack (LPCGUID lpcGUID
, LPDIRECTMUSICTRACK8
* ppTrack
, LPUNKNOWN pUnkOuter
);
83 /*****************************************************************************
84 * IDirectMusicChordMapImpl implementation structure
86 struct IDirectMusicChordMapImpl
89 ICOM_VFIELD(IDirectMusicChordMap
);
92 /* IDirectMusicChordMapImpl fields */
93 IDirectMusicChordMapObject
* pObject
;
98 extern HRESULT WINAPI
IDirectMusicChordMapImpl_QueryInterface (LPDIRECTMUSICCHORDMAP iface
, REFIID riid
, LPVOID
*ppobj
);
99 extern ULONG WINAPI
IDirectMusicChordMapImpl_AddRef (LPDIRECTMUSICCHORDMAP iface
);
100 extern ULONG WINAPI
IDirectMusicChordMapImpl_Release (LPDIRECTMUSICCHORDMAP iface
);
101 /* IDirectMusicChordMap: */
102 extern HRESULT WINAPI
IDirectMusicChordMapImpl_GetScale (LPDIRECTMUSICCHORDMAP iface
, DWORD
* pdwScale
);
104 /*****************************************************************************
105 * IDirectMusicComposerImpl implementation structure
107 struct IDirectMusicComposerImpl
109 /* IUnknown fields */
110 ICOM_VFIELD(IDirectMusicComposer
);
113 /* IDirectMusicComposerImpl fields */
117 extern HRESULT WINAPI
IDirectMusicComposerImpl_QueryInterface (LPDIRECTMUSICCOMPOSER iface
, REFIID riid
, LPVOID
*ppobj
);
118 extern ULONG WINAPI
IDirectMusicComposerImpl_AddRef (LPDIRECTMUSICCOMPOSER iface
);
119 extern ULONG WINAPI
IDirectMusicComposerImpl_Release (LPDIRECTMUSICCOMPOSER iface
);
120 /* IDirectMusicComposer: */
121 extern HRESULT WINAPI
IDirectMusicComposerImpl_ComposeSegmentFromTemplate (LPDIRECTMUSICCOMPOSER iface
, IDirectMusicStyle
* pStyle
, IDirectMusicSegment
* pTemplate
, WORD wActivity
, IDirectMusicChordMap
* pChordMap
, IDirectMusicSegment
** ppSegment
);
122 extern HRESULT WINAPI
IDirectMusicComposerImpl_ComposeSegmentFromShape (LPDIRECTMUSICCOMPOSER iface
, IDirectMusicStyle
* pStyle
, WORD wNumMeasures
, WORD wShape
, WORD wActivity
, BOOL fIntro
, BOOL fEnd
, IDirectMusicChordMap
* pChordMap
, IDirectMusicSegment
** ppSegment
);
123 extern HRESULT WINAPI
IDirectMusicComposerImpl_ComposeTransition (LPDIRECTMUSICCOMPOSER iface
, IDirectMusicSegment
* pFromSeg
, IDirectMusicSegment
* pToSeg
, MUSIC_TIME mtTime
, WORD wCommand
, DWORD dwFlags
, IDirectMusicChordMap
* pChordMap
, IDirectMusicSegment
** ppTransSeg
);
124 extern HRESULT WINAPI
IDirectMusicComposerImpl_AutoTransition (LPDIRECTMUSICCOMPOSER iface
, IDirectMusicPerformance
* pPerformance
, IDirectMusicSegment
* pToSeg
, WORD wCommand
, DWORD dwFlags
, IDirectMusicChordMap
* pChordMap
, IDirectMusicSegment
** ppTransSeg
, IDirectMusicSegmentState
** ppToSegState
, IDirectMusicSegmentState
** ppTransSegState
);
125 extern HRESULT WINAPI
IDirectMusicComposerImpl_ComposeTemplateFromShape (LPDIRECTMUSICCOMPOSER iface
, WORD wNumMeasures
, WORD wShape
, BOOL fIntro
, BOOL fEnd
, WORD wEndLength
, IDirectMusicSegment
** ppTemplate
);
126 extern HRESULT WINAPI
IDirectMusicComposerImpl_ChangeChordMap (LPDIRECTMUSICCOMPOSER iface
, IDirectMusicSegment
* pSegment
, BOOL fTrackScale
, IDirectMusicChordMap
* pChordMap
);
129 /*****************************************************************************
130 * IDirectMusicChordMapObject implementation structure
132 struct IDirectMusicChordMapObject
134 /* IUnknown fields */
135 ICOM_VFIELD(IDirectMusicObject
);
138 /* IDirectMusicObjectImpl fields */
139 LPDMUS_OBJECTDESC pDesc
;
140 IDirectMusicChordMapObjectStream
* pStream
;
141 IDirectMusicChordMapImpl
* pChordMap
;
145 extern HRESULT WINAPI
IDirectMusicChordMapObject_QueryInterface (LPDIRECTMUSICOBJECT iface
, REFIID riid
, LPVOID
*ppobj
);
146 extern ULONG WINAPI
IDirectMusicChordMapObject_AddRef (LPDIRECTMUSICOBJECT iface
);
147 extern ULONG WINAPI
IDirectMusicChordMapObject_Release (LPDIRECTMUSICOBJECT iface
);
148 /* IDirectMusicObject: */
149 extern HRESULT WINAPI
IDirectMusicChordMapObject_GetDescriptor (LPDIRECTMUSICOBJECT iface
, LPDMUS_OBJECTDESC pDesc
);
150 extern HRESULT WINAPI
IDirectMusicChordMapObject_SetDescriptor (LPDIRECTMUSICOBJECT iface
, LPDMUS_OBJECTDESC pDesc
);
151 extern HRESULT WINAPI
IDirectMusicChordMapObject_ParseDescriptor (LPDIRECTMUSICOBJECT iface
, LPSTREAM pStream
, LPDMUS_OBJECTDESC pDesc
);
153 /*****************************************************************************
154 * IDirectMusicChordMapObjectStream implementation structure
156 struct IDirectMusicChordMapObjectStream
158 /* IUnknown fields */
159 ICOM_VFIELD (IPersistStream
);
162 /* IPersistStreamImpl fields */
163 IDirectMusicChordMapObject
* pParentObject
;
167 extern HRESULT WINAPI
IDirectMusicChordMapObjectStream_QueryInterface (LPPERSISTSTREAM iface
, REFIID riid
, void** ppvObject
);
168 extern ULONG WINAPI
IDirectMusicChordMapObjectStream_AddRef (LPPERSISTSTREAM iface
);
169 extern ULONG WINAPI
IDirectMusicChordMapObjectStream_Release (LPPERSISTSTREAM iface
);
171 extern HRESULT WINAPI
IDirectMusicChordMapObjectStream_GetClassID (LPPERSISTSTREAM iface
, CLSID
* pClassID
);
172 /* IPersistStream: */
173 extern HRESULT WINAPI
IDirectMusicChordMapObjectStream_IsDirty (LPPERSISTSTREAM iface
);
174 extern HRESULT WINAPI
IDirectMusicChordMapObjectStream_Load (LPPERSISTSTREAM iface
, IStream
* pStm
);
175 extern HRESULT WINAPI
IDirectMusicChordMapObjectStream_Save (LPPERSISTSTREAM iface
, IStream
* pStm
, BOOL fClearDirty
);
176 extern HRESULT WINAPI
IDirectMusicChordMapObjectStream_GetSizeMax (LPPERSISTSTREAM iface
, ULARGE_INTEGER
* pcbSize
);
179 /*****************************************************************************
180 * IDirectMusicChordMapTrack implementation structure
182 struct IDirectMusicChordMapTrack
184 /* IUnknown fields */
185 ICOM_VFIELD(IDirectMusicTrack8
);
188 /* IDirectMusicChordMapTrack fields */
189 IDirectMusicChordMapTrackStream
* pStream
;
193 extern HRESULT WINAPI
IDirectMusicChordMapTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface
, REFIID riid
, LPVOID
*ppobj
);
194 extern ULONG WINAPI
IDirectMusicChordMapTrack_AddRef (LPDIRECTMUSICTRACK8 iface
);
195 extern ULONG WINAPI
IDirectMusicChordMapTrack_Release (LPDIRECTMUSICTRACK8 iface
);
196 /* IDirectMusicTrack: */
197 extern HRESULT WINAPI
IDirectMusicChordMapTrack_Init (LPDIRECTMUSICTRACK8 iface
, IDirectMusicSegment
* pSegment
);
198 extern HRESULT WINAPI
IDirectMusicChordMapTrack_InitPlay (LPDIRECTMUSICTRACK8 iface
, IDirectMusicSegmentState
* pSegmentState
, IDirectMusicPerformance
* pPerformance
, void** ppStateData
, DWORD dwVirtualTrackID
, DWORD dwFlags
);
199 extern HRESULT WINAPI
IDirectMusicChordMapTrack_EndPlay (LPDIRECTMUSICTRACK8 iface
, void* pStateData
);
200 extern HRESULT WINAPI
IDirectMusicChordMapTrack_Play (LPDIRECTMUSICTRACK8 iface
, void* pStateData
, MUSIC_TIME mtStart
, MUSIC_TIME mtEnd
, MUSIC_TIME mtOffset
, DWORD dwFlags
, IDirectMusicPerformance
* pPerf
, IDirectMusicSegmentState
* pSegSt
, DWORD dwVirtualID
);
201 extern HRESULT WINAPI
IDirectMusicChordMapTrack_GetParam (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidType
, MUSIC_TIME mtTime
, MUSIC_TIME
* pmtNext
, void* pParam
);
202 extern HRESULT WINAPI
IDirectMusicChordMapTrack_SetParam (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidType
, MUSIC_TIME mtTime
, void* pParam
);
203 extern HRESULT WINAPI
IDirectMusicChordMapTrack_IsParamSupported (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidType
);
204 extern HRESULT WINAPI
IDirectMusicChordMapTrack_AddNotificationType (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidNotificationType
);
205 extern HRESULT WINAPI
IDirectMusicChordMapTrack_RemoveNotificationType (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidNotificationType
);
206 extern HRESULT WINAPI
IDirectMusicChordMapTrack_Clone (LPDIRECTMUSICTRACK8 iface
, MUSIC_TIME mtStart
, MUSIC_TIME mtEnd
, IDirectMusicTrack
** ppTrack
);
207 /* IDirectMusicTrack8: */
208 extern HRESULT WINAPI
IDirectMusicChordMapTrack_PlayEx (LPDIRECTMUSICTRACK8 iface
, void* pStateData
, REFERENCE_TIME rtStart
, REFERENCE_TIME rtEnd
, REFERENCE_TIME rtOffset
, DWORD dwFlags
, IDirectMusicPerformance
* pPerf
, IDirectMusicSegmentState
* pSegSt
, DWORD dwVirtualID
);
209 extern HRESULT WINAPI
IDirectMusicChordMapTrack_GetParamEx (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidType
, REFERENCE_TIME rtTime
, REFERENCE_TIME
* prtNext
, void* pParam
, void* pStateData
, DWORD dwFlags
);
210 extern HRESULT WINAPI
IDirectMusicChordMapTrack_SetParamEx (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidType
, REFERENCE_TIME rtTime
, void* pParam
, void* pStateData
, DWORD dwFlags
);
211 extern HRESULT WINAPI
IDirectMusicChordMapTrack_Compose (LPDIRECTMUSICTRACK8 iface
, IUnknown
* pContext
, DWORD dwTrackGroup
, IDirectMusicTrack
** ppResultTrack
);
212 extern HRESULT WINAPI
IDirectMusicChordMapTrack_Join (LPDIRECTMUSICTRACK8 iface
, IDirectMusicTrack
* pNewTrack
, MUSIC_TIME mtJoin
, IUnknown
* pContext
, DWORD dwTrackGroup
, IDirectMusicTrack
** ppResultTrack
);
214 /*****************************************************************************
215 * IDirectMusicChordMapTrackStream implementation structure
217 struct IDirectMusicChordMapTrackStream
219 /* IUnknown fields */
220 ICOM_VFIELD (IPersistStream
);
223 /* IPersistStreamImpl fields */
224 IDirectMusicChordMapTrack
* pParentTrack
;
228 extern HRESULT WINAPI
IDirectMusicChordMapTrackStream_QueryInterface (LPPERSISTSTREAM iface
, REFIID riid
, void** ppvObject
);
229 extern ULONG WINAPI
IDirectMusicChordMapTrackStream_AddRef (LPPERSISTSTREAM iface
);
230 extern ULONG WINAPI
IDirectMusicChordMapTrackStream_Release (LPPERSISTSTREAM iface
);
232 extern HRESULT WINAPI
IDirectMusicChordMapTrackStream_GetClassID (LPPERSISTSTREAM iface
, CLSID
* pClassID
);
233 /* IPersistStream: */
234 extern HRESULT WINAPI
IDirectMusicChordMapTrackStream_IsDirty (LPPERSISTSTREAM iface
);
235 extern HRESULT WINAPI
IDirectMusicChordMapTrackStream_Load (LPPERSISTSTREAM iface
, IStream
* pStm
);
236 extern HRESULT WINAPI
IDirectMusicChordMapTrackStream_Save (LPPERSISTSTREAM iface
, IStream
* pStm
, BOOL fClearDirty
);
237 extern HRESULT WINAPI
IDirectMusicChordMapTrackStream_GetSizeMax (LPPERSISTSTREAM iface
, ULARGE_INTEGER
* pcbSize
);
240 /*****************************************************************************
241 * IDirectMusicSignPostTrack implementation structure
243 struct IDirectMusicSignPostTrack
245 /* IUnknown fields */
246 ICOM_VFIELD(IDirectMusicTrack8
);
249 /* IDirectMusicSignPostTrack fields */
250 IDirectMusicSignPostTrackStream
* pStream
;
254 extern HRESULT WINAPI
IDirectMusicSignPostTrack_QueryInterface (LPDIRECTMUSICTRACK8 iface
, REFIID riid
, LPVOID
*ppobj
);
255 extern ULONG WINAPI
IDirectMusicSignPostTrack_AddRef (LPDIRECTMUSICTRACK8 iface
);
256 extern ULONG WINAPI
IDirectMusicSignPostTrack_Release (LPDIRECTMUSICTRACK8 iface
);
257 /* IDirectMusicTrack: */
258 extern HRESULT WINAPI
IDirectMusicSignPostTrack_Init (LPDIRECTMUSICTRACK8 iface
, IDirectMusicSegment
* pSegment
);
259 extern HRESULT WINAPI
IDirectMusicSignPostTrack_InitPlay (LPDIRECTMUSICTRACK8 iface
, IDirectMusicSegmentState
* pSegmentState
, IDirectMusicPerformance
* pPerformance
, void** ppStateData
, DWORD dwVirtualTrackID
, DWORD dwFlags
);
260 extern HRESULT WINAPI
IDirectMusicSignPostTrack_EndPlay (LPDIRECTMUSICTRACK8 iface
, void* pStateData
);
261 extern HRESULT WINAPI
IDirectMusicSignPostTrack_Play (LPDIRECTMUSICTRACK8 iface
, void* pStateData
, MUSIC_TIME mtStart
, MUSIC_TIME mtEnd
, MUSIC_TIME mtOffset
, DWORD dwFlags
, IDirectMusicPerformance
* pPerf
, IDirectMusicSegmentState
* pSegSt
, DWORD dwVirtualID
);
262 extern HRESULT WINAPI
IDirectMusicSignPostTrack_GetParam (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidType
, MUSIC_TIME mtTime
, MUSIC_TIME
* pmtNext
, void* pParam
);
263 extern HRESULT WINAPI
IDirectMusicSignPostTrack_SetParam (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidType
, MUSIC_TIME mtTime
, void* pParam
);
264 extern HRESULT WINAPI
IDirectMusicSignPostTrack_IsParamSupported (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidType
);
265 extern HRESULT WINAPI
IDirectMusicSignPostTrack_AddNotificationType (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidNotificationType
);
266 extern HRESULT WINAPI
IDirectMusicSignPostTrack_RemoveNotificationType (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidNotificationType
);
267 extern HRESULT WINAPI
IDirectMusicSignPostTrack_Clone (LPDIRECTMUSICTRACK8 iface
, MUSIC_TIME mtStart
, MUSIC_TIME mtEnd
, IDirectMusicTrack
** ppTrack
);
268 /* IDirectMusicTrack8: */
269 extern HRESULT WINAPI
IDirectMusicSignPostTrack_PlayEx (LPDIRECTMUSICTRACK8 iface
, void* pStateData
, REFERENCE_TIME rtStart
, REFERENCE_TIME rtEnd
, REFERENCE_TIME rtOffset
, DWORD dwFlags
, IDirectMusicPerformance
* pPerf
, IDirectMusicSegmentState
* pSegSt
, DWORD dwVirtualID
);
270 extern HRESULT WINAPI
IDirectMusicSignPostTrack_GetParamEx (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidType
, REFERENCE_TIME rtTime
, REFERENCE_TIME
* prtNext
, void* pParam
, void* pStateData
, DWORD dwFlags
);
271 extern HRESULT WINAPI
IDirectMusicSignPostTrack_SetParamEx (LPDIRECTMUSICTRACK8 iface
, REFGUID rguidType
, REFERENCE_TIME rtTime
, void* pParam
, void* pStateData
, DWORD dwFlags
);
272 extern HRESULT WINAPI
IDirectMusicSignPostTrack_Compose (LPDIRECTMUSICTRACK8 iface
, IUnknown
* pContext
, DWORD dwTrackGroup
, IDirectMusicTrack
** ppResultTrack
);
273 extern HRESULT WINAPI
IDirectMusicSignPostTrack_Join (LPDIRECTMUSICTRACK8 iface
, IDirectMusicTrack
* pNewTrack
, MUSIC_TIME mtJoin
, IUnknown
* pContext
, DWORD dwTrackGroup
, IDirectMusicTrack
** ppResultTrack
);
275 /*****************************************************************************
276 * IDirectMusicSignPostTrackStream implementation structure
278 struct IDirectMusicSignPostTrackStream
280 /* IUnknown fields */
281 ICOM_VFIELD (IPersistStream
);
284 /* IPersistStreamImpl fields */
285 IDirectMusicSignPostTrack
* pParentTrack
;
289 extern HRESULT WINAPI
IDirectMusicSignPostTrackStream_QueryInterface (LPPERSISTSTREAM iface
, REFIID riid
, void** ppvObject
);
290 extern ULONG WINAPI
IDirectMusicSignPostTrackStream_AddRef (LPPERSISTSTREAM iface
);
291 extern ULONG WINAPI
IDirectMusicSignPostTrackStream_Release (LPPERSISTSTREAM iface
);
293 extern HRESULT WINAPI
IDirectMusicSignPostTrackStream_GetClassID (LPPERSISTSTREAM iface
, CLSID
* pClassID
);
294 /* IPersistStream: */
295 extern HRESULT WINAPI
IDirectMusicSignPostTrackStream_IsDirty (LPPERSISTSTREAM iface
);
296 extern HRESULT WINAPI
IDirectMusicSignPostTrackStream_Load (LPPERSISTSTREAM iface
, IStream
* pStm
);
297 extern HRESULT WINAPI
IDirectMusicSignPostTrackStream_Save (LPPERSISTSTREAM iface
, IStream
* pStm
, BOOL fClearDirty
);
298 extern HRESULT WINAPI
IDirectMusicSignPostTrackStream_GetSizeMax (LPPERSISTSTREAM iface
, ULARGE_INTEGER
* pcbSize
);
300 #endif /* __WINE_DMCOMPOS_PRIVATE_H */