1 /* IDirectMusicChordMap Implementation
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.
26 #include "wine/debug.h"
28 #include "dmcompos_private.h"
30 WINE_DEFAULT_DEBUG_CHANNEL(dmcompos
);
32 /* IDirectMusicChordMap IUnknown parts follow: */
33 HRESULT WINAPI
IDirectMusicChordMapImpl_QueryInterface (LPDIRECTMUSICCHORDMAP iface
, REFIID riid
, LPVOID
*ppobj
)
35 ICOM_THIS(IDirectMusicChordMapImpl
,iface
);
37 if (IsEqualIID (riid
, &IID_IUnknown
) ||
38 IsEqualIID (riid
, &IID_IDirectMusicChordMap
)) {
39 IDirectMusicChordMapImpl_AddRef(iface
);
44 WARN("(%p)->(%s,%p),not found\n", This
, debugstr_guid(riid
), ppobj
);
48 ULONG WINAPI
IDirectMusicChordMapImpl_AddRef (LPDIRECTMUSICCHORDMAP iface
)
50 ICOM_THIS(IDirectMusicChordMapImpl
,iface
);
51 TRACE("(%p) : AddRef from %ld\n", This
, This
->ref
);
55 ULONG WINAPI
IDirectMusicChordMapImpl_Release (LPDIRECTMUSICCHORDMAP iface
)
57 ICOM_THIS(IDirectMusicChordMapImpl
,iface
);
58 ULONG ref
= --This
->ref
;
59 TRACE("(%p) : ReleaseRef to %ld\n", This
, This
->ref
);
61 HeapFree(GetProcessHeap(), 0, This
);
66 /* IDirectMusicChordMap Interface follow: */
67 HRESULT WINAPI
IDirectMusicChordMapImpl_GetScale (LPDIRECTMUSICCHORDMAP iface
, DWORD
* pdwScale
)
69 ICOM_THIS(IDirectMusicChordMapImpl
,iface
);
71 TRACE("(%p, %p)\n", This
, pdwScale
);
72 *pdwScale
= This
->dwScale
;
77 ICOM_VTABLE(IDirectMusicChordMap
) DirectMusicChordMap_Vtbl
=
79 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
80 IDirectMusicChordMapImpl_QueryInterface
,
81 IDirectMusicChordMapImpl_AddRef
,
82 IDirectMusicChordMapImpl_Release
,
83 IDirectMusicChordMapImpl_GetScale
86 /* for ClassFactory */
87 HRESULT WINAPI
DMUSIC_CreateDirectMusicChordMap (LPCGUID lpcGUID
, LPDIRECTMUSICCHORDMAP
* ppDMCM
, LPUNKNOWN pUnkOuter
)
89 IDirectMusicChordMapImpl
* dmchordmap
;
91 if (IsEqualIID (lpcGUID
, &IID_IDirectMusicChordMap
)) {
92 dmchordmap
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(IDirectMusicChordMapImpl
));
93 if (NULL
== dmchordmap
) {
94 *ppDMCM
= (LPDIRECTMUSICCHORDMAP
) NULL
;
97 dmchordmap
->lpVtbl
= &DirectMusicChordMap_Vtbl
;
99 *ppDMCM
= (LPDIRECTMUSICCHORDMAP
) dmchordmap
;
102 WARN("No interface found\n");
104 return E_NOINTERFACE
;
107 /*****************************************************************************
108 * IDirectMusicChordMapObject implementation
110 /* IDirectMusicChordMapObject IUnknown part: */
111 HRESULT WINAPI
IDirectMusicChordMapObject_QueryInterface (LPDIRECTMUSICOBJECT iface
, REFIID riid
, LPVOID
*ppobj
)
113 ICOM_THIS(IDirectMusicChordMapObject
,iface
);
115 if (IsEqualIID (riid
, &IID_IUnknown
)
116 || IsEqualIID (riid
, &IID_IDirectMusicObject
)) {
117 IDirectMusicChordMapObject_AddRef(iface
);
120 } else if (IsEqualIID (riid
, &IID_IPersistStream
)) {
121 IPersistStream_AddRef ((LPPERSISTSTREAM
)This
->pStream
);
122 *ppobj
= (LPPERSISTSTREAM
)This
->pStream
;
124 } else if (IsEqualIID (riid
, &IID_IDirectMusicChordMap
)) {
125 IDirectMusicChordMap_AddRef ((LPDIRECTMUSICCHORDMAP
)This
->pChordMap
);
126 *ppobj
= (LPDIRECTMUSICCHORDMAP
)This
->pChordMap
;
129 WARN("(%p)->(%s,%p),not found\n",This
,debugstr_guid(riid
),ppobj
);
130 return E_NOINTERFACE
;
133 ULONG WINAPI
IDirectMusicChordMapObject_AddRef (LPDIRECTMUSICOBJECT iface
)
135 ICOM_THIS(IDirectMusicChordMapObject
,iface
);
136 TRACE("(%p) : AddRef from %ld\n", This
, This
->ref
);
137 return ++(This
->ref
);
140 ULONG WINAPI
IDirectMusicChordMapObject_Release (LPDIRECTMUSICOBJECT iface
)
142 ICOM_THIS(IDirectMusicChordMapObject
,iface
);
143 ULONG ref
= --This
->ref
;
144 TRACE("(%p) : ReleaseRef to %ld\n", This
, This
->ref
);
146 HeapFree(GetProcessHeap(), 0, This
);
151 /* IDirectMusicChordMapObject IDirectMusicObject part: */
152 HRESULT WINAPI
IDirectMusicChordMapObject_GetDescriptor (LPDIRECTMUSICOBJECT iface
, LPDMUS_OBJECTDESC pDesc
)
154 ICOM_THIS(IDirectMusicChordMapObject
,iface
);
156 TRACE("(%p, %p)\n", This
, pDesc
);
162 HRESULT WINAPI
IDirectMusicChordMapObject_SetDescriptor (LPDIRECTMUSICOBJECT iface
, LPDMUS_OBJECTDESC pDesc
)
164 ICOM_THIS(IDirectMusicChordMapObject
,iface
);
166 TRACE("(%p, %p)\n", This
, pDesc
);
172 HRESULT WINAPI
IDirectMusicChordMapObject_ParseDescriptor (LPDIRECTMUSICOBJECT iface
, LPSTREAM pStream
, LPDMUS_OBJECTDESC pDesc
)
174 ICOM_THIS(IDirectMusicChordMapObject
,iface
);
176 FIXME("(%p, %p, %p): stub\n", This
, pStream
, pDesc
);
181 ICOM_VTABLE(IDirectMusicObject
) DirectMusicChordMapObject_Vtbl
=
183 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
184 IDirectMusicChordMapObject_QueryInterface
,
185 IDirectMusicChordMapObject_AddRef
,
186 IDirectMusicChordMapObject_Release
,
187 IDirectMusicChordMapObject_GetDescriptor
,
188 IDirectMusicChordMapObject_SetDescriptor
,
189 IDirectMusicChordMapObject_ParseDescriptor
192 /* for ClassFactory */
193 HRESULT WINAPI
DMUSIC_CreateDirectMusicChordMapObject (LPCGUID lpcGUID
, LPDIRECTMUSICOBJECT
* ppObject
, LPUNKNOWN pUnkOuter
)
195 IDirectMusicChordMapObject
*obj
;
197 TRACE("(%p,%p,%p)\n", lpcGUID
, ppObject
, pUnkOuter
);
198 if (IsEqualIID (lpcGUID
, &IID_IDirectMusicObject
)) {
199 obj
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(IDirectMusicChordMapObject
));
201 *ppObject
= (LPDIRECTMUSICOBJECT
) NULL
;
202 return E_OUTOFMEMORY
;
204 obj
->lpVtbl
= &DirectMusicChordMapObject_Vtbl
;
206 /* prepare IPersistStream */
207 obj
->pStream
= HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY
, sizeof(IDirectMusicChordMapObjectStream
));
208 obj
->pStream
->lpVtbl
= &DirectMusicChordMapObjectStream_Vtbl
;
209 obj
->pStream
->ref
= 1;
210 obj
->pStream
->pParentObject
= obj
;
211 /* prepare IDirectMusiChordMap */
212 DMUSIC_CreateDirectMusicChordMap (&IID_IDirectMusicChordMap
, (LPDIRECTMUSICCHORDMAP
*)&obj
->pChordMap
, NULL
);
213 obj
->pChordMap
->pObject
= obj
;
214 *ppObject
= (LPDIRECTMUSICOBJECT
) obj
;
217 WARN("No interface found\n");
219 return E_NOINTERFACE
;
222 /*****************************************************************************
223 * IDirectMusicChordMapObjectStream implementation
225 /* IDirectMusicChordMapObjectStream IUnknown part: */
226 HRESULT WINAPI
IDirectMusicChordMapObjectStream_QueryInterface (LPPERSISTSTREAM iface
, REFIID riid
, LPVOID
*ppobj
)
228 ICOM_THIS(IDirectMusicChordMapObjectStream
,iface
);
230 if (IsEqualIID (riid
, &IID_IUnknown
)
231 || IsEqualIID (riid
, &IID_IPersistStream
)) {
232 IDirectMusicChordMapObjectStream_AddRef(iface
);
236 WARN("(%p)->(%s,%p),not found\n",This
,debugstr_guid(riid
),ppobj
);
237 return E_NOINTERFACE
;
240 ULONG WINAPI
IDirectMusicChordMapObjectStream_AddRef (LPPERSISTSTREAM iface
)
242 ICOM_THIS(IDirectMusicChordMapObjectStream
,iface
);
243 TRACE("(%p) : AddRef from %ld\n", This
, This
->ref
);
244 return ++(This
->ref
);
247 ULONG WINAPI
IDirectMusicChordMapObjectStream_Release (LPPERSISTSTREAM iface
)
249 ICOM_THIS(IDirectMusicChordMapObjectStream
,iface
);
250 ULONG ref
= --This
->ref
;
251 TRACE("(%p) : ReleaseRef to %ld\n", This
, This
->ref
);
253 HeapFree(GetProcessHeap(), 0, This
);
258 /* IDirectMusicChordMapObjectStream IPersist part: */
259 HRESULT WINAPI
IDirectMusicChordMapObjectStream_GetClassID (LPPERSISTSTREAM iface
, CLSID
* pClassID
)
264 /* IDirectMusicChordMapObjectStream IPersistStream part: */
265 HRESULT WINAPI
IDirectMusicChordMapObjectStream_IsDirty (LPPERSISTSTREAM iface
)
270 HRESULT WINAPI
IDirectMusicChordMapObjectStream_Load (LPPERSISTSTREAM iface
, IStream
* pStm
)
272 FIXME(": Loading not implemented yet\n");
276 HRESULT WINAPI
IDirectMusicChordMapObjectStream_Save (LPPERSISTSTREAM iface
, IStream
* pStm
, BOOL fClearDirty
)
281 HRESULT WINAPI
IDirectMusicChordMapObjectStream_GetSizeMax (LPPERSISTSTREAM iface
, ULARGE_INTEGER
* pcbSize
)
286 ICOM_VTABLE(IPersistStream
) DirectMusicChordMapObjectStream_Vtbl
=
288 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
289 IDirectMusicChordMapObjectStream_QueryInterface
,
290 IDirectMusicChordMapObjectStream_AddRef
,
291 IDirectMusicChordMapObjectStream_Release
,
292 IDirectMusicChordMapObjectStream_GetClassID
,
293 IDirectMusicChordMapObjectStream_IsDirty
,
294 IDirectMusicChordMapObjectStream_Load
,
295 IDirectMusicChordMapObjectStream_Save
,
296 IDirectMusicChordMapObjectStream_GetSizeMax