blob: 7664a22b200309136e94bb0b1a9fd95dd25dce3f [file] [log] [blame]
Mike McCormackdc8c0362004-07-06 19:27:31 +00001/*
2 * Copyright (C) 2004 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
Jonathan Ernst360a3f92006-05-18 14:49:52 +020016 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Mike McCormackdc8c0362004-07-06 19:27:31 +000017 */
18
Alexandre Julliard9719bca2007-06-08 15:49:36 +020019#ifndef DO_NO_IMPORTS
Mike McCormackdc8c0362004-07-06 19:27:31 +000020import "unknwn.idl";
Alexandre Julliard9719bca2007-06-08 15:49:36 +020021#endif
Mike McCormackdc8c0362004-07-06 19:27:31 +000022
23interface IStream;
24
Aric Stewart70131342009-01-28 07:38:11 -060025cpp_quote("#define CPIOD_PEEK 0x40000000")
26cpp_quote("#define CPIOD_FORCE_PROMPT 0x80000000")
27
Mike McCormackdc8c0362004-07-06 19:27:31 +000028[
29 object,
Alexandre Julliard9f55a512005-12-06 11:32:17 +010030 uuid(359f3443-bd4a-11d0-b188-00aa0038c969),
Mike McCormackdc8c0362004-07-06 19:27:31 +000031 pointer_default(unique)
32]
33interface IMLangCodePages : IUnknown
34{
35 HRESULT GetCharCodePages(
36 [in] WCHAR chSrc,
Reece Dunn7a1e7212008-10-23 22:26:58 +010037 [out] DWORD *pdwCodePages);
Mike McCormackdc8c0362004-07-06 19:27:31 +000038 HRESULT GetStrCodePages(
39 [in, size_is(cchSrc)] const WCHAR *pszSrc,
Michael Stefaniucd8b4dd72009-03-11 00:31:43 +010040 [in] LONG cchSrc,
Mike McCormackdc8c0362004-07-06 19:27:31 +000041 [in] DWORD dwPriorityCodePages,
42 [out] DWORD *pdwCodePages,
Michael Stefaniucd8b4dd72009-03-11 00:31:43 +010043 [out] LONG *pcchCodePages);
Mike McCormackdc8c0362004-07-06 19:27:31 +000044 HRESULT CodePageToCodePages(
45 [in] UINT uCodePage,
46 [out] DWORD *pdwCodePages);
47 HRESULT CodePagesToCodePage(
48 [in] DWORD dwCodePages,
49 [in] UINT uDefaultCodePage,
50 [out] UINT *puCodePage);
Mike McCormack57f8bd02006-07-20 18:22:08 +090051}
Mike McCormackdc8c0362004-07-06 19:27:31 +000052
53[
54 object,
Alexandre Julliard9f55a512005-12-06 11:32:17 +010055 uuid(359f3441-bd4a-11d0-b188-00aa0038c969),
Mike McCormackdc8c0362004-07-06 19:27:31 +000056 pointer_default(unique)
57]
58interface IMLangFontLink : IMLangCodePages
59{
60 HRESULT GetFontCodePages(
61 [in] HDC hDC,
62 [in] HFONT hFont,
63 [out] DWORD *pdwCodePages );
64
65 HRESULT MapFont(
66 [in] HDC hDC,
67 [in] DWORD dwCodePages,
68 [in] HFONT hSrcFont,
69 [out] HFONT *phDestFont);
70
71 HRESULT ReleaseFont(
72 [in] HFONT hFont);
73
74 HRESULT ResetFontMapping();
Mike McCormack57f8bd02006-07-20 18:22:08 +090075}
Mike McCormackdc8c0362004-07-06 19:27:31 +000076
77[
78 object,
Alexandre Julliard9f55a512005-12-06 11:32:17 +010079 uuid(ae5f1430-388b-11d2-8380-00c04f8f5da1),
Mike McCormackdc8c0362004-07-06 19:27:31 +000080 pointer_default(unique)
81]
82interface IEnumScript : IUnknown
83{
84 const USHORT MAX_SCRIPT_NAME = 48;
Dmitry Timoshkov8c2ff3c2004-08-11 18:53:02 +000085 const USHORT MAX_MIMEFACE_NAME = 32;
Mike McCormackdc8c0362004-07-06 19:27:31 +000086
87 typedef BYTE SCRIPT_ID;
Dmitry Timoshkov8c2ff3c2004-08-11 18:53:02 +000088 typedef __int64 SCRIPT_IDS;
89
90 typedef enum tagSCRIPTCONTF
91 {
92 sidDefault = 0,
93 sidMerge = sidDefault + 1,
94 sidAsciiSym = sidMerge + 1,
95 sidAsciiLatin = sidAsciiSym + 1,
96 sidLatin = sidAsciiLatin + 1,
97 sidGreek = sidLatin + 1,
98 sidCyrillic = sidGreek + 1,
99 sidArmenian = sidCyrillic + 1,
100 sidHebrew = sidArmenian + 1,
101 sidArabic = sidHebrew + 1,
102 sidDevanagari = sidArabic + 1,
103 sidBengali = sidDevanagari + 1,
104 sidGurmukhi = sidBengali + 1,
105 sidGujarati = sidGurmukhi + 1,
106 sidOriya = sidGujarati + 1,
107 sidTamil = sidOriya + 1,
108 sidTelugu = sidTamil + 1,
109 sidKannada = sidTelugu + 1,
110 sidMalayalam = sidKannada + 1,
111 sidThai = sidMalayalam + 1,
112 sidLao = sidThai + 1,
113 sidTibetan = sidLao + 1,
114 sidGeorgian = sidTibetan + 1,
115 sidHangul = sidGeorgian + 1,
116 sidKana = sidHangul + 1,
117 sidBopomofo = sidKana + 1,
118 sidHan = sidBopomofo + 1,
119 sidEthiopic = sidHan + 1,
120 sidCanSyllabic = sidEthiopic + 1,
121 sidCherokee = sidCanSyllabic + 1,
122 sidYi = sidCherokee + 1,
123 sidBraille = sidYi + 1,
124 sidRunic = sidBraille + 1,
125 sidOgham = sidRunic + 1,
126 sidSinhala = sidOgham + 1,
127 sidSyriac = sidSinhala + 1,
128 sidBurmese = sidSyriac + 1,
129 sidKhmer = sidBurmese + 1,
130 sidThaana = sidKhmer + 1,
131 sidMongolian = sidThaana + 1,
132 sidUserDefined = sidMongolian + 1,
133 sidLim = sidUserDefined + 1,
134 sidFEFirst = sidHangul,
135 sidFELast = sidHan
136 } SCRIPTCONTF;
137
138 typedef enum tagSCRIPTFONTCONTF
139 {
140 SCRIPTCONTF_FIXED_FONT = 0x1,
141 SCRIPTCONTF_PROPORTIONAL_FONT = 0x2,
142 SCRIPTCONTF_SCRIPT_USER = 0x10000,
143 SCRIPTCONTF_SCRIPT_HIDE = 0x20000,
144 SCRIPTCONTF_SCRIPT_SYSTEM = 0x40000
145 } SCRIPTFONTCONTF;
146
147 typedef struct tagSCRIPFONTINFO
148 {
149 SCRIPT_IDS scripts;
150 WCHAR wszFont[MAX_MIMEFACE_NAME];
151 } SCRIPTFONTINFO, *PSCRIPTFONTINFO;
Mike McCormackdc8c0362004-07-06 19:27:31 +0000152
153 typedef struct tagSCRIPTINFO {
154 SCRIPT_ID ScriptId;
155 UINT uiCodePage;
156 WCHAR wszDescription[MAX_SCRIPT_NAME];
157 WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME];
158 WCHAR wszProportionalFont[MAX_MIMEFACE_NAME];
159 } SCRIPTINFO, *PSCRIPTINFO;
160
161 HRESULT Clone(
162 [out] IEnumScript **ppEnum);
163
164 HRESULT Next(
165 [in] ULONG celt,
166 [out] PSCRIPTINFO rgelt,
167 [out] ULONG *pceltFetched);
168
169 HRESULT Reset();
170
171 HRESULT Skip(
172 [in] ULONG celt);
Mike McCormack57f8bd02006-07-20 18:22:08 +0900173}
Mike McCormackdc8c0362004-07-06 19:27:31 +0000174
175[
176 object,
Aric Stewart0d7d5eb2008-07-16 14:01:08 +0900177 uuid(dccfc162-2b38-11d2-b7ec-00c04f8f5d9a),
178 pointer_default(unique)
179]
180interface IMLangFontLink2 : IMLangCodePages
181{
182 typedef struct tagUNICODERANGE
183 {
184 WCHAR wcFrom;
185 WCHAR wcTo;
186 } UNICODERANGE;
187
188 typedef [unique] IMLangFontLink2 *PMLANGFONTLINK2;
189
190 HRESULT GetFontCodePages(
191 [in] HDC hDC,
192 [in] HFONT hFont,
193 [out] DWORD *pdwCodePages );
194
195 HRESULT ReleaseFont(
196 [in] HFONT hFont);
197
198 HRESULT ResetFontMapping();
199
200 HRESULT MapFont(
201 [in] HDC hDC,
202 [in] DWORD dwCodePages,
203 [in] WCHAR chSrc,
204 [out] HFONT *pFont);
205
206 HRESULT GetFontUnicodeRanges(
207 [in] HDC hDC,
208 [in,out] UINT *puiRanges,
209 [out] UNICODERANGE* pUranges);
210
211 HRESULT GetScriptFontInfo(
212 [in] SCRIPT_ID sid,
213 [in] DWORD dwFlags,
214 [in,out] UINT *puiFonts,
215 [out] SCRIPTFONTINFO* pScriptFont);
216
217 HRESULT CodePageToScriptID(
218 [in] UINT uiCodePage,
219 [out] SCRIPT_ID *pSid);
220}
221
222[
Aric Stewart75d44fe2008-07-22 10:01:49 +0900223 object,
224 uuid(c04d65ce-b70d-11d0-b188-00aa0038c969),
225 pointer_default(unique)
226]
227interface IMLangString : IUnknown
228{
229#ifdef NEWMLSTR
230 HRESULT LockMLStr(
Michael Stefaniucd8b4dd72009-03-11 00:31:43 +0100231 [in] LONG lPos,
Aric Stewart75d44fe2008-07-22 10:01:49 +0900232 [in] DWORD dwFlags,
233 [out] DWORD* pdwCookie,
Michael Stefaniucd8b4dd72009-03-11 00:31:43 +0100234 [out] LONG* plActualPos,
235 [out] LONG* plActualLen);
Aric Stewart75d44fe2008-07-22 10:01:49 +0900236
237 HRESULT UnlockMLStr(
238 [in] DWORD dwCookie);
239#else
240 HRESULT Sync(
241 [in] BOOL fNoAccess);
242#endif
243 HRESULT GetLength(
Michael Stefaniucd8b4dd72009-03-11 00:31:43 +0100244 [out, retval] LONG* plLen);
Aric Stewart75d44fe2008-07-22 10:01:49 +0900245 HRESULT SetMLStr(
Michael Stefaniucd8b4dd72009-03-11 00:31:43 +0100246 [in] LONG lDestPos,
247 [in] LONG lDestLen,
Aric Stewart75d44fe2008-07-22 10:01:49 +0900248 [in] IUnknown *pSrcMLStr,
Michael Stefaniucd8b4dd72009-03-11 00:31:43 +0100249 [in] LONG lSrcPos,
250 [in] LONG lSrcLen);
Aric Stewart75d44fe2008-07-22 10:01:49 +0900251#ifdef NEWMLSTR
252 HRESULT RegisterAttr(
253 [in] IUnknown *pUnk,
254 [out] DWORD* pdwCookie);
255 HRESULT UnregisterAttr(
256 [in] DWORD dwCookie);
257 HRESULT EnumAttr(
258 [out] IEnumUnknown **ppEnumUnk);
259 HRESULT FindAttr(
260 [in] REFIID riid,
261 [in] LPARAM lParam,
262 [out] IUnknown **ppUnk);
263#else
264 HRESULT GetMLStr(
Michael Stefaniucd8b4dd72009-03-11 00:31:43 +0100265 [in] LONG lSrcPos,
266 [in] LONG lSrcLen,
Aric Stewart75d44fe2008-07-22 10:01:49 +0900267 [in] IUnknown *pUnkOuter,
268 [in] DWORD dwClsContext,
269 [in] const IID* piid,
270 [out] IUnknown** ppDestMLStr,
Michael Stefaniucd8b4dd72009-03-11 00:31:43 +0100271 [out] LONG* plDestPos,
272 [out] LONG* plDestLen);
Aric Stewart75d44fe2008-07-22 10:01:49 +0900273#endif
274}
275
276[
277 object,
278 uuid(f5be2ee1-bfd7-11d0-b188-00aa0038c969),
279 pointer_default(unique)
280]
281interface IMLangLineBreakConsole : IUnknown
282{
283 HRESULT BreakLineML(
284 [in] IMLangString* pSrcMLStr,
Michael Stefaniucd8b4dd72009-03-11 00:31:43 +0100285 [in] LONG lSrcPos,
286 [in] LONG lSrcLen,
287 [in] LONG cMinColumns,
288 [in] LONG cMaxColumns,
289 [out] LONG* plLineLen,
290 [out] LONG* plSkipLen);
Aric Stewart75d44fe2008-07-22 10:01:49 +0900291
292 HRESULT BreakLineW(
293 [in] LCID locale,
294 [in, size_is(cchSrc)] const WCHAR* pszSrc,
Michael Stefaniucd8b4dd72009-03-11 00:31:43 +0100295 [in] LONG cchSrc,
296 [in] LONG cMaxColumns,
297 [out] LONG* pcchLine,
298 [out] LONG* pcchSkip );
Aric Stewart75d44fe2008-07-22 10:01:49 +0900299
300 HRESULT BreakLineA(
301 [in] LCID locale,
302 [in] UINT uCodePage,
303 [in, size_is(cchSrc)] const CHAR* pszSrc,
Michael Stefaniucd8b4dd72009-03-11 00:31:43 +0100304 [in] LONG cchSrc,
305 [in] LONG cMaxColumns,
306 [out] LONG* pcchLine,
307 [out] LONG* pcchSkip);
Aric Stewart75d44fe2008-07-22 10:01:49 +0900308}
309
310[
Aric Stewart0d7d5eb2008-07-16 14:01:08 +0900311 object,
Alexandre Julliard9f55a512005-12-06 11:32:17 +0100312 uuid(275c23e3-3747-11d0-9fea-00aa003f8646),
Mike McCormackdc8c0362004-07-06 19:27:31 +0000313 pointer_default(unique)
314]
315interface IEnumCodePage : IUnknown
316{
317 const USHORT MAX_MIMECP_NAME = 64;
318 const USHORT MAX_MIMECSET_NAME = 50;
Mike McCormackdc8c0362004-07-06 19:27:31 +0000319
320 typedef enum tagMIMECONTF
321 {
322 MIMECONTF_MAILNEWS = 0x00000001,
323 MIMECONTF_BROWSER = 0x00000002,
324 MIMECONTF_MINIMAL = 0x00000004,
325 MIMECONTF_IMPORT = 0x00000008,
326 MIMECONTF_SAVABLE_MAILNEWS = 0x00000100,
327 MIMECONTF_SAVABLE_BROWSER = 0x00000200,
328 MIMECONTF_EXPORT = 0x00000400,
329 MIMECONTF_PRIVCONVERTER = 0x00010000,
330 MIMECONTF_VALID = 0x00020000,
331 MIMECONTF_VALID_NLS = 0x00040000,
332 MIMECONTF_MIME_IE4 = 0x10000000,
333 MIMECONTF_MIME_LATEST = 0x20000000,
334 MIMECONTF_MIME_REGISTRY = 0x40000000
335 } MIMECONTF;
336
337 typedef struct tagMIMECPINFO {
338 DWORD dwFlags;
339 UINT uiCodePage;
340 UINT uiFamilyCodePage;
341 WCHAR wszDescription[MAX_MIMECP_NAME];
342 WCHAR wszWebCharset[MAX_MIMECSET_NAME];
343 WCHAR wszHeaderCharset[MAX_MIMECSET_NAME];
344 WCHAR wszBodyCharset[MAX_MIMECSET_NAME];
345 WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME];
346 WCHAR wszProportionalFont[MAX_MIMEFACE_NAME];
347 BYTE bGDICharset;
348 } MIMECPINFO, *PMIMECPINFO;
349
350 typedef struct tagMIMECSETINFO
351 {
352 UINT uiCodePage;
353 UINT uiInternetEncoding;
354 WCHAR wszCharset[MAX_MIMECSET_NAME];
355 } MIMECSETINFO, *PMIMECSETINFO;
356
357 HRESULT Clone(
358 [out] IEnumCodePage **ppEnum);
359
360 HRESULT Next(
361 [in] ULONG celt,
362 [out] PMIMECPINFO rgelt,
363 [out] ULONG *pceltFetched);
364
365 HRESULT Reset();
366
367 HRESULT Skip(
368 [in] ULONG celt);
Mike McCormack57f8bd02006-07-20 18:22:08 +0900369}
Mike McCormackdc8c0362004-07-06 19:27:31 +0000370
371[
372 object,
Francois Gougeta050beb2006-08-09 19:02:01 +0200373 uuid(d66d6f98-cdaa-11d0-b822-00c04fc9b31f),
Mike McCormackdc8c0362004-07-06 19:27:31 +0000374 pointer_default(unique)
375]
376interface IMLangConvertCharset : IUnknown
377{
378 HRESULT Initialize(
379 [in] UINT uiSrcCodePage,
380 [in] UINT uiDstCodePage,
381 [in] DWORD dwProperty);
382
383 HRESULT GetSourceCodePage(
384 [out] UINT *puiSrcCodePage);
385
386 HRESULT GetDestinationCodePage(
387 [out] UINT *puiDstCodePage);
388
389 HRESULT GetProperty(
390 [out] DWORD *pdwProperty);
391
392 HRESULT DoConversion(
393 [in] BYTE *pSrcStr,
394 [in,out] UINT *pcSrcSize,
395 [in] BYTE *pDstStr,
396 [in,out] UINT *pcDstSize);
397
398 HRESULT DoConversionToUnicode(
399 [in] CHAR *pSrcStr,
400 [in,out] UINT *pcSrcSize,
401 [in] WCHAR *pDstStr,
402 [in,out] UINT *pcDstSize);
403
404 HRESULT DoConversionFromUnicode(
405 [in] WCHAR *pSrcStr,
406 [in,out] UINT *pcSrcSize,
407 [in] CHAR *pDstStr,
408 [in,out] UINT *pcDstSize);
Mike McCormack57f8bd02006-07-20 18:22:08 +0900409}
Mike McCormackdc8c0362004-07-06 19:27:31 +0000410
411[
Francois Gougeta050beb2006-08-09 19:02:01 +0200412 uuid(d66d6f99-cdaa-11d0-b822-00c04fc9b31f)
413]
414coclass CMLangConvertCharset
415{
416 [default] interface IMLangConvertCharset;
417};
418
419[
Mike McCormackdc8c0362004-07-06 19:27:31 +0000420 object,
Alexandre Julliard9f55a512005-12-06 11:32:17 +0100421 uuid(3dc39d1d-c030-11d0-b81b-00c04fc9b31f),
Mike McCormackdc8c0362004-07-06 19:27:31 +0000422 pointer_default(unique)
423]
424interface IEnumRfc1766 : IUnknown
425{
Dmitry Timoshkovef35d282005-12-06 10:58:57 +0100426 const USHORT MAX_RFC1766_NAME = 6;
427 const USHORT MAX_LOCALE_NAME = 32;
428
Mike McCormackdc8c0362004-07-06 19:27:31 +0000429 typedef struct tagRFC1766INFO
430 {
431 LCID lcid;
432 WCHAR wszRfc1766[MAX_RFC1766_NAME];
433 WCHAR wszLocaleName[MAX_LOCALE_NAME];
434 } RFC1766INFO, *PRFC1766INFO;
435
436 HRESULT Clone(
437 [out] IEnumRfc1766 **ppEnum);
438
439 HRESULT Next(
440 [in] ULONG celt,
441 [out] PRFC1766INFO rgelt,
442 [out] ULONG *pceltFetched);
443
444 HRESULT Reset();
445
446 HRESULT Skip(
447 [in] ULONG celt);
Mike McCormack57f8bd02006-07-20 18:22:08 +0900448}
Mike McCormackdc8c0362004-07-06 19:27:31 +0000449
450[
451 object,
Alexandre Julliard9f55a512005-12-06 11:32:17 +0100452 uuid(275c23e1-3747-11d0-9fea-00aa003f8646),
Mike McCormackdc8c0362004-07-06 19:27:31 +0000453 pointer_default(unique)
454]
455interface IMultiLanguage : IUnknown
456{
457 HRESULT GetNumberOfCodePageInfo(
458 [out] UINT *pcCodePage);
459
460 HRESULT GetCodePageInfo(
461 [in] UINT uiCodePage,
462 [out] PMIMECPINFO pCodePageInfo);
463
464 HRESULT GetFamilyCodePage(
465 [in] UINT uiCodePage,
466 [out] UINT *puiFamilyCodePage);
467
468 HRESULT EnumCodePages(
469 [in] DWORD grfFlags,
470 [out] IEnumCodePage **ppEnumCodePage);
471
472 HRESULT GetCharsetInfo(
473 [in] BSTR Charset,
474 [in] PMIMECSETINFO pCharsetInfo);
475
476 HRESULT IsConvertible(
477 [in] DWORD dwSrcEncoding,
478 [in] DWORD dwDstEncoding);
479
480 HRESULT ConvertString(
481 [in,out] DWORD *pdwMode,
482 [in] DWORD dwSrcEncoding,
483 [in] DWORD dwDstEncoding,
484 [in] BYTE *pSrcStr,
485 [in,out] UINT *pcSrcSize,
486 [in] BYTE *pDstStr,
487 [in,out] UINT *pcDstSize);
488
489 HRESULT ConvertStringToUnicode(
490 [in,out] DWORD *pdwMode,
491 [in] DWORD dwEncoding,
492 [in] CHAR *pSrcStr,
493 [in,out] UINT *pcSrcSize,
494 [in] WCHAR *pDstStr,
495 [in,out] UINT *pcDstSize);
496
497 HRESULT ConvertStringFromUnicode(
498 [in,out] DWORD *pdwMode,
499 [in] DWORD dwEncoding,
500 [in] WCHAR *pSrcStr,
501 [in,out] UINT *pcSrcSize,
502 [in] CHAR *pDstStr,
503 [in,out] UINT *pcDstSize);
504
505 HRESULT ConvertStringReset();
506
507 HRESULT GetRfc1766FromLcid(
508 [in] LCID Locale,
509 [out] BSTR *pbstrRfc1766);
510
511 HRESULT GetLcidFromRfc1766(
512 [out] LCID *pLocale,
513 [in] BSTR bstrRfc1766);
514
515 HRESULT EnumRfc1766(
516 [out] IEnumRfc1766 **ppEnumRfc1766);
517
518 HRESULT GetRfc1766Info(
519 [in] LCID Locale,
520 [out] PRFC1766INFO pRfc1766Info);
521
522 HRESULT CreateConvertCharset(
523 [in] UINT uiSrcCodePage,
524 [in] UINT uiDstCodePage,
525 [in] DWORD dwProperty,
526 [out] IMLangConvertCharset **ppMLangConvertCharset);
527
Mike McCormack57f8bd02006-07-20 18:22:08 +0900528}
Mike McCormackdc8c0362004-07-06 19:27:31 +0000529
530[
531 object,
Alexandre Julliard9f55a512005-12-06 11:32:17 +0100532 uuid(dccfc164-2b38-11d2-b7ec-00c04f8f5d9a),
Mike McCormackdc8c0362004-07-06 19:27:31 +0000533 pointer_default(unique)
534]
535interface IMultiLanguage2 : IUnknown
536{
537 typedef struct tagDetectEncodingInfo
538 {
539 UINT nLangID;
540 UINT nCodePage;
541 INT nDocPercent;
542 INT nConfidence;
543 } DetectEncodingInfo, *pDetectEncodingInfo;
544
545 HRESULT GetNumberOfCodePageInfo(
546 [out] UINT *pcCodePage);
547
548 HRESULT GetCodePageInfo(
549 [in] UINT uiCodePage,
550 [in] LANGID LangId,
551 [out] PMIMECPINFO pCodePageInfo);
552
553 HRESULT GetFamilyCodePage(
554 [in] UINT uiCodePage,
555 [out] UINT *puiFamilyCodePage);
556
557 HRESULT EnumCodePages(
558 [in] DWORD grfFlags,
559 [in] LANGID LangId,
560 [out] IEnumCodePage **ppEnumCodePage);
561
562 HRESULT GetCharsetInfo(
563 [in] BSTR Charset,
564 [in] PMIMECSETINFO pCharsetInfo);
565
566 HRESULT IsConvertible(
567 [in] DWORD dwSrcEncoding,
568 [in] DWORD dwDstEncoding);
569
570 HRESULT ConvertString(
571 [in,out] DWORD *pdwMode,
572 [in] DWORD dwSrcEncoding,
573 [in] DWORD dwDstEncoding,
574 [in] BYTE *pSrcStr,
575 [in,out] UINT *pcSrcSize,
576 [in] BYTE *pDstStr,
577 [in,out] UINT *pcDstSize);
578
579 HRESULT ConvertStringToUnicode(
580 [in,out] DWORD *pdwMode,
581 [in] DWORD dwEncoding,
582 [in] CHAR *pSrcStr,
583 [in,out] UINT *pcSrcSize,
584 [in] WCHAR *pDstStr,
585 [in,out] UINT *pcDstSize);
586
587 HRESULT ConvertStringFromUnicode(
588 [in,out] DWORD *pdwMode,
589 [in] DWORD dwEncoding,
590 [in] WCHAR *pSrcStr,
591 [in,out] UINT *pcSrcSize,
592 [in] CHAR *pDstStr,
593 [in,out] UINT *pcDstSize);
594
595 HRESULT ConvertStringReset();
596
597 HRESULT GetRfc1766FromLcid(
598 [in] LCID Locale,
599 [out] BSTR *pbstrRfc1766);
600
601 HRESULT GetLcidFromRfc1766(
602 [out] LCID *pLocale,
603 [in] BSTR bstrRfc1766);
604
605 HRESULT EnumRfc1766(
606 [in] LANGID LangId,
607 [out] IEnumRfc1766 **ppEnumRfc1766);
608
609 HRESULT GetRfc1766Info(
610 [in] LCID Locale,
611 [in] LANGID LangId,
612 [out] PRFC1766INFO pRfc1766Info);
613
614 HRESULT CreateConvertCharset(
615 [in] UINT uiSrcCodePage,
616 [in] UINT uiDstCodePage,
617 [in] DWORD dwProperty,
618 [out] IMLangConvertCharset **ppMLangConvertCharset);
619
620 HRESULT ConvertStringInIStream(
621 [in,out] DWORD *pdwMode,
622 [in] DWORD dwFlag,
623 [in] WCHAR *lpFallBack,
624 [in] DWORD dwSrcEncoding,
625 [in] DWORD dwDstEncoding,
626 [in] IStream *pstmIn,
627 [in] IStream *pstmOut);
628
629 HRESULT ConvertStringToUnicodeEx(
630 [in,out] DWORD *pdwMode,
631 [in] DWORD dwEncoding,
632 [in] CHAR *pSrcStr,
633 [in,out] UINT *pcSrcSize,
634 [in] WCHAR *pDstStr,
635 [in,out] UINT *pcDstSize,
636 [in] DWORD dwFlag,
637 [in] WCHAR *lpFallBack);
638
Dmitry Timoshkov8c2ff3c2004-08-11 18:53:02 +0000639 HRESULT ConvertStringFromUnicodeEx(
640 [in,out] DWORD *pdwMode,
641 [in] DWORD dwEncoding,
642 [in] WCHAR *pSrcStr,
643 [in,out] UINT *pcSrcSize,
644 [in] CHAR *pDstStr,
645 [in,out] UINT *pcDstSize,
646 [in] DWORD dwFlag,
647 [in] WCHAR *lpFallBack);
648
Mike McCormackdc8c0362004-07-06 19:27:31 +0000649 HRESULT DetectCodepageInIStream(
650 [in] DWORD dwFlag,
651 [in] DWORD dwPrefWinCodePage,
652 [in] IStream *pstmIn,
653 [in,out] DetectEncodingInfo *lpEncoding,
654 [in,out] INT *pnScores);
655
656 HRESULT DetectInputCodepage(
657 [in] DWORD dwFlag,
658 [in] DWORD dwPrefWinCodePage,
659 [in] CHAR *pSrcStr,
660 [in,out] INT *pcSrcSize,
661 [in,out] DetectEncodingInfo *lpEncoding,
662 [in,out] INT *pnScores);
663
664 HRESULT ValidateCodePage(
665 [in] UINT uiCodePage,
666 [in] HWND hwnd);
667
668 HRESULT GetCodePageDescription(
669 [in] UINT uiCodePage,
670 [in] LCID lcid,
Rob Shearmancf45d592010-03-23 13:33:29 +0000671 [in,out,size_is(cchWideChar)] LPWSTR lpWideCharStr,
Mike McCormackdc8c0362004-07-06 19:27:31 +0000672 [in] int cchWideChar);
673
674 HRESULT IsCodePageInstallable(
675 [in] UINT uiCodePage);
676
677 HRESULT SetMimeDBSource(
678 [in] MIMECONTF dwSource);
679
680 HRESULT GetNumberOfScripts(
681 [out] UINT *pnScripts);
682
683 HRESULT EnumScripts(
684 [in] DWORD dwFlags,
685 [in] LANGID LangId,
686 [out] IEnumScript **ppEnumScript);
687
688 HRESULT ValidateCodePageEx( /* undocumented on MSDN */
689 [in] UINT uiCodePage,
690 [in] HWND hwnd,
691 [in] DWORD dwfIODControl);
Mike McCormack57f8bd02006-07-20 18:22:08 +0900692}
Dmitry Timoshkov0abeb872004-08-04 18:15:27 +0000693
Jacek Cabandd305162004-12-13 13:15:39 +0000694[
Jacek Caban5b39aa22006-08-23 18:14:09 +0200695 object,
696 uuid(4e5868ab-b157-4623-9acc-6a1d9caebe04),
697 pointer_default(unique)
698]
699interface IMultiLanguage3 : IMultiLanguage2
700{
701 typedef [unique] IMultiLanguage3 *LPMULTILANGUAGE3;
702 HRESULT DetectOutboundCodePage(
703 [in] DWORD dwFlags,
704 [in] LPCWSTR lpWideCharStr,
705 [in] UINT cchWideChar,
706 [in] UINT *puiPreferredCodePages,
707 [in] UINT nPreferredCodePages,
708 [in] UINT *puiDetectedCodePages,
709 [in, out] UINT *pnDetectedCodePages,
710 [in] WCHAR *lpSpecialChar);
711
712 HRESULT DetectOutboundCodePageInIStream(
713 [in] DWORD dwFlags,
714 [in] IStream *pStrIn,
715 [in] UINT *puiPreferredCodePages,
716 [in] UINT nPreferredCodePages,
717 [in] UINT *puiDetectedCodePages,
718 [in, out] UINT *pnDetectedCodePages,
719 [in] WCHAR *lpSpecialChar);
720}
721
722[
Jacek Cabandd305162004-12-13 13:15:39 +0000723 uuid(275C23E2-3747-11d0-9FEA-00AA003f8646)
724]
725coclass CMultiLanguage
726{
727 [default] interface IMultiLanguage;
728 interface IMLangCodePages;
729 interface IMLangFontLink;
730 /* interface IMLangLineBreakConsole; */
Aric Stewart0d7d5eb2008-07-16 14:01:08 +0900731 interface IMLangFontLink2;
Mike McCormack57f8bd02006-07-20 18:22:08 +0900732}
Jacek Cabandd305162004-12-13 13:15:39 +0000733
Dmitry Timoshkov54c0af62004-08-06 18:56:46 +0000734cpp_quote("STDAPI LcidToRfc1766A(LCID, LPSTR, INT);")
735cpp_quote("STDAPI LcidToRfc1766W(LCID, LPWSTR, INT);")
736cpp_quote("#define LcidToRfc1766 WINELIB_NAME_AW(LcidToRfc1766)")
737
738cpp_quote("STDAPI Rfc1766ToLcidA(LCID *, LPCSTR);")
739cpp_quote("STDAPI Rfc1766ToLcidW(LCID *, LPCWSTR);")
740cpp_quote("#define Rfc1766ToLcid WINELIB_NAME_AW(Rfc1766ToLcid)")
741
Vitaly Lipatov06ce8922005-06-27 11:10:16 +0000742cpp_quote("STDAPI GetGlobalFontLinkObject(void);")
Dmitry Timoshkov54c0af62004-08-06 18:56:46 +0000743cpp_quote("STDAPI IsConvertINetStringAvailable(DWORD, DWORD);")
744cpp_quote("STDAPI ConvertINetString(LPDWORD, DWORD, DWORD, LPCSTR, LPINT, LPSTR, LPINT);")
745cpp_quote("STDAPI ConvertINetMultiByteToUnicode(LPDWORD, DWORD, LPCSTR, LPINT, LPWSTR, LPINT);")
746cpp_quote("STDAPI ConvertINetUnicodeToMultiByte(LPDWORD, DWORD, LPCWSTR, LPINT, LPSTR, LPINT);")