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 IDirectMusicAuditionTrack IDirectMusicAuditionTrack
;
49 typedef struct IDirectMusicChordTrack IDirectMusicChordTrack
;
50 typedef struct IDirectMusicCommandTrack IDirectMusicCommandTrack
;
51 typedef struct IDirectMusicMelodyFormulationTrack IDirectMusicMelodyFormulationTrack
;
52 typedef struct IDirectMusicMotifTrack IDirectMusicMotifTrack
;
53 typedef struct IDirectMusicMuteTrack IDirectMusicMuteTrack
;
54 typedef struct IDirectMusicStyleTrack IDirectMusicStyleTrack
;
56 /*****************************************************************************
59 extern HRESULT WINAPI
create_dmstyle(REFIID lpcGUID
, LPVOID
* ppobj
) DECLSPEC_HIDDEN
;
60 extern HRESULT WINAPI
create_dmauditiontrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
61 extern HRESULT WINAPI
create_dmchordtrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
62 extern HRESULT WINAPI
create_dmcommandtrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
63 extern HRESULT WINAPI
create_dmmotiftrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
64 extern HRESULT WINAPI
create_dmmutetrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
65 extern HRESULT WINAPI
create_dmstyletrack(REFIID riid
, void **ret_iface
) DECLSPEC_HIDDEN
;
67 /*****************************************************************************
68 * Auxiliary definitions
70 typedef struct _DMUS_PRIVATE_STYLE_BAND
{
71 struct list entry
; /* for listing elements */
72 IDirectMusicBand
* pBand
;
73 } DMUS_PRIVATE_STYLE_BAND
, *LPDMUS_PRIVATE_STYLE_BAND
;
75 typedef struct _DMUS_PRIVATE_STYLE_PARTREF_ITEM
{
76 struct list entry
; /* for listing elements */
78 DMUS_IO_PARTREF part_ref
;
79 } DMUS_PRIVATE_STYLE_PARTREF_ITEM
, *LPDMUS_PRIVATE_STYLE_PARTREF_ITEM
;
81 typedef struct _DMUS_PRIVATE_STYLE_MOTIF
{
82 struct list entry
; /* for listing elements */
84 DMUS_IO_PATTERN pattern
;
86 /** optional for motifs */
87 DMUS_IO_MOTIFSETTINGS settings
;
88 IDirectMusicBand
* pBand
;
91 } DMUS_PRIVATE_STYLE_MOTIF
, *LPDMUS_PRIVATE_STYLE_MOTIF
;
93 typedef struct _DMUS_PRIVATE_STYLE_ITEM
{
94 struct list entry
; /* for listing elements */
96 IDirectMusicStyle8
* pObject
;
97 } DMUS_PRIVATE_STYLE_ITEM
, *LPDMUS_PRIVATE_STYLE_ITEM
;
100 /*****************************************************************************
101 * IDirectMusicAuditionTrack implementation structure
103 struct IDirectMusicAuditionTrack
{
104 /* IUnknown fields */
105 const IUnknownVtbl
*UnknownVtbl
;
106 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
107 const IPersistStreamVtbl
*PersistStreamVtbl
;
110 /* IDirectMusicAuditionTrack fields */
111 LPDMUS_OBJECTDESC pDesc
;
114 /*****************************************************************************
115 * IDirectMusicChordTrack implementation structure
117 struct IDirectMusicChordTrack
{
118 /* IUnknown fields */
119 const IUnknownVtbl
*UnknownVtbl
;
120 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
121 const IPersistStreamVtbl
*PersistStreamVtbl
;
124 /* IDirectMusicChordTrack fields */
125 LPDMUS_OBJECTDESC pDesc
;
129 typedef struct _DMUS_PRIVATE_COMMAND
{
130 struct list entry
; /* for listing elements */
131 DMUS_IO_COMMAND pCommand
;
132 IDirectMusicCollection
* ppReferenceCollection
;
133 } DMUS_PRIVATE_COMMAND
, *LPDMUS_PRIVATE_COMMAND
;
135 /*****************************************************************************
136 * IDirectMusicCommandTrack implementation structure
138 struct IDirectMusicCommandTrack
{
139 /* IUnknown fields */
140 const IUnknownVtbl
*UnknownVtbl
;
141 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
142 const IPersistStreamVtbl
*PersistStreamVtbl
;
145 /* IDirectMusicCommandTrack fields */
146 LPDMUS_OBJECTDESC pDesc
;
148 struct list Commands
;
151 /*****************************************************************************
152 * IDirectMusicMelodyFormulationTrack implementation structure
154 struct IDirectMusicMelodyFormulationTrack
{
155 /* IUnknown fields */
156 const IUnknownVtbl
*UnknownVtbl
;
157 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
158 const IPersistStreamVtbl
*PersistStreamVtbl
;
161 /* IDirectMusicMelodyFormulationTrack fields */
162 LPDMUS_OBJECTDESC pDesc
;
166 extern HRESULT WINAPI
IDirectMusicMelodyFormulationTrack_IUnknown_QueryInterface (LPUNKNOWN iface
, REFIID riid
, LPVOID
*ppobj
) DECLSPEC_HIDDEN
;
167 extern ULONG WINAPI
IDirectMusicMelodyFormulationTrack_IUnknown_AddRef (LPUNKNOWN iface
) DECLSPEC_HIDDEN
;
168 /* IDirectMusicTrack(8): */
169 extern ULONG WINAPI
IDirectMusicMelodyFormulationTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface
) DECLSPEC_HIDDEN
;
170 /* IPersistStream: */
171 extern ULONG WINAPI
IDirectMusicMelodyFormulationTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface
) DECLSPEC_HIDDEN
;
173 /*****************************************************************************
174 * IDirectMusicMotifTrack implementation structure
176 struct IDirectMusicMotifTrack
{
177 /* IUnknown fields */
178 const IUnknownVtbl
*UnknownVtbl
;
179 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
180 const IPersistStreamVtbl
*PersistStreamVtbl
;
183 /* IDirectMusicMotifTrack fields */
184 LPDMUS_OBJECTDESC pDesc
;
187 /*****************************************************************************
188 * IDirectMusicMuteTrack implementation structure
190 struct IDirectMusicMuteTrack
{
191 /* IUnknown fields */
192 const IUnknownVtbl
*UnknownVtbl
;
193 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
194 const IPersistStreamVtbl
*PersistStreamVtbl
;
197 /* IDirectMusicMuteTrack fields */
198 LPDMUS_OBJECTDESC pDesc
;
201 /*****************************************************************************
202 * IDirectMusicStyleTrack implementation structure
204 struct IDirectMusicStyleTrack
{
205 /* IUnknown fields */
206 const IUnknownVtbl
*UnknownVtbl
;
207 const IDirectMusicTrack8Vtbl
*TrackVtbl
;
208 const IPersistStreamVtbl
*PersistStreamVtbl
;
211 /* IDirectMusicStyleTrack fields */
212 LPDMUS_OBJECTDESC pDesc
;
217 /**********************************************************************
218 * Dll lifetime tracking declaration for dmstyle.dll
220 extern LONG DMSTYLE_refCount DECLSPEC_HIDDEN
;
221 static inline void DMSTYLE_LockModule(void) { InterlockedIncrement( &DMSTYLE_refCount
); }
222 static inline void DMSTYLE_UnlockModule(void) { InterlockedDecrement( &DMSTYLE_refCount
); }
224 /*****************************************************************************
229 #endif /* __WINE_DMSTYLE_PRIVATE_H */