msvcp110: Add tr2_sys__Equivalent implementation and test.
[wine/multimedia.git] / dlls / dmime / dmime_private.h
blobfa44a4dcfe13aea5b29a329ae86aa3ac37795aaa
1 /* DirectMusicInteractiveEngine 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_DMIME_PRIVATE_H
21 #define __WINE_DMIME_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"
44 #include "dmusicc.h"
46 /*****************************************************************************
47 * Interfaces
49 typedef struct IDirectMusicGraphImpl IDirectMusicGraphImpl;
50 typedef struct IDirectMusicAudioPathImpl IDirectMusicAudioPathImpl;
52 typedef struct IDirectMusicLyricsTrack IDirectMusicLyricsTrack;
53 typedef struct IDirectMusicMarkerTrack IDirectMusicMarkerTrack;
54 typedef struct IDirectMusicParamControlTrack IDirectMusicParamControlTrack;
55 typedef struct IDirectMusicSegTriggerTrack IDirectMusicSegTriggerTrack;
56 typedef struct IDirectMusicSeqTrack IDirectMusicSeqTrack;
57 typedef struct IDirectMusicSysExTrack IDirectMusicSysExTrack;
58 typedef struct IDirectMusicTempoTrack IDirectMusicTempoTrack;
59 typedef struct IDirectMusicTimeSigTrack IDirectMusicTimeSigTrack;
60 typedef struct IDirectMusicWaveTrack IDirectMusicWaveTrack;
62 /*****************************************************************************
63 * ClassFactory
65 extern HRESULT WINAPI create_dmperformance(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
66 extern HRESULT WINAPI create_dmsegment(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
67 extern HRESULT WINAPI create_dmsegmentstate(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
68 extern HRESULT WINAPI create_dmgraph(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
69 extern HRESULT WINAPI create_dmaudiopath(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
71 extern HRESULT WINAPI create_dmlyricstrack(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
72 extern HRESULT WINAPI create_dmmarkertrack(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
73 extern HRESULT WINAPI create_dmparamcontroltrack(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
74 extern HRESULT WINAPI create_dmsegtriggertrack(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
75 extern HRESULT WINAPI create_dmseqtrack(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
76 extern HRESULT WINAPI create_dmsysextrack(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
77 extern HRESULT WINAPI create_dmtempotrack(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
78 extern HRESULT WINAPI create_dmtimesigtrack(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
79 extern HRESULT WINAPI create_dmwavetrack(REFIID riid, void **ret_iface) DECLSPEC_HIDDEN;
81 extern void set_audiopath_perf_pointer(IDirectMusicAudioPath*,IDirectMusicPerformance8*) DECLSPEC_HIDDEN;
82 extern void set_audiopath_dsound_buffer(IDirectMusicAudioPath*,IDirectSoundBuffer*) DECLSPEC_HIDDEN;
83 extern void set_audiopath_primary_dsound_buffer(IDirectMusicAudioPath*,IDirectSoundBuffer*) DECLSPEC_HIDDEN;
85 /*****************************************************************************
86 * Auxiliary definitions
88 typedef struct _DMUS_PRIVATE_SEGMENT_TRACK {
89 struct list entry; /* for listing elements */
90 DWORD dwGroupBits;
91 IDirectMusicTrack* pTrack;
92 } DMUS_PRIVATE_SEGMENT_TRACK, *LPDMUS_PRIVATE_SEGMENT_TRACK;
94 typedef struct _DMUS_PRIVATE_TEMPO_ITEM {
95 struct list entry; /* for listing elements */
96 DMUS_IO_TEMPO_ITEM item;
97 } DMUS_PRIVATE_TEMPO_ITEM, *LPDMUS_PRIVATE_TEMPO_ITEM;
99 typedef struct _DMUS_PRIVATE_SEGMENT_ITEM {
100 struct list entry; /* for listing elements */
101 DMUS_IO_SEGMENT_ITEM_HEADER header;
102 IDirectMusicObject* pObject;
103 WCHAR wszName[DMUS_MAX_NAME];
104 } DMUS_PRIVATE_SEGMENT_ITEM, *LPDMUS_PRIVATE_SEGMENT_ITEM;
106 typedef struct _DMUS_PRIVATE_GRAPH_TOOL {
107 struct list entry; /* for listing elements */
108 DWORD dwIndex;
109 IDirectMusicTool* pTool;
110 } DMUS_PRIVATE_GRAPH_TOOL, *LPDMUS_PRIVATE_GRAPH_TOOL;
112 typedef struct _DMUS_PRIVATE_TEMPO_PLAY_STATE {
113 DWORD dummy;
114 } DMUS_PRIVATE_TEMPO_PLAY_STATE, *LPDMUS_PRIVATE_TEMPO_PLAY_STATE;
116 /* some sort of aux. performance channel: as far as i can understand, these are
117 used to represent a particular midi channel in particular group at particular
118 group; so all we need to do is to fill it with parent port, group and midi
119 channel ? */
120 typedef struct DMUSIC_PRIVATE_PCHANNEL_ {
121 DWORD channel; /* map to this channel... */
122 DWORD group; /* ... in this group ... */
123 IDirectMusicPort *port; /* ... at this port */
124 } DMUSIC_PRIVATE_PCHANNEL, *LPDMUSIC_PRIVATE_PCHANNEL;
126 /*****************************************************************************
127 * IDirectMusicLyricsTrack implementation structure
129 struct IDirectMusicLyricsTrack
131 /* IUnknown fields */
132 const IUnknownVtbl *UnknownVtbl;
133 const IDirectMusicTrack8Vtbl *TrackVtbl;
134 const IPersistStreamVtbl *PersistStreamVtbl;
135 LONG ref;
137 /* IDirectMusicLyricsTrack fields */
138 LPDMUS_OBJECTDESC pDesc;
141 /*****************************************************************************
142 * IDirectMusicMarkerTrack implementation structure
144 struct IDirectMusicMarkerTrack {
145 /* IUnknown fields */
146 const IUnknownVtbl *UnknownVtbl;
147 const IDirectMusicTrack8Vtbl *TrackVtbl;
148 const IPersistStreamVtbl *PersistStreamVtbl;
149 LONG ref;
151 /* IDirectMusicMarkerTrack fields */
152 LPDMUS_OBJECTDESC pDesc;
155 /*****************************************************************************
156 * IDirectMusicParamControlTrack implementation structure
158 struct IDirectMusicParamControlTrack {
159 /* IUnknown fields */
160 const IUnknownVtbl *UnknownVtbl;
161 const IDirectMusicTrack8Vtbl *TrackVtbl;
162 const IPersistStreamVtbl *PersistStreamVtbl;
163 LONG ref;
165 /* IDirectMusicParamControlTrack fields */
166 LPDMUS_OBJECTDESC pDesc;
169 /*****************************************************************************
170 * IDirectMusicSegTriggerTrack implementation structure
172 struct IDirectMusicSegTriggerTrack {
173 /* IUnknown fields */
174 const IUnknownVtbl *UnknownVtbl;
175 const IDirectMusicTrack8Vtbl *TrackVtbl;
176 const IPersistStreamVtbl *PersistStreamVtbl;
177 LONG ref;
179 /* IDirectMusicSegTriggerTrack fields */
180 LPDMUS_OBJECTDESC pDesc;
182 struct list Items;
185 /*****************************************************************************
186 * IDirectMusicSeqTrack implementation structure
188 struct IDirectMusicSeqTrack {
189 /* IUnknown fields */
190 const IUnknownVtbl *UnknownVtbl;
191 const IDirectMusicTrack8Vtbl *TrackVtbl;
192 const IPersistStreamVtbl *PersistStreamVtbl;
193 LONG ref;
195 /* IDirectMusicSeqTrack fields */
196 LPDMUS_OBJECTDESC pDesc;
199 /*****************************************************************************
200 * IDirectMusicSysExTrack implementation structure
202 struct IDirectMusicSysExTrack {
203 /* IUnknown fields */
204 const IUnknownVtbl *UnknownVtbl;
205 const IDirectMusicTrack8Vtbl *TrackVtbl;
206 const IPersistStreamVtbl *PersistStreamVtbl;
207 LONG ref;
209 /* IDirectMusicSysExTrack fields */
210 LPDMUS_OBJECTDESC pDesc;
213 /*****************************************************************************
214 * IDirectMusicTempoTrack implementation structure
216 struct IDirectMusicTempoTrack {
217 /* IUnknown fields */
218 const IUnknownVtbl *UnknownVtbl;
219 const IDirectMusicTrack8Vtbl *TrackVtbl;
220 const IPersistStreamVtbl *PersistStreamVtbl;
221 LONG ref;
223 /* IDirectMusicTempoTrack fields */
224 LPDMUS_OBJECTDESC pDesc;
225 BOOL enabled;
226 struct list Items;
229 /*****************************************************************************
230 * IDirectMusicTimeSigTrack implementation structure
232 struct IDirectMusicTimeSigTrack {
233 /* IUnknown fields */
234 const IUnknownVtbl *UnknownVtbl;
235 const IDirectMusicTrack8Vtbl *TrackVtbl;
236 const IPersistStreamVtbl *PersistStreamVtbl;
237 LONG ref;
239 /* IDirectMusicTimeSigTrack fields */
240 LPDMUS_OBJECTDESC pDesc;
243 /*****************************************************************************
244 * IDirectMusicWaveTrack implementation structure
246 struct IDirectMusicWaveTrack {
247 /* IUnknown fields */
248 const IUnknownVtbl *UnknownVtbl;
249 const IDirectMusicTrack8Vtbl *TrackVtbl;
250 const IPersistStreamVtbl *PersistStreamVtbl;
251 LONG ref;
253 /* IDirectMusicWaveTrack fields */
254 LPDMUS_OBJECTDESC pDesc;
257 /**********************************************************************
258 * Dll lifetime tracking declaration for dmime.dll
260 extern LONG DMIME_refCount DECLSPEC_HIDDEN;
261 static inline void DMIME_LockModule(void) { InterlockedIncrement( &DMIME_refCount ); }
262 static inline void DMIME_UnlockModule(void) { InterlockedDecrement( &DMIME_refCount ); }
264 /*****************************************************************************
265 * Misc.
268 #include "dmutils.h"
270 #endif /* __WINE_DMIME_PRIVATE_H */