OSDN Git Service

Prepare environment for Earnie's tools.
[mingw/mingw-org-wsl.git] / wslapi / include / mlang.h
1 #ifndef _MLANG_H
2 #define _MLANG_H
3 #if __GNUC__ >= 3
4 #pragma GCC system_header
5 #endif
6
7 #include <windows.h>
8
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 #pragma pack(push,1)
13
14 #define MAX_MIMECP_NAME   64
15 #define MAX_MIMECSET_NAME 50
16 #define MAX_SCRIPT_NAME   48
17 #define MAX_MIMEFACE_NAME 32
18 #define MAX_RFC1766_NAME   6
19 #define MAX_LOCALE_NAME   32
20
21 typedef enum tagMIMECONTF {
22     MIMECONTF_MAILNEWS = 0x00000001,
23     MIMECONTF_BROWSER = 0x00000002,
24     MIMECONTF_MINIMAL = 0x00000004,
25     MIMECONTF_IMPORT = 0x00000008,
26     MIMECONTF_SAVABLE_MAILNEWS = 0x00000100,
27     MIMECONTF_SAVABLE_BROWSER = 0x00000200,
28     MIMECONTF_EXPORT = 0x00000400,
29     MIMECONTF_PRIVCONVERTER = 0x00010000,
30     MIMECONTF_VALID = 0x00020000,
31     MIMECONTF_VALID_NLS = 0x00040000,
32     MIMECONTF_MIME_IE4 = 0x10000000,
33     MIMECONTF_MIME_LATEST = 0x20000000,
34     MIMECONTF_MIME_REGISTRY = 0x40000000
35 } MIMECONTF;
36 typedef enum tagMLCONVCHARF {
37     MLCONVCHARF_NONE = 0,
38     MLCONVCHARF_AUTODETECT = 1,
39     MLCONVCHARF_NCR_ENTITIZE = 2,
40     MLCONVCHARF_NAME_ENTITIZE = 4,
41     MLCONVCHARF_USEDEFCHAR = 8,
42     MLCONVCHARF_NOBESTFITCHARS = 16
43 } MLCONVCHAR;
44 typedef enum tagMLCPF {
45     MLDETECTF_MAILNEWS = 0x0001,
46     MLDETECTF_BROWSER = 0x0002,
47     MLDETECTF_VALID = 0x0004,
48     MLDETECTF_VALID_NLS = 0x0008,
49     MLDETECTF_PRESERVE_ORDER = 0x0010,
50     MLDETECTF_PREFERRED_ONLY = 0x0020,
51     MLDETECTF_FILTER_SPECIALCHAR = 0x0040
52 } MLCP;
53 typedef enum tagMLDETECTCP {
54     MLDETECTCP_NONE = 0,
55     MLDETECTCP_7BIT = 1,
56     MLDETECTCP_8BIT = 2,
57     MLDETECTCP_DBCS = 4,
58     MLDETECTCP_HTML = 8
59 } MLDETECTCP;
60 typedef enum tagSCRIPTFONTCONTF {
61     SCRIPTCONTF_FIXED_FONT = 0x00000001,
62     SCRIPTCONTF_PROPORTIONAL_FONT = 0x00000002,
63     SCRIPTCONTF_SCRIPT_USER = 0x00010000,
64     SCRIPTCONTF_SCRIPT_HIDE = 0x00020000,
65     SCRIPTCONTF_SCRIPT_SYSTEM = 0x00040000
66 } SCRIPTFONTCONTF;
67 typedef enum tagSCRIPTCONTF {
68     sidDefault,
69     sidMerge,
70     sidAsciiSym,
71     sidAsciiLatin,
72     sidLatin,
73     sidGreek,
74     sidCyrillic,
75     sidArmenian,
76     sidHebrew,
77     sidArabic,
78     sidDevanagari,
79     sidBengali,
80     sidGurmukhi,
81     sidGujarati,
82     sidOriya,
83     sidTamil,
84     sidTelugu,
85     sidKannada,
86     sidMalayalam,
87     sidThai,
88     sidLao,
89     sidTibetan,
90     sidGeorgian,
91     sidHangul,
92     sidKana,
93     sidBopomofo,
94     sidHan,
95     sidEthiopic,
96     sidCanSyllabic,
97     sidCherokee,
98     sidYi,
99     sidBraille,
100     sidRunic,
101     sidOgham,
102     sidSinhala,
103     sidSyriac,
104     sidBurmese,
105     sidKhmer,
106     sidThaana,
107     sidMongolian,
108     sidLim,
109     sidFEFirst = sidHangul,
110     sidFELast = sidHan
111 } SCRIPTCONTF;
112
113 typedef struct tagDetectEncodingInfo {
114     UINT nLangID;
115     UINT nCodePage;
116     INT nDocPercent;
117     INT nConfidence;
118 } DetectEncodingInfo, *pDetectEncodingInfo;
119 typedef struct tagMIMECPINFO {
120     DWORD dwFlags;
121     UINT uiCodePage;
122     UINT uiFamilyCodePage;
123     WCHAR wszDescription[MAX_MIMECP_NAME];
124     WCHAR wszWebCharset[MAX_MIMECSET_NAME];
125     WCHAR wszHeaderCharset[MAX_MIMECSET_NAME];
126     WCHAR wszBodyCharset[MAX_MIMECSET_NAME];
127     WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME];
128     WCHAR wszProportionalFont[MAX_MIMEFACE_NAME];
129     BYTE bGDICharset;
130 } MIMECPINFO, *PMIMECPINFO;
131 typedef struct tagMIMECSETINFO {
132     UINT uiCodePage;
133     UINT uiInternetEncoding;
134     WCHAR wszCharset[MAX_MIMECSET_NAME];
135 } MIMECSETINFO, *PMIMECSETINFO;
136 typedef struct tagRFC1766INFO {
137     LCID lcid;
138     WCHAR wszRfc1766[MAX_RFC1766_NAME];
139     WCHAR wszLocaleName[MAX_LOCALE_NAME];
140 } RFC1766INFO, *PRFC1766INFO;
141 typedef BYTE SCRIPT_ID;
142 typedef struct tagSCRIPTINFO {
143     SCRIPT_ID ScriptId;
144     UINT uiCodePage;
145     WCHAR wszDescription[MAX_SCRIPT_NAME];
146     WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME];
147     WCHAR wszProportionalFont[MAX_MIMEFACE_NAME];
148 } SCRIPTINFO, *PSCRIPTINFO;
149 typedef struct tagUNICODERANGE {
150   WCHAR wcFrom;
151   WCHAR wcTo;
152 } UNICODERANGE;
153
154 typedef struct tagSCRIPTFONTINFO SCRIPTFONTINFO;
155
156 EXTERN_C const IID IID_IEnumCodePage;
157 #define INTERFACE IEnumCodePage
158 DECLARE_INTERFACE_(IEnumCodePage,IUnknown)
159 {
160         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
161         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
162         STDMETHOD_(ULONG,Release)(THIS) PURE;
163         STDMETHOD(Clone)(THIS_ IEnumCodePage**) PURE;
164         STDMETHOD(Next)(THIS_ ULONG,PMIMECPINFO,ULONG*) PURE;
165         STDMETHOD(Reset)(THIS) PURE;
166         STDMETHOD(Skip)(THIS_ ULONG) PURE;
167 };
168 #undef INTERFACE
169
170 EXTERN_C const IID IID_IEnumRfc1766;
171 #define INTERFACE IEnumRfc1766
172 DECLARE_INTERFACE_(IEnumRfc1766,IUnknown)
173 {
174         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
175         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
176         STDMETHOD_(ULONG,Release)(THIS) PURE;
177         STDMETHOD(Clone)(THIS_ IEnumRfc1766**) PURE;
178         STDMETHOD(Next)(THIS_ ULONG,PRFC1766INFO,ULONG*) PURE;
179         STDMETHOD(Reset)(THIS) PURE;
180         STDMETHOD(Skip)(THIS_ ULONG) PURE;
181 };
182 #undef INTERFACE
183
184 EXTERN_C const IID IID_IEnumScript;
185 #define INTERFACE IEnumScript
186 DECLARE_INTERFACE_(IEnumScript,IUnknown)
187 {
188         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
189         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
190         STDMETHOD_(ULONG,Release)(THIS) PURE;
191         STDMETHOD(Clone)(THIS_ IEnumScript**) PURE;
192         STDMETHOD(Next)(THIS_ ULONG,PSCRIPTINFO,ULONG*) PURE;
193         STDMETHOD(Reset)(THIS) PURE;
194         STDMETHOD(Skip)(THIS_ ULONG) PURE;
195 };
196 #undef INTERFACE
197
198 EXTERN_C const IID IID_IMLangCodePages;
199 #define INTERFACE IMLangCodePages
200 DECLARE_INTERFACE_(IMLangCodePages,IUnknown)
201 {
202         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
203         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
204         STDMETHOD_(ULONG,Release)(THIS) PURE;
205         STDMETHOD(GetCharCodePages)(THIS_ WCHAR,DWORD*) PURE;
206         STDMETHOD(GetStrCodePages)(THIS_ const WCHAR *,long,DWORD,DWORD*,long*) PURE;
207         STDMETHOD(CodePageToCodePages)(THIS_ UINT,DWORD*) PURE;
208         STDMETHOD(CodePagesToCodePage)(THIS_ DWORD,UINT,UINT*) PURE;
209 };
210 #undef INTERFACE
211
212 EXTERN_C const IID IID_IMLangConvertCharset;
213 #define INTERFACE IMLangConvertCharset
214 DECLARE_INTERFACE_(IMLangConvertCharset,IUnknown)
215 {
216         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
217         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
218         STDMETHOD_(ULONG,Release)(THIS) PURE;
219         STDMETHOD(Initialize)(THIS_ UINT,UINT,DWORD) PURE;
220         STDMETHOD(GetSourceCodePage)(THIS_ UINT*) PURE;
221         STDMETHOD(GetDestinationCodePage)(THIS_ UINT*) PURE;
222         STDMETHOD(GetProperty)(THIS_ DWORD*) PURE;
223         STDMETHOD(DoConversion)(THIS_ BYTE*,UINT*,BYTE*,UINT*) PURE;
224         STDMETHOD(DoConversionToUnicode)(THIS_ CHAR*,UINT*,WCHAR*,UINT*) PURE;
225         STDMETHOD(DoConversionFromUnicode)(THIS_ WCHAR*,UINT*,CHAR*,UINT*) PURE;
226 };
227 #undef INTERFACE
228 EXTERN_C const CLSID CLSID_CMLangConvertCharset;
229
230 EXTERN_C const IID IID_IMLangFontLink;
231 #define INTERFACE IMLangFontLink
232 DECLARE_INTERFACE_(IMLangFontLink,IMLangCodePages)
233 {
234         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
235         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
236         STDMETHOD_(ULONG,Release)(THIS) PURE;
237         STDMETHOD(GetCharCodePages)(THIS_ WCHAR,DWORD*) PURE;
238         STDMETHOD(GetStrCodePages)(THIS_ const WCHAR *,long,DWORD,DWORD*,long*) PURE;
239         STDMETHOD(CodePageToCodePages)(THIS_ UINT,DWORD*) PURE;
240         STDMETHOD(CodePagesToCodePage)(THIS_ DWORD,UINT,UINT*) PURE;
241         STDMETHOD(GetFontCodePages)(THIS_ HDC,HFONT,DWORD*) PURE;
242         STDMETHOD(MapFont)(THIS_ HDC,DWORD,HFONT,HFONT*) PURE;
243         STDMETHOD(ReleaseFont)(THIS_ HFONT) PURE;
244         STDMETHOD(ResetFontMapping)(THIS) PURE;
245 };
246 #undef INTERFACE
247
248 EXTERN_C const IID IID_IMLangFontLink2;
249 #define INTERFACE IMLangFontLink2
250 DECLARE_INTERFACE_(IMLangFontLink2,IMLangCodePages)
251 {
252         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
253         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
254         STDMETHOD_(ULONG,Release)(THIS) PURE;
255         STDMETHOD(GetCharCodePages)(THIS_ WCHAR,DWORD*) PURE;
256         STDMETHOD(GetStrCodePages)(THIS_ const WCHAR *,long,DWORD,DWORD*,long*) PURE;
257         STDMETHOD(CodePageToCodePages)(THIS_ UINT,DWORD*) PURE;
258         STDMETHOD(CodePagesToCodePage)(THIS_ DWORD,UINT,UINT*) PURE;
259         STDMETHOD(GetFontCodePages)(THIS_ HDC,HFONT,DWORD*) PURE;
260         STDMETHOD(ReleaseFont)(THIS_ HFONT) PURE;
261         STDMETHOD(ResetFontMapping)(THIS) PURE;
262         STDMETHOD(MapFont)(THIS_ HDC,DWORD,WCHAR,HFONT*) PURE;
263         STDMETHOD(GetFontUnicodeRange)(THIS_ HDC,UINT*,UNICODERANGE*) PURE;
264         STDMETHOD(GetScriptFontInfo)(THIS_ SCRIPT_ID,DWORD,UINT*,SCRIPTFONTINFO*) PURE;
265         STDMETHOD(CodePageToScriptID)(THIS) PURE;
266 };
267 #undef INTERFACE
268
269 EXTERN_C const IID IID_IMLangLineBreakConsole;
270 #define INTERFACE IMLangLineBreakConsole
271 DECLARE_INTERFACE_(IMLangLineBreakConsole,IMLangCodePages)
272 {
273         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
274         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
275         STDMETHOD_(ULONG,Release)(THIS) PURE;
276         STDMETHOD(BreakLineML)(THIS) PURE;
277         STDMETHOD(BreakLineW)(THIS_ LCID,const WCHAR*,long,long,long*,long*) PURE;
278         STDMETHOD(BreakLineA)(THIS_ LCID,UINT,const CHAR*,long,long,long*,long*) PURE;
279 };
280 #undef INTERFACE
281
282 EXTERN_C const IID IID_IMultiLanguage;
283 #define INTERFACE IMultiLanguage
284 DECLARE_INTERFACE_(IMultiLanguage,IUnknown)
285 {
286         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
287         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
288         STDMETHOD_(ULONG,Release)(THIS) PURE;
289         STDMETHOD(GetNumberOfCodePageInfo)(THIS_ UINT*) PURE;
290         STDMETHOD(GetCodePageInfo)(THIS_ UINT,PMIMECPINFO) PURE;
291         STDMETHOD(GetFamilyCodePage)(THIS_ UINT,UINT*) PURE;
292         STDMETHOD(EnumCodePages)(THIS_ DWORD,IEnumCodePage**) PURE;
293         STDMETHOD(GetCharsetInfo)(THIS_ BSTR,PMIMECSETINFO) PURE;
294         STDMETHOD(IsConvertible)(THIS_ DWORD,DWORD) PURE;
295         STDMETHOD(ConvertString)(THIS_ DWORD*,DWORD,DWORD,BYTE*,UINT*,BYTE*,UINT*) PURE;
296         STDMETHOD(ConvertStringToUnicode)(THIS_ DWORD*,DWORD,CHAR*,UINT*,WCHAR*,UINT*) PURE;
297         STDMETHOD(ConvertStringFromUnicode)(THIS_ DWORD*,DWORD,WCHAR*,UINT*,CHAR*,UINT*) PURE;
298         STDMETHOD(ConvertStringReset)(THIS) PURE;
299         STDMETHOD(GetRfc1766FromLcid)(THIS_ LCID,BSTR*) PURE;
300         STDMETHOD(GetLcidFromRfc1766)(THIS_ LCID*,BSTR) PURE;
301         STDMETHOD(EnumRfc1766)(THIS_ IEnumRfc1766**) PURE;
302         STDMETHOD(GetRfc1766Info)(THIS_ LCID,PRFC1766INFO) PURE;
303         STDMETHOD(CreateConvertCharset)(THIS_ UINT,UINT,DWORD,IMLangConvertCharset**) PURE;
304 };
305 #undef INTERFACE
306 EXTERN_C const CLSID CLSID_CMultiLanguage;
307
308 EXTERN_C const IID IID_IMultiLanguage2;
309 #define INTERFACE IMultiLanguage2
310 DECLARE_INTERFACE_(IMultiLanguage2,IUnknown)
311 {
312         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
313         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
314         STDMETHOD_(ULONG,Release)(THIS) PURE;
315         STDMETHOD(GetNumberOfCodePageInfo)(THIS_ UINT*) PURE;
316         STDMETHOD(GetCodePageInfo)(THIS_ UINT,PMIMECPINFO) PURE;
317         STDMETHOD(GetFamilyCodePage)(THIS_ UINT,UINT*) PURE;
318         STDMETHOD(EnumCodePages)(THIS_ DWORD,IEnumCodePage**) PURE;
319         STDMETHOD(GetCharsetInfo)(THIS_ BSTR,PMIMECSETINFO) PURE;
320         STDMETHOD(IsConvertible)(THIS_ DWORD,DWORD) PURE;
321         STDMETHOD(ConvertString)(THIS_ DWORD*,DWORD,DWORD,BYTE*,UINT*,BYTE*,UINT*) PURE;
322         STDMETHOD(ConvertStringToUnicode)(THIS_ DWORD*,DWORD,CHAR*,UINT*,WCHAR*,UINT*) PURE;
323         STDMETHOD(ConvertStringFromUnicode)(THIS_ DWORD*,DWORD,WCHAR*,UINT*,CHAR*,UINT*) PURE;
324         STDMETHOD(ConvertStringReset)(THIS) PURE;
325         STDMETHOD(GetRfc1766FromLcid)(THIS_ LCID,BSTR*) PURE;
326         STDMETHOD(GetLcidFromRfc1766)(THIS_ LCID*,BSTR) PURE;
327         STDMETHOD(EnumRfc1766)(THIS_ IEnumRfc1766**) PURE;
328         STDMETHOD(GetRfc1766Info)(THIS_ LCID,PRFC1766INFO) PURE;
329         STDMETHOD(CreateConvertCharset)(THIS_ UINT,UINT,DWORD,IMLangConvertCharset**) PURE;
330         STDMETHOD(ConvertStringInIStream)(THIS_ DWORD*,DWORD,WCHAR*,DWORD,DWORD,IStream*,IStream*) PURE;
331         STDMETHOD(ConvertStringToUnicodeEx)(THIS_ DWORD*,DWORD,CHAR*,UINT*,WCHAR*,UINT*,DWORD,WCHAR*) PURE;
332         STDMETHOD(ConvertStringFromUnicodeEx)(THIS_ DWORD*,DWORD,WCHAR*,UINT*,CHAR*,UINT*,DWORD,WCHAR*) PURE;
333         STDMETHOD(DetectCodepageInIStream)(THIS_ DWORD,DWORD,IStream*,DetectEncodingInfo*,INT*) PURE;
334         STDMETHOD(DetectInputCodepage)(THIS_ DWORD,DWORD,CHAR*,INT*,DetectEncodingInfo*,INT*) PURE;
335         STDMETHOD(ValidateCodePage)(THIS) PURE;
336         STDMETHOD(GetCodePageDescription)(THIS_ UINT,LCID,LPWSTR,int) PURE;
337         STDMETHOD(IsCodePageInstallable)(THIS) PURE;
338         STDMETHOD(SetMimeDBSource)(THIS_ MIMECONTF) PURE;
339         STDMETHOD(GetNumberOfScripts)(THIS_ UINT*) PURE;
340         STDMETHOD(EnumScripts)(THIS_ DWORD,LANGID,IEnumScript**) PURE;
341 };
342 #undef INTERFACE
343
344
345 #pragma pack(pop)
346 #ifdef __cplusplus
347 }
348 #endif
349 #endif