Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//////////////////////////////////////////////////////////////////////
// PromptEng.h : Declaration of the CPromptEng
//
// Created by JOEM 04-2000
// Copyright (C) 2000 Microsoft Corporation
// All Rights Reserved
//
/////////////////////////////////////////////////////// JOEM 4-2000 //
#ifndef __PROMPTENG_H_
#define __PROMPTENG_H_
#include "resource.h" // main symbols
#include "PromptDb.h"
#include "Query.h"
#include "DbQuery.h"
#include "LocalTTSEngineSite.h"
#include "PhoneContext.h"
#include "TextRules.h"
#include <spddkhlp.h>
#include <spcollec.h>
/////////////////////////////////////////////////////////////////////////////
// CPromptEng
//
// Voice with associated prerecorded prompt database will use this engine
// to search for a set of prompts that match the desired message.
// This prompt engine class should contain a TTS engine member.
//
///////////////////////////////////////////////////////// JOEM 02-15-2000 ///
class ATL_NO_VTABLE CPromptEng : public CComObjectRootEx<CComMultiThreadModel>, public CComCoClass<CPromptEng, &CLSID_PromptEng>, public ISpObjectWithToken, public ISpTTSEngine {
public:
DECLARE_REGISTRY_RESOURCEID(IDR_PROMPTENG) DECLARE_PROTECT_FINAL_CONSTRUCT() DECLARE_GET_CONTROLLING_UNKNOWN()
BEGIN_COM_MAP(CPromptEng) COM_INTERFACE_ENTRY(ISpTTSEngine) COM_INTERFACE_ENTRY(ISpObjectWithToken) END_COM_MAP()
public:
// Constructors/Destructors
HRESULT FinalConstruct(); void FinalRelease();
// ISpObjectWithToken
STDMETHOD(SetObjectToken)(ISpObjectToken *pToken); STDMETHOD(GetObjectToken)(ISpObjectToken **ppToken) { return SpGenericGetObjectToken( ppToken, m_cpToken ); }
// ISpTTSEngine
STDMETHOD(Speak)(DWORD dwSpeakFlags, REFGUID rguidFormatId, const WAVEFORMATEX * pWaveFormatEx, const SPVTEXTFRAG* pTextFragList, ISpTTSEngineSite* pOutputSite); STDMETHOD(GetOutputFormat)( const GUID * pTargetFormatId, const WAVEFORMATEX * pTargetWaveFormatEx, GUID * pDesiredFormatId, WAVEFORMATEX ** ppCoMemDesiredWaveFormatEx );
private: STDMETHOD(DispatchQueryList)(const DWORD dwSpeakFlags, REFGUID rguidFormatId, const WAVEFORMATEX * pWaveFormatEx); STDMETHOD(SendTextOutput)(const DWORD dwSpeakFlags, REFGUID rguidFormatId); STDMETHOD(BuildQueryList)(const DWORD dwSpeakFlags, const SPVTEXTFRAG* pCurrentFrag, const FragType fFragType ); STDMETHOD(ParseSubQuery)(const DWORD dwSpeakFlags, const WCHAR* pszText, USHORT* unSubQueries ); STDMETHOD(CompressQueryList)(); STDMETHOD(CompressTTSItems)(REFGUID rguidFormatId); STDMETHOD(SendSilence)(const int iMsec, const DWORD iAvgBytesPerSec); void DebugQueryList();
private: CComPtr<ISpObjectToken> m_cpToken; CComPtr<ISpObjectToken> m_cpTTSToken; CComPtr<IPromptDb> m_cpPromptDb; CComPtr<ISpTTSEngine> m_cpTTSEngine; CPhoneContext m_phoneContext; CTextRules m_textRules; CDbQuery m_DbQuery; CLocalTTSEngineSite* m_pOutputSite; CSPArray<CQuery*,CQuery*> m_apQueries; double m_dQueryCost; bool m_fAbort; };
#endif //__PROMPTENG_H_
|