#ifndef _MLANG_H #define _MLANG_H #if __GNUC__ >= 3 #pragma GCC system_header #endif #include #ifdef __cplusplus extern "C" { #endif #pragma pack(push,1) #define MAX_MIMECP_NAME 64 #define MAX_MIMECSET_NAME 50 #define MAX_SCRIPT_NAME 48 #define MAX_MIMEFACE_NAME 32 #define MAX_RFC1766_NAME 6 #define MAX_LOCALE_NAME 32 typedef enum tagMIMECONTF { MIMECONTF_MAILNEWS = 0x00000001, MIMECONTF_BROWSER = 0x00000002, MIMECONTF_MINIMAL = 0x00000004, MIMECONTF_IMPORT = 0x00000008, MIMECONTF_SAVABLE_MAILNEWS = 0x00000100, MIMECONTF_SAVABLE_BROWSER = 0x00000200, MIMECONTF_EXPORT = 0x00000400, MIMECONTF_PRIVCONVERTER = 0x00010000, MIMECONTF_VALID = 0x00020000, MIMECONTF_VALID_NLS = 0x00040000, MIMECONTF_MIME_IE4 = 0x10000000, MIMECONTF_MIME_LATEST = 0x20000000, MIMECONTF_MIME_REGISTRY = 0x40000000 } MIMECONTF; typedef enum tagMLCONVCHARF { MLCONVCHARF_NONE = 0, MLCONVCHARF_AUTODETECT = 1, MLCONVCHARF_NCR_ENTITIZE = 2, MLCONVCHARF_NAME_ENTITIZE = 4, MLCONVCHARF_USEDEFCHAR = 8, MLCONVCHARF_NOBESTFITCHARS = 16 } MLCONVCHAR; typedef enum tagMLCPF { MLDETECTF_MAILNEWS = 0x0001, MLDETECTF_BROWSER = 0x0002, MLDETECTF_VALID = 0x0004, MLDETECTF_VALID_NLS = 0x0008, MLDETECTF_PRESERVE_ORDER = 0x0010, MLDETECTF_PREFERRED_ONLY = 0x0020, MLDETECTF_FILTER_SPECIALCHAR = 0x0040 } MLCP; typedef enum tagMLDETECTCP { MLDETECTCP_NONE = 0, MLDETECTCP_7BIT = 1, MLDETECTCP_8BIT = 2, MLDETECTCP_DBCS = 4, MLDETECTCP_HTML = 8 } MLDETECTCP; typedef enum tagSCRIPTFONTCONTF { SCRIPTCONTF_FIXED_FONT = 0x00000001, SCRIPTCONTF_PROPORTIONAL_FONT = 0x00000002, SCRIPTCONTF_SCRIPT_USER = 0x00010000, SCRIPTCONTF_SCRIPT_HIDE = 0x00020000, SCRIPTCONTF_SCRIPT_SYSTEM = 0x00040000 } SCRIPTFONTCONTF; typedef enum tagSCRIPTCONTF { sidDefault, sidMerge, sidAsciiSym, sidAsciiLatin, sidLatin, sidGreek, sidCyrillic, sidArmenian, sidHebrew, sidArabic, sidDevanagari, sidBengali, sidGurmukhi, sidGujarati, sidOriya, sidTamil, sidTelugu, sidKannada, sidMalayalam, sidThai, sidLao, sidTibetan, sidGeorgian, sidHangul, sidKana, sidBopomofo, sidHan, sidEthiopic, sidCanSyllabic, sidCherokee, sidYi, sidBraille, sidRunic, sidOgham, sidSinhala, sidSyriac, sidBurmese, sidKhmer, sidThaana, sidMongolian, sidLim, sidFEFirst = sidHangul, sidFELast = sidHan } SCRIPTCONTF; typedef struct tagDetectEncodingInfo { UINT nLangID; UINT nCodePage; INT nDocPercent; INT nConfidence; } DetectEncodingInfo, *pDetectEncodingInfo; typedef struct tagMIMECPINFO { DWORD dwFlags; UINT uiCodePage; UINT uiFamilyCodePage; WCHAR wszDescription[MAX_MIMECP_NAME]; WCHAR wszWebCharset[MAX_MIMECSET_NAME]; WCHAR wszHeaderCharset[MAX_MIMECSET_NAME]; WCHAR wszBodyCharset[MAX_MIMECSET_NAME]; WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME]; WCHAR wszProportionalFont[MAX_MIMEFACE_NAME]; BYTE bGDICharset; } MIMECPINFO, *PMIMECPINFO; typedef struct tagMIMECSETINFO { UINT uiCodePage; UINT uiInternetEncoding; WCHAR wszCharset[MAX_MIMECSET_NAME]; } MIMECSETINFO, *PMIMECSETINFO; typedef struct tagRFC1766INFO { LCID lcid; WCHAR wszRfc1766[MAX_RFC1766_NAME]; WCHAR wszLocaleName[MAX_LOCALE_NAME]; } RFC1766INFO, *PRFC1766INFO; typedef BYTE SCRIPT_ID; typedef struct tagSCRIPTINFO { SCRIPT_ID ScriptId; UINT uiCodePage; WCHAR wszDescription[MAX_SCRIPT_NAME]; WCHAR wszFixedWidthFont[MAX_MIMEFACE_NAME]; WCHAR wszProportionalFont[MAX_MIMEFACE_NAME]; } SCRIPTINFO, *PSCRIPTINFO; typedef struct tagUNICODERANGE { WCHAR wcFrom; WCHAR wcTo; } UNICODERANGE; typedef struct tagSCRIPTFONTINFO SCRIPTFONTINFO; EXTERN_C const IID IID_IEnumCodePage; #define INTERFACE IEnumCodePage DECLARE_INTERFACE_(IEnumCodePage,IUnknown) { STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD(Clone)(THIS_ IEnumCodePage**) PURE; STDMETHOD(Next)(THIS_ ULONG,PMIMECPINFO,ULONG*) PURE; STDMETHOD(Reset)(THIS) PURE; STDMETHOD(Skip)(THIS_ ULONG) PURE; }; #undef INTERFACE EXTERN_C const IID IID_IEnumRfc1766; #define INTERFACE IEnumRfc1766 DECLARE_INTERFACE_(IEnumRfc1766,IUnknown) { STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD(Clone)(THIS_ IEnumRfc1766**) PURE; STDMETHOD(Next)(THIS_ ULONG,PRFC1766INFO,ULONG*) PURE; STDMETHOD(Reset)(THIS) PURE; STDMETHOD(Skip)(THIS_ ULONG) PURE; }; #undef INTERFACE EXTERN_C const IID IID_IEnumScript; #define INTERFACE IEnumScript DECLARE_INTERFACE_(IEnumScript,IUnknown) { STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD(Clone)(THIS_ IEnumScript**) PURE; STDMETHOD(Next)(THIS_ ULONG,PSCRIPTINFO,ULONG*) PURE; STDMETHOD(Reset)(THIS) PURE; STDMETHOD(Skip)(THIS_ ULONG) PURE; }; #undef INTERFACE EXTERN_C const IID IID_IMLangCodePages; #define INTERFACE IMLangCodePages DECLARE_INTERFACE_(IMLangCodePages,IUnknown) { STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD(GetCharCodePages)(THIS_ WCHAR,DWORD*) PURE; STDMETHOD(GetStrCodePages)(THIS_ const WCHAR *,long,DWORD,DWORD*,long*) PURE; STDMETHOD(CodePageToCodePages)(THIS_ UINT,DWORD*) PURE; STDMETHOD(CodePagesToCodePage)(THIS_ DWORD,UINT,UINT*) PURE; }; #undef INTERFACE EXTERN_C const IID IID_IMLangConvertCharset; #define INTERFACE IMLangConvertCharset DECLARE_INTERFACE_(IMLangConvertCharset,IUnknown) { STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD(Initialize)(THIS_ UINT,UINT,DWORD) PURE; STDMETHOD(GetSourceCodePage)(THIS_ UINT*) PURE; STDMETHOD(GetDestinationCodePage)(THIS_ UINT*) PURE; STDMETHOD(GetProperty)(THIS_ DWORD*) PURE; STDMETHOD(DoConversion)(THIS_ BYTE*,UINT*,BYTE*,UINT*) PURE; STDMETHOD(DoConversionToUnicode)(THIS_ CHAR*,UINT*,WCHAR*,UINT*) PURE; STDMETHOD(DoConversionFromUnicode)(THIS_ WCHAR*,UINT*,CHAR*,UINT*) PURE; }; #undef INTERFACE EXTERN_C const CLSID CLSID_CMLangConvertCharset; EXTERN_C const IID IID_IMLangFontLink; #define INTERFACE IMLangFontLink DECLARE_INTERFACE_(IMLangFontLink,IMLangCodePages) { STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD(GetCharCodePages)(THIS_ WCHAR,DWORD*) PURE; STDMETHOD(GetStrCodePages)(THIS_ const WCHAR *,long,DWORD,DWORD*,long*) PURE; STDMETHOD(CodePageToCodePages)(THIS_ UINT,DWORD*) PURE; STDMETHOD(CodePagesToCodePage)(THIS_ DWORD,UINT,UINT*) PURE; STDMETHOD(GetFontCodePages)(THIS_ HDC,HFONT,DWORD*) PURE; STDMETHOD(ReleaseFont)(THIS_ HFONT) PURE; STDMETHOD(ResetFontMapping)(THIS) PURE; STDMETHOD(MapFont)(THIS_ HDC,DWORD,WCHAR,HFONT*) PURE; }; #undef INTERFACE EXTERN_C const IID IID_IMLangFontLink2; #define INTERFACE IMLangFontLink2 DECLARE_INTERFACE_(IMLangFontLink2,IMLangCodePages) { STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD(GetCharCodePages)(THIS_ WCHAR,DWORD*) PURE; STDMETHOD(GetStrCodePages)(THIS_ const WCHAR *,long,DWORD,DWORD*,long*) PURE; STDMETHOD(CodePageToCodePages)(THIS_ UINT,DWORD*) PURE; STDMETHOD(CodePagesToCodePage)(THIS_ DWORD,UINT,UINT*) PURE; STDMETHOD(GetFontCodePages)(THIS_ HDC,HFONT,DWORD*) PURE; STDMETHOD(ReleaseFont)(THIS_ HFONT) PURE; STDMETHOD(ResetFontMapping)(THIS) PURE; STDMETHOD(MapFont)(THIS_ HDC,DWORD,WCHAR,HFONT*) PURE; STDMETHOD(GetFontUnicodeRange)(THIS_ HDC,UINT*,UNICODERANGE*) PURE; STDMETHOD(GetScriptFontInfo)(THIS_ SCRIPT_ID,DWORD,UINT*,SCRIPTFONTINFO*) PURE; STDMETHOD(CodePageToScriptID)(THIS) PURE; }; #undef INTERFACE EXTERN_C const IID IID_IMLangLineBreakConsole; #define INTERFACE IMLangLineBreakConsole DECLARE_INTERFACE_(IMLangLineBreakConsole,IMLangCodePages) { STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD(BreakLineML)(THIS) PURE; STDMETHOD(BreakLineW)(THIS_ LCID,const WCHAR*,long,long,long*,long*) PURE; STDMETHOD(BreakLineA)(THIS_ LCID,UINT,const CHAR*,long,long,long*,long*) PURE; }; #undef INTERFACE EXTERN_C const IID IID_IMultiLanguage; #define INTERFACE IMultiLanguage DECLARE_INTERFACE_(IMultiLanguage,IUnknown) { STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD(GetNumberOfCodePageInfo)(THIS_ UINT*) PURE; STDMETHOD(GetCodePageInfo)(THIS_ UINT,PMIMECPINFO) PURE; STDMETHOD(GetFamilyCodePage)(THIS_ UINT,UINT*) PURE; STDMETHOD(EnumCodePages)(THIS_ DWORD,IEnumCodePage**) PURE; STDMETHOD(GetCharsetInfo)(THIS_ BSTR,PMIMECSETINFO) PURE; STDMETHOD(IsConvertible)(THIS_ DWORD,DWORD) PURE; STDMETHOD(ConvertString)(THIS_ DWORD*,DWORD,DWORD,BYTE*,UINT*,BYTE*,UINT*) PURE; STDMETHOD(ConvertStringToUnicode)(THIS_ DWORD*,DWORD,CHAR*,UINT*,WCHAR*,UINT*) PURE; STDMETHOD(ConvertStringFromUnicode)(THIS_ DWORD*,DWORD,WCHAR*,UINT*,CHAR*,UINT*) PURE; STDMETHOD(ConvertStringReset)(THIS) PURE; STDMETHOD(GetRfc1766FromLcid)(THIS_ LCID,BSTR*) PURE; STDMETHOD(GetLcidFromRfc1766)(THIS_ LCID*,BSTR) PURE; STDMETHOD(EnumRfc1766)(THIS_ IEnumRfc1766**) PURE; STDMETHOD(GetRfc1766Info)(THIS_ LCID,PRFC1766INFO) PURE; STDMETHOD(CreateConvertCharset)(THIS_ UINT,UINT,DWORD,IMLangConvertCharset**) PURE; }; #undef INTERFACE EXTERN_C const CLSID CLSID_CMultiLanguage; EXTERN_C const IID IID_IMultiLanguage2; #define INTERFACE IMultiLanguage2 DECLARE_INTERFACE_(IMultiLanguage2,IUnknown) { STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD(GetNumberOfCodePageInfo)(THIS_ UINT*) PURE; STDMETHOD(GetCodePageInfo)(THIS_ UINT,PMIMECPINFO) PURE; STDMETHOD(GetFamilyCodePage)(THIS_ UINT,UINT*) PURE; STDMETHOD(EnumCodePages)(THIS_ DWORD,IEnumCodePage**) PURE; STDMETHOD(GetCharsetInfo)(THIS_ BSTR,PMIMECSETINFO) PURE; STDMETHOD(IsConvertible)(THIS_ DWORD,DWORD) PURE; STDMETHOD(ConvertString)(THIS_ DWORD*,DWORD,DWORD,BYTE*,UINT*,BYTE*,UINT*) PURE; STDMETHOD(ConvertStringToUnicode)(THIS_ DWORD*,DWORD,CHAR*,UINT*,WCHAR*,UINT*) PURE; STDMETHOD(ConvertStringFromUnicode)(THIS_ DWORD*,DWORD,WCHAR*,UINT*,CHAR*,UINT*) PURE; STDMETHOD(ConvertStringReset)(THIS) PURE; STDMETHOD(GetRfc1766FromLcid)(THIS_ LCID,BSTR*) PURE; STDMETHOD(GetLcidFromRfc1766)(THIS_ LCID*,BSTR) PURE; STDMETHOD(EnumRfc1766)(THIS_ IEnumRfc1766**) PURE; STDMETHOD(GetRfc1766Info)(THIS_ LCID,PRFC1766INFO) PURE; STDMETHOD(CreateConvertCharset)(THIS_ UINT,UINT,DWORD,IMLangConvertCharset**) PURE; STDMETHOD(ConvertStringInIStream)(THIS_ DWORD*,DWORD,WCHAR*,DWORD,DWORD,IStream*,IStream*) PURE; STDMETHOD(ConvertStringToUnicodeEx)(THIS_ DWORD*,DWORD,CHAR*,UINT*,WCHAR*,UINT*,DWORD,WCHAR*) PURE; STDMETHOD(ConvertStringFromUnicodeEx)(THIS_ DWORD*,DWORD,WCHAR*,UINT*,CHAR*,UINT*,DWORD,WCHAR*) PURE; STDMETHOD(DetectCodepageInIStream)(THIS_ DWORD,DWORD,IStream*,DetectEncodingInfo*,INT*) PURE; STDMETHOD(DetectInputCodepage)(THIS_ DWORD,DWORD,CHAR*,INT*,DetectEncodingInfo*,INT*) PURE; STDMETHOD(ValidateCodePage)(THIS) PURE; STDMETHOD(GetCodePageDescription)(THIS_ UINT,LCID,LPWSTR,int) PURE; STDMETHOD(IsCodePageInstallable)(THIS) PURE; STDMETHOD(SetMimeDBSource)(THIS_ MIMECONTF) PURE; STDMETHOD(GetNumberOfScripts)(THIS_ UINT*) PURE; STDMETHOD(EnumScripts)(THIS_ DWORD,LANGID,IEnumScript**) PURE; }; #undef INTERFACE #pragma pack(pop) #ifdef __cplusplus } #endif #endif