1 // Copyright © 2017 winapi-rs developers
2 // Licensed under the Apache License, Version 2.0
3 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
4 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
5 // All files in the project carrying such notice may not be copied, modified, or distributed
6 // except according to those terms.
7 use ctypes::{c_float, c_int, c_void};
8 use shared::guiddef::CLSID;
9 use shared::minwindef::{BOOL, DWORD, ULONG};
10 use um::sapi::*;
11 use um::unknwnbase::{IUnknown, IUnknownVtbl};
12 use um::winnt::{HRESULT, LPCWSTR, ULONGLONG, WCHAR};
13 pub use um::sapiddk51::{
14     SPRECOEXTENSION,
15     SPALTERNATESCLSID,
16 };
17 pub const SR_LOCALIZED_DESCRIPTION: &'static str = "Description";
18 pub use um::sapiddk51::{
19     ISpTokenUI, ISpTokenUIVtbl,
20     ISpObjectTokenEnumBuilder, ISpObjectTokenEnumBuilderVtbl,
21     SPWORDHANDLE,
22     SPRULEHANDLE,
23     SPGRAMMARHANDLE,
24     SPRECOCONTEXTHANDLE,
25     SPPHRASERULEHANDLE,
26     SPPHRASEPROPERTYHANDLE,
27     SPTRANSITIONID,
28     ISpErrorLog, ISpErrorLogVtbl,
29     ISpGrammarCompiler, ISpGrammarCompilerVtbl,
30     ISpGramCompBackend, ISpGramCompBackendVtbl,
31     ISpITNProcessor, ISpITNProcessorVtbl,
32     ISpPhraseBuilder, ISpPhraseBuilderVtbl,
33     ISpTask,
34     ISpThreadTask,
35     ISpThreadControl, ISpThreadControlVtbl,
36     SPTMTHREADINFO,
37     ISpTaskManager, ISpTaskManagerVtbl,
38     SPVSKIPTYPE,
39     SPVST_SENTENCE,
40     SPVESACTIONS,
41     SPVES_CONTINUE,
42     SPVES_ABORT,
43     SPVES_SKIP,
44     SPVES_RATE,
45     SPVES_VOLUME,
46     ISpTTSEngineSite, ISpTTSEngineSiteVtbl,
47     SPVTEXTFRAG,
48     ISpTTSEngine, ISpTTSEngineVtbl,
49     SPWORDENTRY,
50     SPRULEENTRY,
51     SPTRANSITIONTYPE,
52     SPTRANSEPSILON,
53     SPTRANSWORD,
54     SPTRANSRULE,
55     SPTRANSTEXTBUF,
56     SPTRANSWILDCARD,
57     SPTRANSDICTATION,
58     SPTRANSITIONENTRY,
59     SPTRANSITIONPROPERTY,
60     SPSTATEINFO,
61     SPPATHENTRY,
62     ISpCFGInterpreterSite, ISpCFGInterpreterSiteVtbl,
63     ISpCFGInterpreter, ISpCFGInterpreterVtbl,
64     SPCFGNOTIFY,
65     SPCFGN_ADD,
66     SPCFGN_REMOVE,
67     SPCFGN_INVALIDATE,
68     SPCFGN_ACTIVATE,
69     SPCFGN_DEACTIVATE,
70     SPRESULTTYPE,
71     SPRT_CFG,
72     SPRT_SLM,
73     SPRT_PROPRIETARY,
74     SPRT_FALSE_RECOGNITION,
75 };
76 pub const SPRT_TYPE_MASK: SPRESULTTYPE = 3;
77 pub const SPRT_EMULATED: SPRESULTTYPE = 1 << 3;
78 pub const SPRT_EXTENDABLE_PARSE: SPRESULTTYPE = 1 << 4;
79 pub use um::sapiddk51::{
80     SPPHRASEALT,
81     SPRECORESULTINFO,
82 };
83 STRUCT!{struct SPRECORESULTINFOEX {
84     cbSize: ULONG,
85     eResultType: SPRESULTTYPE,
86     fHypothesis: BOOL,
87     fProprietaryAutoPause: BOOL,
88     ullStreamPosStart: ULONGLONG,
89     ullStreamPosEnd: ULONGLONG,
90     hGrammar: SPGRAMMARHANDLE,
91     ulSizeEngineData: ULONG,
92     pvEngineData: *mut c_void,
93     pPhrase: *mut ISpPhraseBuilder,
94     aPhraseAlts: *mut SPPHRASEALT,
95     ulNumAlts: ULONG,
96     ullStreamTimeStart: ULONGLONG,
97     ullStreamTimeEnd: ULONGLONG,
98 }}
99 pub use um::sapiddk51::{
100     SPWORDINFOOPT,
101     SPWIO_NONE,
102     SPWIO_WANT_TEXT,
103     SPRULEINFOOPT,
104     SPRIO_NONE,
105     SPPARSEINFO,
106     ISpSREngineSite, ISpSREngineSiteVtbl,
107 };
108 RIDL!{#[uuid(0x7bc6e012, 0x684a, 0x493e, 0xbd, 0xd4, 0x2b, 0xf5, 0xfb, 0xf4, 0x8c, 0xfe)]
109 interface ISpSREngineSite2(ISpSREngineSite2Vtbl): ISpSREngineSite(ISpSREngineSiteVtbl) {
110     fn AddEventEx(
111         pEvent: *const SPEVENTEX,
112         hSAPIRecoContext: SPRECOCONTEXTHANDLE,
113     ) -> HRESULT,
114     fn UpdateRecoPosEx(
115         ullCurrentRecoPos: ULONGLONG,
116         ullCurrentRecoTime: ULONGLONG,
117     ) -> HRESULT,
118     fn GetRuleTransition(
119         ulGrammarID: ULONG,
120         RuleIndex: ULONG,
121         pTrans: *mut SPTRANSITIONENTRY,
122     ) -> HRESULT,
123     fn RecognitionEx(
124         pResultInfo: *const SPRECORESULTINFOEX,
125     ) -> HRESULT,
126 }}
127 pub use um::sapiddk51::{
128     SPPROPSRC,
129     SPPROPSRC_RECO_INST,
130     SPPROPSRC_RECO_CTX,
131     SPPROPSRC_RECO_GRAMMAR,
132     ISpSREngine, ISpSREngineVtbl,
133 };
134 RIDL!{#[uuid(0x7ba627d8, 0x33f9, 0x4375, 0x90, 0xc5, 0x99, 0x85, 0xae, 0xe5, 0xed, 0xe5)]
135 interface ISpSREngine2(ISpSREngine2Vtbl): ISpSREngine(ISpSREngineVtbl) {
136     fn PrivateCallImmediate(
137         pvEngineContext: *mut c_void,
138         pInCallFrame: *const c_void,
139         ulInCallFrameSize: ULONG,
140         ppvCoMemResponse: *mut *mut c_void,
141         pulResponseSize: *mut ULONG,
142     ) -> HRESULT,
143     fn SetAdaptationData2(
144         pvEngineContext: *mut c_void,
145         pAdaptationData: *const WCHAR,
146         cch: ULONG,
147         pTopicName: LPCWSTR,
148         eSettings: SPADAPTATIONSETTINGS,
149         eRelevance: SPADAPTATIONRELEVANCE,
150     ) -> HRESULT,
151     fn SetGrammarPrefix(
152         pvEngineGrammar: *mut c_void,
153         pszPrefix: LPCWSTR,
154         fIsPrefixRequired: BOOL,
155     ) -> HRESULT,
156     fn SetRulePriority(
157         hRule: SPRULEHANDLE,
158         pvClientRuleContext: *mut c_void,
159         nRulePriority: c_int,
160     ) -> HRESULT,
161     fn EmulateRecognition(
162         pPhrase: *mut ISpPhrase,
163         dwCompareFlags: DWORD,
164     ) -> HRESULT,
165     fn SetSLMWeight(
166         pvEngineGrammar: *mut c_void,
167         flWeight: c_float,
168     ) -> HRESULT,
169     fn SetRuleWeight(
170         hRule: SPRULEHANDLE,
171         pvClientRuleContext: *mut c_void,
172         flWeight: c_float,
173     ) -> HRESULT,
174     fn SetTrainingState(
175         fDoingTraining: BOOL,
176         fAdaptFromTrainingData: BOOL,
177     ) -> HRESULT,
178     fn ResetAcousticModelAdaptation() -> HRESULT,
179     fn OnLoadCFG(
180         pvEngineGrammar: *mut c_void,
181         pvGrammarData: *const SPBINARYGRAMMAR,
182         ulGrammarID: ULONG,
183     ) -> HRESULT,
184     fn OnUnloadCFG(
185         pvEngineGrammar: *mut c_void,
186         ulGrammarID: ULONG,
187     ) -> HRESULT,
188 }}
189 pub use um::sapiddk51::SPPHRASEALTREQUEST;
190 RIDL!{#[uuid(0xfece8294, 0x2be1, 0x408f, 0x8e, 0x68, 0x2d, 0xe3, 0x77, 0x09, 0x2f, 0x0e)]
191 interface ISpSRAlternates(ISpSRAlternatesVtbl): IUnknown(IUnknownVtbl) {
192     fn GetAlternates(
193         pAltRequest: *mut SPPHRASEALTREQUEST,
194         ppAlts: *mut *mut SPPHRASEALT,
195         pcAlts: *mut ULONG,
196     ) -> HRESULT,
197     fn Commit(
198         pAltRequest: *mut SPPHRASEALTREQUEST,
199         pAlt: *mut SPPHRASEALT,
200         ppvResultExtra: *mut c_void,
201         pcbResultExtra: *mut ULONG,
202     ) -> HRESULT,
203 }}
204 RIDL!{#[uuid(0xf338f437, 0xcb33, 0x4020, 0x9c, 0xab, 0xc7, 0x1f, 0xf9, 0xce, 0x12, 0xd3)]
205 interface ISpSRAlternates2(ISpSRAlternates2Vtbl): ISpSRAlternates(ISpSRAlternatesVtbl) {
206     fn CommitText(
207         pAltRequest: *mut SPPHRASEALTREQUEST,
208         pcszNewText: LPCWSTR,
209         commitFlags: SPCOMMITFLAGS,
210     ) -> HRESULT,
211 }}
212 pub use um::sapiddk51::{_ISpPrivateEngineCall, _ISpPrivateEngineCallVtbl};
213 RIDL!{#[uuid(0xdefd682a, 0xfe0a, 0x42b9, 0xbf, 0xa1, 0x56, 0xd3, 0xd6, 0xce, 0xcf, 0xaf)]
214 interface ISpPrivateEngineCallEx(ISpPrivateEngineCallExVtbl): IUnknown(IUnknownVtbl) {
215     fn CallEngineSynchronize(
216         pInFrame: *const c_void,
217         ulInFrameSize: ULONG,
218         ppCoMemOutFrame: *mut *mut c_void,
219         pulOutFrameSize: *mut ULONG,
220     ) -> HRESULT,
221     fn CallEngineImmediate(
222         pInFrame: *const c_void,
223         ulInFrameSize: ULONG,
224         ppCoMemOutFrame: *mut *mut c_void,
225         pulOutFrameSize: *mut ULONG,
226     ) -> HRESULT,
227 }}
228 pub use um::sapiddk51::{
229     LIBID_SpeechDDKLib,
230     CLSID_SpDataKey,
231     CLSID_SpObjectTokenEnum,
232     CLSID_SpPhraseBuilder,
233     CLSID_SpITNProcessor,
234     CLSID_SpGrammarCompiler,
235 };
236 extern {
237     pub static CLSID_SpW3CGrammarCompiler: CLSID;
238 }
239 pub use um::sapiddk51::CLSID_SpGramCompBackend;
240