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