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