//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (c) 1998-1999 Microsoft Corporation // // File: dmtempl.h // //-------------------------------------------------------------------------- // DMTempl.h : Declaration of the CDMTempl #ifndef __DMTEMPL_H_ #define __DMTEMPL_H_ #include "DMCompos.h" struct TemplateStruct { void AddIntro(bool f1Bar, int nLength); void AddIntro(TList& PlayList, int nIntroLength); void AddEnd(int nLength); void InsertCommand(TListItem *pCommand, BOOL fIsCommand); void AddChord(int nMeasure, DWORD dwChord); void AddCommand(int nMeasure, DWORD dwCommand); void CreateSignPosts(); void CreateEmbellishments(WORD shape, int nFillLength, int nBreakLength); void IncorporateTemplate(short nMeasure, TemplateStruct* pTemplate, short nDirection); void FillInGrooveLevels(); String m_strName; String m_strType; short m_nMeasures; TList m_CommandList; }; ///////////////////////////////////////////////////////////////////////////// // CDMTempl class CDMTempl : public IDMTempl, public IPersistStream { public: CDMTempl(); ~CDMTempl(); void CleanUp(); HRESULT SaveCommandList( IAARIFFStream* pRIFF, DMUS_TIMESIGNATURE& TimeSig ); HRESULT SaveSignPostList( IAARIFFStream* pRIFF, DMUS_TIMESIGNATURE& TimeSig ); HRESULT LoadTemplate( LPSTREAM pStream, DWORD dwSize ); HRESULT Init(TemplateStruct* pTemplate); // IUnknown // virtual STDMETHODIMP QueryInterface(const IID &iid, void **ppv); virtual STDMETHODIMP_(ULONG) AddRef(); virtual STDMETHODIMP_(ULONG) Release(); // IDMTempl public: HRESULT STDMETHODCALLTYPE CreateSegment(IDirectMusicSegment* pSegment); HRESULT STDMETHODCALLTYPE Init(void* pTemplate); // IPersist public: STDMETHOD(GetClassID)(THIS_ LPCLSID pclsid); // IPersistStream public: // Determines if the Style has been modified by simply checking the Style's m_fDirty flag. This flag is cleared // when a Style is saved or has just been created. STDMETHOD(IsDirty)(THIS); // Loads a Style from a stream. STDMETHOD(Load)(THIS_ LPSTREAM pStream); // Saves a Style to a stream in RIFF format. STDMETHOD(Save)(THIS_ LPSTREAM pStream, BOOL fClearDirty); STDMETHOD(GetSizeMax)(THIS_ ULARGE_INTEGER FAR* pcbSize); public: // attributes long m_cRef; BOOL m_fDirty; // has this been modified? CRITICAL_SECTION m_CriticalSection; // for i/o BOOL m_fCSInitialized; TemplateStruct* m_pTemplateInfo; }; #endif //__DMTEMPL_H_