blob: fa5346b892ea01bd642cba07e65950fc0f757377 [file] [log] [blame]
/*
* Copyright (C) 2004 Mike McCormack
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
import "unknwn.idl";
interface IStream;
/* FIXME: LANDID is defined in winnt.h and mlang.h in the platform SDK */
cpp_quote("#ifndef _WINNT_")
typedef WORD LANGID;
cpp_quote("#endif")
[
object,
pointer_default(unique)
]
interface IMLangCodePages : IUnknown
{
HRESULT GetCharCodePages(
[in] WCHAR chSrc,
DWORD *pdwCodePages);
HRESULT GetStrCodePages(
[in, size_is(cchSrc)] const WCHAR *pszSrc,
[in] long cchSrc,
[in] DWORD dwPriorityCodePages,
[out] DWORD *pdwCodePages,
[out] long *pcchCodePages);
HRESULT CodePageToCodePages(
[in] UINT uCodePage,
[out] DWORD *pdwCodePages);
HRESULT CodePagesToCodePage(
[in] DWORD dwCodePages,
[in] UINT uDefaultCodePage,
[out] UINT *puCodePage);
};
[
object,
pointer_default(unique)
]
interface IMLangFontLink : IMLangCodePages
{
HRESULT GetFontCodePages(
[in] HDC hDC,
[in] HFONT hFont,
[out] DWORD *pdwCodePages );
HRESULT MapFont(
[in] HDC hDC,
[in] DWORD dwCodePages,
[in] HFONT hSrcFont,
[out] HFONT *phDestFont);
HRESULT ReleaseFont(
[in] HFONT hFont);
HRESULT ResetFontMapping();
};
[
object,
pointer_default(unique)
]
interface IEnumScript : IUnknown
{
const USHORT MAX_SCRIPT_NAME = 48;
const USHORT MAX_MIMEFACE_NAME = 32;
typedef BYTE SCRIPT_ID;
typedef __int64 SCRIPT_IDS;
typedef enum tagSCRIPTCONTF
{
sidDefault = 0,
sidMerge = sidDefault + 1,
sidAsciiSym = sidMerge + 1,
sidAsciiLatin = sidAsciiSym + 1,
sidLatin = sidAsciiLatin + 1,
sidGreek = sidLatin + 1,
sidCyrillic = sidGreek + 1,
sidArmenian = sidCyrillic + 1,
sidHebrew = sidArmenian + 1,
sidArabic = sidHebrew + 1,
sidDevanagari = sidArabic + 1,
sidBengali = sidDevanagari + 1,
sidGurmukhi = sidBengali + 1,
sidGujarati = sidGurmukhi + 1,
sidOriya = sidGujarati + 1,
sidTamil = sidOriya + 1,
sidTelugu = sidTamil + 1,
sidKannada = sidTelugu + 1,
sidMalayalam = sidKannada + 1,
sidThai = sidMalayalam + 1,
sidLao = sidThai + 1,
sidTibetan = sidLao + 1,
sidGeorgian = sidTibetan + 1,
sidHangul = sidGeorgian + 1,
sidKana = sidHangul + 1,
sidBopomofo = sidKana + 1,
sidHan = sidBopomofo + 1,
sidEthiopic = sidHan + 1,
sidCanSyllabic = sidEthiopic + 1,
sidCherokee = sidCanSyllabic + 1,
sidYi = sidCherokee + 1,
sidBraille = sidYi + 1,
sidRunic = sidBraille + 1,
sidOgham = sidRunic + 1,
sidSinhala = sidOgham + 1,
sidSyriac = sidSinhala + 1,
sidBurmese = sidSyriac + 1,
sidKhmer = sidBurmese + 1,
sidThaana = sidKhmer + 1,
sidMongolian = sidThaana + 1,
sidUserDefined = sidMongolian + 1,
sidLim = sidUserDefined + 1,
sidFEFirst = sidHangul,
sidFELast = sidHan
} SCRIPTCONTF;
typedef enum tagSCRIPTFONTCONTF
{
SCRIPTCONTF_FIXED_FONT = 0x1,
SCRIPTCONTF_PROPORTIONAL_FONT = 0x2,
SCRIPTCONTF_SCRIPT_USER = 0x10000,
SCRIPTCONTF_SCRIPT_HIDE = 0x20000,
SCRIPTCONTF_SCRIPT_SYSTEM = 0x40000
} SCRIPTFONTCONTF;
typedef struct tagSCRIPFONTINFO
{
SCRIPT_IDS scripts;
WCHAR wszFont[MAX_MIMEFACE_NAME];
} SCRIPTFONTINFO, *PSCRIPTFONTINFO;
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;
HRESULT Clone(
[out] IEnumScript **ppEnum);
HRESULT Next(
[in] ULONG celt,
[out] PSCRIPTINFO rgelt,
[out] ULONG *pceltFetched);
HRESULT Reset();
HRESULT Skip(
[in] ULONG celt);
};
[
object,
pointer_default(unique)
]
interface IEnumCodePage : IUnknown
{
const USHORT MAX_MIMECP_NAME = 64;
const USHORT MAX_MIMECSET_NAME = 50;
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 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;
HRESULT Clone(
[out] IEnumCodePage **ppEnum);
HRESULT Next(
[in] ULONG celt,
[out] PMIMECPINFO rgelt,
[out] ULONG *pceltFetched);
HRESULT Reset();
HRESULT Skip(
[in] ULONG celt);
};
[
object,
pointer_default(unique)
]
interface IMLangConvertCharset : IUnknown
{
HRESULT Initialize(
[in] UINT uiSrcCodePage,
[in] UINT uiDstCodePage,
[in] DWORD dwProperty);
HRESULT GetSourceCodePage(
[out] UINT *puiSrcCodePage);
HRESULT GetDestinationCodePage(
[out] UINT *puiDstCodePage);
HRESULT GetProperty(
[out] DWORD *pdwProperty);
HRESULT DoConversion(
[in] BYTE *pSrcStr,
[in,out] UINT *pcSrcSize,
[in] BYTE *pDstStr,
[in,out] UINT *pcDstSize);
HRESULT DoConversionToUnicode(
[in] CHAR *pSrcStr,
[in,out] UINT *pcSrcSize,
[in] WCHAR *pDstStr,
[in,out] UINT *pcDstSize);
HRESULT DoConversionFromUnicode(
[in] WCHAR *pSrcStr,
[in,out] UINT *pcSrcSize,
[in] CHAR *pDstStr,
[in,out] UINT *pcDstSize);
};
[
object,
pointer_default(unique)
]
interface IEnumRfc1766 : IUnknown
{
typedef struct tagRFC1766INFO
{
LCID lcid;
WCHAR wszRfc1766[MAX_RFC1766_NAME];
WCHAR wszLocaleName[MAX_LOCALE_NAME];
} RFC1766INFO, *PRFC1766INFO;
HRESULT Clone(
[out] IEnumRfc1766 **ppEnum);
HRESULT Next(
[in] ULONG celt,
[out] PRFC1766INFO rgelt,
[out] ULONG *pceltFetched);
HRESULT Reset();
HRESULT Skip(
[in] ULONG celt);
};
[
object,
pointer_default(unique)
]
interface IMultiLanguage : IUnknown
{
HRESULT GetNumberOfCodePageInfo(
[out] UINT *pcCodePage);
HRESULT GetCodePageInfo(
[in] UINT uiCodePage,
[out] PMIMECPINFO pCodePageInfo);
HRESULT GetFamilyCodePage(
[in] UINT uiCodePage,
[out] UINT *puiFamilyCodePage);
HRESULT EnumCodePages(
[in] DWORD grfFlags,
[out] IEnumCodePage **ppEnumCodePage);
HRESULT GetCharsetInfo(
[in] BSTR Charset,
[in] PMIMECSETINFO pCharsetInfo);
HRESULT IsConvertible(
[in] DWORD dwSrcEncoding,
[in] DWORD dwDstEncoding);
HRESULT ConvertString(
[in,out] DWORD *pdwMode,
[in] DWORD dwSrcEncoding,
[in] DWORD dwDstEncoding,
[in] BYTE *pSrcStr,
[in,out] UINT *pcSrcSize,
[in] BYTE *pDstStr,
[in,out] UINT *pcDstSize);
HRESULT ConvertStringToUnicode(
[in,out] DWORD *pdwMode,
[in] DWORD dwEncoding,
[in] CHAR *pSrcStr,
[in,out] UINT *pcSrcSize,
[in] WCHAR *pDstStr,
[in,out] UINT *pcDstSize);
HRESULT ConvertStringFromUnicode(
[in,out] DWORD *pdwMode,
[in] DWORD dwEncoding,
[in] WCHAR *pSrcStr,
[in,out] UINT *pcSrcSize,
[in] CHAR *pDstStr,
[in,out] UINT *pcDstSize);
HRESULT ConvertStringReset();
HRESULT GetRfc1766FromLcid(
[in] LCID Locale,
[out] BSTR *pbstrRfc1766);
HRESULT GetLcidFromRfc1766(
[out] LCID *pLocale,
[in] BSTR bstrRfc1766);
HRESULT EnumRfc1766(
[out] IEnumRfc1766 **ppEnumRfc1766);
HRESULT GetRfc1766Info(
[in] LCID Locale,
[out] PRFC1766INFO pRfc1766Info);
HRESULT CreateConvertCharset(
[in] UINT uiSrcCodePage,
[in] UINT uiDstCodePage,
[in] DWORD dwProperty,
[out] IMLangConvertCharset **ppMLangConvertCharset);
};
[
object,
pointer_default(unique)
]
interface IMultiLanguage2 : IUnknown
{
typedef struct tagDetectEncodingInfo
{
UINT nLangID;
UINT nCodePage;
INT nDocPercent;
INT nConfidence;
} DetectEncodingInfo, *pDetectEncodingInfo;
HRESULT GetNumberOfCodePageInfo(
[out] UINT *pcCodePage);
HRESULT GetCodePageInfo(
[in] UINT uiCodePage,
[in] LANGID LangId,
[out] PMIMECPINFO pCodePageInfo);
HRESULT GetFamilyCodePage(
[in] UINT uiCodePage,
[out] UINT *puiFamilyCodePage);
HRESULT EnumCodePages(
[in] DWORD grfFlags,
[in] LANGID LangId,
[out] IEnumCodePage **ppEnumCodePage);
HRESULT GetCharsetInfo(
[in] BSTR Charset,
[in] PMIMECSETINFO pCharsetInfo);
HRESULT IsConvertible(
[in] DWORD dwSrcEncoding,
[in] DWORD dwDstEncoding);
HRESULT ConvertString(
[in,out] DWORD *pdwMode,
[in] DWORD dwSrcEncoding,
[in] DWORD dwDstEncoding,
[in] BYTE *pSrcStr,
[in,out] UINT *pcSrcSize,
[in] BYTE *pDstStr,
[in,out] UINT *pcDstSize);
HRESULT ConvertStringToUnicode(
[in,out] DWORD *pdwMode,
[in] DWORD dwEncoding,
[in] CHAR *pSrcStr,
[in,out] UINT *pcSrcSize,
[in] WCHAR *pDstStr,
[in,out] UINT *pcDstSize);
HRESULT ConvertStringFromUnicode(
[in,out] DWORD *pdwMode,
[in] DWORD dwEncoding,
[in] WCHAR *pSrcStr,
[in,out] UINT *pcSrcSize,
[in] CHAR *pDstStr,
[in,out] UINT *pcDstSize);
HRESULT ConvertStringReset();
HRESULT GetRfc1766FromLcid(
[in] LCID Locale,
[out] BSTR *pbstrRfc1766);
HRESULT GetLcidFromRfc1766(
[out] LCID *pLocale,
[in] BSTR bstrRfc1766);
HRESULT EnumRfc1766(
[in] LANGID LangId,
[out] IEnumRfc1766 **ppEnumRfc1766);
HRESULT GetRfc1766Info(
[in] LCID Locale,
[in] LANGID LangId,
[out] PRFC1766INFO pRfc1766Info);
HRESULT CreateConvertCharset(
[in] UINT uiSrcCodePage,
[in] UINT uiDstCodePage,
[in] DWORD dwProperty,
[out] IMLangConvertCharset **ppMLangConvertCharset);
HRESULT ConvertStringInIStream(
[in,out] DWORD *pdwMode,
[in] DWORD dwFlag,
[in] WCHAR *lpFallBack,
[in] DWORD dwSrcEncoding,
[in] DWORD dwDstEncoding,
[in] IStream *pstmIn,
[in] IStream *pstmOut);
HRESULT ConvertStringToUnicodeEx(
[in,out] DWORD *pdwMode,
[in] DWORD dwEncoding,
[in] CHAR *pSrcStr,
[in,out] UINT *pcSrcSize,
[in] WCHAR *pDstStr,
[in,out] UINT *pcDstSize,
[in] DWORD dwFlag,
[in] WCHAR *lpFallBack);
HRESULT ConvertStringFromUnicodeEx(
[in,out] DWORD *pdwMode,
[in] DWORD dwEncoding,
[in] WCHAR *pSrcStr,
[in,out] UINT *pcSrcSize,
[in] CHAR *pDstStr,
[in,out] UINT *pcDstSize,
[in] DWORD dwFlag,
[in] WCHAR *lpFallBack);
HRESULT DetectCodepageInIStream(
[in] DWORD dwFlag,
[in] DWORD dwPrefWinCodePage,
[in] IStream *pstmIn,
[in,out] DetectEncodingInfo *lpEncoding,
[in,out] INT *pnScores);
HRESULT DetectInputCodepage(
[in] DWORD dwFlag,
[in] DWORD dwPrefWinCodePage,
[in] CHAR *pSrcStr,
[in,out] INT *pcSrcSize,
[in,out] DetectEncodingInfo *lpEncoding,
[in,out] INT *pnScores);
HRESULT ValidateCodePage(
[in] UINT uiCodePage,
[in] HWND hwnd);
HRESULT GetCodePageDescription(
[in] UINT uiCodePage,
[in] LCID lcid,
[in,out] LPWSTR lpWideCharStr,
[in] int cchWideChar);
HRESULT IsCodePageInstallable(
[in] UINT uiCodePage);
HRESULT SetMimeDBSource(
[in] MIMECONTF dwSource);
HRESULT GetNumberOfScripts(
[out] UINT *pnScripts);
HRESULT EnumScripts(
[in] DWORD dwFlags,
[in] LANGID LangId,
[out] IEnumScript **ppEnumScript);
HRESULT ValidateCodePageEx( /* undocumented on MSDN */
[in] UINT uiCodePage,
[in] HWND hwnd,
[in] DWORD dwfIODControl);
};
[
uuid(275C23E2-3747-11d0-9FEA-00AA003f8646)
]
coclass CMultiLanguage
{
[default] interface IMultiLanguage;
interface IMLangCodePages;
interface IMLangFontLink;
/* interface IMLangLineBreakConsole; */
};
cpp_quote("STDAPI LcidToRfc1766A(LCID, LPSTR, INT);")
cpp_quote("STDAPI LcidToRfc1766W(LCID, LPWSTR, INT);")
cpp_quote("#define LcidToRfc1766 WINELIB_NAME_AW(LcidToRfc1766)")
cpp_quote("STDAPI Rfc1766ToLcidA(LCID *, LPCSTR);")
cpp_quote("STDAPI Rfc1766ToLcidW(LCID *, LPCWSTR);")
cpp_quote("#define Rfc1766ToLcid WINELIB_NAME_AW(Rfc1766ToLcid)")
cpp_quote("STDAPI GetGlobalFontLinkObject(void);")
cpp_quote("STDAPI IsConvertINetStringAvailable(DWORD, DWORD);")
cpp_quote("STDAPI ConvertINetString(LPDWORD, DWORD, DWORD, LPCSTR, LPINT, LPSTR, LPINT);")
cpp_quote("STDAPI ConvertINetMultiByteToUnicode(LPDWORD, DWORD, LPCSTR, LPINT, LPWSTR, LPINT);")
cpp_quote("STDAPI ConvertINetUnicodeToMultiByte(LPDWORD, DWORD, LPCWSTR, LPINT, LPSTR, LPINT);")
cpp_quote("DEFINE_GUID(IID_IMLangCodePages, 0x359F3443,0xBD4A,0x11D0,0xB1,0x88,0x00,0xAA,0x00,0x38,0xC9,0x69);")
cpp_quote("DEFINE_GUID(IID_IMLangFontLink, 0x359F3441,0xBD4A,0x11D0,0xB1,0x88,0x00,0xAA,0x00,0x38,0xC9,0x69);")
cpp_quote("DEFINE_GUID(IID_IMultiLanguage2, 0xDCCFC164,0x2B38,0x11d2,0xB7,0xEC,0x00,0xC0,0x4F,0x8F,0x5D,0x9A);")
cpp_quote("DEFINE_GUID(IID_IMultiLanguage, 0x275c23e1,0x3747,0x11d0,0x9f,0xea,0x00,0xaa,0x00,0x3f,0x86,0x46);")
cpp_quote("DEFINE_GUID(IID_IEnumCodePage, 0x275c23e3,0x3747,0x11d0,0x9f,0xea,0x00,0xaa,0x00,0x3f,0x86,0x46);")
cpp_quote("DEFINE_GUID(IID_IEnumScript, 0xae5f1430,0x388b,0x11d2,0x83,0x80,0x00,0xc0,0x4f,0x8f,0x5d,0xa1);")