1 /* DirectMusicStyle Private Include
3 * Copyright (C) 2003-2004 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_DMSTYLE_PRIVATE_H
21 #define __WINE_DMSTYLE_PRIVATE_H
35 #include "wine/debug.h"
36 #include "wine/list.h"
37 #include "wine/unicode.h"
45 /*****************************************************************************
48 typedef struct IDirectMusicStyle8Impl IDirectMusicStyle8Impl
;
50 typedef struct IDirectMusicAuditionTrack IDirectMusicAuditionTrack
;
51 typedef struct IDirectMusicChordTrack IDirectMusicChordTrack
;
52 typedef struct IDirectMusicCommandTrack IDirectMusicCommandTrack
;
53 typedef struct IDirectMusicMelodyFormulationTrack IDirectMusicMelodyFormulationTrack
;
54 typedef struct IDirectMusicMotifTrack IDirectMusicMotifTrack
;
55 typedef struct IDirectMusicMuteTrack IDirectMusicMuteTrack
;
56 typedef struct IDirectMusicStyleTrack IDirectMusicStyleTrack
;
58 /*****************************************************************************
61 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicStyleImpl (LPCGUID lpcGUID
, LPVOID
* ppobj
, LPUNKNOWN pUnkOuter
);
63 /*****************************************************************************
64 * Auxiliary definitions
66 typedef struct _DMUS_PRIVATE_STYLE_BAND
{
67 struct list entry
; /* for listing elements */
68 IDirectMusicBand
* pBand
;
69 } DMUS_PRIVATE_STYLE_BAND
, *LPDMUS_PRIVATE_STYLE_BAND
;
71 typedef struct _DMUS_PRIVATE_STYLE_PARTREF_ITEM
{
72 struct list entry
; /* for listing elements */
74 DMUS_IO_PARTREF part_ref
;
75 } DMUS_PRIVATE_STYLE_PARTREF_ITEM
, *LPDMUS_PRIVATE_STYLE_PARTREF_ITEM
;
77 typedef struct _DMUS_PRIVATE_STYLE_MOTIF
{
78 struct list entry
; /* for listing elements */
80 DMUS_IO_PATTERN pattern
;
82 /** optional for motifs */
83 DMUS_IO_MOTIFSETTINGS settings
;
84 IDirectMusicBand
* pBand
;
87 } DMUS_PRIVATE_STYLE_MOTIF
, *LPDMUS_PRIVATE_STYLE_MOTIF
;
89 typedef struct _DMUS_PRIVATE_STYLE_ITEM
{
90 struct list entry
; /* for listing elements */
92 IDirectMusicStyle8
* pObject
;
93 } DMUS_PRIVATE_STYLE_ITEM
, *LPDMUS_PRIVATE_STYLE_ITEM
;
95 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicAuditionTrack (LPCGUID lpcGUID
, LPVOID
* ppobj
, LPUNKNOWN pUnkOuter
);
96 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicChordTrack (LPCGUID lpcGUID
, LPVOID
* ppobj
, LPUNKNOWN pUnkOuter
);
97 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicCommandTrack (LPCGUID lpcGUID
, LPVOID
* ppobj
, LPUNKNOWN pUnkOuter
);
98 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicMelodyFormulationTrack (LPCGUID lpcGUID
, LPVOID
* ppobj
, LPUNKNOWN pUnkOuter
);
99 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicMotifTrack (LPCGUID lpcGUID
, LPVOID
* ppobj
, LPUNKNOWN pUnkOuter
);
100 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicMuteTrack (LPCGUID lpcGUID
, LPVOID
* ppobj
, LPUNKNOWN pUnkOuter
);
101 extern HRESULT WINAPI
DMUSIC_CreateDirectMusicStyleTrack (LPCGUID lpcGUID
, LPVOID
* ppobj
, LPUNKNOWN pUnkOuter
);
103 /*****************************************************************************
104 * IDirectMusicStyle8Impl implementation structure
106 struct IDirectMusicStyle8Impl
{
107 /* IUnknown fields */
108 const IUnknownVtbl
*UnknownVtbl
;
109 const IDirectMusicStyle8Vtbl
*StyleVtbl
;
110 const IDirectMusicObjectVtbl
*ObjectVtbl
;
111 const IPersistStreamVtbl
*PersistStreamVtbl
;
114 /* IDirectMusicStyle8Impl fields */
115 LPDMUS_OBJECTDESC pDesc
;
124 extern HRESULT WINAPI
IDirectMusicStyle8Impl_IUnknown_QueryInterface (LPUNKNOWN iface
, REFIID riid
, LPVOID
*ppobj
);
125 extern ULONG WINAPI
IDirectMusicStyle8Impl_IUnknown_AddRef (LPUNKNOWN iface
);
126 /* IDirectMusicStyle: */
127 extern ULONG WINAPI
IDirectMusicStyle8Impl_IDirectMusicStyle8_AddRef (LPDIRECTMUSICSTYLE8 iface
);
128 /* IDirectMusicObject: */
129 extern ULONG WINAPI
IDirectMusicStyle8Impl_IDirectMusicObject_AddRef (LPDIRECTMUSICOBJECT iface
);
130 /* IPersistStream: */
131 extern ULONG WINAPI
IDirectMusicStyle8Impl_IPersistStream_AddRef (LPPERSISTSTREAM iface
);
133 /*****************************************************************************
134 * IDirectMusicAuditionTrack implementation structure
136 struct IDirectMusicAuditionTrack
{
137 /* IUnknown fields */
138 const IUnknownVtbl
*UnknownVtbl
;
139 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
140 const IPersistStreamVtbl
*PersistStreamVtbl
;
143 /* IDirectMusicAuditionTrack fields */
144 LPDMUS_OBJECTDESC pDesc
;
148 extern HRESULT WINAPI
IDirectMusicAuditionTrack_IUnknown_QueryInterface (LPUNKNOWN iface
, REFIID riid
, LPVOID
*ppobj
);
149 extern ULONG WINAPI
IDirectMusicAuditionTrack_IUnknown_AddRef (LPUNKNOWN iface
);
150 /* IDirectMusicTrack(8): */
151 extern ULONG WINAPI
IDirectMusicAuditionTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface
);
152 /* IPersistStream: */
153 extern ULONG WINAPI
IDirectMusicAuditionTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface
);
155 /*****************************************************************************
156 * IDirectMusicChordTrack implementation structure
158 struct IDirectMusicChordTrack
{
159 /* IUnknown fields */
160 const IUnknownVtbl
*UnknownVtbl
;
161 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
162 const IPersistStreamVtbl
*PersistStreamVtbl
;
165 /* IDirectMusicChordTrack fields */
166 LPDMUS_OBJECTDESC pDesc
;
171 extern HRESULT WINAPI
IDirectMusicChordTrack_IUnknown_QueryInterface (LPUNKNOWN iface
, REFIID riid
, LPVOID
*ppobj
);
172 extern ULONG WINAPI
IDirectMusicChordTrack_IUnknown_AddRef (LPUNKNOWN iface
);
173 /* IDirectMusicTrack(8): */
174 extern ULONG WINAPI
IDirectMusicChordTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface
);
175 /* IPersistStream: */
176 extern ULONG WINAPI
IDirectMusicChordTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface
);
178 typedef struct _DMUS_PRIVATE_COMMAND
{
179 struct list entry
; /* for listing elements */
180 DMUS_IO_COMMAND pCommand
;
181 IDirectMusicCollection
* ppReferenceCollection
;
182 } DMUS_PRIVATE_COMMAND
, *LPDMUS_PRIVATE_COMMAND
;
184 /*****************************************************************************
185 * IDirectMusicCommandTrack implementation structure
187 struct IDirectMusicCommandTrack
{
188 /* IUnknown fields */
189 const IUnknownVtbl
*UnknownVtbl
;
190 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
191 const IPersistStreamVtbl
*PersistStreamVtbl
;
194 /* IDirectMusicCommandTrack fields */
195 LPDMUS_OBJECTDESC pDesc
;
197 struct list Commands
;
201 extern HRESULT WINAPI
IDirectMusicCommandTrack_IUnknown_QueryInterface (LPUNKNOWN iface
, REFIID riid
, LPVOID
*ppobj
);
202 extern ULONG WINAPI
IDirectMusicCommandTrack_IUnknown_AddRef (LPUNKNOWN iface
);
203 /* IDirectMusicTrack(8): */
204 extern ULONG WINAPI
IDirectMusicCommandTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface
);
205 /* IPersistStream: */
206 extern ULONG WINAPI
IDirectMusicCommandTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface
);
208 /*****************************************************************************
209 * IDirectMusicMelodyFormulationTrack implementation structure
211 struct IDirectMusicMelodyFormulationTrack
{
212 /* IUnknown fields */
213 const IUnknownVtbl
*UnknownVtbl
;
214 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
215 const IPersistStreamVtbl
*PersistStreamVtbl
;
218 /* IDirectMusicMelodyFormulationTrack fields */
219 LPDMUS_OBJECTDESC pDesc
;
223 extern HRESULT WINAPI
IDirectMusicMelodyFormulationTrack_IUnknown_QueryInterface (LPUNKNOWN iface
, REFIID riid
, LPVOID
*ppobj
);
224 extern ULONG WINAPI
IDirectMusicMelodyFormulationTrack_IUnknown_AddRef (LPUNKNOWN iface
);
225 /* IDirectMusicTrack(8): */
226 extern ULONG WINAPI
IDirectMusicMelodyFormulationTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface
);
227 /* IPersistStream: */
228 extern ULONG WINAPI
IDirectMusicMelodyFormulationTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface
);
230 /*****************************************************************************
231 * IDirectMusicMotifTrack implementation structure
233 struct IDirectMusicMotifTrack
{
234 /* IUnknown fields */
235 const IUnknownVtbl
*UnknownVtbl
;
236 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
237 const IPersistStreamVtbl
*PersistStreamVtbl
;
240 /* IDirectMusicMotifTrack fields */
241 LPDMUS_OBJECTDESC pDesc
;
245 extern HRESULT WINAPI
IDirectMusicMotifTrack_IUnknown_QueryInterface (LPUNKNOWN iface
, REFIID riid
, LPVOID
*ppobj
);
246 extern ULONG WINAPI
IDirectMusicMotifTrack_IUnknown_AddRef (LPUNKNOWN iface
);
247 /* IDirectMusicTrack(8): */
248 extern ULONG WINAPI
IDirectMusicMotifTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface
);
249 /* IPersistStream: */
250 extern ULONG WINAPI
IDirectMusicMotifTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface
);
252 /*****************************************************************************
253 * IDirectMusicMuteTrack implementation structure
255 struct IDirectMusicMuteTrack
{
256 /* IUnknown fields */
257 const IUnknownVtbl
*UnknownVtbl
;
258 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
259 const IPersistStreamVtbl
*PersistStreamVtbl
;
262 /* IDirectMusicMuteTrack fields */
263 LPDMUS_OBJECTDESC pDesc
;
267 extern HRESULT WINAPI
IDirectMusicMuteTrack_IUnknown_QueryInterface (LPUNKNOWN iface
, REFIID riid
, LPVOID
*ppobj
);
268 extern ULONG WINAPI
IDirectMusicMuteTrack_IUnknown_AddRef (LPUNKNOWN iface
);
269 /* IDirectMusicTrack(8): */
270 extern ULONG WINAPI
IDirectMusicMuteTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface
);
271 /* IPersistStream: */
272 extern ULONG WINAPI
IDirectMusicMuteTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface
);
274 /*****************************************************************************
275 * IDirectMusicStyleTrack implementation structure
277 struct IDirectMusicStyleTrack
{
278 /* IUnknown fields */
279 const IUnknownVtbl
*UnknownVtbl
;
280 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
281 const IPersistStreamVtbl
*PersistStreamVtbl
;
284 /* IDirectMusicStyleTrack fields */
285 LPDMUS_OBJECTDESC pDesc
;
291 extern HRESULT WINAPI
IDirectMusicStyleTrack_IUnknown_QueryInterface (LPUNKNOWN iface
, REFIID riid
, LPVOID
*ppobj
);
292 extern ULONG WINAPI
IDirectMusicStyleTrack_IUnknown_AddRef (LPUNKNOWN iface
);
293 /* IDirectMusicTrack(8): */
294 extern ULONG WINAPI
IDirectMusicStyleTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface
);
295 /* IPersistStream: */
296 extern ULONG WINAPI
IDirectMusicStyleTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface
);
298 /**********************************************************************
299 * Dll lifetime tracking declaration for dmstyle.dll
301 extern LONG DMSTYLE_refCount
;
302 static inline void DMSTYLE_LockModule(void) { InterlockedIncrement( &DMSTYLE_refCount
); }
303 static inline void DMSTYLE_UnlockModule(void) { InterlockedDecrement( &DMSTYLE_refCount
); }
305 /*****************************************************************************
310 #endif /* __WINE_DMSTYLE_PRIVATE_H */