ReactOS 0.4.17-dev-934-g091855f
composer.c File Reference
#include "dmcompos_private.h"
#include "dmobject.h"
Include dependency graph for composer.c:

Go to the source code of this file.

Classes

struct  IDirectMusicComposerImpl
 

Typedefs

typedef struct IDirectMusicComposerImpl IDirectMusicComposerImpl
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (dmcompos)
 
static IDirectMusicComposerImpl * impl_from_IDirectMusicComposer (IDirectMusicComposer *iface)
 
static HRESULT WINAPI IDirectMusicComposerImpl_QueryInterface (IDirectMusicComposer *iface, REFIID riid, void **ret_iface)
 
static ULONG WINAPI IDirectMusicComposerImpl_AddRef (IDirectMusicComposer *iface)
 
static ULONG WINAPI IDirectMusicComposerImpl_Release (IDirectMusicComposer *iface)
 
static HRESULT WINAPI IDirectMusicComposerImpl_ComposeSegmentFromTemplate (IDirectMusicComposer *iface, IDirectMusicStyle *style, IDirectMusicSegment *template, WORD activity, IDirectMusicChordMap *chordmap, IDirectMusicSegment **segment)
 
static HRESULT WINAPI IDirectMusicComposerImpl_ComposeSegmentFromShape (IDirectMusicComposer *iface, IDirectMusicStyle *pStyle, WORD wNumMeasures, WORD wShape, WORD wActivity, BOOL fIntro, BOOL fEnd, IDirectMusicChordMap *pChordMap, IDirectMusicSegment **ppSegment)
 
static HRESULT WINAPI IDirectMusicComposerImpl_ComposeTransition (IDirectMusicComposer *iface, IDirectMusicSegment *pFromSeg, IDirectMusicSegment *pToSeg, MUSIC_TIME mtTime, WORD wCommand, DWORD dwFlags, IDirectMusicChordMap *pChordMap, IDirectMusicSegment **ppTransSeg)
 
static HRESULT WINAPI IDirectMusicComposerImpl_AutoTransition (IDirectMusicComposer *iface, IDirectMusicPerformance *pPerformance, IDirectMusicSegment *pToSeg, WORD wCommand, DWORD dwFlags, IDirectMusicChordMap *pChordMap, IDirectMusicSegment **ppTransSeg, IDirectMusicSegmentState **ppToSegState, IDirectMusicSegmentState **ppTransSegState)
 
static HRESULT WINAPI IDirectMusicComposerImpl_ComposeTemplateFromShape (IDirectMusicComposer *iface, WORD wNumMeasures, WORD wShape, BOOL fIntro, BOOL fEnd, WORD wEndLength, IDirectMusicSegment **ppTemplate)
 
static HRESULT WINAPI IDirectMusicComposerImpl_ChangeChordMap (IDirectMusicComposer *iface, IDirectMusicSegment *pSegment, BOOL fTrackScale, IDirectMusicChordMap *pChordMap)
 
HRESULT create_dmcomposer (REFIID riid, void **ret_iface)
 

Variables

static const IDirectMusicComposerVtbl dmcomposer_vtbl
 

Typedef Documentation

◆ IDirectMusicComposerImpl

Function Documentation

◆ create_dmcomposer()

HRESULT create_dmcomposer ( REFIID  riid,
void **  ret_iface 
)

Definition at line 170 of file composer.c.

171{
173 HRESULT hr;
174
175 *ret_iface = NULL;
176 if (!(obj = calloc(1, sizeof(*obj)))) return E_OUTOFMEMORY;
177 obj->IDirectMusicComposer_iface.lpVtbl = &dmcomposer_vtbl;
178 obj->ref = 1;
179
180 hr = IDirectMusicComposer_QueryInterface(&obj->IDirectMusicComposer_iface, riid, ret_iface);
181 IDirectMusicComposer_Release(&obj->IDirectMusicComposer_iface);
182
183 return hr;
184}
static const IDirectMusicComposerVtbl dmcomposer_vtbl
Definition: composer.c:157
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
#define IDirectMusicComposer_QueryInterface(p, a, b)
Definition: dmusici.h:1622
#define IDirectMusicComposer_Release(p)
Definition: dmusici.h:1624
REFIID riid
Definition: atlbase.h:39
#define calloc
Definition: rosglue.h:14

◆ IDirectMusicComposerImpl_AddRef()

static ULONG WINAPI IDirectMusicComposerImpl_AddRef ( IDirectMusicComposer *  iface)
static

Definition at line 53 of file composer.c.

54{
57
58 TRACE("(%p) ref=%ld\n", This, ref);
59
60 return ref;
61}
#define InterlockedIncrement
Definition: armddk.h:53
static IDirectMusicComposerImpl * impl_from_IDirectMusicComposer(IDirectMusicComposer *iface)
Definition: composer.c:30
#define TRACE(s)
Definition: solgame.cpp:4
Definition: send.c:48
uint32_t ULONG
Definition: typedefs.h:59

◆ IDirectMusicComposerImpl_AutoTransition()

