| /* | |
| * 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 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);") |