350 lines
12 KiB
C
Executable File
350 lines
12 KiB
C
Executable File
#ifndef _MLANG_H
|
|
#define _MLANG_H
|
|
#if __GNUC__ >= 3
|
|
#pragma GCC system_header
|
|
#endif
|
|
|
|
#include <windows.h>
|
|
|
|
#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
|