static HRESULT WINAPI IDirectMusicComposerImpl_AutoTransition ( IDirectMusicComposer *  iface,
IDirectMusicPerformance *  pPerformance,
IDirectMusicSegment *  pToSeg,
WORD  wCommand,
DWORD  dwFlags,
IDirectMusicChordMap *  pChordMap,
IDirectMusicSegment **  ppTransSeg,
IDirectMusicSegmentState **  ppToSegState,
IDirectMusicSegmentState **  ppTransSegState 
)
static

Definition at line 130 of file composer.c.

134{
136 FIXME("(%p, %p, %d, %ld, %p, %p, %p, %p): stub\n", This, pPerformance, wCommand, dwFlags, pChordMap, ppTransSeg, ppToSegState, ppTransSegState);
137 return S_OK;
138}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define S_OK
Definition: intsafe.h:52
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141

◆ IDirectMusicComposerImpl_ChangeChordMap()

static HRESULT WINAPI IDirectMusicComposerImpl_ChangeChordMap ( IDirectMusicComposer *  iface,
IDirectMusicSegment *  pSegment,
BOOL  fTrackScale,
IDirectMusicChordMap *  pChordMap 
)
static

Definition at line 149 of file composer.c.

151{
153 FIXME("(%p, %p, %d, %p): stub\n", This, pSegment, fTrackScale, pChordMap);
154 return S_OK;
155}

◆ IDirectMusicComposerImpl_ComposeSegmentFromShape()

static HRESULT WINAPI IDirectMusicComposerImpl_ComposeSegmentFromShape ( IDirectMusicComposer *  iface,
IDirectMusicStyle *  pStyle,
WORD  wNumMeasures,
WORD  wShape,
WORD  wActivity,
BOOL  fIntro,
BOOL  fEnd,
IDirectMusicChordMap *  pChordMap,
IDirectMusicSegment **  ppSegment 
)
static

Definition at line 111 of file composer.c.

114{
116 FIXME("(%p, %p, %d, %d, %d, %d, %d, %p, %p): stub\n", This, pStyle, wNumMeasures, wShape, wActivity, fIntro, fEnd, pChordMap, ppSegment);
117 return S_OK;
118}

◆ IDirectMusicComposerImpl_ComposeSegmentFromTemplate()

static HRESULT WINAPI IDirectMusicComposerImpl_ComposeSegmentFromTemplate ( IDirectMusicComposer *  iface,
IDirectMusicStyle *  style,
IDirectMusicSegment *  template,
WORD  activity,
IDirectMusicChordMap *  chordmap,
IDirectMusicSegment **  segment 
)
static

Definition at line 76 of file composer.c.

79{
81 IDirectMusicTrack *track;
82 HRESULT hr;
83
84 FIXME("(%p, %p, %p, %d, %p, %p): semi-stub\n", This, style, template, activity, chordmap, segment);
85
86 if (!segment)
87 return E_POINTER;
88 if (!template)
89 return E_INVALIDARG;
90
91 if (!style) {
92 hr = IDirectMusicSegment_GetTrack(template, &CLSID_DirectMusicStyleTrack, 0xFFFFFFFF,
93 DMUS_SEG_ANYTRACK, &track);
94 if (FAILED(hr))
95 return E_INVALIDARG;
96 else
97 IDirectMusicTrack_Release(track); /* Temp to not leak memory */
98 }
99 if (!chordmap) {
100 hr = IDirectMusicSegment_GetTrack(template, &CLSID_DirectMusicChordMapTrack, 0xFFFFFFFF,
101 DMUS_SEG_ANYTRACK, &track);
102 if (FAILED(hr))
103 return E_INVALIDARG;
104 else
105 IDirectMusicTrack_Release(track); /* Temp to not leak memory */
106 }
107
108 return IDirectMusicSegment_Clone(template, -1, 0, segment);
109}
#define E_INVALIDARG
Definition: ddrawi.h:101
#define IDirectMusicTrack_Release(p)
Definition: dmplugin.h:226
#define DMUS_SEG_ANYTRACK
Definition: dmusici.h:318
#define IDirectMusicSegment_Clone(p, a, b, c)
Definition: dmusici.h:1027
#define IDirectMusicSegment_GetTrack(p, a, b, c, d)
Definition: dmusici.h:1016
#define FAILED(hr)
Definition: intsafe.h:51
Definition: style.c:91
#define E_POINTER
Definition: winerror.h:3480

◆ IDirectMusicComposerImpl_ComposeTemplateFromShape()

static HRESULT WINAPI IDirectMusicComposerImpl_ComposeTemplateFromShape ( IDirectMusicComposer *  iface,
WORD  wNumMeasures,
WORD  wShape,
BOOL  fIntro,
BOOL  fEnd,
WORD  wEndLength,
IDirectMusicSegment **  ppTemplate 
)
static

Definition at line 140 of file composer.c.

143{
145 FIXME("(%p, %d, %d, %d, %d, %d, %p): stub\n", This, wNumMeasures, wShape, fIntro, fEnd, wEndLength, ppTemplate);
146 return S_OK;
147}

