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
create_dmstyle(REFIID lpcGUID
, LPVOID
* ppobj
) DECLSPEC_HIDDEN
;
62 extern HRESULT WINAPI
create_dmauditiontrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
63 extern HRESULT WINAPI
create_dmchordtrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
64 extern HRESULT WINAPI
create_dmcommandtrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
65 extern HRESULT WINAPI
create_dmmotiftrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
66 extern HRESULT WINAPI
create_dmmutetrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
67 extern HRESULT WINAPI
create_dmstyletrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
69 /*****************************************************************************
70 * Auxiliary definitions
72 typedef struct _DMUS_PRIVATE_STYLE_BAND
{
73 struct list entry
; /* for listing elements */
74 IDirectMusicBand
* pBand
;
75 } DMUS_PRIVATE_STYLE_BAND
, *LPDMUS_PRIVATE_STYLE_BAND
;
77 typedef struct _DMUS_PRIVATE_STYLE_PARTREF_ITEM
{
78 struct list entry
; /* for listing elements */
80 DMUS_IO_PARTREF part_ref
;
81 } DMUS_PRIVATE_STYLE_PARTREF_ITEM
, *LPDMUS_PRIVATE_STYLE_PARTREF_ITEM
;
83 typedef struct _DMUS_PRIVATE_STYLE_MOTIF
{
84 struct list entry
; /* for listing elements */
86 DMUS_IO_PATTERN pattern
;
88 /** optional for motifs */
89 DMUS_IO_MOTIFSETTINGS settings
;
90 IDirectMusicBand
* pBand
;
93 } DMUS_PRIVATE_STYLE_MOTIF
, *LPDMUS_PRIVATE_STYLE_MOTIF
;
95 typedef struct _DMUS_PRIVATE_STYLE_ITEM
{
96 struct list entry
; /* for listing elements */
98 IDirectMusicStyle8
* pObject
;
99 } DMUS_PRIVATE_STYLE_ITEM
, *LPDMUS_PRIVATE_STYLE_ITEM
;
102 /*****************************************************************************
103 * IDirectMusicStyle8Impl implementation structure
105 struct IDirectMusicStyle8Impl
{
106 IDirectMusicStyle8 IDirectMusicStyle8_iface
;
107 const IDirectMusicObjectVtbl
*ObjectVtbl
;
108 const IPersistStreamVtbl
*PersistStreamVtbl
;
111 /* IDirectMusicStyle8Impl fields */
112 LPDMUS_OBJECTDESC pDesc
;
120 /*****************************************************************************
121 * IDirectMusicAuditionTrack implementation structure
123 struct IDirectMusicAuditionTrack
{
124 /* IUnknown fields */
125 const IUnknownVtbl
*UnknownVtbl
;
126 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
127 const IPersistStreamVtbl
*PersistStreamVtbl
;
130 /* IDirectMusicAuditionTrack fields */
131 LPDMUS_OBJECTDESC pDesc
;
134 /*****************************************************************************
135 * IDirectMusicChordTrack implementation structure
137 struct IDirectMusicChordTrack
{
138 /* IUnknown fields */
139 const IUnknownVtbl
*UnknownVtbl
;
140 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
141 const IPersistStreamVtbl
*PersistStreamVtbl
;
144 /* IDirectMusicChordTrack fields */
145 LPDMUS_OBJECTDESC pDesc
;
149 typedef struct _DMUS_PRIVATE_COMMAND
{
150 struct list entry
; /* for listing elements */
151 DMUS_IO_COMMAND pCommand
;
152 IDirectMusicCollection
* ppReferenceCollection
;
153 } DMUS_PRIVATE_COMMAND
, *LPDMUS_PRIVATE_COMMAND
;
155 /*****************************************************************************
156 * IDirectMusicCommandTrack implementation structure
158 struct IDirectMusicCommandTrack
{
159 /* IUnknown fields */
160 const IUnknownVtbl
*UnknownVtbl
;
161 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
162 const IPersistStreamVtbl
*PersistStreamVtbl
;
165 /* IDirectMusicCommandTrack fields */
166 LPDMUS_OBJECTDESC pDesc
;
168 struct list Commands
;
171 /*****************************************************************************
172 * IDirectMusicMelodyFormulationTrack implementation structure
174 struct IDirectMusicMelodyFormulationTrack
{
175 /* IUnknown fields */
176 const IUnknownVtbl
*UnknownVtbl
;
177 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
178 const IPersistStreamVtbl
*PersistStreamVtbl
;
181 /* IDirectMusicMelodyFormulationTrack fields */
182 LPDMUS_OBJECTDESC pDesc
;
186 extern HRESULT WINAPI
IDirectMusicMelodyFormulationTrack_IUnknown_QueryInterface (LPUNKNOWN iface
, REFIID riid
, LPVOID
*ppobj
) DECLSPEC_HIDDEN
;
187 extern ULONG WINAPI
IDirectMusicMelodyFormulationTrack_IUnknown_AddRef (LPUNKNOWN iface
) DECLSPEC_HIDDEN
;
188 /* IDirectMusicTrack(8): */
189 extern ULONG WINAPI
IDirectMusicMelodyFormulationTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface
) DECLSPEC_HIDDEN
;
190 /* IPersistStream: */
191 extern ULONG WINAPI
IDirectMusicMelodyFormulationTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface
) DECLSPEC_HIDDEN
;
193 /*****************************************************************************
194 * IDirectMusicMotifTrack implementation structure
196 struct IDirectMusicMotifTrack
{
197 /* IUnknown fields */
198 const IUnknownVtbl
*UnknownVtbl
;
199 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
200 const IPersistStreamVtbl
*PersistStreamVtbl
;
203 /* IDirectMusicMotifTrack fields */
204 LPDMUS_OBJECTDESC pDesc
;
207 /*****************************************************************************
208 * IDirectMusicMuteTrack implementation structure
210 struct IDirectMusicMuteTrack
{
211 /* IUnknown fields */
212 const IUnknownVtbl
*UnknownVtbl
;
213 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
214 const IPersistStreamVtbl
*PersistStreamVtbl
;
217 /* IDirectMusicMuteTrack fields */
218 LPDMUS_OBJECTDESC pDesc
;
221 /*****************************************************************************
222 * IDirectMusicStyleTrack implementation structure
224 struct IDirectMusicStyleTrack
{
225 /* IUnknown fields */
226 const IUnknownVtbl
*UnknownVtbl
;
227 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
228 const IPersistStreamVtbl
*PersistStreamVtbl
;
231 /* IDirectMusicStyleTrack fields */
232 LPDMUS_OBJECTDESC pDesc
;
237 /**********************************************************************
238 * Dll lifetime tracking declaration for dmstyle.dll
240 extern LONG DMSTYLE_refCount DECLSPEC_HIDDEN
;
241 static inline void DMSTYLE_LockModule(void) { InterlockedIncrement( &DMSTYLE_refCount
); }
242 static inline void DMSTYLE_UnlockModule(void) { InterlockedDecrement( &DMSTYLE_refCount
); }
244 /*****************************************************************************
249 #endif /* __WINE_DMSTYLE_PRIVATE_H */