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