|
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(ReleaseFont)(THIS_ HFONT) PURE; |
|
243 STDMETHOD(ResetFontMapping)(THIS) PURE; |
|
244 STDMETHOD(MapFont)(THIS_ HDC,DWORD,WCHAR,HFONT*) 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 |