1 /* DirectMusicStyle Private Include
3 * Copyright (C) 2003-2004 Rok Mandeljc
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (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 GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, 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) DECLSPEC_HIDDEN;
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) DECLSPEC_HIDDEN;
96 extern HRESULT WINAPI DMUSIC_CreateDirectMusicChordTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
97 extern HRESULT WINAPI DMUSIC_CreateDirectMusicCommandTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
98 extern HRESULT WINAPI DMUSIC_CreateDirectMusicMotifTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
99 extern HRESULT WINAPI DMUSIC_CreateDirectMusicMuteTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
100 extern HRESULT WINAPI DMUSIC_CreateDirectMusicStyleTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
102 /*****************************************************************************
103 * IDirectMusicStyle8Impl implementation structure
105 struct IDirectMusicStyle8Impl {
106 /* IUnknown fields */
107 const IUnknownVtbl *UnknownVtbl;
108 const IDirectMusicStyle8Vtbl *StyleVtbl;
109 const IDirectMusicObjectVtbl *ObjectVtbl;
110 const IPersistStreamVtbl *PersistStreamVtbl;
113 /* IDirectMusicStyle8Impl fields */
114 LPDMUS_OBJECTDESC pDesc;
122 /*****************************************************************************
123 * IDirectMusicAuditionTrack implementation structure
125 struct IDirectMusicAuditionTrack {
126 /* IUnknown fields */
127 const IUnknownVtbl *UnknownVtbl;
128 const IDirectMusicTrack8Vtbl *TrackVtbl;
129 const IPersistStreamVtbl *PersistStreamVtbl;
132 /* IDirectMusicAuditionTrack fields */
133 LPDMUS_OBJECTDESC pDesc;
136 /*****************************************************************************
137 * IDirectMusicChordTrack implementation structure
139 struct IDirectMusicChordTrack {
140 /* IUnknown fields */
141 const IUnknownVtbl *UnknownVtbl;
142 const IDirectMusicTrack8Vtbl *TrackVtbl;
143 const IPersistStreamVtbl *PersistStreamVtbl;
146 /* IDirectMusicChordTrack fields */
147 LPDMUS_OBJECTDESC pDesc;
151 typedef struct _DMUS_PRIVATE_COMMAND {
152 struct list entry; /* for listing elements */
153 DMUS_IO_COMMAND pCommand;
154 IDirectMusicCollection* ppReferenceCollection;
155 } DMUS_PRIVATE_COMMAND, *LPDMUS_PRIVATE_COMMAND;
157 /*****************************************************************************
158 * IDirectMusicCommandTrack implementation structure
160 struct IDirectMusicCommandTrack {
161 /* IUnknown fields */
162 const IUnknownVtbl *UnknownVtbl;
163 const IDirectMusicTrack8Vtbl *TrackVtbl;
164 const IPersistStreamVtbl *PersistStreamVtbl;
167 /* IDirectMusicCommandTrack fields */
168 LPDMUS_OBJECTDESC pDesc;
170 struct list Commands;
173 /*****************************************************************************
174 * IDirectMusicMelodyFormulationTrack implementation structure
176 struct IDirectMusicMelodyFormulationTrack {
177 /* IUnknown fields */
178 const IUnknownVtbl *UnknownVtbl;
179 const IDirectMusicTrack8Vtbl *TrackVtbl;
180 const IPersistStreamVtbl *PersistStreamVtbl;
183 /* IDirectMusicMelodyFormulationTrack fields */
184 LPDMUS_OBJECTDESC pDesc;
188 extern HRESULT WINAPI IDirectMusicMelodyFormulationTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj) DECLSPEC_HIDDEN;
189 extern ULONG WINAPI IDirectMusicMelodyFormulationTrack_IUnknown_AddRef (LPUNKNOWN iface) DECLSPEC_HIDDEN;
190 /* IDirectMusicTrack(8): */
191 extern ULONG WINAPI IDirectMusicMelodyFormulationTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface) DECLSPEC_HIDDEN;
192 /* IPersistStream: */
193 extern ULONG WINAPI IDirectMusicMelodyFormulationTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface) DECLSPEC_HIDDEN;
195 /*****************************************************************************
196 * IDirectMusicMotifTrack implementation structure
198 struct IDirectMusicMotifTrack {
199 /* IUnknown fields */
200 const IUnknownVtbl *UnknownVtbl;
201 const IDirectMusicTrack8Vtbl *TrackVtbl;
202 const IPersistStreamVtbl *PersistStreamVtbl;
205 /* IDirectMusicMotifTrack fields */
206 LPDMUS_OBJECTDESC pDesc;
209 /*****************************************************************************
210 * IDirectMusicMuteTrack implementation structure
212 struct IDirectMusicMuteTrack {
213 /* IUnknown fields */
214 const IUnknownVtbl *UnknownVtbl;
215 const IDirectMusicTrack8Vtbl *TrackVtbl;
216 const IPersistStreamVtbl *PersistStreamVtbl;
219 /* IDirectMusicMuteTrack fields */
220 LPDMUS_OBJECTDESC pDesc;
223 /*****************************************************************************
224 * IDirectMusicStyleTrack implementation structure
226 struct IDirectMusicStyleTrack {
227 /* IUnknown fields */
228 const IUnknownVtbl *UnknownVtbl;
229 const IDirectMusicTrack8Vtbl *TrackVtbl;
230 const IPersistStreamVtbl *PersistStreamVtbl;
233 /* IDirectMusicStyleTrack fields */
234 LPDMUS_OBJECTDESC pDesc;
239 /**********************************************************************
240 * Dll lifetime tracking declaration for dmstyle.dll
242 extern LONG DMSTYLE_refCount DECLSPEC_HIDDEN;
243 static inline void DMSTYLE_LockModule(void) { InterlockedIncrement( &DMSTYLE_refCount ); }
244 static inline void DMSTYLE_UnlockModule(void) { InterlockedDecrement( &DMSTYLE_refCount ); }
246 /*****************************************************************************
251 #endif /* __WINE_DMSTYLE_PRIVATE_H */