1/* 2 * Copyright 2006 Mike McCormack 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19import "objidl.idl"; 20/* FIXME: import "filter.idl"; */ 21 22/* 23 * widl doesn't like the declaration of PFNFILLTEXTBUFFER, so work around it... 24 * Not sure that function pointers are even legal in idl. 25 */ 26cpp_quote("struct tagTEXT_SOURCE;") 27cpp_quote("typedef HRESULT (WINAPI *PFNFILLTEXTBUFFER)(struct tagTEXT_SOURCE *pTextSource);") 28cpp_quote("#if 0") 29typedef void* PFNFILLTEXTBUFFER; 30cpp_quote("#endif") 31 32typedef struct tagTEXT_SOURCE 33{ 34 PFNFILLTEXTBUFFER pfnFillTextBuffer; 35 const WCHAR *awcBuffer; 36 ULONG iEnd; 37 ULONG iCur; 38} TEXT_SOURCE; 39 40typedef enum tagWORDREP_BREAK_TYPE 41{ 42 WORDREP_BREAK_EOW = 0, 43 WORDREP_BREAK_EOS = 1, 44 WORDREP_BREAK_EOP = 2, 45 WORDREP_BREAK_EOC = 3 46} WORDREP_BREAK_TYPE; 47 48 49/***************************************************************************** 50 * IWordSink interface 51 */ 52[ 53 uuid(cc907054-c058-101a-b554-08002b33b0e6), 54 object, 55 local 56] 57interface IWordSink : IUnknown 58{ 59 HRESULT PutWord( 60 [in] ULONG cwc, 61 [size_is(cwcSrcLen)][in] const WCHAR *pwcInBuf, 62 [in] ULONG cwcSrcLen, 63 [in] ULONG cwcSrcPos); 64 HRESULT PutAltWord( 65 [in] ULONG cwc, 66 [size_is(cwcSrcLen)][in] const WCHAR *pwcInBuf, 67 [in] ULONG cwcSrcLen, 68 [in] ULONG cwcSrcPos); 69 HRESULT StartAltPhrase(void); 70 HRESULT EndAltPhrase(void); 71 HRESULT PutBreak( 72 [in] WORDREP_BREAK_TYPE breakType); 73} 74 75/***************************************************************************** 76 * IPhraseSink interface 77 */ 78[ 79 uuid(cc906ff0-c058-101a-b554-08002b33b0e6), 80 object, 81 local 82] 83interface IPhraseSink: IUnknown 84{ 85 HRESULT PutSmallPhrase( 86 [size_is(cwcNoun)][in] const WCHAR *pwcNoun, 87 [in] ULONG cwcNoun, 88 [size_is(cwcModifier)][in] const WCHAR *pwcModifier, 89 [in] ULONG cwcModifier, 90 [in] ULONG ulAttachmentType); 91 HRESULT PutPhrase( 92 [size_is(cwcPhrase)][in] const WCHAR *pwcPhrase, 93 [in] ULONG cwcPhrase); 94} 95 96/***************************************************************************** 97 * IWordBreaker interface 98 */ 99[ 100 uuid(d53552c8-77e3-101a-b552-08002b33b0e6), 101 object, 102 local 103] 104interface IWordBreaker: IUnknown 105{ 106 HRESULT Init( 107 [in] BOOL fQuery, 108 [in] ULONG ulMaxTokenSize, 109 [out] BOOL *pfLicense); 110 HRESULT BreakText( 111 [in] TEXT_SOURCE *pTextSource, 112 [in] IWordSink *pWordSink, 113 [in] IPhraseSink *pPhraseSink); 114 HRESULT ComposePhrase( 115 [size_is(cwcNoun)][in] const WCHAR *pwcNoun, 116 [in] ULONG cwcNoun, 117 [size_is(cwcModifier)][in] const WCHAR *pwcModifier, 118 [in] ULONG cwcModifier, 119 [in] ULONG ulAttachmentType, 120 [size_is(*pcwcPhrase)][out] WCHAR *pwcPhrase, 121 [out][in] ULONG *pcwcPhrase); 122 HRESULT GetLicenseToUse( 123 [string][out] const WCHAR **ppwcsLicense); 124} 125