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 |