WindowsXP-SP1/windows/advcore/ctf/sapilayr/playback.h
2020-09-30 16:53:49 +02:00

82 lines
2.3 KiB
C++

//
// Audio playback function obj class definition
//
//
#ifndef _PLAYBACK_H
#define _PLAYBACK_H
#include "fnrecon.h"
class CSapiIMX;
class CBestPropRange;
class CDictRange : public CBestPropRange
{
public:
CDictRange( );
~CDictRange( );
HRESULT Initialize(TfEditCookie ec, ITfContext *pic, ITfRange *pRange);
BOOL IsDictRangeFound( ) { return m_fFoundDictRange; }
BOOL GetStartElem( ) { return m_ulStart; }
BOOL GetNumElem( ) { return m_ulcElem; }
ITfProperty *GetProp( );
ITfRange *GetDictRange( );
private:
HRESULT _GetOverlapRange(TfEditCookie ec, ITfRange *pRange1, ITfRange *pRange2, ITfRange **ppOverlapRange);
BOOL m_fFoundDictRange;
ITfProperty *m_pProp;
ITfRange *m_pDictatRange;
ULONG m_ulStart;
ULONG m_ulcElem;
};
class CSapiPlayBack : public ITfFnPlayBack
{
public:
CSapiPlayBack(CSapiIMX *psi);
~CSapiPlayBack();
// iunknown
//
STDMETHODIMP QueryInterface(REFGUID riid, LPVOID *ppobj);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
// ITfFunction
//
STDMETHODIMP GetDisplayName(BSTR *pbstrCand);
STDMETHODIMP IsEnabled(BOOL *pfEnable);
// ITfFnPlayBack
//
STDMETHODIMP QueryRange(ITfRange *pRange, ITfRange **ppNewRange, BOOL *pfPlayable);
STDMETHODIMP Play(ITfRange *pRange);
HRESULT _PlaySound(TfEditCookie ec, ITfRange *pRange);
HRESULT _PlaySoundSelection(TfEditCookie ec, ITfContext *pic);
private:
HRESULT EnsureIXMLDoc(void);
HRESULT GetDataID(BSTR bstrCAndXml, int nId, GUID *pguidData);
HRESULT FindSoundRange(TfEditCookie ec, ITfRange *pRange, ITfProperty **ppProp, ITfRange **ppPropRange, ITfRange **ppSndRange);
HRESULT PlayTextData(TfEditCookie ec, ITfRange *pRangeText);
HRESULT PlayAudioData(TfEditCookie ec, ITfRange *pRangeAudio, ITfProperty *pProp, ULONG ulStart, ULONG ulcElem);
HRESULT GetInkObjectText(TfEditCookie ec, ITfRange *pRange, BSTR *pbstrWord,UINT *pcchWord);
IXMLDOMDocument *m_pIXMLDoc;
CSapiIMX *m_psi;
ITfContext *m_pIC;
LONG m_cRef;
};
#endif // ndef _PLAYBACK_H