Added version information.
[wine] / dlls / dmusic / dmusic_plugins.c
1 /* IDirectMusicTool Implementation
2  * IDirectMusicTool8 Implementation
3  * IDirectMusicTrack Implementation
4  * IDirectMusicTrack8 Implementation
5  *
6  * Copyright (C) 2003 Rok Mandeljc
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU Library General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21  */
22
23 #include "windef.h"
24 #include "winbase.h"
25 #include "winuser.h"
26 #include "wingdi.h"
27 #include "wine/debug.h"
28
29 #include "dmusic_private.h"
30
31 WINE_DEFAULT_DEBUG_CHANNEL(dmusic);
32
33 /* IDirectMusicTool IUnknown parts follow: */
34 HRESULT WINAPI IDirectMusicToolImpl_QueryInterface (LPDIRECTMUSICTOOL iface, REFIID riid, LPVOID *ppobj)
35 {
36         ICOM_THIS(IDirectMusicToolImpl,iface);
37
38         if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicTool))
39         {
40                 IDirectMusicToolImpl_AddRef(iface);
41                 *ppobj = This;
42                 return DS_OK;
43         }
44         WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
45         return E_NOINTERFACE;
46 }
47
48 ULONG WINAPI IDirectMusicToolImpl_AddRef (LPDIRECTMUSICTOOL iface)
49 {
50         ICOM_THIS(IDirectMusicToolImpl,iface);
51         TRACE("(%p) : AddRef from %ld\n", This, This->ref);
52         return ++(This->ref);
53 }
54
55 ULONG WINAPI IDirectMusicToolImpl_Release (LPDIRECTMUSICTOOL iface)
56 {
57         ICOM_THIS(IDirectMusicToolImpl,iface);
58         ULONG ref = --This->ref;
59         TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
60         if (ref == 0)
61         {
62                 HeapFree(GetProcessHeap(), 0, This);
63         }
64         return ref;
65 }
66
67 /* IDirectMusicTool Interface follow: */
68 HRESULT WINAPI IDirectMusicToolImpl_Init (LPDIRECTMUSICTOOL iface, IDirectMusicGraph* pGraph)
69 {
70         FIXME("stub\n");
71         return DS_OK;
72 }
73
74 HRESULT WINAPI IDirectMusicToolImpl_GetMsgDeliveryType (LPDIRECTMUSICTOOL iface, DWORD* pdwDeliveryType)
75 {
76         FIXME("stub\n");
77         return DS_OK;
78 }
79
80 HRESULT WINAPI IDirectMusicToolImpl_GetMediaTypeArraySize (LPDIRECTMUSICTOOL iface, DWORD* pdwNumElements)
81 {
82         FIXME("stub\n");
83         return DS_OK;
84 }
85
86 HRESULT WINAPI IDirectMusicToolImpl_GetMediaTypes (LPDIRECTMUSICTOOL iface, DWORD** padwMediaTypes, DWORD dwNumElements)
87 {
88         FIXME("stub\n");
89         return DS_OK;
90 }
91
92 HRESULT WINAPI IDirectMusicToolImpl_ProcessPMsg (LPDIRECTMUSICTOOL iface, IDirectMusicPerformance* pPerf, DMUS_PMSG* pPMSG)
93 {
94         FIXME("stub\n");
95         return DS_OK;
96 }
97
98 HRESULT WINAPI IDirectMusicToolImpl_Flush (LPDIRECTMUSICTOOL iface, IDirectMusicPerformance* pPerf, DMUS_PMSG* pPMSG, REFERENCE_TIME rtTime)
99 {
100         FIXME("stub\n");
101         return DS_OK;
102 }
103
104 ICOM_VTABLE(IDirectMusicTool) DirectMusicTool_Vtbl =
105 {
106     ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
107         IDirectMusicToolImpl_QueryInterface,
108         IDirectMusicToolImpl_AddRef,
109         IDirectMusicToolImpl_Release,
110         IDirectMusicToolImpl_Init,
111         IDirectMusicToolImpl_GetMsgDeliveryType,
112         IDirectMusicToolImpl_GetMediaTypeArraySize,
113         IDirectMusicToolImpl_GetMediaTypes,
114         IDirectMusicToolImpl_ProcessPMsg,
115         IDirectMusicToolImpl_Flush
116 };
117
118
119 /* IDirectMusicTool8 IUnknown parts follow: */
120 HRESULT WINAPI IDirectMusicTool8Impl_QueryInterface (LPDIRECTMUSICTOOL8 iface, REFIID riid, LPVOID *ppobj)
121 {
122         ICOM_THIS(IDirectMusicTool8Impl,iface);
123
124         if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicTool8))
125         {
126                 IDirectMusicTool8Impl_AddRef(iface);
127                 *ppobj = This;
128                 return DS_OK;
129         }
130         WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
131         return E_NOINTERFACE;
132 }
133
134 ULONG WINAPI IDirectMusicTool8Impl_AddRef (LPDIRECTMUSICTOOL8 iface)
135 {
136         ICOM_THIS(IDirectMusicTool8Impl,iface);
137         TRACE("(%p) : AddRef from %ld\n", This, This->ref);
138         return ++(This->ref);
139 }
140
141 ULONG WINAPI IDirectMusicTool8Impl_Release (LPDIRECTMUSICTOOL8 iface)
142 {
143         ICOM_THIS(IDirectMusicTool8Impl,iface);
144         ULONG ref = --This->ref;
145         TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
146         if (ref == 0)
147         {
148                 HeapFree(GetProcessHeap(), 0, This);
149         }
150         return ref;
151 }
152
153 /* IDirectMusicTool8 Interface follow: */
154 HRESULT WINAPI IDirectMusicTool8Impl_Init (LPDIRECTMUSICTOOL8 iface, IDirectMusicGraph* pGraph)
155 {
156         FIXME("stub\n");
157         return DS_OK;
158 }
159
160 HRESULT WINAPI IDirectMusicTool8Impl_GetMsgDeliveryType (LPDIRECTMUSICTOOL8 iface, DWORD* pdwDeliveryType)
161 {
162         FIXME("stub\n");
163         return DS_OK;
164 }
165
166 HRESULT WINAPI IDirectMusicTool8Impl_GetMediaTypeArraySize (LPDIRECTMUSICTOOL8 iface, DWORD* pdwNumElements)
167 {
168         FIXME("stub\n");
169         return DS_OK;
170 }
171
172 HRESULT WINAPI IDirectMusicTool8Impl_GetMediaTypes (LPDIRECTMUSICTOOL8 iface, DWORD** padwMediaTypes, DWORD dwNumElements)
173 {
174         FIXME("stub\n");
175         return DS_OK;
176 }
177
178 HRESULT WINAPI IDirectMusicTool8Impl_ProcessPMsg (LPDIRECTMUSICTOOL8 iface, IDirectMusicPerformance* pPerf, DMUS_PMSG* pPMSG)
179 {
180         FIXME("stub\n");
181         return DS_OK;
182 }
183
184 HRESULT WINAPI IDirectMusicTool8Impl_Flush (LPDIRECTMUSICTOOL8 iface, IDirectMusicPerformance* pPerf, DMUS_PMSG* pPMSG, REFERENCE_TIME rtTime)
185 {
186         FIXME("stub\n");
187         return DS_OK;
188 }
189
190 HRESULT WINAPI IDirectMusicTool8Impl_Clone (LPDIRECTMUSICTOOL8 iface, IDirectMusicTool** ppTool)
191 {
192         FIXME("stub\n");
193         return DS_OK;
194 }
195
196 ICOM_VTABLE(IDirectMusicTool8) DirectMusicTool8_Vtbl =
197 {
198     ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
199         IDirectMusicTool8Impl_QueryInterface,
200         IDirectMusicTool8Impl_AddRef,
201         IDirectMusicTool8Impl_Release,
202         IDirectMusicTool8Impl_Init,
203         IDirectMusicTool8Impl_GetMsgDeliveryType,
204         IDirectMusicTool8Impl_GetMediaTypeArraySize,
205         IDirectMusicTool8Impl_GetMediaTypes,
206         IDirectMusicTool8Impl_ProcessPMsg,
207         IDirectMusicTool8Impl_Flush,
208         IDirectMusicTool8Impl_Clone
209 };
210
211
212 /* IDirectMusicTrack IUnknown parts follow: */
213 HRESULT WINAPI IDirectMusicTrackImpl_QueryInterface (LPDIRECTMUSICTRACK iface, REFIID riid, LPVOID *ppobj)
214 {
215         ICOM_THIS(IDirectMusicTrackImpl,iface);
216
217         if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicTrack))
218         {
219                 IDirectMusicTrackImpl_AddRef(iface);
220                 *ppobj = This;
221                 return DS_OK;
222         }
223         WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
224         return E_NOINTERFACE;
225 }
226
227 ULONG WINAPI IDirectMusicTrackImpl_AddRef (LPDIRECTMUSICTRACK iface)
228 {
229         ICOM_THIS(IDirectMusicTrackImpl,iface);
230         TRACE("(%p) : AddRef from %ld\n", This, This->ref);
231         return ++(This->ref);
232 }
233
234 ULONG WINAPI IDirectMusicTrackImpl_Release (LPDIRECTMUSICTRACK iface)
235 {
236         ICOM_THIS(IDirectMusicTrackImpl,iface);
237         ULONG ref = --This->ref;
238         TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
239         if (ref == 0)
240         {
241                 HeapFree(GetProcessHeap(), 0, This);
242         }
243         return ref;
244 }
245 /* IDirectMusicTrack Interface follow: */
246 HRESULT WINAPI IDirectMusicTrackImpl_Init (LPDIRECTMUSICTRACK iface, IDirectMusicSegment* pSegment)
247 {
248         FIXME("stub\n");
249         return DS_OK;
250 }
251
252 HRESULT WINAPI IDirectMusicTrackImpl_InitPlay (LPDIRECTMUSICTRACK iface, IDirectMusicSegmentState* pSegmentState, IDirectMusicPerformance* pPerformance, void** ppStateData, DWORD dwVirtualTrackID, DWORD dwFlags)
253 {
254         FIXME("stub\n");
255         return DS_OK;
256 }
257
258 HRESULT WINAPI IDirectMusicTrackImpl_EndPlay (LPDIRECTMUSICTRACK iface, void* pStateData)
259 {
260         FIXME("stub\n");
261         return DS_OK;
262 }
263
264 HRESULT WINAPI IDirectMusicTrackImpl_Play (LPDIRECTMUSICTRACK iface, void* pStateData, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, MUSIC_TIME mtOffset, DWORD dwFlags, IDirectMusicPerformance* pPerf, IDirectMusicSegmentState* pSegSt, DWORD dwVirtualID)
265 {
266         FIXME("stub\n");
267         return DS_OK;
268 }
269
270 HRESULT WINAPI IDirectMusicTrackImpl_GetParam (LPDIRECTMUSICTRACK iface, REFGUID rguidType, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
271 {
272         FIXME("stub\n");
273         return DS_OK;
274 }
275
276 HRESULT WINAPI IDirectMusicTrackImpl_SetParam (LPDIRECTMUSICTRACK iface, REFGUID rguidType, MUSIC_TIME mtTime, void* pParam)
277 {
278         FIXME("stub\n");
279         return DS_OK;
280 }
281
282 HRESULT WINAPI IDirectMusicTrackImpl_IsParamSupported (LPDIRECTMUSICTRACK iface, REFGUID rguidType)
283 {
284         FIXME("stub\n");
285         return DS_OK;
286 }
287
288 HRESULT WINAPI IDirectMusicTrackImpl_AddNotificationType (LPDIRECTMUSICTRACK iface, REFGUID rguidNotificationType)
289 {
290         FIXME("stub\n");
291         return DS_OK;
292 }
293
294 HRESULT WINAPI IDirectMusicTrackImpl_RemoveNotificationType (LPDIRECTMUSICTRACK iface, REFGUID rguidNotificationType)
295 {
296         FIXME("stub\n");
297         return DS_OK;
298 }
299
300 HRESULT WINAPI IDirectMusicTrackImpl_Clone (LPDIRECTMUSICTRACK iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicTrack** ppTrack)
301 {
302         FIXME("stub\n");
303         return DS_OK;
304 }
305
306 ICOM_VTABLE(IDirectMusicTrack) DirectMusicTrack_Vtbl =
307 {
308     ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
309         IDirectMusicTrackImpl_QueryInterface,
310         IDirectMusicTrackImpl_AddRef,
311         IDirectMusicTrackImpl_Release,
312         IDirectMusicTrackImpl_Init,
313         IDirectMusicTrackImpl_InitPlay,
314         IDirectMusicTrackImpl_EndPlay,
315         IDirectMusicTrackImpl_Play,
316         IDirectMusicTrackImpl_GetParam,
317         IDirectMusicTrackImpl_SetParam,
318         IDirectMusicTrackImpl_IsParamSupported,
319         IDirectMusicTrackImpl_AddNotificationType,
320         IDirectMusicTrackImpl_RemoveNotificationType,
321         IDirectMusicTrackImpl_Clone
322 };
323
324 /* IDirectMusicTrack8 IUnknown parts follow: */
325 HRESULT WINAPI IDirectMusicTrack8Impl_QueryInterface (LPDIRECTMUSICTRACK8 iface, REFIID riid, LPVOID *ppobj)
326 {
327         ICOM_THIS(IDirectMusicTrack8Impl,iface);
328
329         if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectMusicTrack8))
330         {
331                 IDirectMusicTrack8Impl_AddRef(iface);
332                 *ppobj = This;
333                 return DS_OK;
334         }
335         WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj);
336         return E_NOINTERFACE;
337 }
338
339 ULONG WINAPI IDirectMusicTrack8Impl_AddRef (LPDIRECTMUSICTRACK8 iface)
340 {
341         ICOM_THIS(IDirectMusicTrack8Impl,iface);
342         TRACE("(%p) : AddRef from %ld\n", This, This->ref);
343         return ++(This->ref);
344 }
345
346 ULONG WINAPI IDirectMusicTrack8Impl_Release (LPDIRECTMUSICTRACK8 iface)
347 {
348         ICOM_THIS(IDirectMusicTrack8Impl,iface);
349         ULONG ref = --This->ref;
350         TRACE("(%p) : ReleaseRef to %ld\n", This, This->ref);
351         if (ref == 0)
352         {
353                 HeapFree(GetProcessHeap(), 0, This);
354         }
355         return ref;
356 }
357 /* IDirectMusicTrack Interface part follow: */
358 HRESULT WINAPI IDirectMusicTrack8Impl_Init (LPDIRECTMUSICTRACK8 iface, IDirectMusicSegment* pSegment)
359 {
360         FIXME("stub\n");
361         return DS_OK;
362 }
363
364 HRESULT WINAPI IDirectMusicTrack8Impl_InitPlay (LPDIRECTMUSICTRACK8 iface, IDirectMusicSegmentState* pSegmentState, IDirectMusicPerformance* pPerformance, void** ppStateData, DWORD dwVirtualTrack8ID, DWORD dwFlags)
365 {
366         FIXME("stub\n");
367         return DS_OK;
368 }
369
370 HRESULT WINAPI IDirectMusicTrack8Impl_EndPlay (LPDIRECTMUSICTRACK8 iface, void* pStateData)
371 {
372         FIXME("stub\n");
373         return DS_OK;
374 }
375
376 HRESULT WINAPI IDirectMusicTrack8Impl_Play (LPDIRECTMUSICTRACK8 iface, void* pStateData, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, MUSIC_TIME mtOffset, DWORD dwFlags, IDirectMusicPerformance* pPerf, IDirectMusicSegmentState* pSegSt, DWORD dwVirtualID)
377 {
378         FIXME("stub\n");
379         return DS_OK;
380 }
381
382 HRESULT WINAPI IDirectMusicTrack8Impl_GetParam (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam)
383 {
384         FIXME("stub\n");
385         return DS_OK;
386 }
387
388 HRESULT WINAPI IDirectMusicTrack8Impl_SetParam (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType, MUSIC_TIME mtTime, void* pParam)
389 {
390         FIXME("stub\n");
391         return DS_OK;
392 }
393
394 HRESULT WINAPI IDirectMusicTrack8Impl_IsParamSupported (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType)
395 {
396         FIXME("stub\n");
397         return DS_OK;
398 }
399
400 HRESULT WINAPI IDirectMusicTrack8Impl_AddNotificationType (LPDIRECTMUSICTRACK8 iface, REFGUID rguidNotificationType)
401 {
402         FIXME("stub\n");
403         return DS_OK;
404 }
405
406 HRESULT WINAPI IDirectMusicTrack8Impl_RemoveNotificationType (LPDIRECTMUSICTRACK8 iface, REFGUID rguidNotificationType)
407 {
408         FIXME("stub\n");
409         return DS_OK;
410 }
411
412 HRESULT WINAPI IDirectMusicTrack8Impl_Clone (LPDIRECTMUSICTRACK8 iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd, IDirectMusicTrack** ppTrack)
413 {
414         FIXME("stub\n");
415         return DS_OK;
416 }
417
418 /* IDirectMusicTrack8 Interface part follow: */
419
420 HRESULT WINAPI IDirectMusicTrack8Impl_PlayEx (LPDIRECTMUSICTRACK8 iface, void* pStateData, REFERENCE_TIME rtStart, REFERENCE_TIME rtEnd, REFERENCE_TIME rtOffset, DWORD dwFlags, IDirectMusicPerformance* pPerf, IDirectMusicSegmentState* pSegSt, DWORD dwVirtualID)
421 {
422         FIXME("stub\n");
423         return DS_OK;
424 }
425
426 HRESULT WINAPI IDirectMusicTrack8Impl_GetParamEx (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType, REFERENCE_TIME rtTime, REFERENCE_TIME* prtNext, void* pParam, void* pStateData, DWORD dwFlags)
427 {
428         FIXME("stub\n");
429         return DS_OK;
430 }
431
432 HRESULT WINAPI IDirectMusicTrack8Impl_SetParamEx (LPDIRECTMUSICTRACK8 iface, REFGUID rguidType, REFERENCE_TIME rtTime, void* pParam, void* pStateData, DWORD dwFlags)
433 {
434         FIXME("stub\n");
435         return DS_OK;
436 }
437
438 HRESULT WINAPI IDirectMusicTrack8Impl_Compose (LPDIRECTMUSICTRACK8 iface, IUnknown* pContext, DWORD dwTrackGroup, IDirectMusicTrack** ppResultTrack)
439 {
440         FIXME("stub\n");
441         return DS_OK;
442 }
443
444 HRESULT WINAPI IDirectMusicTrack8Impl_Join (LPDIRECTMUSICTRACK8 iface, IDirectMusicTrack* pNewTrack, MUSIC_TIME mtJoin, IUnknown* pContext, DWORD dwTrackGroup, IDirectMusicTrack** ppResultTrack)
445 {
446         FIXME("stub\n");
447         return DS_OK;
448 }
449
450 ICOM_VTABLE(IDirectMusicTrack8) DirectMusicTrack8_Vtbl =
451 {
452     ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
453         IDirectMusicTrack8Impl_QueryInterface,
454         IDirectMusicTrack8Impl_AddRef,
455         IDirectMusicTrack8Impl_Release,
456         IDirectMusicTrack8Impl_Init,
457         IDirectMusicTrack8Impl_InitPlay,
458         IDirectMusicTrack8Impl_EndPlay,
459         IDirectMusicTrack8Impl_Play,
460         IDirectMusicTrack8Impl_GetParam,
461         IDirectMusicTrack8Impl_SetParam,
462         IDirectMusicTrack8Impl_IsParamSupported,
463         IDirectMusicTrack8Impl_AddNotificationType,
464         IDirectMusicTrack8Impl_RemoveNotificationType,
465         IDirectMusicTrack8Impl_Clone,
466         IDirectMusicTrack8Impl_PlayEx,
467         IDirectMusicTrack8Impl_GetParamEx,
468         IDirectMusicTrack8Impl_SetParamEx,
469         IDirectMusicTrack8Impl_Compose,
470         IDirectMusicTrack8Impl_Join
471 };