|  | /* DirectMusicStyle Private Include | 
|  | * | 
|  | * Copyright (C) 2003-2004 Rok Mandeljc | 
|  | * | 
|  | * This program is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This program is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this program; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | */ | 
|  |  | 
|  | #ifndef __WINE_DMSTYLE_PRIVATE_H | 
|  | #define __WINE_DMSTYLE_PRIVATE_H | 
|  |  | 
|  | #include <stdio.h> | 
|  | #include <stdarg.h> | 
|  | #include <string.h> | 
|  |  | 
|  | #define COBJMACROS | 
|  |  | 
|  | #include "windef.h" | 
|  | #include "winbase.h" | 
|  | #include "winnt.h" | 
|  | #include "wingdi.h" | 
|  | #include "winuser.h" | 
|  |  | 
|  | #include "wine/debug.h" | 
|  | #include "wine/list.h" | 
|  | #include "wine/unicode.h" | 
|  | #include "winreg.h" | 
|  | #include "objbase.h" | 
|  |  | 
|  | #include "dmusici.h" | 
|  | #include "dmusicf.h" | 
|  | #include "dmusics.h" | 
|  |  | 
|  | /***************************************************************************** | 
|  | * Interfaces | 
|  | */ | 
|  | typedef struct IDirectMusicStyle8Impl IDirectMusicStyle8Impl; | 
|  |  | 
|  | typedef struct IDirectMusicAuditionTrack IDirectMusicAuditionTrack; | 
|  | typedef struct IDirectMusicChordTrack IDirectMusicChordTrack; | 
|  | typedef struct IDirectMusicCommandTrack IDirectMusicCommandTrack; | 
|  | typedef struct IDirectMusicMelodyFormulationTrack IDirectMusicMelodyFormulationTrack; | 
|  | typedef struct IDirectMusicMotifTrack IDirectMusicMotifTrack; | 
|  | typedef struct IDirectMusicMuteTrack IDirectMusicMuteTrack; | 
|  | typedef struct IDirectMusicStyleTrack IDirectMusicStyleTrack; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * ClassFactory | 
|  | */ | 
|  | extern HRESULT WINAPI DMUSIC_CreateDirectMusicStyleImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter); | 
|  |  | 
|  | /***************************************************************************** | 
|  | * Auxiliary definitions | 
|  | */ | 
|  | typedef struct _DMUS_PRIVATE_STYLE_BAND { | 
|  | struct list entry; /* for listing elements */ | 
|  | IDirectMusicBand* pBand; | 
|  | } DMUS_PRIVATE_STYLE_BAND, *LPDMUS_PRIVATE_STYLE_BAND; | 
|  |  | 
|  | typedef struct _DMUS_PRIVATE_STYLE_PARTREF_ITEM { | 
|  | struct list entry; /* for listing elements */ | 
|  | DMUS_OBJECTDESC desc; | 
|  | DMUS_IO_PARTREF part_ref; | 
|  | } DMUS_PRIVATE_STYLE_PARTREF_ITEM, *LPDMUS_PRIVATE_STYLE_PARTREF_ITEM; | 
|  |  | 
|  | typedef struct _DMUS_PRIVATE_STYLE_MOTIF { | 
|  | struct list entry; /* for listing elements */ | 
|  | DWORD dwRhythm; | 
|  | DMUS_IO_PATTERN pattern; | 
|  | DMUS_OBJECTDESC desc; | 
|  | /** optional for motifs */ | 
|  | DMUS_IO_MOTIFSETTINGS settings; | 
|  | IDirectMusicBand* pBand; | 
|  |  | 
|  | struct list Items; | 
|  | } DMUS_PRIVATE_STYLE_MOTIF, *LPDMUS_PRIVATE_STYLE_MOTIF; | 
|  |  | 
|  | typedef struct _DMUS_PRIVATE_STYLE_ITEM { | 
|  | struct list entry; /* for listing elements */ | 
|  | DWORD dwTimeStamp; | 
|  | IDirectMusicStyle8* pObject; | 
|  | } DMUS_PRIVATE_STYLE_ITEM, *LPDMUS_PRIVATE_STYLE_ITEM; | 
|  |  | 
|  | extern HRESULT WINAPI DMUSIC_CreateDirectMusicAuditionTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter); | 
|  | extern HRESULT WINAPI DMUSIC_CreateDirectMusicChordTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter); | 
|  | extern HRESULT WINAPI DMUSIC_CreateDirectMusicCommandTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter); | 
|  | extern HRESULT WINAPI DMUSIC_CreateDirectMusicMelodyFormulationTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter); | 
|  | extern HRESULT WINAPI DMUSIC_CreateDirectMusicMotifTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter); | 
|  | extern HRESULT WINAPI DMUSIC_CreateDirectMusicMuteTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter); | 
|  | extern HRESULT WINAPI DMUSIC_CreateDirectMusicStyleTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter); | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IDirectMusicStyle8Impl implementation structure | 
|  | */ | 
|  | struct IDirectMusicStyle8Impl { | 
|  | /* IUnknown fields */ | 
|  | const IUnknownVtbl *UnknownVtbl; | 
|  | const IDirectMusicStyle8Vtbl *StyleVtbl; | 
|  | const IDirectMusicObjectVtbl *ObjectVtbl; | 
|  | const IPersistStreamVtbl *PersistStreamVtbl; | 
|  | LONG           ref; | 
|  |  | 
|  | /* IDirectMusicStyle8Impl fields */ | 
|  | LPDMUS_OBJECTDESC pDesc; | 
|  | DMUS_IO_STYLE style; | 
|  |  | 
|  | /* data */ | 
|  | struct list Motifs; | 
|  | struct list Bands; | 
|  | }; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IDirectMusicAuditionTrack implementation structure | 
|  | */ | 
|  | struct IDirectMusicAuditionTrack { | 
|  | /* IUnknown fields */ | 
|  | const IUnknownVtbl *UnknownVtbl; | 
|  | const IDirectMusicTrack8Vtbl *TrackVtbl; | 
|  | const IPersistStreamVtbl *PersistStreamVtbl; | 
|  | LONG           ref; | 
|  |  | 
|  | /* IDirectMusicAuditionTrack fields */ | 
|  | LPDMUS_OBJECTDESC pDesc; | 
|  | }; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IDirectMusicChordTrack implementation structure | 
|  | */ | 
|  | struct IDirectMusicChordTrack { | 
|  | /* IUnknown fields */ | 
|  | const IUnknownVtbl *UnknownVtbl; | 
|  | const IDirectMusicTrack8Vtbl *TrackVtbl; | 
|  | const IPersistStreamVtbl *PersistStreamVtbl; | 
|  | LONG           ref; | 
|  |  | 
|  | /* IDirectMusicChordTrack fields */ | 
|  | LPDMUS_OBJECTDESC pDesc; | 
|  | DWORD dwScale; | 
|  | }; | 
|  |  | 
|  | typedef struct _DMUS_PRIVATE_COMMAND { | 
|  | struct list entry; /* for listing elements */ | 
|  | DMUS_IO_COMMAND pCommand; | 
|  | IDirectMusicCollection* ppReferenceCollection; | 
|  | } DMUS_PRIVATE_COMMAND, *LPDMUS_PRIVATE_COMMAND; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IDirectMusicCommandTrack implementation structure | 
|  | */ | 
|  | struct IDirectMusicCommandTrack { | 
|  | /* IUnknown fields */ | 
|  | const IUnknownVtbl *UnknownVtbl; | 
|  | const IDirectMusicTrack8Vtbl *TrackVtbl; | 
|  | const IPersistStreamVtbl *PersistStreamVtbl; | 
|  | LONG           ref; | 
|  |  | 
|  | /* IDirectMusicCommandTrack fields */ | 
|  | LPDMUS_OBJECTDESC pDesc; | 
|  | /* track data */ | 
|  | struct list Commands; | 
|  | }; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IDirectMusicMelodyFormulationTrack implementation structure | 
|  | */ | 
|  | struct IDirectMusicMelodyFormulationTrack { | 
|  | /* IUnknown fields */ | 
|  | const IUnknownVtbl *UnknownVtbl; | 
|  | const IDirectMusicTrack8Vtbl *TrackVtbl; | 
|  | const IPersistStreamVtbl *PersistStreamVtbl; | 
|  | LONG           ref; | 
|  |  | 
|  | /* IDirectMusicMelodyFormulationTrack fields */ | 
|  | LPDMUS_OBJECTDESC pDesc; | 
|  | }; | 
|  |  | 
|  | /* IUnknown: */ | 
|  | extern HRESULT WINAPI IDirectMusicMelodyFormulationTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj); | 
|  | extern ULONG WINAPI   IDirectMusicMelodyFormulationTrack_IUnknown_AddRef (LPUNKNOWN iface); | 
|  | /* IDirectMusicTrack(8): */ | 
|  | extern ULONG WINAPI   IDirectMusicMelodyFormulationTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface); | 
|  | /* IPersistStream: */ | 
|  | extern ULONG WINAPI   IDirectMusicMelodyFormulationTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface); | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IDirectMusicMotifTrack implementation structure | 
|  | */ | 
|  | struct IDirectMusicMotifTrack { | 
|  | /* IUnknown fields */ | 
|  | const IUnknownVtbl *UnknownVtbl; | 
|  | const IDirectMusicTrack8Vtbl *TrackVtbl; | 
|  | const IPersistStreamVtbl *PersistStreamVtbl; | 
|  | LONG           ref; | 
|  |  | 
|  | /* IDirectMusicMotifTrack fields */ | 
|  | LPDMUS_OBJECTDESC pDesc; | 
|  | }; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IDirectMusicMuteTrack implementation structure | 
|  | */ | 
|  | struct IDirectMusicMuteTrack { | 
|  | /* IUnknown fields */ | 
|  | const IUnknownVtbl *UnknownVtbl; | 
|  | const IDirectMusicTrack8Vtbl *TrackVtbl; | 
|  | const IPersistStreamVtbl *PersistStreamVtbl; | 
|  | LONG           ref; | 
|  |  | 
|  | /* IDirectMusicMuteTrack fields */ | 
|  | LPDMUS_OBJECTDESC pDesc; | 
|  | }; | 
|  |  | 
|  | /***************************************************************************** | 
|  | * IDirectMusicStyleTrack implementation structure | 
|  | */ | 
|  | struct IDirectMusicStyleTrack { | 
|  | /* IUnknown fields */ | 
|  | const IUnknownVtbl *UnknownVtbl; | 
|  | const IDirectMusicTrack8Vtbl *TrackVtbl; | 
|  | const IPersistStreamVtbl *PersistStreamVtbl; | 
|  | LONG           ref; | 
|  |  | 
|  | /* IDirectMusicStyleTrack fields */ | 
|  | LPDMUS_OBJECTDESC pDesc; | 
|  |  | 
|  | struct list Items; | 
|  | }; | 
|  |  | 
|  | /********************************************************************** | 
|  | * Dll lifetime tracking declaration for dmstyle.dll | 
|  | */ | 
|  | extern LONG DMSTYLE_refCount; | 
|  | static inline void DMSTYLE_LockModule(void) { InterlockedIncrement( &DMSTYLE_refCount ); } | 
|  | static inline void DMSTYLE_UnlockModule(void) { InterlockedDecrement( &DMSTYLE_refCount ); } | 
|  |  | 
|  | /***************************************************************************** | 
|  | * Misc. | 
|  | */ | 
|  | #include "dmutils.h" | 
|  |  | 
|  | #endif	/* __WINE_DMSTYLE_PRIVATE_H */ |