wbemprox: No longer prefer native.
[wine/wine-gecko.git] / dlls / dmstyle / dmstyle_private.h
blobbae61a07b5d0bc3c5b3ed008492213a3380bb97e
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
23 #include <stdio.h>
24 #include <stdarg.h>
25 #include <string.h>
27 #define COBJMACROS
29 #include "windef.h"
30 #include "winbase.h"
31 #include "winnt.h"
32 #include "wingdi.h"
33 #include "winuser.h"
35 #include "wine/debug.h"
36 #include "wine/list.h"
37 #include "wine/unicode.h"
38 #include "winreg.h"
39 #include "objbase.h"
41 #include "dmusici.h"
42 #include "dmusicf.h"
43 #include "dmusics.h"
45 /*****************************************************************************
46 * Interfaces
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 /*****************************************************************************
59 * ClassFactory
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 */
79 DMUS_OBJECTDESC desc;
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 */
85 DWORD dwRhythm;
86 DMUS_IO_PATTERN pattern;
87 DMUS_OBJECTDESC desc;
88 /** optional for motifs */
89 DMUS_IO_MOTIFSETTINGS settings;
90 IDirectMusicBand* pBand;
92 struct list Items;
93 } DMUS_PRIVATE_STYLE_MOTIF, *LPDMUS_PRIVATE_STYLE_MOTIF;
95 typedef struct _DMUS_PRIVATE_STYLE_ITEM {
96 struct list entry; /* for listing elements */
97 DWORD dwTimeStamp;
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;
109 LONG ref;
111 /* IDirectMusicStyle8Impl fields */
112 LPDMUS_OBJECTDESC pDesc;
113 DMUS_IO_STYLE style;
115 /* data */
116 struct list Motifs;
117 struct list Bands;
120 /*****************************************************************************
121 * IDirectMusicAuditionTrack implementation structure
123 struct IDirectMusicAuditionTrack {
124 /* IUnknown fields */
125 const IUnknownVtbl *UnknownVtbl;
126 const IDirectMusicTrack8Vtbl *TrackVtbl;
127 const IPersistStreamVtbl *PersistStreamVtbl;
128 LONG ref;
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;
142 LONG ref;
144 /* IDirectMusicChordTrack fields */
145 LPDMUS_OBJECTDESC pDesc;
146 DWORD dwScale;
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;
163 LONG ref;
165 /* IDirectMusicCommandTrack fields */
166 LPDMUS_OBJECTDESC pDesc;
167 /* track data */
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;
179 LONG ref;
181 /* IDirectMusicMelodyFormulationTrack fields */
182 LPDMUS_OBJECTDESC pDesc;
185 /* IUnknown: */
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;
201 LONG ref;
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;
215 LONG ref;
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;
229 LONG ref;
231 /* IDirectMusicStyleTrack fields */
232 LPDMUS_OBJECTDESC pDesc;
234 struct list Items;
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 /*****************************************************************************
245 * Misc.
247 #include "dmutils.h"
249 #endif /* __WINE_DMSTYLE_PRIVATE_H */