◆ IDirectMusicComposerImpl_ComposeTransition()

static HRESULT WINAPI IDirectMusicComposerImpl_ComposeTransition ( IDirectMusicComposer *  iface,
IDirectMusicSegment *  pFromSeg,
IDirectMusicSegment *  pToSeg,
MUSIC_TIME  mtTime,
WORD  wCommand,
DWORD  dwFlags,
IDirectMusicChordMap *  pChordMap,
IDirectMusicSegment **  ppTransSeg 
)
static

Definition at line 120 of file composer.c.

124{
126 FIXME("(%p, %p, %p, %ld, %d, %ld, %p, %p): stub\n", This, pFromSeg, pToSeg, mtTime, wCommand, dwFlags, pChordMap, ppTransSeg);
127 return S_OK;
128}

◆ IDirectMusicComposerImpl_QueryInterface()

static HRESULT WINAPI IDirectMusicComposerImpl_QueryInterface ( IDirectMusicComposer *  iface,
REFIID  riid,
void **  ret_iface 
)
static

Definition at line 35 of file composer.c.

37{
38 TRACE("(%p, %s, %p)\n", iface, debugstr_dmguid(riid), ret_iface);
39
40 if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDirectMusicComposer))
41{
42 *ret_iface = iface;
44 return S_OK;
45 }
46
47 WARN("(%p, %s, %p): not found\n", iface, debugstr_dmguid(riid), ret_iface);
48 *ret_iface = NULL;
49
50 return E_NOINTERFACE;
51}
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
const char * debugstr_dmguid(const GUID *id)
Definition: dmobject.c:36
#define IDirectMusicComposer_AddRef(p)
Definition: dmusici.h:1623
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ IDirectMusicComposerImpl_Release()

static ULONG WINAPI IDirectMusicComposerImpl_Release ( IDirectMusicComposer *  iface)
static

Definition at line 63 of file composer.c.

64{
67
68 TRACE("(%p) ref=%ld\n", This, ref);
69
70 if (!ref) free(This);
71
72 return ref;
73}
#define InterlockedDecrement
Definition: armddk.h:52
#define free
Definition: debug_ros.c:5

◆ impl_from_IDirectMusicComposer()

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( dmcompos  )

Variable Documentation

◆ dmcomposer_vtbl

const IDirectMusicComposerVtbl dmcomposer_vtbl
static
Initial value:
= {
}
static HRESULT WINAPI IDirectMusicComposerImpl_ComposeTemplateFromShape(IDirectMusicComposer *iface, WORD wNumMeasures, WORD wShape, BOOL fIntro, BOOL fEnd, WORD wEndLength, IDirectMusicSegment **ppTemplate)
Definition: composer.c:140
static HRESULT WINAPI IDirectMusicComposerImpl_ChangeChordMap(IDirectMusicComposer *iface, IDirectMusicSegment *pSegment, BOOL fTrackScale, IDirectMusicChordMap *pChordMap)
Definition: composer.c:149
static HRESULT WINAPI IDirectMusicComposerImpl_QueryInterface(IDirectMusicComposer *iface, REFIID riid, void **ret_iface)
Definition: composer.c:35
static ULONG WINAPI IDirectMusicComposerImpl_AddRef(IDirectMusicComposer *iface)
Definition: composer.c:53
static HRESULT WINAPI IDirectMusicComposerImpl_ComposeSegmentFromTemplate(IDirectMusicComposer *iface, IDirectMusicStyle *style, IDirectMusicSegment *template, WORD activity, IDirectMusicChordMap *chordmap, IDirectMusicSegment **segment)
Definition: composer.c:76
static HRESULT WINAPI IDirectMusicComposerImpl_ComposeTransition(IDirectMusicComposer *iface, IDirectMusicSegment *pFromSeg, IDirectMusicSegment *pToSeg, MUSIC_TIME mtTime, WORD wCommand, DWORD dwFlags, IDirectMusicChordMap *pChordMap, IDirectMusicSegment **ppTransSeg)
Definition: composer.c:120
static ULONG WINAPI IDirectMusicComposerImpl_Release(IDirectMusicComposer *iface)
Definition: composer.c:63
static HRESULT WINAPI IDirectMusicComposerImpl_AutoTransition(IDirectMusicComposer *iface, IDirectMusicPerformance *pPerformance, IDirectMusicSegment *pToSeg, WORD wCommand, DWORD dwFlags, IDirectMusicChordMap *pChordMap, IDirectMusicSegment **ppTransSeg, IDirectMusicSegmentState **ppToSegState, IDirectMusicSegmentState **ppTransSegState)
Definition: composer.c:130
static HRESULT WINAPI IDirectMusicComposerImpl_ComposeSegmentFromShape(IDirectMusicComposer *iface, IDirectMusicStyle *pStyle, WORD wNumMeasures, WORD wShape, WORD wActivity, BOOL fIntro, BOOL fEnd, IDirectMusicChordMap *pChordMap, IDirectMusicSegment **ppSegment)
Definition: composer.c:111

Definition at line 157 of file composer.c.

Referenced by create_dmcomposer().