mirror of https://github.com/tongzx/nt5src
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.
127 lines
4.1 KiB
127 lines
4.1 KiB
//////////////////////////////////////////////////////////////////////
|
|
// PromptDb.h : Declaration of the CPromptDb
|
|
//
|
|
// Created by JOEM 04-2000
|
|
// Copyright (C) 2000 Microsoft Corporation
|
|
// All Rights Reserved
|
|
//
|
|
/////////////////////////////////////////////////////// JOEM 4-2000 //
|
|
|
|
#ifndef __PROMPTDB_H_
|
|
#define __PROMPTDB_H_
|
|
|
|
#include "resource.h" // main symbols
|
|
#include "common.h"
|
|
#include "PEErr.h"
|
|
#include "PromptEntry.h"
|
|
#include "Hash.h"
|
|
#include "fmtconvert.h"
|
|
#include "tsm.h"
|
|
#include <spddkhlp.h>
|
|
#include <spcollec.h>
|
|
|
|
// forward references
|
|
class VapiIO;
|
|
extern const IID IID_IPromptDb;
|
|
|
|
// DB ACTIONS
|
|
enum { DB_ADD = 1, DB_ACTIVATE, DB_UNLOAD };
|
|
|
|
// DB_LOAD OPTIONS
|
|
#define DB_LOAD 0
|
|
#define DB_CREATE 1
|
|
|
|
|
|
class CDb
|
|
{
|
|
public:
|
|
CDb();
|
|
~CDb();
|
|
WCHAR* pszPathName;
|
|
WCHAR* pszTempName;
|
|
WCHAR* pszLogicalName;
|
|
CHash idHash;
|
|
CHash textHash;
|
|
};
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPromptDb
|
|
class ATL_NO_VTABLE CPromptDb :
|
|
public CComObjectRootEx<CComMultiThreadModel>,
|
|
public CComCoClass<CPromptDb, &CLSID_PromptDb>,
|
|
public IPromptDb
|
|
{
|
|
public:
|
|
|
|
DECLARE_REGISTRY_RESOURCEID(IDR_PROMPTDB)
|
|
|
|
DECLARE_PROTECT_FINAL_CONSTRUCT()
|
|
|
|
BEGIN_COM_MAP(CPromptDb)
|
|
COM_INTERFACE_ENTRY(IPromptDb)
|
|
END_COM_MAP()
|
|
|
|
// Constructor/Destructor
|
|
HRESULT FinalConstruct();
|
|
void FinalRelease();
|
|
|
|
public:
|
|
// IPromptDb
|
|
STDMETHOD(NewDb)(const WCHAR *logicalName, const WCHAR *pathName);
|
|
STDMETHOD(AddDb)(const WCHAR *logicalName, const WCHAR *pathName, const WCHAR *pszIdSet, const USHORT loadOption);
|
|
STDMETHOD(UnloadDb)(const WCHAR* pszLogicalName);
|
|
STDMETHOD(ActivateDbName)(const WCHAR *pszLogicalName);
|
|
STDMETHOD(ActivateDbNumber)(const USHORT unIndex);
|
|
STDMETHOD(UpdateDb)(WCHAR* pszPath);
|
|
STDMETHOD(CountDb)(USHORT *unCount);
|
|
STDMETHOD(SearchDb)(const WCHAR* pszQuery, USHORT* unIdCount);
|
|
STDMETHOD(RetrieveSearchItem)(const USHORT unId, const WCHAR** ppszId);
|
|
STDMETHOD(GetLogicalName)(const WCHAR** ppszLogicalName);
|
|
STDMETHOD(GetNextEntry)(USHORT* punId1, USHORT* punId2, IPromptEntry** ppIPE);
|
|
STDMETHOD(FindEntry)(const WCHAR* id, IPromptEntry** ppIPE);
|
|
STDMETHOD(NewEntry)(IPromptEntry** ppIPE);
|
|
STDMETHOD(SaveEntry)(IPromptEntry* pIPE);
|
|
STDMETHOD(RemoveEntry)(const WCHAR* id);
|
|
STDMETHOD(OpenEntryFile)(IPromptEntry* pIPE, WAVEFORMATEX* pWaveFormatEx);
|
|
STDMETHOD(CloseEntryFile)();
|
|
STDMETHOD(GetPromptFormat)(WAVEFORMATEX** ppwf);
|
|
STDMETHOD(SetOutputFormat)(const GUID * pOutputFormatId, const WAVEFORMATEX *pOutputFormat);
|
|
STDMETHOD(SetEntryGain)(const double dEntryGain);
|
|
STDMETHOD(SetXMLVolume)(const ULONG ulXMLVol);
|
|
STDMETHOD(SetXMLRate)(const long lXMLRate);
|
|
STDMETHOD(SendEntrySamples)(IPromptEntry* pIPE, ISpTTSEngineSite* pOutputSite, ULONG ulTextOffset, ULONG ulTextLen);
|
|
|
|
private:
|
|
STDMETHOD(SendEvent)(const SPEVENTENUM event, ISpTTSEngineSite* pOutputSite, const ULONG ulAudioOffset, const ULONG ulTextOffset, const ULONG ulTextLen);
|
|
void ComputeRateAdj(const long lRate, float* flRate);
|
|
STDMETHOD(ApplyGain)(const void* pvInBuff, void** ppvOutBuff, const int iNumSamples, double dGain);
|
|
STDMETHOD(LoadDb)(const WCHAR* pszIdSet);
|
|
STDMETHOD(LoadIdHash)(FILE* fp, const WCHAR* pszIdSet);
|
|
STDMETHOD(IndexTextHash)();
|
|
STDMETHOD(ExtractDouble)(WCHAR* line, const WCHAR* tag, double* value);
|
|
STDMETHOD(ExtractString)(WCHAR* line, const WCHAR* tag, WCHAR** value);
|
|
STDMETHOD(ReadEntry)(FILE* fp, CPromptEntry** ppEntry);
|
|
STDMETHOD(WriteEntry)(FILE* fp, IPromptEntry* pIPE);
|
|
STDMETHOD(TempName)();
|
|
CPromptEntry* DuplicateEntry(const CPromptEntry* oldEntry);
|
|
|
|
private:
|
|
CSPArray<CDb*,CDb*> m_apDbList;
|
|
CSPArray<CDynStr,CDynStr> m_aSearchList;
|
|
|
|
CDb* m_pActiveDb;
|
|
USHORT m_unIndex;
|
|
volatile LONG m_vcRef;
|
|
float m_flEntryGain;
|
|
float m_flXMLVolume;
|
|
float m_flXMLRateAdj;
|
|
const GUID* m_pOutputFormatId;
|
|
WAVEFORMATEX* m_pOutputFormat;
|
|
CFmtConvert m_converter;
|
|
CTsm* m_pTsm;
|
|
VapiIO* m_pVapiIO;
|
|
};
|
|
|
|
#endif //__PROMPTDB_H_
|
|
|