ReactOS 0.4.17-dev-116-ga4b6fe9
mlang.c File Reference
#include <stdarg.h>
#include <stdio.h>
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "ole2.h"
#include "objbase.h"
#include "rpcproxy.h"
#include "mlang.h"
#include "mimeole.h"
#include "wine/debug.h"
#include "wine/list.h"
#include "initguid.h"
Include dependency graph for mlang.c:

Go to the source code of this file.

Classes

struct  MIME_CP_INFO
 
struct  mlang_data
 
struct  font_list
 
struct  map_font_enum_data
 
struct  IClassFactoryImpl
 
struct  object_creation_info
 
struct  tagMLang_impl
 
struct  tagEnumCodePage_impl
 
struct  tagEnumScript_impl
 
struct  tagEnumRfc1766_impl
 
struct  enum_locales_data
 
struct  convert_charset
 

Macros

#define COBJMACROS
 
#define HANKATA(A)   ((A >= 161) && (A <= 223))
 
#define ISEUC(A)   ((A >= 161) && (A <= 254))
 
#define NOTEUC(A, B)   (((A >= 129) && (A <= 159)) && ((B >= 64) && (B <= 160)))
 
#define SJIS1(A)   (((A >= 129) && (A <= 159)) || ((A >= 224) && (A <= 239)))
 
#define SJIS2(A)   ((A >= 64) && (A <= 252))
 
#define ISMARU(A)   ((A >= 202) && (A <= 206))
 
#define ISNIGORI(A)   (((A >= 182) && (A <= 196)) || ((A >= 202) && (A <= 206)))
 

Typedefs

typedef struct tagMLang_impl MLang_impl
 
typedef struct tagEnumCodePage_impl EnumCodePage_impl
 
typedef struct tagEnumScript_impl EnumScript_impl
 
typedef struct tagEnumRfc1766_impl EnumRfc1766_impl
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (mlang)
 
static HRESULT MultiLanguage_create (IUnknown *pUnkOuter, LPVOID *ppObj)
 
static HRESULT MLangConvertCharset_create (IUnknown *outer, void **obj)
 
static HRESULT EnumRfc1766_create (LANGID LangId, IEnumRfc1766 **ppEnum)
 
static void fill_cp_info (const struct mlang_data *ml_data, UINT index, MIMECPINFO *mime_cp_info)
 
static UINT DetectJapaneseCode (LPCSTR input, DWORD count)
 
static void jis2sjis (unsigned char *p1, unsigned char *p2)
 
static void sjis2jis (unsigned char *p1, unsigned char *p2)
 
static int han2zen (unsigned char *p1, unsigned char *p2)
 
static UINT ConvertJIS2SJIS (LPCSTR input, DWORD count, LPSTR output)
 
static int exit_shift (LPSTR out, int c)
 
static int enter_shift (LPSTR out, int c)
 
static UINT ConvertSJIS2JIS (LPCSTR input, DWORD count, LPSTR output)
 
static UINT ConvertJISJapaneseToUnicode (LPCSTR input, DWORD count, LPWSTR output, DWORD out_count)
 
static UINT ConvertUnknownJapaneseToUnicode (LPCSTR input, DWORD count, LPWSTR output, DWORD out_count)
 
static UINT ConvertJapaneseUnicodeToJIS (LPCWSTR input, DWORD count, LPSTR output, DWORD out_count)
 
static void LockModule (void)
 
static void UnlockModule (void)
 
HRESULT WINAPI ConvertINetMultiByteToUnicode (LPDWORD pdwMode, DWORD dwEncoding, LPCSTR pSrcStr, LPINT pcSrcSize, LPWSTR pDstStr, LPINT pcDstSize)
 
HRESULT WINAPI ConvertINetUnicodeToMultiByte (LPDWORD pdwMode, DWORD dwEncoding, LPCWSTR pSrcStr, LPINT pcSrcSize, LPSTR pDstStr, LPINT pcDstSize)
 
HRESULT WINAPI ConvertINetString (LPDWORD pdwMode, DWORD dwSrcEncoding, DWORD dwDstEncoding, LPCSTR pSrcStr, LPINT pcSrcSize, LPSTR pDstStr, LPINT pcDstSize)
 
static HRESULT GetFamilyCodePage (UINT uiCodePage, UINT *puiFamilyCodePage)
 
HRESULT WINAPI IsConvertINetStringAvailable (DWORD dwSrcEncoding, DWORD dwDstEncoding)
 
static HRESULT lcid_to_rfc1766A (LCID lcid, LPSTR rfc1766, INT len)
 
static HRESULT lcid_to_rfc1766W (LCID lcid, LPWSTR rfc1766, INT len)
 
HRESULT WINAPI LcidToRfc1766A (LCID lcid, LPSTR pszRfc1766, INT nChar)
 
HRESULT WINAPI LcidToRfc1766W (LCID lcid, LPWSTR pszRfc1766, INT nChar)
 
static HRESULT lcid_from_rfc1766 (IEnumRfc1766 *iface, LCID *lcid, LPCWSTR rfc1766)
 
HRESULT WINAPI Rfc1766ToLcidW (LCID *pLocale, LPCWSTR pszRfc1766)
 
HRESULT WINAPI Rfc1766ToLcidA (LCID *lcid, LPCSTR rfc1766A)
 
static INT CALLBACK map_font_enum_proc (const LOGFONTW *lf, const TEXTMETRICW *ntm, DWORD type, LPARAM lParam)
 
static HRESULT map_font (HDC hdc, DWORD codepages, HFONT src_font, HFONT *dst_font)
 
static HRESULT release_font (HFONT font)
 
static HRESULT clear_font_cache (void)
 
static IClassFactoryImplimpl_from_IClassFactory (IClassFactory *iface)
 
static HRESULT WINAPI MLANGCF_QueryInterface (IClassFactory *iface, REFIID riid, void **ppobj)
 
static ULONG WINAPI MLANGCF_AddRef (IClassFactory *iface)
 
static ULONG WINAPI MLANGCF_Release (IClassFactory *iface)
 
static HRESULT WINAPI MLANGCF_CreateInstance (IClassFactory *iface, IUnknown *pOuter, REFIID riid, void **ppobj)
 
static HRESULT WINAPI MLANGCF_LockServer (IClassFactory *iface, BOOL dolock)
 
HRESULT WINAPI DllGetClassObject (REFCLSID rclsid, REFIID iid, LPVOID *ppv)
 
static EnumCodePage_implimpl_from_IEnumCodePage (IEnumCodePage *iface)
 
static HRESULT WINAPI fnIEnumCodePage_QueryInterface (IEnumCodePage *iface, REFIID riid, void **ppvObject)
 
static ULONG WINAPI fnIEnumCodePage_AddRef (IEnumCodePage *iface)
 
static ULONG WINAPI fnIEnumCodePage_Release (IEnumCodePage *iface)
 
static HRESULT WINAPI fnIEnumCodePage_Clone (IEnumCodePage *iface, IEnumCodePage **ppEnum)
 
static HRESULT WINAPI fnIEnumCodePage_Next (IEnumCodePage *iface, ULONG celt, PMIMECPINFO rgelt, ULONG *pceltFetched)
 
static HRESULT WINAPI fnIEnumCodePage_Reset (IEnumCodePage *iface)
 
static HRESULT WINAPI fnIEnumCodePage_Skip (IEnumCodePage *iface, ULONG celt)
 
static HRESULT EnumCodePage_create (MLang_impl *mlang, DWORD grfFlags, LANGID LangId, IEnumCodePage **ppEnumCodePage)
 
static EnumScript_implimpl_from_IEnumScript (IEnumScript *iface)
 
static HRESULT WINAPI fnIEnumScript_QueryInterface (IEnumScript *iface, REFIID riid, void **ppvObject)
 
static ULONG WINAPI fnIEnumScript_AddRef (IEnumScript *iface)
 
static ULONG WINAPI fnIEnumScript_Release (IEnumScript *iface)
 
static HRESULT WINAPI fnIEnumScript_Clone (IEnumScript *iface, IEnumScript **ppEnum)
 
static HRESULT WINAPI fnIEnumScript_Next (IEnumScript *iface, ULONG celt, PSCRIPTINFO rgelt, ULONG *pceltFetched)
 
static HRESULT WINAPI fnIEnumScript_Reset (IEnumScript *iface)
 
static HRESULT WINAPI fnIEnumScript_Skip (IEnumScript *iface, ULONG celt)
 
static HRESULT EnumScript_create (MLang_impl *mlang, DWORD dwFlags, LANGID LangId, IEnumScript **ppEnumScript)
 
static MLang_implimpl_from_IMLangFontLink (IMLangFontLink *iface)
 
static HRESULT WINAPI fnIMLangFontLink_QueryInterface (IMLangFontLink *iface, REFIID riid, void **ppvObject)
 
static ULONG WINAPI fnIMLangFontLink_AddRef (IMLangFontLink *iface)
 
static ULONG WINAPI fnIMLangFontLink_Release (IMLangFontLink *iface)
 
static HRESULT WINAPI fnIMLangFontLink_GetCharCodePages (IMLangFontLink *iface, WCHAR ch_src, DWORD *codepages)
 
static HRESULT WINAPI fnIMLangFontLink_GetStrCodePages (IMLangFontLink *iface, const WCHAR *src, LONG src_len, DWORD priority_cp, DWORD *codepages, LONG *ret_len)
 
static HRESULT WINAPI fnIMLangFontLink_CodePageToCodePages (IMLangFontLink *iface, UINT codepage, DWORD *codepages)
 
static HRESULT WINAPI fnIMLangFontLink_CodePagesToCodePage (IMLangFontLink *iface, DWORD codepages, UINT def_codepage, UINT *codepage)
 
static HRESULT WINAPI fnIMLangFontLink_GetFontCodePages (IMLangFontLink *iface, HDC hdc, HFONT hfont, DWORD *codepages)
 
static HRESULT WINAPI fnIMLangFontLink_MapFont (IMLangFontLink *iface, HDC hDC, DWORD dwCodePages, HFONT hSrcFont, HFONT *phDestFont)
 
static HRESULT WINAPI fnIMLangFontLink_ReleaseFont (IMLangFontLink *iface, HFONT hFont)
 
static HRESULT WINAPI fnIMLangFontLink_ResetFontMapping (IMLangFontLink *iface)
 
static MLang_implimpl_from_IMultiLanguage (IMultiLanguage *iface)
 
static HRESULT WINAPI fnIMultiLanguage_QueryInterface (IMultiLanguage *iface, REFIID riid, void **obj)
 
static ULONG WINAPI fnIMultiLanguage_AddRef (IMultiLanguage *iface)
 
static ULONG WINAPI fnIMultiLanguage_Release (IMultiLanguage *iface)
 
static HRESULT WINAPI fnIMultiLanguage_GetNumberOfCodePageInfo (IMultiLanguage *iface, UINT *cp)
 
static HRESULT WINAPI fnIMultiLanguage_GetCodePageInfo (IMultiLanguage *iface, UINT uiCodePage, PMIMECPINFO pCodePageInfo)
 
static HRESULT WINAPI fnIMultiLanguage_GetFamilyCodePage (IMultiLanguage *iface, UINT cp, UINT *family_cp)
 
static HRESULT WINAPI fnIMultiLanguage_EnumCodePages (IMultiLanguage *iface, DWORD grfFlags, IEnumCodePage **ppEnumCodePage)
 
static HRESULT WINAPI fnIMultiLanguage_GetCharsetInfo (IMultiLanguage *iface, BSTR Charset, PMIMECSETINFO pCharsetInfo)
 
static HRESULT WINAPI fnIMultiLanguage_IsConvertible (IMultiLanguage *iface, DWORD src_enc, DWORD dst_enc)
 
static HRESULT WINAPI fnIMultiLanguage_ConvertString (IMultiLanguage *iface, DWORD *mode, DWORD src_enc, DWORD dst_enc, BYTE *src, UINT *src_size, BYTE *dest, UINT *dest_size)
 
static HRESULT WINAPI fnIMultiLanguage_ConvertStringToUnicode (IMultiLanguage *iface, DWORD *mode, DWORD src_enc, CHAR *src, UINT *src_size, WCHAR *dest, UINT *dest_size)
 
static HRESULT WINAPI fnIMultiLanguage_ConvertStringFromUnicode (IMultiLanguage *iface, DWORD *mode, DWORD encoding, WCHAR *src, UINT *src_size, CHAR *dest, UINT *dest_size)
 
static HRESULT WINAPI fnIMultiLanguage_ConvertStringReset (IMultiLanguage *iface)
 
static HRESULT WINAPI fnIMultiLanguage_GetRfc1766FromLcid (IMultiLanguage *iface, LCID lcid, BSTR *pbstrRfc1766)
 
static HRESULT WINAPI fnIMultiLanguage_GetLcidFromRfc1766 (IMultiLanguage *iface, LCID *locale, BSTR rfc1766)
 
static EnumRfc1766_implimpl_from_IEnumRfc1766 (IEnumRfc1766 *iface)
 
static HRESULT WINAPI fnIEnumRfc1766_QueryInterface (IEnumRfc1766 *iface, REFIID riid, void **ppvObject)
 
static ULONG WINAPI fnIEnumRfc1766_AddRef (IEnumRfc1766 *iface)
 
static ULONG WINAPI fnIEnumRfc1766_Release (IEnumRfc1766 *iface)
 
static HRESULT WINAPI fnIEnumRfc1766_Clone (IEnumRfc1766 *iface, IEnumRfc1766 **ppEnum)
 
static HRESULT WINAPI fnIEnumRfc1766_Next (IEnumRfc1766 *iface, ULONG celt, PRFC1766INFO rgelt, ULONG *pceltFetched)
 
static HRESULT WINAPI fnIEnumRfc1766_Reset (IEnumRfc1766 *iface)
 
static HRESULT WINAPI fnIEnumRfc1766_Skip (IEnumRfc1766 *iface, ULONG celt)
 
static BOOL CALLBACK enum_locales_proc (LPWSTR locale, DWORD flags, LPARAM lparam)
 
static HRESULT WINAPI fnIMultiLanguage_EnumRfc1766 (IMultiLanguage *iface, IEnumRfc1766 **ppEnumRfc1766)
 
static HRESULT WINAPI fnIMultiLanguage_GetRfc1766Info (IMultiLanguage *iface, LCID Locale, PRFC1766INFO pRfc1766Info)
 
static HRESULT WINAPI fnIMultiLanguage_CreateConvertCharset (IMultiLanguage *iface, UINT src_cp, UINT dst_cp, DWORD prop, IMLangConvertCharset **convert_charset)
 
static MLang_implimpl_from_IMultiLanguage3 (IMultiLanguage3 *iface)
 
static HRESULT WINAPI fnIMultiLanguage3_QueryInterface (IMultiLanguage3 *iface, REFIID riid, void **obj)
 
static ULONG WINAPI fnIMultiLanguage3_AddRef (IMultiLanguage3 *iface)
 
static ULONG WINAPI fnIMultiLanguage3_Release (IMultiLanguage3 *iface)
 
static HRESULT WINAPI fnIMultiLanguage3_GetNumberOfCodePageInfo (IMultiLanguage3 *iface, UINT *pcCodePage)
 
static HRESULT WINAPI fnIMultiLanguage3_GetCodePageInfo (IMultiLanguage3 *iface, UINT uiCodePage, LANGID LangId, PMIMECPINFO pCodePageInfo)
 
static HRESULT WINAPI fnIMultiLanguage3_GetFamilyCodePage (IMultiLanguage3 *iface, UINT uiCodePage, UINT *puiFamilyCodePage)
 
static HRESULT WINAPI fnIMultiLanguage3_EnumCodePages (IMultiLanguage3 *iface, DWORD grfFlags, LANGID LangId, IEnumCodePage **ppEnumCodePage)
 
static HRESULT WINAPI fnIMultiLanguage3_GetCharsetInfo (IMultiLanguage3 *iface, BSTR Charset, PMIMECSETINFO pCharsetInfo)
 
static HRESULT WINAPI fnIMultiLanguage3_IsConvertible (IMultiLanguage3 *iface, DWORD dwSrcEncoding, DWORD dwDstEncoding)
 
static HRESULT WINAPI fnIMultiLanguage3_ConvertString (IMultiLanguage3 *iface, DWORD *pdwMode, DWORD dwSrcEncoding, DWORD dwDstEncoding, BYTE *pSrcStr, UINT *pcSrcSize, BYTE *pDstStr, UINT *pcDstSize)
 
static HRESULT WINAPI fnIMultiLanguage3_ConvertStringToUnicode (IMultiLanguage3 *iface, DWORD *pdwMode, DWORD dwEncoding, CHAR *pSrcStr, UINT *pcSrcSize, WCHAR *pDstStr, UINT *pcDstSize)
 
static HRESULT WINAPI fnIMultiLanguage3_ConvertStringFromUnicode (IMultiLanguage3 *iface, DWORD *pdwMode, DWORD dwEncoding, WCHAR *pSrcStr, UINT *pcSrcSize, CHAR *pDstStr, UINT *pcDstSize)
 
static HRESULT WINAPI fnIMultiLanguage3_ConvertStringReset (IMultiLanguage3 *iface)
 
static HRESULT WINAPI fnIMultiLanguage3_GetRfc1766FromLcid (IMultiLanguage3 *iface, LCID lcid, BSTR *pbstrRfc1766)
 
static HRESULT WINAPI fnIMultiLanguage3_GetLcidFromRfc1766 (IMultiLanguage3 *iface, LCID *pLocale, BSTR bstrRfc1766)
 
static HRESULT WINAPI fnIMultiLanguage3_EnumRfc1766 (IMultiLanguage3 *iface, LANGID LangId, IEnumRfc1766 **ppEnumRfc1766)
 
static HRESULT WINAPI fnIMultiLanguage3_GetRfc1766Info (IMultiLanguage3 *iface, LCID Locale, LANGID LangId, PRFC1766INFO pRfc1766Info)
 
static HRESULT WINAPI fnIMultiLanguage3_CreateConvertCharset (IMultiLanguage3 *iface, UINT src_cp, UINT dst_cp, DWORD prop, IMLangConvertCharset **convert_charset)
 
static HRESULT WINAPI fnIMultiLanguage3_ConvertStringInIStream (IMultiLanguage3 *iface, DWORD *pdwMode, DWORD dwFlag, WCHAR *lpFallBack, DWORD dwSrcEncoding, DWORD dwDstEncoding, IStream *pstmIn, IStream *pstmOut)
 
static HRESULT WINAPI fnIMultiLanguage3_ConvertStringToUnicodeEx (IMultiLanguage3 *iface, DWORD *pdwMode, DWORD dwEncoding, CHAR *pSrcStr, UINT *pcSrcSize, WCHAR *pDstStr, UINT *pcDstSize, DWORD dwFlag, WCHAR *lpFallBack)
 
static HRESULT WINAPI fnIMultiLanguage3_ConvertStringFromUnicodeEx (IMultiLanguage3 *This, DWORD *pdwMode, DWORD dwEncoding, WCHAR *pSrcStr, UINT *pcSrcSize, CHAR *pDstStr, UINT *pcDstSize, DWORD dwFlag, WCHAR *lpFallBack)
 
static HRESULT WINAPI fnIMultiLanguage3_DetectCodepageInIStream (IMultiLanguage3 *iface, DWORD dwFlag, DWORD dwPrefWinCodePage, IStream *pstmIn, DetectEncodingInfo *lpEncoding, INT *pnScores)
 
static HRESULT WINAPI fnIMultiLanguage3_DetectInputCodepage (IMultiLanguage3 *iface, DWORD dwFlag, DWORD dwPrefWinCodePage, CHAR *pSrcStr, INT *pcSrcSize, DetectEncodingInfo *lpEncoding, INT *pnScores)
 
static HRESULT WINAPI fnIMultiLanguage3_ValidateCodePage (IMultiLanguage3 *iface, UINT uiCodePage, HWND hwnd)
 
static HRESULT WINAPI fnIMultiLanguage3_GetCodePageDescription (IMultiLanguage3 *iface, UINT uiCodePage, LCID lcid, LPWSTR lpWideCharStr, int cchWideChar)
 
static HRESULT WINAPI fnIMultiLanguage3_IsCodePageInstallable (IMultiLanguage3 *iface, UINT uiCodePage)
 
static HRESULT WINAPI fnIMultiLanguage3_SetMimeDBSource (IMultiLanguage3 *iface, MIMECONTF dwSource)
 
static HRESULT WINAPI fnIMultiLanguage3_GetNumberOfScripts (IMultiLanguage3 *iface, UINT *pnScripts)
 
static HRESULT WINAPI fnIMultiLanguage3_EnumScripts (IMultiLanguage3 *iface, DWORD dwFlags, LANGID LangId, IEnumScript **ppEnumScript)
 
static HRESULT WINAPI fnIMultiLanguage3_ValidateCodePageEx (IMultiLanguage3 *iface, UINT uiCodePage, HWND hwnd, DWORD dwfIODControl)
 
static HRESULT WINAPI fnIMultiLanguage3_DetectOutboundCodePage (IMultiLanguage3 *iface, DWORD dwFlags, LPCWSTR lpWideCharStr, UINT cchWideChar, UINT *puiPreferredCodePages, UINT nPreferredCodePages, UINT *puiDetectedCodePages, UINT *pnDetectedCodePages, WCHAR *lpSpecialChar)
 
static HRESULT WINAPI fnIMultiLanguage3_DetectOutboundCodePageInIStream (IMultiLanguage3 *iface, DWORD dwFlags, IStream *pStrIn, UINT *puiPreferredCodePages, UINT nPreferredCodePages, UINT *puiDetectedCodePages, UINT *pnDetectedCodePages, WCHAR *lpSpecialChar)
 
static MLang_implimpl_from_IMLangFontLink2 (IMLangFontLink2 *iface)
 
static HRESULT WINAPI fnIMLangFontLink2_QueryInterface (IMLangFontLink2 *iface, REFIID riid, void **ppvObject)
 
static ULONG WINAPI fnIMLangFontLink2_AddRef (IMLangFontLink2 *iface)
 
static ULONG WINAPI fnIMLangFontLink2_Release (IMLangFontLink2 *iface)
 
static HRESULT WINAPI fnIMLangFontLink2_GetCharCodePages (IMLangFontLink2 *iface, WCHAR ch_src, DWORD *ret_codepages)
 
static HRESULT WINAPI fnIMLangFontLink2_GetStrCodePages (IMLangFontLink2 *iface, const WCHAR *src, LONG src_len, DWORD priority_cp, DWORD *codepages, LONG *ret_len)
 
static HRESULT WINAPI fnIMLangFontLink2_CodePageToCodePages (IMLangFontLink2 *iface, UINT codepage, DWORD *codepages)
 
static HRESULT WINAPI fnIMLangFontLink2_CodePagesToCodePage (IMLangFontLink2 *iface, DWORD codepages, UINT def_codepage, UINT *codepage)
 
static HRESULT WINAPI fnIMLangFontLink2_GetFontCodePages (IMLangFontLink2 *iface, HDC hdc, HFONT hfont, DWORD *codepages)
 
static HRESULT WINAPI fnIMLangFontLink2_ReleaseFont (IMLangFontLink2 *This, HFONT hFont)
 
static HRESULT WINAPI fnIMLangFontLink2_ResetFontMapping (IMLangFontLink2 *This)
 
static HRESULT WINAPI fnIMLangFontLink2_MapFont (IMLangFontLink2 *This, HDC hDC, DWORD dwCodePages, WCHAR chSrc, HFONT *pFont)
 
static HRESULT WINAPI fnIMLangFontLink2_GetFontUnicodeRanges (IMLangFontLink2 *This, HDC hDC, UINT *puiRanges, UNICODERANGE *pUranges)
 
static HRESULT WINAPI fnIMLangFontLink2_GetScriptFontInfo (IMLangFontLink2 *This, SCRIPT_ID sid, DWORD dwFlags, UINT *puiFonts, SCRIPTFONTINFO *pScriptFont)
 
static HRESULT WINAPI fnIMLangFontLink2_CodePageToScriptID (IMLangFontLink2 *This, UINT uiCodePage, SCRIPT_ID *pSid)
 
static MLang_implimpl_from_IMLangLineBreakConsole (IMLangLineBreakConsole *iface)
 
static HRESULT WINAPI fnIMLangLineBreakConsole_QueryInterface (IMLangLineBreakConsole *iface, REFIID riid, void **ppvObject)
 
static ULONG WINAPI fnIMLangLineBreakConsole_AddRef (IMLangLineBreakConsole *iface)
 
static ULONG WINAPI fnIMLangLineBreakConsole_Release (IMLangLineBreakConsole *iface)
 
static HRESULT WINAPI fnIMLangLineBreakConsole_BreakLineML (IMLangLineBreakConsole *iface, IMLangString *pSrcMLStr, LONG lSrcPos, LONG lSrcLen, LONG cMinColumns, LONG cMaxColumns, LONG *plLineLen, LONG *plSkipLen)
 
static HRESULT WINAPI fnIMLangLineBreakConsole_BreakLineW (IMLangLineBreakConsole *iface, LCID locale, const WCHAR *pszSrc, LONG cchSrc, LONG cMaxColumns, LONG *pcchLine, LONG *pcchSkip)
 
static HRESULT WINAPI fnIMLangLineBreakConsole_BreakLineA (IMLangLineBreakConsole *iface, LCID locale, UINT uCodePage, const CHAR *pszSrc, LONG cchSrc, LONG cMaxColumns, LONG *pcchLine, LONG *pcchSkip)
 
static struct convert_charsetimpl_from_IMLangConvertCharset (IMLangConvertCharset *iface)
 
static HRESULT WINAPI MLangConvertCharset_QueryInterface (IMLangConvertCharset *iface, REFIID riid, void **obj)
 
static ULONG WINAPI MLangConvertCharset_AddRef (IMLangConvertCharset *iface)
 
static ULONG WINAPI MLangConvertCharset_Release (IMLangConvertCharset *iface)
 
static HRESULT WINAPI MLangConvertCharset_Initialize (IMLangConvertCharset *iface, UINT src_cp, UINT dst_cp, DWORD prop)
 
static HRESULT WINAPI MLangConvertCharset_GetSourceCodePage (IMLangConvertCharset *iface, UINT *src_cp)
 
static HRESULT WINAPI MLangConvertCharset_GetDestinationCodePage (IMLangConvertCharset *iface, UINT *dst_cp)
 
static HRESULT WINAPI MLangConvertCharset_GetProperty (IMLangConvertCharset *iface, DWORD *prop)
 
static HRESULT WINAPI MLangConvertCharset_DoConversion (IMLangConvertCharset *iface, BYTE *src, UINT *src_size, BYTE *dest, UINT *dest_size)
 
static HRESULT WINAPI MLangConvertCharset_DoConversionToUnicode (IMLangConvertCharset *iface, CHAR *src, UINT *src_size, WCHAR *dest, UINT *dest_size)
 
static HRESULT WINAPI MLangConvertCharset_DoConversionFromUnicode (IMLangConvertCharset *iface, WCHAR *src, UINT *src_size, CHAR *dest, UINT *dest_size)
 
HRESULT WINAPI DllCanUnloadNow (void)
 
static BOOL WINAPI allocate_font_link_cb (PINIT_ONCE init_once, PVOID args, PVOID *context)
 
HRESULT WINAPI GetGlobalFontLinkObject (IMLangFontLink **obj)
 

Variables

static INIT_ONCE font_link_global_init_once = INIT_ONCE_STATIC_INIT
 
static IUnknownfont_link_global = NULL
 
static const MIME_CP_INFO arabic_cp []
 
static const MIME_CP_INFO baltic_cp []
 
static const MIME_CP_INFO chinese_simplified_cp []
 
static const MIME_CP_INFO chinese_traditional_cp []
 
static const MIME_CP_INFO central_european_cp []
 
static const MIME_CP_INFO cyrillic_cp []
 
static const MIME_CP_INFO greek_cp []
 
static const MIME_CP_INFO hebrew_cp []
 
static const MIME_CP_INFO japanese_cp []
 
static const MIME_CP_INFO korean_cp []
 
static const MIME_CP_INFO thai_cp []
 
static const MIME_CP_INFO turkish_cp []
 
static const MIME_CP_INFO vietnamese_cp []
 
static const MIME_CP_INFO western_cp []
 
static const MIME_CP_INFO unicode_cp []
 
static const struct mlang_data mlang_data []
 
static struct list font_cache = LIST_INIT(font_cache)
 
static CRITICAL_SECTION font_cache_critical = { &font_cache_critical_debug, -1, 0, 0, 0, 0 }
 
static CRITICAL_SECTION_DEBUG font_cache_critical_debug
 
static LONG dll_count
 
static const struct object_creation_info object_creation []
 
static const IClassFactoryVtbl MLANGCF_Vtbl
 
static const IEnumCodePageVtbl IEnumCodePage_vtbl
 
static const IEnumScriptVtbl IEnumScript_vtbl
 
static const IMLangFontLinkVtbl IMLangFontLink_vtbl
 
static const IEnumRfc1766Vtbl IEnumRfc1766_vtbl
 
static const IMultiLanguageVtbl IMultiLanguage_vtbl
 
static const IMultiLanguage3Vtbl IMultiLanguage3_vtbl
 
static const IMLangFontLink2Vtbl IMLangFontLink2_vtbl
 
static const IMLangLineBreakConsoleVtbl IMLangLineBreakConsole_vtbl
 
static const IMLangConvertCharsetVtbl MLangConvertCharsetVtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 28 of file mlang.c.

◆ HANKATA

#define HANKATA (   A)    ((A >= 161) && (A <= 223))

Definition at line 551 of file mlang.c.

◆ ISEUC

#define ISEUC (   A)    ((A >= 161) && (A <= 254))

Definition at line 552 of file mlang.c.

◆ ISMARU

#define ISMARU (   A)    ((A >= 202) && (A <= 206))

Definition at line 556 of file mlang.c.

◆ ISNIGORI

#define ISNIGORI (   A)    (((A >= 182) && (A <= 196)) || ((A >= 202) && (A <= 206)))

Definition at line 557 of file mlang.c.

◆ NOTEUC

#define NOTEUC (   A,
  B 
)    (((A >= 129) && (A <= 159)) && ((B >= 64) && (B <= 160)))

Definition at line 553 of file mlang.c.

◆ SJIS1

#define SJIS1 (   A)    (((A >= 129) && (A <= 159)) || ((A >= 224) && (A <= 239)))

Definition at line 554 of file mlang.c.

◆ SJIS2

#define SJIS2 (   A)    ((A >= 64) && (A <= 252))

Definition at line 555 of file mlang.c.

Typedef Documentation

◆ EnumCodePage_impl

◆ EnumRfc1766_impl

◆ EnumScript_impl

◆ MLang_impl

Function Documentation

◆ allocate_font_link_cb()

static BOOL WINAPI allocate_font_link_cb ( PINIT_ONCE  init_once,
PVOID  args,
PVOID context 
)
static

Definition at line 3926 of file mlang.c.

3927{
3929}
#define NULL
Definition: types.h:112
static IUnknown * font_link_global
Definition: mlang.c:48
static HRESULT MultiLanguage_create(IUnknown *pUnkOuter, LPVOID *ppObj)
Definition: mlang.c:3864
#define SUCCEEDED(hr)
Definition: intsafe.h:50

Referenced by GetGlobalFontLinkObject().

◆ clear_font_cache()

static HRESULT clear_font_cache ( void  )
static

Definition at line 1448 of file mlang.c.

1449{
1450 struct font_list *font_list_entry;
1451 struct font_list *font_list_entry2;
1452
1454 LIST_FOR_EACH_ENTRY_SAFE(font_list_entry, font_list_entry2, &font_cache, struct font_list, list_entry)
1455 {
1456 list_remove(&font_list_entry->list_entry);
1457 DeleteObject(font_list_entry->font);
1458 free(font_list_entry);
1459 }
1461
1462 return S_OK;
1463}
static void list_remove(struct list_entry *entry)
Definition: list.h:90
#define free
Definition: debug_ros.c:5
static struct list font_cache
Definition: mlang.c:533
static CRITICAL_SECTION font_cache_critical
Definition: mlang.c:534
pKey DeleteObject()
#define S_OK
Definition: intsafe.h:52
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
Definition: list.h:204
HFONT font
Definition: mlang.c:529
struct list list_entry
Definition: mlang.c:527
Definition: list.h:27
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

Referenced by fnIMLangFontLink2_ResetFontMapping(), and fnIMLangFontLink_ResetFontMapping().

◆ ConvertINetMultiByteToUnicode()

HRESULT WINAPI ConvertINetMultiByteToUnicode ( LPDWORD  pdwMode,
DWORD  dwEncoding,
LPCSTR  pSrcStr,
LPINT  pcSrcSize,
LPWSTR  pDstStr,
LPINT  pcDstSize 
)

Definition at line 934 of file mlang.c.

941{
942 INT src_len = -1;
943
944 TRACE("%p %ld %s %p %p %p\n", pdwMode, dwEncoding,
945 debugstr_a(pSrcStr), pcSrcSize, pDstStr, pcDstSize);
946
947 if (!pcDstSize)
948 return E_FAIL;
949
950 if (!pcSrcSize)
951 pcSrcSize = &src_len;
952
953 if (!*pcSrcSize)
954 {
955 *pcDstSize = 0;
956 return S_OK;
957 }
958
959 /* forwarding euc-jp to EUC-JP */
960 if (dwEncoding == 51932)
961 dwEncoding = 20932;
962
963 switch (dwEncoding)
964 {
965 case CP_UNICODE:
966 if (*pcSrcSize == -1)
967 *pcSrcSize = lstrlenW((LPCWSTR)pSrcStr);
968 *pcDstSize = min(*pcSrcSize, *pcDstSize);
969 *pcSrcSize *= sizeof(WCHAR);
970 if (pDstStr)
971 memmove(pDstStr, pSrcStr, *pcDstSize * sizeof(WCHAR));
972 break;
973
974 case 50220:
975 case 50221:
976 case 50222:
977 *pcDstSize = ConvertJISJapaneseToUnicode(pSrcStr,*pcSrcSize,pDstStr,*pcDstSize);
978 break;
979 case 50932:
980 *pcDstSize = ConvertUnknownJapaneseToUnicode(pSrcStr,*pcSrcSize,pDstStr,*pcDstSize);
981 break;
982
983 default:
984 if (*pcSrcSize == -1)
985 *pcSrcSize = lstrlenA(pSrcStr);
986
987 if (pDstStr)
988 *pcDstSize = MultiByteToWideChar(dwEncoding, 0, pSrcStr, *pcSrcSize, pDstStr, *pcDstSize);
989 else
990 *pcDstSize = MultiByteToWideChar(dwEncoding, 0, pSrcStr, *pcSrcSize, NULL, 0);
991 break;
992 }
993
994 if (!*pcDstSize)
995 return E_FAIL;
996
997 return S_OK;
998}
#define E_FAIL
Definition: ddrawi.h:102
#define MultiByteToWideChar
Definition: compat.h:110
#define lstrlenW
Definition: compat.h:750
static UINT ConvertUnknownJapaneseToUnicode(LPCSTR input, DWORD count, LPWSTR output, DWORD out_count)
Definition: mlang.c:851
static UINT ConvertJISJapaneseToUnicode(LPCSTR input, DWORD count, LPWSTR output, DWORD out_count)
Definition: mlang.c:831
#define CP_UNICODE
Definition: stg_prop.c:73
#define debugstr_a
Definition: kernel32.h:31
int WINAPI lstrlenA(LPCSTR lpString)
Definition: lstring.c:145
#define memmove(s1, s2, n)
Definition: mkisofs.h:881
#define min(a, b)
Definition: monoChain.cc:55
short WCHAR
Definition: pedump.c:58
#define TRACE(s)
Definition: solgame.cpp:4
const uint16_t * LPCWSTR
Definition: typedefs.h:57
int32_t INT
Definition: typedefs.h:58

◆ ConvertINetString()

HRESULT WINAPI ConvertINetString ( LPDWORD  pdwMode,
DWORD  dwSrcEncoding,
DWORD  dwDstEncoding,
LPCSTR  pSrcStr,
LPINT  pcSrcSize,
LPSTR  pDstStr,
LPINT  pcDstSize 
)

Definition at line 1085 of file mlang.c.

1094{
1095 TRACE("%p %ld %ld %s %p %p %p\n", pdwMode, dwSrcEncoding, dwDstEncoding,
1096 debugstr_a(pSrcStr), pcSrcSize, pDstStr, pcDstSize);
1097
1098 if (dwSrcEncoding == CP_UNICODE)
1099 {
1100 INT cSrcSizeW;
1101 if (pcSrcSize && *pcSrcSize != -1)
1102 {
1103 cSrcSizeW = *pcSrcSize / sizeof(WCHAR);
1104 pcSrcSize = &cSrcSizeW;
1105 }
1106 return ConvertINetUnicodeToMultiByte(pdwMode, dwDstEncoding, (LPCWSTR)pSrcStr, pcSrcSize, pDstStr, pcDstSize);
1107 }
1108 else if (dwDstEncoding == CP_UNICODE)
1109 {
1110 HRESULT hr = ConvertINetMultiByteToUnicode(pdwMode, dwSrcEncoding, pSrcStr, pcSrcSize, (LPWSTR)pDstStr, pcDstSize);
1111 *pcDstSize *= sizeof(WCHAR);
1112 return hr;
1113 }
1114 else
1115 {
1116 INT cDstSizeW;
1117 LPWSTR pDstStrW;
1118 HRESULT hr;
1119
1120 TRACE("convert %s from %ld to %ld\n", debugstr_a(pSrcStr), dwSrcEncoding, dwDstEncoding);
1121
1122 hr = ConvertINetMultiByteToUnicode(pdwMode, dwSrcEncoding, pSrcStr, pcSrcSize, NULL, &cDstSizeW);
1123 if (hr != S_OK)
1124 return hr;
1125
1126 pDstStrW = malloc(cDstSizeW * sizeof(WCHAR));
1127 hr = ConvertINetMultiByteToUnicode(pdwMode, dwSrcEncoding, pSrcStr, pcSrcSize, pDstStrW, &cDstSizeW);
1128 if (hr == S_OK)
1129 hr = ConvertINetUnicodeToMultiByte(pdwMode, dwDstEncoding, pDstStrW, &cDstSizeW, pDstStr, pcDstSize);
1130
1131 free(pDstStrW);
1132 return hr;
1133 }
1134}
#define malloc
Definition: debug_ros.c:4
HRESULT hr
Definition: delayimp.cpp:573
uint16_t * LPWSTR
Definition: typedefs.h:56
static CONVERTINETMULTIBYTETOUNICODE ConvertINetMultiByteToUnicode
Definition: win_iconv.c:705
static CONVERTINETUNICODETOMULTIBYTE ConvertINetUnicodeToMultiByte
Definition: win_iconv.c:706

◆ ConvertINetUnicodeToMultiByte()

HRESULT WINAPI ConvertINetUnicodeToMultiByte ( LPDWORD  pdwMode,
DWORD  dwEncoding,
LPCWSTR  pSrcStr,
LPINT  pcSrcSize,
LPSTR  pDstStr,
LPINT  pcDstSize 
)

Definition at line 1000 of file mlang.c.

1007{
1008 INT destsz, size;
1009 INT src_len = -1;
1010
1011 TRACE("%p %ld %s %p %p %p\n", pdwMode, dwEncoding,
1012 debugstr_w(pSrcStr), pcSrcSize, pDstStr, pcDstSize);
1013
1014 if (!pcDstSize)
1015 return S_OK;
1016
1017 if (!pcSrcSize)
1018 pcSrcSize = &src_len;
1019
1020 destsz = (pDstStr) ? *pcDstSize : 0;
1021 *pcDstSize = 0;
1022
1023 if (!pSrcStr || !*pcSrcSize)
1024 return S_OK;
1025
1026 if (*pcSrcSize == -1)
1027 *pcSrcSize = lstrlenW(pSrcStr);
1028
1029 /* forwarding euc-jp to EUC-JP */
1030 if (dwEncoding == 51932)
1031 dwEncoding = 20932;
1032
1033 if (dwEncoding == CP_UNICODE)
1034 {
1035 if (*pcSrcSize == -1)
1036 *pcSrcSize = lstrlenW(pSrcStr);
1037
1038 size = min(*pcSrcSize, destsz) * sizeof(WCHAR);
1039 if (pDstStr)
1040 memmove(pDstStr, pSrcStr, size);
1041
1042 if (size >= destsz)
1043 goto fail;
1044 }
1045 else if (dwEncoding == 50220 || dwEncoding == 50221 || dwEncoding == 50222)
1046 {
1047 size = ConvertJapaneseUnicodeToJIS(pSrcStr, *pcSrcSize, NULL, 0);
1048 if (!size)
1049 goto fail;
1050
1051 if (pDstStr)
1052 {
1053 size = ConvertJapaneseUnicodeToJIS(pSrcStr, *pcSrcSize, pDstStr,
1054 destsz);
1055 if (!size)
1056 goto fail;
1057 }
1058
1059 }
1060 else
1061 {
1062 size = WideCharToMultiByte(dwEncoding, 0, pSrcStr, *pcSrcSize,
1063 NULL, 0, NULL, NULL);
1064 if (!size)
1065 goto fail;
1066
1067 if (pDstStr)
1068 {
1069 size = WideCharToMultiByte(dwEncoding, 0, pSrcStr, *pcSrcSize,
1070 pDstStr, destsz, NULL, NULL);
1071 if (!size)
1072 goto fail;
1073 }
1074 }
1075
1076 *pcDstSize = size;
1077 return S_OK;
1078
1079fail:
1080 *pcSrcSize = 0;
1081 *pcDstSize = 0;
1082 return E_FAIL;
1083}
#define WideCharToMultiByte
Definition: compat.h:111
static UINT ConvertJapaneseUnicodeToJIS(LPCWSTR input, DWORD count, LPSTR output, DWORD out_count)
Definition: mlang.c:899
GLsizeiptr size
Definition: glext.h:5919
#define debugstr_w
Definition: kernel32.h:32

◆ ConvertJapaneseUnicodeToJIS()

static UINT ConvertJapaneseUnicodeToJIS ( LPCWSTR  input,
DWORD  count,
LPSTR  output,
DWORD  out_count 
)
static

Definition at line 899 of file mlang.c.

901{
902 CHAR *sjis_string;
903 INT len;
904 UINT rc = 0;
905
907 sjis_string = malloc(len);
908 WideCharToMultiByte(932,0,input,count,sjis_string,len,NULL,NULL);
909 TRACE("%s\n",debugstr_an(sjis_string,len));
910
911 rc = ConvertSJIS2JIS(sjis_string, len, NULL);
912 if (out_count >= rc)
913 {
914 ConvertSJIS2JIS(sjis_string, len, output);
915 }
916 free(sjis_string);
917 return rc;
918
919}
static __inline const char * debugstr_an(const char *s, int n)
Definition: compat.h:55
static UINT ConvertSJIS2JIS(LPCSTR input, DWORD count, LPSTR output)
Definition: mlang.c:740
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLenum GLsizei len
Definition: glext.h:6722
GLenum GLenum GLenum input
Definition: glext.h:9031
static UINT UINT * out_count
Definition: clipboard.c:31
unsigned int UINT
Definition: ndis.h:50
char CHAR
Definition: pedump.c:57

Referenced by ConvertINetUnicodeToMultiByte().

◆ ConvertJIS2SJIS()

static UINT ConvertJIS2SJIS ( LPCSTR  input,
DWORD  count,
LPSTR  output 
)
static

Definition at line 672 of file mlang.c.

673{
674 DWORD i = 0;
675 int j = 0;
676 unsigned char p2,p;
677 BOOL shifted = FALSE;
678
679 while (i < count)
680 {
681 p = input[i];
682 if (p == 0x1b /* ESC */)
683 {
684 i++;
685 if (i >= count)
686 return 0;
687 p2 = input[i];
688 if (p2 == '$' || p2 =='(')
689 i++;
690 if (p2 == 'K' || p2 =='$')
691 shifted = TRUE;
692 else
693 shifted = FALSE;
694 }
695 else
696 {
697 if (shifted)
698 {
699 i++;
700 if (i >= count)
701 return 0;
702 p2 = input[i];
703 jis2sjis(&p,&p2);
704 output[j++]=p;
705 output[j++]=p2;
706 }
707 else
708 {
709 output[j++] = p;
710 }
711 }
712 i++;
713 }
714 return j;
715}
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
static void jis2sjis(unsigned char *p1, unsigned char *p2)
Definition: mlang.c:604
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLfloat GLfloat p
Definition: glext.h:8902
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250

Referenced by ConvertJISJapaneseToUnicode(), and ConvertUnknownJapaneseToUnicode().

◆ ConvertJISJapaneseToUnicode()

static UINT ConvertJISJapaneseToUnicode ( LPCSTR  input,
DWORD  count,
LPWSTR  output,
DWORD  out_count 
)
static

Definition at line 831 of file mlang.c.

833{
834 CHAR *sjis_string;
835 UINT rc = 0;
836 sjis_string = malloc(count);
837 rc = ConvertJIS2SJIS(input,count,sjis_string);
838 if (rc)
839 {
840 TRACE("%s\n",debugstr_an(sjis_string,rc));
841 if (output)
842 rc = MultiByteToWideChar(932,0,sjis_string,rc,output,out_count);
843 else
844 rc = MultiByteToWideChar(932,0,sjis_string,rc,0,0);
845 }
846 free(sjis_string);
847 return rc;
848
849}
static UINT ConvertJIS2SJIS(LPCSTR input, DWORD count, LPSTR output)
Definition: mlang.c:672

Referenced by ConvertINetMultiByteToUnicode().

◆ ConvertSJIS2JIS()

static UINT ConvertSJIS2JIS ( LPCSTR  input,
DWORD  count,
LPSTR  output 
)
static

Definition at line 740 of file mlang.c.

741{
742 DWORD i = 0;
743 int j = 0;
744 unsigned char p2,p;
745 BOOL shifted = FALSE;
746
747 while (i < count)
748 {
749 p = input[i] & 0xff;
750 if (p == 10 || p == 13) /* NL and CR */
751 {
752 if (shifted)
753 {
754 shifted = FALSE;
755 j += exit_shift(output,j);
756 }
757 if (output)
758 output[j++] = p;
759 else
760 j++;
761 }
762 else
763 {
764 if (SJIS1(p))
765 {
766 i++;
767 if (i >= count)
768 return 0;
769 p2 = input[i] & 0xff;
770 if (SJIS2(p2))
771 {
772 sjis2jis(&p,&p2);
773 if (!shifted)
774 {
775 shifted = TRUE;
776 j+=enter_shift(output,j);
777 }
778 }
779
780 if (output)
781 {
782 output[j++]=p;
783 output[j++]=p2;
784 }
785 else
786 j+=2;
787 }
788 else
789 {
790 if (HANKATA(p))
791 {
792 if ((i+1) >= count)
793 return 0;
794 p2 = input[i+1] & 0xff;
795 i+=han2zen(&p,&p2);
796 sjis2jis(&p,&p2);
797 if (!shifted)
798 {
799 shifted = TRUE;
800 j+=enter_shift(output,j);
801 }
802 if (output)
803 {
804 output[j++]=p;
805 output[j++]=p2;
806 }
807 else
808 j+=2;
809 }
810 else
811 {
812 if (shifted)
813 {
814 shifted = FALSE;
815 j += exit_shift(output,j);
816 }
817 if (output)
818 output[j++]=p;
819 else
820 j++;
821 }
822 }
823 }
824 i++;
825 }
826 if (shifted)
827 j += exit_shift(output,j);
828 return j;
829}
static int exit_shift(LPSTR out, int c)
Definition: mlang.c:717
#define SJIS2(A)
Definition: mlang.c:555
static int enter_shift(LPSTR out, int c)
Definition: mlang.c:728
#define SJIS1(A)
Definition: mlang.c:554
static int han2zen(unsigned char *p1, unsigned char *p2)
Definition: mlang.c:627
#define HANKATA(A)
Definition: mlang.c:551
static void sjis2jis(unsigned char *p1, unsigned char *p2)
Definition: mlang.c:615

Referenced by ConvertJapaneseUnicodeToJIS().

◆ ConvertUnknownJapaneseToUnicode()

static UINT ConvertUnknownJapaneseToUnicode ( LPCSTR  input,
DWORD  count,
LPWSTR  output,
DWORD  out_count 
)
static

Definition at line 851 of file mlang.c.

853{
854 CHAR *sjis_string;
855 UINT rc = 0;
857 TRACE("Japanese code %i\n",code);
858
859 switch (code)
860 {
861 case 0:
862 if (output)
864 else
866 break;
867
868 case 932:
869 if (output)
870 rc = MultiByteToWideChar(932,0,input,count,output,out_count);
871 else
872 rc = MultiByteToWideChar(932,0,input,count,0,0);
873 break;
874
875 case 51932:
876 if (output)
877 rc = MultiByteToWideChar(20932,0,input,count,output,out_count);
878 else
879 rc = MultiByteToWideChar(20932,0,input,count,0,0);
880 break;
881
882 case 50220:
883 sjis_string = malloc(count);
884 rc = ConvertJIS2SJIS(input,count,sjis_string);
885 if (rc)
886 {
887 TRACE("%s\n",debugstr_an(sjis_string,rc));
888 if (output)
889 rc = MultiByteToWideChar(932,0,sjis_string,rc,output,out_count);
890 else
891 rc = MultiByteToWideChar(932,0,sjis_string,rc,0,0);
892 }
893 free(sjis_string);
894 break;
895 }
896 return rc;
897}
#define CP_ACP
Definition: compat.h:109
static UINT DetectJapaneseCode(LPCSTR input, DWORD count)
Definition: mlang.c:559
Definition: inflate.c:139

Referenced by ConvertINetMultiByteToUnicode().

◆ DetectJapaneseCode()

static UINT DetectJapaneseCode ( LPCSTR  input,
DWORD  count 
)
static

Definition at line 559 of file mlang.c.

560{
561 UINT code = 0;
562 DWORD i = 0;
563 unsigned char c1,c2;
564
565 while ((code == 0 || code == 51932) && i < count)
566 {
567 c1 = input[i];
568 if (c1 == 0x1b /* ESC */)
569 {
570 i++;
571 if (i >= count)
572 return code;
573 c1 = input[i];
574 if (c1 == '$')
575 {
576 i++;
577 if (i >= count)
578 return code;
579 c1 = input[i];
580 if (c1 =='B' || c1 == '@')
581 code = 50220;
582 }
583 if (c1 == 'K')
584 code = 50220;
585 }
586 else if (c1 >= 129)
587 {
588 i++;
589 if (i >= count)
590 return code;
591 c2 = input[i];
592 if NOTEUC(c1,c2)
593 code = 932;
594 else if (ISEUC(c1) && ISEUC(c2))
595 code = 51932;
596 else if (((c1 == 142)) && HANKATA(c2))
597 code = 51932;
598 }
599 i++;
600 }
601 return code;
602}
#define NOTEUC(A, B)
Definition: mlang.c:553
#define ISEUC(A)
Definition: mlang.c:552

Referenced by ConvertUnknownJapaneseToUnicode().

◆ DllCanUnloadNow()

HRESULT WINAPI DllCanUnloadNow ( void  )

Definition at line 3921 of file mlang.c.

3922{
3923 return dll_count == 0 ? S_OK : S_FALSE;
3924}
static LONG dll_count
Definition: mlang.c:545
#define S_FALSE
Definition: winerror.h:3451

◆ DllGetClassObject()

HRESULT WINAPI DllGetClassObject ( REFCLSID  rclsid,
REFIID  iid,
LPVOID ppv 
)

Definition at line 1570 of file mlang.c.

1571{
1572 unsigned int i;
1574
1575 TRACE("%s %s %p\n",debugstr_guid(rclsid), debugstr_guid(iid), ppv);
1576
1577 if ( !IsEqualGUID( &IID_IClassFactory, iid )
1578 && ! IsEqualGUID( &IID_IUnknown, iid) )
1579 return E_NOINTERFACE;
1580
1581 for (i = 0; i < ARRAY_SIZE(object_creation); i++)
1582 {
1583 if (IsEqualGUID(object_creation[i].clsid, rclsid))
1584 break;
1585 }
1586
1588 {
1589 FIXME("%s: no class found.\n", debugstr_guid(rclsid));
1591 }
1592
1593 TRACE("Creating a class factory for %s\n",object_creation[i].szClassName);
1594
1595 factory = malloc(sizeof(*factory));
1596 if (factory == NULL) return E_OUTOFMEMORY;
1597
1599 factory->ref = 1;
1600
1601 factory->pfnCreateInstance = object_creation[i].pfnCreateInstance;
1602
1604
1605 TRACE("(%p) <- %p\n", ppv, &factory->IClassFactory_iface);
1606
1607 return S_OK;
1608}
#define ARRAY_SIZE(A)
Definition: main.h:20
#define FIXME(fmt,...)
Definition: precomp.h:53
const GUID IID_IUnknown
const GUID IID_IClassFactory
static const WCHAR szClassName[]
Definition: clipbrd.c:11
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
static const IClassFactoryVtbl MLANGCF_Vtbl
Definition: mlang.c:1558
static const struct object_creation_info object_creation[]
Definition: mlang.c:1486
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define debugstr_guid
Definition: kernel32.h:35
const CLSID * clsid
Definition: msctf.cpp:50
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
Definition: main.c:439
IClassFactory IClassFactory_iface
Definition: main.c:440
#define E_NOINTERFACE
Definition: winerror.h:3479
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:3772

◆ enter_shift()

static int enter_shift ( LPSTR  out,
int  c 
)
inlinestatic

Definition at line 728 of file mlang.c.

729{
730 if (out)
731 {
732 out[c] = 0x1b;
733 out[c+1] = '$';
734 out[c+2] = 'B';
735 }
736 return 3;
737}
const GLubyte * c
Definition: glext.h:8905
#define c
Definition: ke_i.h:80
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

Referenced by ConvertSJIS2JIS().

◆ enum_locales_proc()

static BOOL CALLBACK enum_locales_proc ( LPWSTR  locale,
DWORD  flags,
LPARAM  lparam 
)
static

Definition at line 2426 of file mlang.c.

2427{
2428 struct enum_locales_data *data = (struct enum_locales_data *)lparam;
2429 RFC1766INFO *info;
2430
2431 TRACE("%s\n", debugstr_w(locale));
2432
2433 if (data->total >= data->allocated)
2434 {
2435 data->allocated *= 2;
2436 data->info = realloc(data->info, data->allocated * sizeof(RFC1766INFO));
2437 if (!data->info) return FALSE;
2438 }
2439
2440 info = &data->info[data->total];
2441
2442 info->lcid = LocaleNameToLCID( locale, 0 );
2443 if (info->lcid == LOCALE_CUSTOM_UNSPECIFIED) return TRUE;
2444
2445 info->wszRfc1766[0] = 0;
2446 if (FAILED( lcid_to_rfc1766W( info->lcid, info->wszRfc1766, MAX_RFC1766_NAME ))) return TRUE;
2447
2448 info->wszLocaleName[0] = 0;
2449 GetLocaleInfoW(info->lcid, LOCALE_SLANGUAGE, info->wszLocaleName, MAX_LOCALE_NAME);
2450 TRACE("ISO639: %s SLANGUAGE: %s\n", wine_dbgstr_w(info->wszRfc1766), wine_dbgstr_w(info->wszLocaleName));
2451
2452 data->total++;
2453
2454 return TRUE;
2455}
@ lparam
Definition: SystemMenu.c:31
Definition: _locale.h:75
#define realloc
Definition: debug_ros.c:6
LCID WINAPI LocaleNameToLCID(_In_ LPCWSTR lpName, _In_ DWORD dwFlags)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
Definition: locale.c:1675
static HRESULT lcid_to_rfc1766W(LCID lcid, LPWSTR rfc1766, INT len)
Definition: mlang.c:1208
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
#define FAILED(hr)
Definition: intsafe.h:51
#define wine_dbgstr_w
Definition: kernel32.h:34
#define LOCALE_CUSTOM_UNSPECIFIED
RFC1766INFO * info
Definition: mlang.c:2422
#define LOCALE_SLANGUAGE
Definition: winnls.h:31

Referenced by EnumRfc1766_create().

◆ EnumCodePage_create()

static HRESULT EnumCodePage_create ( MLang_impl mlang,
DWORD  grfFlags,
LANGID  LangId,
IEnumCodePage **  ppEnumCodePage 
)
static

Definition at line 1771 of file mlang.c.

1773{
1774 EnumCodePage_impl *ecp;
1775 MIMECPINFO *cpinfo;
1776 UINT i, n;
1777
1778 TRACE("%p, %08lx, %04x, %p\n", mlang, grfFlags, LangId, ppEnumCodePage);
1779
1780 if (!grfFlags) /* enumerate internal data base of encodings */
1781 grfFlags = MIMECONTF_MIME_LATEST;
1782
1783 ecp = malloc(sizeof(EnumCodePage_impl));
1785 ecp->ref = 1;
1786 ecp->pos = 0;
1787 ecp->total = 0;
1788 for (i = 0; i < ARRAY_SIZE(mlang_data); i++)
1789 {
1790 for (n = 0; n < mlang_data[i].number_of_cp; n++)
1791 {
1792 if (mlang_data[i].mime_cp_info[n].flags & grfFlags)
1793 ecp->total++;
1794 }
1795 }
1796
1797 ecp->cpinfo = malloc(sizeof(MIMECPINFO) * ecp->total);
1798 cpinfo = ecp->cpinfo;
1799
1800 for (i = 0; i < ARRAY_SIZE(mlang_data); i++)
1801 {
1802 for (n = 0; n < mlang_data[i].number_of_cp; n++)
1803 {
1804 if (mlang_data[i].mime_cp_info[n].flags & grfFlags)
1805 fill_cp_info(&mlang_data[i], n, cpinfo++);
1806 }
1807 }
1808
1809 TRACE("enumerated %ld codepages with flags %08lx\n", ecp->total, grfFlags);
1810
1811 *ppEnumCodePage = &ecp->IEnumCodePage_iface;
1812
1813 return S_OK;
1814}
static const IEnumCodePageVtbl IEnumCodePage_vtbl
Definition: mlang.c:1760
static void fill_cp_info(const struct mlang_data *ml_data, UINT index, MIMECPINFO *mime_cp_info)
Definition: mlang.c:2668
static IMultiLanguage2 * mlang
Definition: main.c:43
GLdouble n
Definition: glext.h:7729
GLbitfield flags
Definition: glext.h:7161
UINT number_of_cp
Definition: mlang.c:486
MIMECPINFO * cpinfo
Definition: mlang.c:1630
IEnumCodePage IEnumCodePage_iface
Definition: mlang.c:1628

Referenced by fnIMultiLanguage3_EnumCodePages(), and fnIMultiLanguage_EnumCodePages().

◆ EnumRfc1766_create()

static HRESULT EnumRfc1766_create ( LANGID  LangId,
IEnumRfc1766 **  ppEnum 
)
static

Definition at line 2457 of file mlang.c.

2458{
2459 EnumRfc1766_impl *rfc;
2460 struct enum_locales_data data;
2461
2462 TRACE("%04x, %p\n", LangId, ppEnum);
2463
2464 rfc = malloc(sizeof(EnumRfc1766_impl));
2466 rfc->ref = 1;
2467 rfc->pos = 0;
2468 rfc->total = 0;
2469
2470 data.total = 0;
2471 data.allocated = 160;
2472 data.info = malloc(data.allocated * sizeof(RFC1766INFO));
2473 if (!data.info)
2474 {
2475 free(rfc);
2476 return E_OUTOFMEMORY;
2477 }
2478
2480
2481 TRACE("enumerated %ld rfc1766 structures\n", data.total);
2482
2483 if (!data.total)
2484 {
2485 free(data.info);
2486 free(rfc);
2487 return E_FAIL;
2488 }
2489
2490 rfc->info = data.info;
2491 rfc->total = data.total;
2492
2493 *ppEnum = &rfc->IEnumRfc1766_iface;
2494 return S_OK;
2495}
BOOL WINAPI EnumSystemLocalesEx(LOCALE_ENUMPROCEX proc, DWORD flags, LPARAM lparam, LPVOID reserved)
static const IEnumRfc1766Vtbl IEnumRfc1766_vtbl
Definition: mlang.c:2409
static BOOL CALLBACK enum_locales_proc(LPWSTR locale, DWORD flags, LPARAM lparam)
Definition: mlang.c:2426
LONG_PTR LPARAM
Definition: minwindef.h:175
RFC1766INFO * info
Definition: mlang.c:2285
IEnumRfc1766 IEnumRfc1766_iface
Definition: mlang.c:2283
#define LOCALE_WINDOWS
Definition: winnls.h:224

Referenced by fnIMultiLanguage3_EnumRfc1766(), fnIMultiLanguage_EnumRfc1766(), and Rfc1766ToLcidW().

◆ EnumScript_create()

static HRESULT EnumScript_create ( MLang_impl mlang,
DWORD  dwFlags,
LANGID  LangId,
IEnumScript **  ppEnumScript 
)
static

Definition at line 1948 of file mlang.c.

1950{
1952 UINT i;
1953
1954 TRACE("%p, %08lx, %04x, %p\n", mlang, dwFlags, LangId, ppEnumScript);
1955
1956 if (!dwFlags) /* enumerate all available scripts */
1957 dwFlags = SCRIPTCONTF_SCRIPT_USER | SCRIPTCONTF_SCRIPT_HIDE | SCRIPTCONTF_SCRIPT_SYSTEM;
1958
1959 es = malloc(sizeof(EnumScript_impl));
1960 es->IEnumScript_iface.lpVtbl = &IEnumScript_vtbl;
1961 es->ref = 1;
1962 es->pos = 0;
1963 /* do not enumerate unicode flavours */
1964 es->total = ARRAY_SIZE(mlang_data) - 1;
1965 es->script_info = malloc(sizeof(SCRIPTINFO) * es->total);
1966
1967 for (i = 0; i < es->total; i++)
1968 {
1969 es->script_info[i].ScriptId = i;
1970 es->script_info[i].uiCodePage = mlang_data[i].family_codepage;
1971 wcscpy( es->script_info[i].wszDescription, mlang_data[i].description );
1972 wcscpy( es->script_info[i].wszFixedWidthFont, mlang_data[i].fixed_font );
1973 wcscpy( es->script_info[i].wszProportionalFont, mlang_data[i].proportional_font );
1974 }
1975
1976 TRACE("enumerated %ld scripts with flags %08lx\n", es->total, dwFlags);
1977
1978 *ppEnumScript = &es->IEnumScript_iface;
1979
1980 return S_OK;
1981}
static const IEnumScriptVtbl IEnumScript_vtbl
Definition: mlang.c:1937
#define es
Definition: i386-dis.c:440
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
wcscpy
const WCHAR * fixed_font
Definition: mlang.c:488
UINT family_codepage
Definition: mlang.c:485
const WCHAR * proportional_font
Definition: mlang.c:489
const WCHAR * description
Definition: mlang.c:484

Referenced by fnIMultiLanguage3_EnumScripts().

◆ exit_shift()

static int exit_shift ( LPSTR  out,
int  c 
)
inlinestatic

Definition at line 717 of file mlang.c.

718{
719 if (out)
720 {
721 out[c] = 0x1b;
722 out[c+1] = '(';
723 out[c+2] = 'B';
724 }
725 return 3;
726}

Referenced by ConvertSJIS2JIS().

◆ fill_cp_info()

static void fill_cp_info ( const struct mlang_data ml_data,
UINT  index,
MIMECPINFO *  mime_cp_info 
)
static

Definition at line 2668 of file mlang.c.

2669{
2670 CHARSETINFO csi;
2671
2674 mime_cp_info->bGDICharset = csi.ciCharset;
2675 else
2676 mime_cp_info->bGDICharset = DEFAULT_CHARSET;
2677
2678 mime_cp_info->dwFlags = ml_data->mime_cp_info[index].flags;
2679 mime_cp_info->uiCodePage = ml_data->mime_cp_info[index].cp;
2680 mime_cp_info->uiFamilyCodePage = ml_data->family_codepage;
2681 wcscpy( mime_cp_info->wszDescription, ml_data->mime_cp_info[index].description );
2682 wcscpy( mime_cp_info->wszWebCharset, ml_data->mime_cp_info[index].web_charset );
2683 wcscpy( mime_cp_info->wszHeaderCharset, ml_data->mime_cp_info[index].header_charset );
2684 wcscpy( mime_cp_info->wszBodyCharset, ml_data->mime_cp_info[index].body_charset );
2685 wcscpy( mime_cp_info->wszFixedWidthFont, ml_data->fixed_font );
2686 wcscpy( mime_cp_info->wszProportionalFont, ml_data->proportional_font );
2687
2688 TRACE("%08lx %u %u %s %s %s %s %s %s %d\n",
2689 mime_cp_info->dwFlags, mime_cp_info->uiCodePage,
2690 mime_cp_info->uiFamilyCodePage,
2691 wine_dbgstr_w(mime_cp_info->wszDescription),
2692 wine_dbgstr_w(mime_cp_info->wszWebCharset),
2693 wine_dbgstr_w(mime_cp_info->wszHeaderCharset),
2694 wine_dbgstr_w(mime_cp_info->wszBodyCharset),
2695 wine_dbgstr_w(mime_cp_info->wszFixedWidthFont),
2696 wine_dbgstr_w(mime_cp_info->wszProportionalFont),
2697 mime_cp_info->bGDICharset);
2698}
#define index(s, c)
Definition: various.h:29
GLuint index
Definition: glext.h:6031
const WCHAR * body_charset
Definition: mlang.c:66
const WCHAR * header_charset
Definition: mlang.c:65
UINT cp
Definition: mlang.c:62
const WCHAR * description
Definition: mlang.c:61
DWORD flags
Definition: mlang.c:63
const WCHAR * web_charset
Definition: mlang.c:64
const MIME_CP_INFO * mime_cp_info
Definition: mlang.c:487
UINT ciCharset
Definition: wingdi.h:1992
uint32_t DWORD_PTR
Definition: typedefs.h:65
#define DEFAULT_CHARSET
Definition: wingdi.h:384
BOOL WINAPI TranslateCharsetInfo(_Inout_ PDWORD, _Out_ LPCHARSETINFO, _In_ DWORD)
#define TCI_SRCCODEPAGE
Definition: wingdi.h:962

Referenced by EnumCodePage_create(), fnIMultiLanguage3_GetCodePageInfo(), and fnIMultiLanguage_GetCodePageInfo().

◆ fnIEnumCodePage_AddRef()

static ULONG WINAPI fnIEnumCodePage_AddRef ( IEnumCodePage *  iface)
static

Definition at line 1661 of file mlang.c.

1663{
1665 return InterlockedIncrement(&This->ref);
1666}
#define InterlockedIncrement
Definition: armddk.h:53
static EnumCodePage_impl * impl_from_IEnumCodePage(IEnumCodePage *iface)
Definition: mlang.c:1634

◆ fnIEnumCodePage_Clone()

static HRESULT WINAPI fnIEnumCodePage_Clone ( IEnumCodePage *  iface,
IEnumCodePage **  ppEnum 
)
static

Definition at line 1685 of file mlang.c.

1688{
1690 FIXME("%p %p\n", This, ppEnum);
1691 return E_NOTIMPL;
1692}
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ fnIEnumCodePage_Next()

static HRESULT WINAPI fnIEnumCodePage_Next ( IEnumCodePage *  iface,
ULONG  celt,
PMIMECPINFO  rgelt,
ULONG pceltFetched 
)
static

Definition at line 1694 of file mlang.c.

1699{
1700 ULONG i;
1702
1703 TRACE("%p %lu %p %p\n", This, celt, rgelt, pceltFetched);
1704
1705 if (!pceltFetched) return S_FALSE;
1706 *pceltFetched = 0;
1707
1708 if (!rgelt) return S_FALSE;
1709
1710 if (This->pos + celt > This->total)
1711 celt = This->total - This->pos;
1712
1713 if (!celt) return S_FALSE;
1714
1715 memcpy(rgelt, This->cpinfo + This->pos, celt * sizeof(MIMECPINFO));
1716 *pceltFetched = celt;
1717 This->pos += celt;
1718
1719 for (i = 0; i < celt; i++)
1720 {
1721 TRACE("#%lu: %08lx %u %u %s %s %s %s %s %s %d\n",
1722 i, rgelt[i].dwFlags, rgelt[i].uiCodePage,
1723 rgelt[i].uiFamilyCodePage,
1724 wine_dbgstr_w(rgelt[i].wszDescription),
1725 wine_dbgstr_w(rgelt[i].wszWebCharset),
1726 wine_dbgstr_w(rgelt[i].wszHeaderCharset),
1727 wine_dbgstr_w(rgelt[i].wszBodyCharset),
1728 wine_dbgstr_w(rgelt[i].wszFixedWidthFont),
1729 wine_dbgstr_w(rgelt[i].wszProportionalFont),
1730 rgelt[i].bGDICharset);
1731 }
1732 return S_OK;
1733}
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
uint32_t ULONG
Definition: typedefs.h:59

◆ fnIEnumCodePage_QueryInterface()

static HRESULT WINAPI fnIEnumCodePage_QueryInterface ( IEnumCodePage *  iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 1639 of file mlang.c.

1643{
1645
1646 TRACE("%p -> %s\n", This, debugstr_guid(riid) );
1647
1649 || IsEqualGUID(riid, &IID_IEnumCodePage))
1650 {
1651 IEnumCodePage_AddRef(iface);
1652 TRACE("Returning IID_IEnumCodePage %p ref = %ld\n", This, This->ref);
1653 *ppvObject = &This->IEnumCodePage_iface;
1654 return S_OK;
1655 }
1656
1657 WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppvObject);
1658 return E_NOINTERFACE;
1659}
#define WARN(fmt,...)
Definition: precomp.h:61
REFIID riid
Definition: atlbase.h:39

◆ fnIEnumCodePage_Release()

static ULONG WINAPI fnIEnumCodePage_Release ( IEnumCodePage *  iface)
static

Definition at line 1668 of file mlang.c.

1670{
1673
1674 TRACE("%p ref = %ld\n", This, ref);
1675 if (ref == 0)
1676 {
1677 TRACE("Destroying %p\n", This);
1678 free(This->cpinfo);
1679 free(This);
1680 }
1681
1682 return ref;
1683}
#define InterlockedDecrement
Definition: armddk.h:52
Definition: send.c:48

◆ fnIEnumCodePage_Reset()

static HRESULT WINAPI fnIEnumCodePage_Reset ( IEnumCodePage *  iface)
static

Definition at line 1735 of file mlang.c.

1737{
1739
1740 TRACE("%p\n", This);
1741
1742 This->pos = 0;
1743 return S_OK;
1744}

◆ fnIEnumCodePage_Skip()

static HRESULT WINAPI fnIEnumCodePage_Skip ( IEnumCodePage *  iface,
ULONG  celt 
)
static

Definition at line 1746 of file mlang.c.

1749{
1751
1752 TRACE("%p %lu\n", This, celt);
1753
1754 if (celt >= This->total) return S_FALSE;
1755
1756 This->pos += celt;
1757 return S_OK;
1758}

◆ fnIEnumRfc1766_AddRef()

static ULONG WINAPI fnIEnumRfc1766_AddRef ( IEnumRfc1766 *  iface)
static

Definition at line 2316 of file mlang.c.

2318{
2320 return InterlockedIncrement(&This->ref);
2321}
static EnumRfc1766_impl * impl_from_IEnumRfc1766(IEnumRfc1766 *iface)
Definition: mlang.c:2289

◆ fnIEnumRfc1766_Clone()

static HRESULT WINAPI fnIEnumRfc1766_Clone ( IEnumRfc1766 *  iface,
IEnumRfc1766 **  ppEnum 
)
static

Definition at line 2339 of file mlang.c.

2342{
2344
2345 FIXME("%p %p\n", This, ppEnum);
2346 return E_NOTIMPL;
2347}

◆ fnIEnumRfc1766_Next()

static HRESULT WINAPI fnIEnumRfc1766_Next ( IEnumRfc1766 *  iface,
ULONG  celt,
PRFC1766INFO  rgelt,
ULONG pceltFetched 
)
static

Definition at line 2349 of file mlang.c.

2354{
2355 ULONG i;
2357
2358 TRACE("%p %lu %p %p\n", This, celt, rgelt, pceltFetched);
2359
2360 if (!pceltFetched) return S_FALSE;
2361 *pceltFetched = 0;
2362
2363 if (!rgelt) return S_FALSE;
2364
2365 if (This->pos + celt > This->total)
2366 celt = This->total - This->pos;
2367
2368 if (!celt) return S_FALSE;
2369
2370 memcpy(rgelt, This->info + This->pos, celt * sizeof(RFC1766INFO));
2371 *pceltFetched = celt;
2372 This->pos += celt;
2373
2374 for (i = 0; i < celt; i++)
2375 {
2376 TRACE("#%lu: %08lx %s %s\n",
2377 i, rgelt[i].lcid,
2378 wine_dbgstr_w(rgelt[i].wszRfc1766),
2379 wine_dbgstr_w(rgelt[i].wszLocaleName));
2380 }
2381 return S_OK;
2382}
LCID lcid
Definition: locale.c:5656

◆ fnIEnumRfc1766_QueryInterface()

static HRESULT WINAPI fnIEnumRfc1766_QueryInterface ( IEnumRfc1766 *  iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 2294 of file mlang.c.

2298{
2300
2301 TRACE("%p -> %s\n", This, debugstr_guid(riid) );
2302
2304 || IsEqualGUID(riid, &IID_IEnumRfc1766))
2305 {
2306 IEnumRfc1766_AddRef(iface);
2307 TRACE("Returning IID_IEnumRfc1766 %p ref = %ld\n", This, This->ref);
2308 *ppvObject = &This->IEnumRfc1766_iface;
2309 return S_OK;
2310 }
2311
2312 WARN("(%p) -> (%s,%p), not found\n",This,debugstr_guid(riid),ppvObject);
2313 return E_NOINTERFACE;
2314}

◆ fnIEnumRfc1766_Release()

static ULONG WINAPI fnIEnumRfc1766_Release ( IEnumRfc1766 *  iface)
static

Definition at line 2323 of file mlang.c.

2325{
2328
2329 TRACE("%p ref = %ld\n", This, ref);
2330 if (ref == 0)
2331 {
2332 TRACE("Destroying %p\n", This);
2333 free(This->info);
2334 free(This);
2335 }
2336 return ref;
2337}

◆ fnIEnumRfc1766_Reset()

static HRESULT WINAPI fnIEnumRfc1766_Reset ( IEnumRfc1766 *  iface)
static

Definition at line 2384 of file mlang.c.

2386{
2388
2389 TRACE("%p\n", This);
2390
2391 This->pos = 0;
2392 return S_OK;
2393}

◆ fnIEnumRfc1766_Skip()

static HRESULT WINAPI fnIEnumRfc1766_Skip ( IEnumRfc1766 *  iface,
ULONG  celt 
)
static

Definition at line 2395 of file mlang.c.

2398{
2400
2401 TRACE("%p %lu\n", This, celt);
2402
2403 if (celt >= This->total) return S_FALSE;
2404
2405 This->pos += celt;
2406 return S_OK;
2407}

◆ fnIEnumScript_AddRef()

static ULONG WINAPI fnIEnumScript_AddRef ( IEnumScript *  iface)
static

Definition at line 1853 of file mlang.c.

1855{
1857 return InterlockedIncrement(&This->ref);
1858}
static EnumScript_impl * impl_from_IEnumScript(IEnumScript *iface)
Definition: mlang.c:1826

◆ fnIEnumScript_Clone()

static HRESULT WINAPI fnIEnumScript_Clone ( IEnumScript *  iface,
IEnumScript **  ppEnum 
)
static

Definition at line 1877 of file mlang.c.

1880{
1882 FIXME("%p %p: stub!\n", This, ppEnum);
1883 return E_NOTIMPL;
1884}

◆ fnIEnumScript_Next()

static HRESULT WINAPI fnIEnumScript_Next ( IEnumScript *  iface,
ULONG  celt,
PSCRIPTINFO  rgelt,
ULONG pceltFetched 
)
static

Definition at line 1886 of file mlang.c.

1891{
1893
1894 TRACE("%p %lu %p %p\n", This, celt, rgelt, pceltFetched);
1895
1896 if (!pceltFetched || !rgelt) return E_FAIL;
1897
1898 *pceltFetched = 0;
1899
1900 if (This->pos + celt > This->total)
1901 celt = This->total - This->pos;
1902
1903 if (!celt) return S_FALSE;
1904
1905 memcpy(rgelt, This->script_info + This->pos, celt * sizeof(SCRIPTINFO));
1906 *pceltFetched = celt;
1907 This->pos += celt;
1908
1909 return S_OK;
1910}

◆ fnIEnumScript_QueryInterface()

static HRESULT WINAPI fnIEnumScript_QueryInterface ( IEnumScript *  iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 1831 of file mlang.c.

1835{
1837
1838 TRACE("%p -> %s\n", This, debugstr_guid(riid) );
1839
1841 || IsEqualGUID(riid, &IID_IEnumScript))
1842 {
1843 IEnumScript_AddRef(iface);
1844 TRACE("Returning IID_IEnumScript %p ref = %ld\n", This, This->ref);
1845 *ppvObject = &This->IEnumScript_iface;
1846 return S_OK;
1847 }
1848
1849 WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppvObject);
1850 return E_NOINTERFACE;
1851}

◆ fnIEnumScript_Release()

static ULONG WINAPI fnIEnumScript_Release ( IEnumScript *  iface)
static

Definition at line 1860 of file mlang.c.

1862{
1865
1866 TRACE("%p ref = %ld\n", This, ref);
1867 if (ref == 0)
1868 {
1869 TRACE("Destroying %p\n", This);
1870 free(This->script_info);
1871 free(This);
1872 }
1873
1874 return ref;
1875}

◆ fnIEnumScript_Reset()

static HRESULT WINAPI fnIEnumScript_Reset ( IEnumScript *  iface)
static

Definition at line 1912 of file mlang.c.

1914{
1916
1917 TRACE("%p\n", This);
1918
1919 This->pos = 0;
1920 return S_OK;
1921}

◆ fnIEnumScript_Skip()

static HRESULT WINAPI fnIEnumScript_Skip ( IEnumScript *  iface,
ULONG  celt 
)
static

Definition at line 1923 of file mlang.c.

1926{
1928
1929 TRACE("%p %lu\n", This, celt);
1930
1931 if (celt >= This->total) return S_FALSE;
1932
1933 This->pos += celt;
1934 return S_OK;
1935}

◆ fnIMLangFontLink2_AddRef()

static ULONG WINAPI fnIMLangFontLink2_AddRef ( IMLangFontLink2 *  iface)
static

Definition at line 3315 of file mlang.c.

3316{
3318 return IMultiLanguage3_AddRef( &This->IMultiLanguage3_iface );
3319}
static MLang_impl * impl_from_IMLangFontLink2(IMLangFontLink2 *iface)
Definition: mlang.c:3301

◆ fnIMLangFontLink2_CodePagesToCodePage()

static HRESULT WINAPI fnIMLangFontLink2_CodePagesToCodePage ( IMLangFontLink2 *  iface,
DWORD  codepages,
UINT  def_codepage,
UINT codepage 
)
static

Definition at line 3421 of file mlang.c.

3423{
3425 DWORD mask = 0;
3427 BOOL rc;
3428 UINT i;
3429
3430 TRACE("(%p)->(0x%lx %u %p)\n", This, codepages, def_codepage, codepage);
3431
3432 *codepage = 0;
3433
3434 rc = TranslateCharsetInfo((DWORD*)(DWORD_PTR)def_codepage, &cs, TCI_SRCCODEPAGE);
3435 if (rc && (codepages & cs.fs.fsCsb[0]))
3436 {
3437 TRACE("Found Default Codepage\n");
3438 *codepage = def_codepage;
3439 return S_OK;
3440 }
3441
3442 for (i = 0; i < 32; i++)
3443 {
3444 mask = 1 << i;
3445 if (codepages & mask)
3446 {
3447 DWORD Csb[2];
3448 Csb[0] = mask;
3449 Csb[1] = 0x0;
3451 if (!rc)
3452 continue;
3453
3454 TRACE("Falling back to least significant found CodePage %u\n",
3455 cs.ciACP);
3456 *codepage = cs.ciACP;
3457 return S_OK;
3458 }
3459 }
3460
3461 TRACE("no codepage found\n");
3462 return E_FAIL;
3463}
static CPTABLEINFO codepages[128]
Definition: locale.c:318
GLenum GLint GLuint mask
Definition: glext.h:6028
#define cs
Definition: i386-dis.c:442
int codepage
Definition: win_iconv.c:156
#define TCI_SRCFONTSIG
Definition: wingdi.h:963

◆ fnIMLangFontLink2_CodePageToCodePages()

static HRESULT WINAPI fnIMLangFontLink2_CodePageToCodePages ( IMLangFontLink2 *  iface,
UINT  codepage,
DWORD codepages 
)
static

Definition at line 3398 of file mlang.c.

3401{
3404 BOOL rc;
3405
3406 TRACE("(%p)->(%u %p)\n", This, codepage, codepages);
3407
3409 if (rc)
3410 {
3411 *codepages = cs.fs.fsCsb[0];
3412 TRACE("resulting codepages 0x%lx\n", *codepages);
3413 return S_OK;
3414 }
3415
3416 TRACE("codepage not found\n");
3417 *codepages = 0;
3418 return E_FAIL;
3419}

◆ fnIMLangFontLink2_CodePageToScriptID()

static HRESULT WINAPI fnIMLangFontLink2_CodePageToScriptID ( IMLangFontLink2 *  This,
UINT  uiCodePage,
SCRIPT_ID *  pSid 
)
static

Definition at line 3584 of file mlang.c.

3586{
3587 UINT i;
3588
3589 TRACE("(%p)->%i %p\n", This, uiCodePage, pSid);
3590
3591 if (uiCodePage == CP_UNICODE) return E_FAIL;
3592
3593 for (i = 0; i < ARRAY_SIZE(mlang_data); i++)
3594 {
3595 if (uiCodePage == mlang_data[i].family_codepage)
3596 {
3597 if (pSid) *pSid = mlang_data[i].sid;
3598 return S_OK;
3599 }
3600 }
3601 return E_FAIL;
3602}
static PSID pSid
Definition: security.c:115
SCRIPT_ID sid
Definition: mlang.c:490

◆ fnIMLangFontLink2_GetCharCodePages()

static HRESULT WINAPI fnIMLangFontLink2_GetCharCodePages ( IMLangFontLink2 *  iface,
WCHAR  ch_src,
DWORD ret_codepages 
)
static

Definition at line 3327 of file mlang.c.

3329{
3331 unsigned int i;
3332
3333 TRACE("(%p)->(%s %p)\n", This, debugstr_wn(&ch_src, 1), ret_codepages);
3334
3335 *ret_codepages = 0;
3336
3337 for (i = 0; i < ARRAY_SIZE(mlang_data) - 1 /* skip unicode codepages */; i++)
3338 {
3339 BOOL used_dc;
3340 CHAR buf[2];
3341
3343 &ch_src, 1, buf, 2, NULL, &used_dc);
3344
3345 /* If default char is not used, current codepage include the given symbol */
3346 if (!used_dc)
3347 {
3349
3350 IMLangFontLink2_CodePageToCodePages(iface,
3351 mlang_data[i].family_codepage, &codepages);
3352 *ret_codepages |= codepages;
3353 }
3354 }
3355 return S_OK;
3356}
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define WC_NO_BEST_FIT_CHARS
Definition: unicode.h:46
#define debugstr_wn
Definition: kernel32.h:33

◆ fnIMLangFontLink2_GetFontCodePages()

static HRESULT WINAPI fnIMLangFontLink2_GetFontCodePages ( IMLangFontLink2 *  iface,
HDC  hdc,
HFONT  hfont,
DWORD codepages 
)
static

Definition at line 3465 of file mlang.c.

3467{
3469 FONTSIGNATURE fontsig;
3470 HFONT old_font;
3471
3472 TRACE("(%p)->(%p %p %p)\n", This, hdc, hfont, codepages);
3473
3474 if (codepages) *codepages = 0;
3475
3476 old_font = SelectObject(hdc, hfont);
3477 if (!old_font) return E_FAIL;
3478 GetTextCharsetInfo(hdc, &fontsig, 0);
3479 SelectObject(hdc, old_font);
3480
3481 *codepages = fontsig.fsCsb[0];
3482 TRACE("ret 0x%lx\n", fontsig.fsCsb[0]);
3483
3484 return S_OK;
3485}
static HFONT hfont
HDC hdc
Definition: main.c:9
DWORD fsCsb[2]
Definition: wingdi.h:1989
int WINAPI GetTextCharsetInfo(_In_ HDC, _Out_opt_ LPFONTSIGNATURE, _In_ DWORD)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1546

◆ fnIMLangFontLink2_GetFontUnicodeRanges()

static HRESULT WINAPI fnIMLangFontLink2_GetFontUnicodeRanges ( IMLangFontLink2 *  This,
HDC  hDC,
UINT puiRanges,
UNICODERANGE *  pUranges 
)
static

Definition at line 3524 of file mlang.c.

3526{
3527 DWORD size;
3528 GLYPHSET *gs;
3529
3530 TRACE("(%p)->%p %p %p\n", This, hDC, puiRanges, pUranges);
3531
3532 if (!puiRanges) return E_INVALIDARG;
3533 if (!(size = GetFontUnicodeRanges(hDC, NULL))) return E_FAIL;
3534 if (!(gs = malloc(size))) return E_OUTOFMEMORY;
3535
3536 GetFontUnicodeRanges(hDC, gs);
3537 *puiRanges = gs->cRanges;
3538 if (pUranges)
3539 {
3540 UINT i;
3541 for (i = 0; i < gs->cRanges; i++)
3542 {
3543 if (i >= *puiRanges) break;
3544 pUranges[i].wcFrom = gs->ranges[i].wcLow;
3545 pUranges[i].wcTo = gs->ranges[i].wcLow + gs->ranges[i].cGlyphs;
3546 }
3547 *puiRanges = i;
3548 }
3549 free(gs);
3550 return S_OK;
3551}
static HDC hDC
Definition: 3dtext.c:33
#define E_INVALIDARG
Definition: ddrawi.h:101
#define gs
Definition: i386-dis.c:445

◆ fnIMLangFontLink2_GetScriptFontInfo()

static HRESULT WINAPI fnIMLangFontLink2_GetScriptFontInfo ( IMLangFontLink2 *  This,
SCRIPT_ID  sid,
DWORD  dwFlags,
UINT puiFonts,
SCRIPTFONTINFO *  pScriptFont 
)
static

Definition at line 3553 of file mlang.c.

3556{
3557 UINT i, j;
3558
3559 TRACE("(%p)->%u %lx %p %p\n", This, sid, dwFlags, puiFonts, pScriptFont);
3560
3561 if (!dwFlags) dwFlags = SCRIPTCONTF_PROPORTIONAL_FONT;
3562
3563 for (i = 0, j = 0; i < ARRAY_SIZE(mlang_data); i++)
3564 {
3565 if (sid == mlang_data[i].sid)
3566 {
3567 if (pScriptFont)
3568 {
3569 if (j >= *puiFonts) break;
3570
3571 pScriptFont[j].scripts = (SCRIPT_IDS)1 << mlang_data[i].sid;
3572 if (dwFlags == SCRIPTCONTF_FIXED_FONT)
3573 wcscpy( pScriptFont[j].wszFont, mlang_data[i].fixed_font );
3574 else if (dwFlags == SCRIPTCONTF_PROPORTIONAL_FONT)
3575 wcscpy( pScriptFont[j].wszFont, mlang_data[i].proportional_font );
3576 }
3577 j++;
3578 }
3579 }
3580 *puiFonts = j;
3581 return S_OK;
3582}
FT_UInt sid
Definition: cffcmap.c:138

◆ fnIMLangFontLink2_GetStrCodePages()

static HRESULT WINAPI fnIMLangFontLink2_GetStrCodePages ( IMLangFontLink2 *  iface,
const WCHAR src,
LONG  src_len,
DWORD  priority_cp,
DWORD codepages,
LONG ret_len 
)
static

Definition at line 3358 of file mlang.c.

3361{
3363 LONG i;
3364 DWORD cps = 0;
3365
3366 TRACE("(%p)->(%s:%ld %lx %p %p)\n", This, debugstr_wn(src, src_len), src_len, priority_cp,
3368
3369 if (codepages) *codepages = 0;
3370 if (ret_len) *ret_len = 0;
3371
3372 if (!src || !src_len || src_len < 0)
3373 return E_INVALIDARG;
3374
3375 for (i = 0; i < src_len; i++)
3376 {
3377 DWORD cp = 0;
3378 HRESULT ret;
3379
3380 ret = IMLangFontLink2_GetCharCodePages(iface, src[i], &cp);
3381 if (ret != S_OK) return E_FAIL;
3382
3383 if (!cps) cps = cp;
3384 else if ((cps & cp) != 0 &&
3385 !((priority_cp & cps) ^ (priority_cp & cp))) cps &= cp;
3386 else
3387 {
3388 i--;
3389 break;
3390 }
3391 }
3392
3393 if (codepages) *codepages = cps;
3394 if (ret_len) *ret_len = min( i + 1, src_len );
3395 return S_OK;
3396}
return ret
Definition: mutex.c:146
GLenum src
Definition: glext.h:6340
POINT cp
Definition: magnifier.c:59
static JOBOBJECTINFOCLASS LPVOID DWORD LPDWORD ret_len
Definition: process.c:81
long LONG
Definition: pedump.c:60

◆ fnIMLangFontLink2_MapFont()

static HRESULT WINAPI fnIMLangFontLink2_MapFont ( IMLangFontLink2 *  This,
HDC  hDC,
DWORD  dwCodePages,
WCHAR  chSrc,
HFONT *  pFont 
)
static

Definition at line 3502 of file mlang.c.

3504{
3505 HFONT old_font;
3506
3507 TRACE("(%p)->%p %08lx %04x %p\n",This, hDC, dwCodePages, chSrc, pFont);
3508
3509 if (!hDC) return E_FAIL;
3510
3511 if (dwCodePages != 0)
3512 {
3513 old_font = GetCurrentObject(hDC, OBJ_FONT);
3514 return map_font(hDC, dwCodePages, old_font, pFont);
3515 }
3516 else
3517 {
3518 if (pFont == NULL) return E_INVALIDARG;
3519 FIXME("the situation where dwCodepages is set to zero is not implemented\n");
3520 return E_FAIL;
3521 }
3522}
static HRESULT map_font(HDC hdc, DWORD codepages, HFONT src_font, HFONT *dst_font)
Definition: mlang.c:1350
#define OBJ_FONT
Definition: objidl.idl:1019
HGDIOBJ WINAPI GetCurrentObject(_In_ HDC, _In_ UINT)
Definition: dc.c:428

◆ fnIMLangFontLink2_QueryInterface()

static HRESULT WINAPI fnIMLangFontLink2_QueryInterface ( IMLangFontLink2 *  iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 3306 of file mlang.c.

3310{
3312 return IMultiLanguage3_QueryInterface( &This->IMultiLanguage3_iface, riid, ppvObject );
3313}

◆ fnIMLangFontLink2_Release()

static ULONG WINAPI fnIMLangFontLink2_Release ( IMLangFontLink2 *  iface)
static

Definition at line 3321 of file mlang.c.

3322{
3324 return IMultiLanguage3_Release( &This->IMultiLanguage3_iface );
3325}

◆ fnIMLangFontLink2_ReleaseFont()

static HRESULT WINAPI fnIMLangFontLink2_ReleaseFont ( IMLangFontLink2 *  This,
HFONT  hFont 
)
static

Definition at line 3487 of file mlang.c.

3489{
3490 TRACE("(%p)->%p\n",This, hFont);
3491
3492 return release_font(hFont);
3493}
HFONT hFont
Definition: main.c:53
static HRESULT release_font(HFONT font)
Definition: mlang.c:1425

◆ fnIMLangFontLink2_ResetFontMapping()

static HRESULT WINAPI fnIMLangFontLink2_ResetFontMapping ( IMLangFontLink2 *  This)
static

Definition at line 3495 of file mlang.c.

3496{
3497 TRACE("(%p)\n",This);
3498
3499 return clear_font_cache();
3500}
static HRESULT clear_font_cache(void)
Definition: mlang.c:1448

◆ fnIMLangFontLink_AddRef()

static ULONG WINAPI fnIMLangFontLink_AddRef ( IMLangFontLink *  iface)
static

Definition at line 1999 of file mlang.c.

2001{
2003 return IMultiLanguage3_AddRef( &This->IMultiLanguage3_iface );
2004}
static MLang_impl * impl_from_IMLangFontLink(IMLangFontLink *iface)
Definition: mlang.c:1985

◆ fnIMLangFontLink_CodePagesToCodePage()

static HRESULT WINAPI fnIMLangFontLink_CodePagesToCodePage ( IMLangFontLink *  iface,
DWORD  codepages,
UINT  def_codepage,
UINT codepage 
)
static

Definition at line 2044 of file mlang.c.

2049{
2051 return IMLangFontLink2_CodePagesToCodePage(&This->IMLangFontLink2_iface, codepages,
2052 def_codepage, codepage);
2053}

◆ fnIMLangFontLink_CodePageToCodePages()

static HRESULT WINAPI fnIMLangFontLink_CodePageToCodePages ( IMLangFontLink *  iface,
UINT  codepage,
DWORD codepages 
)
static

Definition at line 2035 of file mlang.c.

2039{
2041 return IMLangFontLink2_CodePageToCodePages(&This->IMLangFontLink2_iface, codepage, codepages);
2042}

◆ fnIMLangFontLink_GetCharCodePages()

static HRESULT WINAPI fnIMLangFontLink_GetCharCodePages ( IMLangFontLink *  iface,
WCHAR  ch_src,
DWORD codepages 
)
static

Definition at line 2013 of file mlang.c.

2017{
2019 return IMLangFontLink2_GetCharCodePages(&This->IMLangFontLink2_iface, ch_src, codepages);
2020}

◆ fnIMLangFontLink_GetFontCodePages()

static HRESULT WINAPI fnIMLangFontLink_GetFontCodePages ( IMLangFontLink *  iface,
HDC  hdc,
HFONT  hfont,
DWORD codepages 
)
static

Definition at line 2055 of file mlang.c.

2060{
2062 return IMLangFontLink2_GetFontCodePages(&This->IMLangFontLink2_iface, hdc, hfont, codepages);
2063}

◆ fnIMLangFontLink_GetStrCodePages()

static HRESULT WINAPI fnIMLangFontLink_GetStrCodePages ( IMLangFontLink *  iface,
const WCHAR src,
LONG  src_len,
DWORD  priority_cp,
DWORD codepages,
LONG ret_len 
)
static

Definition at line 2022 of file mlang.c.

2029{
2031 return IMLangFontLink2_GetStrCodePages(&This->IMLangFontLink2_iface, src, src_len, priority_cp,
2033}

◆ fnIMLangFontLink_MapFont()

static HRESULT WINAPI fnIMLangFontLink_MapFont ( IMLangFontLink *  iface,
HDC  hDC,
DWORD  dwCodePages,
HFONT  hSrcFont,
HFONT *  phDestFont 
)
static

Definition at line 2065 of file mlang.c.

2071{
2072 TRACE("(%p)->%p %08lx %p %p\n",iface, hDC, dwCodePages, hSrcFont, phDestFont);
2073
2074 return map_font(hDC, dwCodePages, hSrcFont, phDestFont);
2075}

◆ fnIMLangFontLink_QueryInterface()

static HRESULT WINAPI fnIMLangFontLink_QueryInterface ( IMLangFontLink *  iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 1990 of file mlang.c.

1994{
1996 return IMultiLanguage3_QueryInterface( &This->IMultiLanguage3_iface, riid, ppvObject );
1997}

◆ fnIMLangFontLink_Release()

static ULONG WINAPI fnIMLangFontLink_Release ( IMLangFontLink *  iface)
static

Definition at line 2006 of file mlang.c.

2008{
2010 return IMultiLanguage3_Release( &This->IMultiLanguage3_iface );
2011}

◆ fnIMLangFontLink_ReleaseFont()

static HRESULT WINAPI fnIMLangFontLink_ReleaseFont ( IMLangFontLink *  iface,
HFONT  hFont 
)
static

Definition at line 2077 of file mlang.c.

2080{
2081 TRACE("(%p)->%p\n",iface, hFont);
2082
2083 return release_font(hFont);
2084}

◆ fnIMLangFontLink_ResetFontMapping()

static HRESULT WINAPI fnIMLangFontLink_ResetFontMapping ( IMLangFontLink *  iface)
static

Definition at line 2086 of file mlang.c.

2088{
2089 TRACE("(%p)\n",iface);
2090
2091 return clear_font_cache();
2092}

◆ fnIMLangLineBreakConsole_AddRef()

static ULONG WINAPI fnIMLangLineBreakConsole_AddRef ( IMLangLineBreakConsole *  iface)
static

Definition at line 3638 of file mlang.c.

3640{
3642 return IMultiLanguage3_AddRef( &This->IMultiLanguage3_iface );
3643}
static MLang_impl * impl_from_IMLangLineBreakConsole(IMLangLineBreakConsole *iface)
Definition: mlang.c:3624

◆ fnIMLangLineBreakConsole_BreakLineA()

static HRESULT WINAPI fnIMLangLineBreakConsole_BreakLineA ( IMLangLineBreakConsole *  iface,
LCID  locale,
UINT  uCodePage,
const CHAR pszSrc,
LONG  cchSrc,
LONG  cMaxColumns,
LONG pcchLine,
LONG pcchSkip 
)
static

Definition at line 3682 of file mlang.c.

3691{
3692 LONG i, line = cchSrc, skip = 0;
3693
3694 FIXME("(%p)->%li %i %s %li %li %p %p\n", iface, locale, uCodePage, debugstr_an(pszSrc,cchSrc), cchSrc, cMaxColumns, pcchLine, pcchSkip);
3695
3696 if (uCodePage == CP_USASCII && cchSrc > cMaxColumns)
3697 {
3698 for (line = cMaxColumns, i = cMaxColumns - 1; i >= 0; i--)
3699 {
3700 if (pszSrc[i] == ' ')
3701 {
3702 while (i >= 0 && pszSrc[i] == ' ')
3703 {
3704 i--;
3705 line--;
3706 skip++;
3707 }
3708 break;
3709 }
3710 }
3711 }
3712 *pcchLine = line;
3713 *pcchSkip = skip;
3714 return S_OK;
3715}
#define skip(...)
Definition: atltest.h:64
Definition: parser.c:49
_In_ DWORD _In_ int cchSrc
Definition: winnls.h:1264

◆ fnIMLangLineBreakConsole_BreakLineML()

static HRESULT WINAPI fnIMLangLineBreakConsole_BreakLineML ( IMLangLineBreakConsole *  iface,
IMLangString *  pSrcMLStr,
LONG  lSrcPos,
LONG  lSrcLen,
LONG  cMinColumns,
LONG  cMaxColumns,
LONG plLineLen,
LONG plSkipLen 
)
static

Definition at line 3652 of file mlang.c.

3661{
3662 FIXME("(%p)->%p %li %li %li %li %p %p\n", iface, pSrcMLStr, lSrcPos, lSrcLen, cMinColumns, cMaxColumns, plLineLen, plSkipLen);
3663 return E_NOTIMPL;
3664}

◆ fnIMLangLineBreakConsole_BreakLineW()

static HRESULT WINAPI fnIMLangLineBreakConsole_BreakLineW ( IMLangLineBreakConsole *  iface,
LCID  locale,
const WCHAR pszSrc,
LONG  cchSrc,
LONG  cMaxColumns,
LONG pcchLine,
LONG pcchSkip 
)
static

Definition at line 3666 of file mlang.c.

3674{
3675 FIXME("(%p)->%li %s %li %li %p %p\n", iface, locale, debugstr_wn(pszSrc,cchSrc), cchSrc, cMaxColumns, pcchLine, pcchSkip);
3676
3677 *pcchLine = cchSrc;
3678 *pcchSkip = 0;
3679 return S_OK;
3680}

◆ fnIMLangLineBreakConsole_QueryInterface()

static HRESULT WINAPI fnIMLangLineBreakConsole_QueryInterface ( IMLangLineBreakConsole *  iface,
REFIID  riid,
void **  ppvObject 
)
static

Definition at line 3629 of file mlang.c.

3633{
3635 return IMultiLanguage3_QueryInterface( &This->IMultiLanguage3_iface, riid, ppvObject );
3636}

◆ fnIMLangLineBreakConsole_Release()

static ULONG WINAPI fnIMLangLineBreakConsole_Release ( IMLangLineBreakConsole *  iface)
static

Definition at line 3645 of file mlang.c.

3647{
3649 return IMultiLanguage3_Release( &This->IMultiLanguage3_iface );
3650}

◆ fnIMultiLanguage3_AddRef()

static ULONG WINAPI fnIMultiLanguage3_AddRef ( IMultiLanguage3 *  iface)
static

Definition at line 2633 of file mlang.c.

2634{
2636 return InterlockedIncrement(&This->ref);
2637}
static MLang_impl * impl_from_IMultiLanguage3(IMultiLanguage3 *iface)
Definition: mlang.c:2585

◆ fnIMultiLanguage3_ConvertString()

static HRESULT WINAPI fnIMultiLanguage3_ConvertString ( IMultiLanguage3 *  iface,
DWORD pdwMode,
DWORD  dwSrcEncoding,
DWORD  dwDstEncoding,
BYTE pSrcStr,
UINT pcSrcSize,
BYTE pDstStr,
UINT pcDstSize 
)
static

Definition at line 2810 of file mlang.c.

2819{
2820 return ConvertINetString(pdwMode, dwSrcEncoding, dwDstEncoding,
2821 (LPCSTR)pSrcStr, (LPINT)pcSrcSize, (LPSTR)pDstStr, (LPINT)pcDstSize);
2822}
int * LPINT
Definition: minwindef.h:151
const char * LPCSTR
Definition: typedefs.h:52
char * LPSTR
Definition: typedefs.h:51
static CONVERTINETSTRING ConvertINetString
Definition: win_iconv.c:704

◆ fnIMultiLanguage3_ConvertStringFromUnicode()

static HRESULT WINAPI fnIMultiLanguage3_ConvertStringFromUnicode ( IMultiLanguage3 *  iface,
DWORD pdwMode,
DWORD  dwEncoding,
WCHAR pSrcStr,
UINT pcSrcSize,
CHAR pDstStr,
UINT pcDstSize 
)
static

Definition at line 2837 of file mlang.c.

2845{
2846 return ConvertINetUnicodeToMultiByte(pdwMode, dwEncoding,
2847 pSrcStr, (LPINT)pcSrcSize, pDstStr, (LPINT)pcDstSize);
2848}

◆ fnIMultiLanguage3_ConvertStringFromUnicodeEx()

static HRESULT WINAPI fnIMultiLanguage3_ConvertStringFromUnicodeEx ( IMultiLanguage3 *  This,
DWORD pdwMode,
DWORD  dwEncoding,
WCHAR pSrcStr,
UINT pcSrcSize,
CHAR pDstStr,
UINT pcDstSize,
DWORD  dwFlag,
WCHAR lpFallBack 
)
static

Definition at line 3060 of file mlang.c.

3070{
3071 FIXME("\n");
3072 return ConvertINetUnicodeToMultiByte(pdwMode, dwEncoding,
3073 pSrcStr, (LPINT)pcSrcSize, pDstStr, (LPINT)pcDstSize);
3074}

◆ fnIMultiLanguage3_ConvertStringInIStream()

static HRESULT WINAPI fnIMultiLanguage3_ConvertStringInIStream ( IMultiLanguage3 *  iface,
DWORD pdwMode,
DWORD  dwFlag,
WCHAR lpFallBack,
DWORD  dwSrcEncoding,
DWORD  dwDstEncoding,
IStream pstmIn,
IStream pstmOut 
)
static

Definition at line 2975 of file mlang.c.

2984{
2985 char *src, *dst = NULL;
2986 INT srclen, dstlen;
2987 STATSTG stat;
2988 HRESULT hr;
2989
2990 TRACE("%p %0lx8 %s %lu %lu %p %p\n",
2991 pdwMode, dwFlag, debugstr_w(lpFallBack), dwSrcEncoding, dwDstEncoding, pstmIn, pstmOut);
2992
2993 FIXME("dwFlag and lpFallBack not handled\n");
2994
2995 hr = IStream_Stat(pstmIn, &stat, STATFLAG_NONAME);
2996 if (FAILED(hr)) return hr;
2997
2998 if (stat.cbSize.QuadPart > MAXLONG) return E_INVALIDARG;
2999 if (!(src = malloc(stat.cbSize.QuadPart))) return E_OUTOFMEMORY;
3000
3001 hr = IStream_Read(pstmIn, src, stat.cbSize.QuadPart, (ULONG *)&srclen);
3002 if (FAILED(hr)) goto exit;
3003
3004 hr = ConvertINetString(pdwMode, dwSrcEncoding, dwDstEncoding, src, &srclen, NULL, &dstlen);
3005 if (FAILED(hr)) goto exit;
3006
3007 if (!(dst = malloc(dstlen)))
3008 {
3009 hr = E_OUTOFMEMORY;
3010 goto exit;
3011 }
3012 hr = ConvertINetString(pdwMode, dwSrcEncoding, dwDstEncoding, src, &srclen, dst, &dstlen);
3013 if (FAILED(hr)) goto exit;
3014
3015 hr = IStream_Write(pstmOut, dst, dstlen, NULL);
3016
3017exit:
3018 free(src);
3019 free(dst);
3020 return hr;
3021}
#define stat
Definition: acwin.h:99
GLenum GLenum dst
Definition: glext.h:6340
static DWORD LPDWORD LPCSTR DWORD srclen
Definition: directory.c:52
static DWORD dstlen
Definition: directory.c:51
#define exit(n)
Definition: config.h:202
Definition: stat.h:66
#define MAXLONG
Definition: umtypes.h:116

◆ fnIMultiLanguage3_ConvertStringReset()

static HRESULT WINAPI fnIMultiLanguage3_ConvertStringReset ( IMultiLanguage3 *  iface)
static

Definition at line 2850 of file mlang.c.

2852{
2853 FIXME("\n");
2854 return E_NOTIMPL;
2855}

◆ fnIMultiLanguage3_ConvertStringToUnicode()

static HRESULT WINAPI fnIMultiLanguage3_ConvertStringToUnicode ( IMultiLanguage3 *  iface,
DWORD pdwMode,
DWORD  dwEncoding,
CHAR pSrcStr,
UINT pcSrcSize,
WCHAR pDstStr,
UINT pcDstSize 
)
static

Definition at line 2824 of file mlang.c.

2832{
2833 return ConvertINetMultiByteToUnicode(pdwMode, dwEncoding,
2834 pSrcStr, (LPINT)pcSrcSize, pDstStr, (LPINT)pcDstSize);
2835}

◆ fnIMultiLanguage3_ConvertStringToUnicodeEx()

static HRESULT WINAPI fnIMultiLanguage3_ConvertStringToUnicodeEx ( IMultiLanguage3 *  iface,
DWORD pdwMode,
DWORD  dwEncoding,
CHAR pSrcStr,
UINT pcSrcSize,
WCHAR pDstStr,
UINT pcDstSize,
DWORD  dwFlag,
WCHAR lpFallBack 
)
static

Definition at line 3023 of file mlang.c.

3033{
3034 if (dwFlag || lpFallBack)
3035 FIXME("Ignoring dwFlag (0x%lx/%ld) and lpFallBack (%p)\n",
3036 dwFlag, dwFlag, lpFallBack);
3037
3038 return ConvertINetMultiByteToUnicode(pdwMode, dwEncoding,
3039 pSrcStr, (LPINT)pcSrcSize, pDstStr, (LPINT)pcDstSize);
3040}

◆ fnIMultiLanguage3_CreateConvertCharset()

static HRESULT WINAPI fnIMultiLanguage3_CreateConvertCharset ( IMultiLanguage3 *  iface,
UINT  src_cp,
UINT  dst_cp,
DWORD  prop,
IMLangConvertCharset **  convert_charset 
)
static

Definition at line 2958 of file mlang.c.

2964{
2965 HRESULT hr;
2966
2967 TRACE("(%u %u 0x%08lx %p)\n", src_cp, dst_cp, prop, convert_charset);
2968
2970 if (FAILED(hr)) return hr;
2971
2972 return IMLangConvertCharset_Initialize(*convert_charset, src_cp, dst_cp, prop);
2973}
static HRESULT MLangConvertCharset_create(IUnknown *outer, void **obj)
Definition: mlang.c:3897

◆ fnIMultiLanguage3_DetectCodepageInIStream()

static HRESULT WINAPI fnIMultiLanguage3_DetectCodepageInIStream ( IMultiLanguage3 *  iface,
DWORD  dwFlag,
DWORD  dwPrefWinCodePage,
IStream pstmIn,
DetectEncodingInfo *  lpEncoding,
INT pnScores 
)
static

Definition at line 3076 of file mlang.c.

3083{
3084 FIXME("\n");
3085 return E_NOTIMPL;
3086}

◆ fnIMultiLanguage3_DetectInputCodepage()

static HRESULT WINAPI fnIMultiLanguage3_DetectInputCodepage ( IMultiLanguage3 *  iface,
DWORD  dwFlag,
DWORD  dwPrefWinCodePage,
CHAR pSrcStr,
INT pcSrcSize,
DetectEncodingInfo *  lpEncoding,
INT pnScores 
)
static

Definition at line 3088 of file mlang.c.

3096{
3097 FIXME("\n");
3098 return E_NOTIMPL;
3099}

◆ fnIMultiLanguage3_DetectOutboundCodePage()

static HRESULT WINAPI fnIMultiLanguage3_DetectOutboundCodePage ( IMultiLanguage3 *  iface,
DWORD  dwFlags,
LPCWSTR  lpWideCharStr,
UINT  cchWideChar,
UINT puiPreferredCodePages,
UINT  nPreferredCodePages,
UINT puiDetectedCodePages,
UINT pnDetectedCodePages,
WCHAR lpSpecialChar 
)
static

Definition at line 3212 of file mlang.c.

3222{
3224
3225 FIXME("(%p)->(%08lx %s %p %u %p %p(%u) %s)\n", This, dwFlags, debugstr_w(lpWideCharStr),
3226 puiPreferredCodePages, nPreferredCodePages, puiDetectedCodePages,
3227 pnDetectedCodePages, pnDetectedCodePages ? *pnDetectedCodePages : 0,
3228 debugstr_w(lpSpecialChar));
3229
3230 if (!puiDetectedCodePages || !pnDetectedCodePages || !*pnDetectedCodePages)
3231 return E_INVALIDARG;
3232
3233 puiDetectedCodePages[0] = CP_UTF8;
3234 *pnDetectedCodePages = 1;
3235 return S_OK;
3236}
#define CP_UTF8
Definition: nls.h:20

◆ fnIMultiLanguage3_DetectOutboundCodePageInIStream()

static HRESULT WINAPI fnIMultiLanguage3_DetectOutboundCodePageInIStream ( IMultiLanguage3 *  iface,
DWORD  dwFlags,
IStream pStrIn,
UINT puiPreferredCodePages,
UINT  nPreferredCodePages,
UINT puiDetectedCodePages,
UINT pnDetectedCodePages,
WCHAR lpSpecialChar 
)
static

Definition at line 3238 of file mlang.c.

3247{
3249
3250 FIXME("(%p)->(%08lx %p %p %u %p %p(%u) %s)\n", This, dwFlags, pStrIn,
3251 puiPreferredCodePages, nPreferredCodePages, puiDetectedCodePages,
3252 pnDetectedCodePages, pnDetectedCodePages ? *pnDetectedCodePages : 0,
3253 debugstr_w(lpSpecialChar));
3254
3255 if (!puiDetectedCodePages || !pnDetectedCodePages || !*pnDetectedCodePages)
3256 return E_INVALIDARG;
3257
3258 puiDetectedCodePages[0] = CP_UTF8;
3259 *pnDetectedCodePages = 1;
3260 return S_OK;
3261}

◆ fnIMultiLanguage3_EnumCodePages()

static HRESULT WINAPI fnIMultiLanguage3_EnumCodePages ( IMultiLanguage3 *  iface,
DWORD  grfFlags,
LANGID  LangId,
IEnumCodePage **  ppEnumCodePage 
)
static

Definition at line 2734 of file mlang.c.

2739{
2741
2742 TRACE("%p %08lx %04x %p\n", This, grfFlags, LangId, ppEnumCodePage);
2743
2744 return EnumCodePage_create( This, grfFlags, LangId, ppEnumCodePage );
2745}
static HRESULT EnumCodePage_create(MLang_impl *mlang, DWORD grfFlags, LANGID LangId, IEnumCodePage **ppEnumCodePage)
Definition: mlang.c:1771

◆ fnIMultiLanguage3_EnumRfc1766()

static HRESULT WINAPI fnIMultiLanguage3_EnumRfc1766 ( IMultiLanguage3 *  iface,
LANGID  LangId,
IEnumRfc1766 **  ppEnumRfc1766 
)
static

Definition at line 2899 of file mlang.c.

2903{
2905
2906 TRACE("%p %p\n", This, ppEnumRfc1766);
2907
2908 return EnumRfc1766_create(LangId, ppEnumRfc1766);
2909}
static HRESULT EnumRfc1766_create(LANGID LangId, IEnumRfc1766 **ppEnum)
Definition: mlang.c:2457

◆ fnIMultiLanguage3_EnumScripts()

static HRESULT WINAPI fnIMultiLanguage3_EnumScripts ( IMultiLanguage3 *  iface,
DWORD  dwFlags,
LANGID  LangId,
IEnumScript **  ppEnumScript 
)
static

Definition at line 3167 of file mlang.c.

3172{
3174
3175 TRACE("%p %08lx %04x %p\n", This, dwFlags, LangId, ppEnumScript);
3176
3177 return EnumScript_create( This, dwFlags, LangId, ppEnumScript );
3178}
static HRESULT EnumScript_create(MLang_impl *mlang, DWORD dwFlags, LANGID LangId, IEnumScript **ppEnumScript)
Definition: mlang.c:1948

◆ fnIMultiLanguage3_GetCharsetInfo()

static HRESULT WINAPI fnIMultiLanguage3_GetCharsetInfo ( IMultiLanguage3 *  iface,
BSTR  Charset,
PMIMECSETINFO  pCharsetInfo 
)
static

Definition at line 2747 of file mlang.c.

2751{
2752 UINT i, n;
2754
2755 TRACE("%p %s %p\n", This, debugstr_w(Charset), pCharsetInfo);
2756
2757 if (!pCharsetInfo) return E_FAIL;
2758
2759 for (i = 0; i < ARRAY_SIZE(mlang_data); i++)
2760 {
2761 for (n = 0; n < mlang_data[i].number_of_cp; n++)
2762 {
2763 if (!lstrcmpiW(Charset, mlang_data[i].mime_cp_info[n].web_charset))
2764 {
2765 pCharsetInfo->uiCodePage = mlang_data[i].family_codepage;
2766 pCharsetInfo->uiInternetEncoding = mlang_data[i].mime_cp_info[n].cp;
2767 lstrcpyW(pCharsetInfo->wszCharset, mlang_data[i].mime_cp_info[n].web_charset);
2768 return S_OK;
2769 }
2770 if (mlang_data[i].mime_cp_info[n].alias && !lstrcmpiW(Charset, mlang_data[i].mime_cp_info[n].alias))
2771 {
2772 pCharsetInfo->uiCodePage = mlang_data[i].family_codepage;
2773 pCharsetInfo->uiInternetEncoding = mlang_data[i].mime_cp_info[n].cp;
2774 lstrcpyW(pCharsetInfo->wszCharset, mlang_data[i].mime_cp_info[n].alias);
2775 return S_OK;
2776 }
2777 }
2778 }
2779
2780 /* FIXME:
2781 * Since we do not support charsets like iso-2022-jp and do not have
2782 * them in our database as a primary (web_charset) encoding this loop
2783 * does an attempt to 'approximate' charset name by header_charset.
2784 */
2785 for (i = 0; i < ARRAY_SIZE(mlang_data); i++)
2786 {
2787 for (n = 0; n < mlang_data[i].number_of_cp; n++)
2788 {
2789 if (!lstrcmpiW(Charset, mlang_data[i].mime_cp_info[n].header_charset))
2790 {
2791 pCharsetInfo->uiCodePage = mlang_data[i].family_codepage;
2792 pCharsetInfo->uiInternetEncoding = mlang_data[i].mime_cp_info[n].cp;
2793 lstrcpyW(pCharsetInfo->wszCharset, mlang_data[i].mime_cp_info[n].header_charset);
2794 return S_OK;
2795 }
2796 }
2797 }
2798
2799 return E_FAIL;
2800}
const WCHAR * alias
Definition: main.c:67
#define lstrcpyW
Definition: compat.h:749
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4171
const WCHAR * alias
Definition: mlang.c:67

◆ fnIMultiLanguage3_GetCodePageDescription()

static HRESULT WINAPI fnIMultiLanguage3_GetCodePageDescription ( IMultiLanguage3 *  iface,
UINT  uiCodePage,
LCID  lcid,
LPWSTR  lpWideCharStr,
int  cchWideChar 
)
static

Definition at line 3109 of file mlang.c.

3115{
3116 /* Find first instance */
3117 unsigned int i,n;
3118
3119 TRACE ("%u, %04lx, %p, %d\n", uiCodePage, lcid, lpWideCharStr, cchWideChar);
3120 for (i = 0; i < ARRAY_SIZE(mlang_data); i++)
3121 {
3122 for (n = 0; n < mlang_data[i].number_of_cp; n++)
3123 {
3124 if (mlang_data[i].mime_cp_info[n].cp == uiCodePage)
3125 {
3126 lstrcpynW( lpWideCharStr, mlang_data[i].mime_cp_info[n].description, cchWideChar);
3127 return S_OK;
3128 }
3129 }
3130 }
3131
3132 return S_FALSE;
3133}
#define lstrcpynW
Definition: compat.h:738
const char * description
Definition: directx.c:2497

◆ fnIMultiLanguage3_GetCodePageInfo()

static HRESULT WINAPI fnIMultiLanguage3_GetCodePageInfo ( IMultiLanguage3 *  iface,
UINT  uiCodePage,
LANGID  LangId,
PMIMECPINFO  pCodePageInfo 
)
static

Definition at line 2700 of file mlang.c.

2705{
2706 UINT i, n;
2708
2709 TRACE("%p, %u, %04x, %p\n", This, uiCodePage, LangId, pCodePageInfo);
2710
2711 for (i = 0; i < ARRAY_SIZE(mlang_data); i++)
2712 {
2713 for (n = 0; n < mlang_data[i].number_of_cp; n++)
2714 {
2715 if (mlang_data[i].mime_cp_info[n].cp == uiCodePage)
2716 {
2717 fill_cp_info(&mlang_data[i], n, pCodePageInfo);
2718 return S_OK;
2719 }
2720 }
2721 }
2722
2723 return S_FALSE;
2724}

◆ fnIMultiLanguage3_GetFamilyCodePage()

static HRESULT WINAPI fnIMultiLanguage3_GetFamilyCodePage ( IMultiLanguage3 *  iface,
UINT  uiCodePage,
UINT puiFamilyCodePage 
)
static

Definition at line 2726 of file mlang.c.

2730{
2731 return GetFamilyCodePage(uiCodePage, puiFamilyCodePage);
2732}
static HRESULT GetFamilyCodePage(UINT uiCodePage, UINT *puiFamilyCodePage)
Definition: mlang.c:1136

◆ fnIMultiLanguage3_GetLcidFromRfc1766()

static HRESULT WINAPI fnIMultiLanguage3_GetLcidFromRfc1766 ( IMultiLanguage3 *  iface,
LCID pLocale,
BSTR  bstrRfc1766 
)
static

Definition at line 2876 of file mlang.c.

2880{
2881 HRESULT hr;
2882 IEnumRfc1766 *rfc1766;
2883
2884 TRACE("%p %p %s\n", iface, pLocale, debugstr_w(bstrRfc1766));
2885
2886 if (!pLocale || !bstrRfc1766)
2887 return E_INVALIDARG;
2888
2889 hr = IMultiLanguage3_EnumRfc1766(iface, 0, &rfc1766);
2890 if (FAILED(hr))
2891 return hr;
2892
2893 hr = lcid_from_rfc1766(rfc1766, pLocale, bstrRfc1766);
2894
2895 IEnumRfc1766_Release(rfc1766);
2896 return hr;
2897}
static HRESULT lcid_from_rfc1766(IEnumRfc1766 *iface, LCID *lcid, LPCWSTR rfc1766)
Definition: mlang.c:1259

◆ fnIMultiLanguage3_GetNumberOfCodePageInfo()

static HRESULT WINAPI fnIMultiLanguage3_GetNumberOfCodePageInfo ( IMultiLanguage3 *  iface,
UINT pcCodePage 
)
static

Definition at line 2654 of file mlang.c.

2657{
2659
2660 TRACE("%p, %p\n", This, pcCodePage);
2661
2662 if (!pcCodePage) return E_INVALIDARG;
2663
2664 *pcCodePage = This->total_cp;
2665 return S_OK;
2666}

◆ fnIMultiLanguage3_GetNumberOfScripts()

static HRESULT WINAPI fnIMultiLanguage3_GetNumberOfScripts ( IMultiLanguage3 *  iface,
UINT pnScripts 
)
static

Definition at line 3153 of file mlang.c.

3156{
3158
3159 TRACE("%p %p\n", This, pnScripts);
3160
3161 if (!pnScripts) return S_FALSE;
3162
3163 *pnScripts = This->total_scripts;
3164 return S_OK;
3165}

◆ fnIMultiLanguage3_GetRfc1766FromLcid()

static HRESULT WINAPI fnIMultiLanguage3_GetRfc1766FromLcid ( IMultiLanguage3 *  iface,
LCID  lcid,
BSTR pbstrRfc1766 
)
static

Definition at line 2857 of file mlang.c.

2861{
2862 WCHAR buf[MAX_RFC1766_NAME];
2863
2864 TRACE("%p %04lx %p\n", iface, lcid, pbstrRfc1766);
2865 if (!pbstrRfc1766)
2866 return E_INVALIDARG;
2867
2868 if (!lcid_to_rfc1766W( lcid, buf, MAX_RFC1766_NAME ))
2869 {
2870 *pbstrRfc1766 = SysAllocString( buf );
2871 return S_OK;
2872 }
2873 return E_FAIL;
2874}
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:238

◆ fnIMultiLanguage3_GetRfc1766Info()

static HRESULT WINAPI fnIMultiLanguage3_GetRfc1766Info ( IMultiLanguage3 *  iface,
LCID  Locale,
LANGID  LangId,
PRFC1766INFO  pRfc1766Info 
)
static

Definition at line 2911 of file mlang.c.

2916{
2917 static LANGID last_lang = -1;
2919
2920 TRACE("(%p, 0x%04lx, 0x%04x, %p)\n", iface, Locale, LangId, pRfc1766Info);
2921
2922 if (!pRfc1766Info)
2923 return E_INVALIDARG;
2924
2925 if ((PRIMARYLANGID(Locale) == LANG_ENGLISH) ||
2926 (PRIMARYLANGID(Locale) == LANG_CHINESE) ||
2927 (PRIMARYLANGID(Locale) == LANG_ARABIC)) {
2928
2929 if (!SUBLANGID(Locale))
2930 type = LOCALE_SENGLANGUAGE; /* suppress country */
2931 }
2932 else
2933 {
2934 if (!SUBLANGID(Locale)) {
2935 TRACE("SUBLANGID missing in 0x%04lx\n", Locale);
2936 return E_FAIL;
2937 }
2938 }
2939
2940 pRfc1766Info->lcid = Locale;
2941 pRfc1766Info->wszRfc1766[0] = 0;
2942 pRfc1766Info->wszLocaleName[0] = 0;
2943
2944 if ((PRIMARYLANGID(LangId) != LANG_ENGLISH) &&
2945 (last_lang != LangId)) {
2946 FIXME("Only English names supported (requested: 0x%04x)\n", LangId);
2947 last_lang = LangId;
2948 }
2949
2950 if ((!lcid_to_rfc1766W(Locale, pRfc1766Info->wszRfc1766, MAX_RFC1766_NAME)) &&
2951 (GetLocaleInfoW(Locale, type, pRfc1766Info->wszLocaleName, MAX_LOCALE_NAME) > 0))
2952 return S_OK;
2953
2954 /* Locale not supported */
2955 return E_INVALIDARG;
2956}
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
USHORT LANGID
Definition: mui.h:9
#define SUBLANGID(l)
Definition: nls.h:17
#define LANG_ENGLISH
Definition: nls.h:52
#define LANG_ARABIC
Definition: nls.h:29
#define LANG_CHINESE
Definition: nls.h:42
#define PRIMARYLANGID(l)
Definition: nls.h:16
#define LOCALE_SENGLANGUAGE
Definition: winnls.h:32
DWORD LCTYPE
Definition: winnls.h:581

◆ fnIMultiLanguage3_IsCodePageInstallable()

static HRESULT WINAPI fnIMultiLanguage3_IsCodePageInstallable ( IMultiLanguage3 *  iface,
UINT  uiCodePage 
)
static

Definition at line 3135 of file mlang.c.

3138{
3139 TRACE("%u\n", uiCodePage);
3140
3141 /* FIXME: the installable set is usually larger than the set of valid codepages */
3142 return IMultiLanguage3_ValidateCodePageEx(iface, uiCodePage, NULL, CPIOD_PEEK);
3143}

◆ fnIMultiLanguage3_IsConvertible()

static HRESULT WINAPI fnIMultiLanguage3_IsConvertible ( IMultiLanguage3 *  iface,
DWORD  dwSrcEncoding,
DWORD  dwDstEncoding 
)
static

Definition at line 2802 of file mlang.c.

2806{
2807 return IsConvertINetStringAvailable(dwSrcEncoding, dwDstEncoding);
2808}
static ISCONVERTINETSTRINGAVAILABLE IsConvertINetStringAvailable
Definition: win_iconv.c:707

◆ fnIMultiLanguage3_QueryInterface()

static HRESULT WINAPI fnIMultiLanguage3_QueryInterface ( IMultiLanguage3 *  iface,
REFIID  riid,
void **  obj 
)
static

Definition at line 2590 of file mlang.c.

2594{
2596
2597 TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), obj);
2598
2599 if (IsEqualGUID(riid, &IID_IUnknown) ||
2600 IsEqualGUID(riid, &IID_IMultiLanguage))
2601 {
2602 *obj = &This->IMultiLanguage_iface;
2603 }
2604 else if (IsEqualGUID(riid, &IID_IMLangCodePages) ||
2605 IsEqualGUID(riid, &IID_IMLangFontLink))
2606 {
2607 *obj = &This->IMLangFontLink_iface;
2608 }
2609 else if (IsEqualGUID(riid, &IID_IMLangFontLink2))
2610 {
2611 *obj = &This->IMLangFontLink2_iface;
2612 }
2613 else if (IsEqualGUID(riid, &IID_IMultiLanguage2) ||
2614 IsEqualGUID(riid, &IID_IMultiLanguage3))
2615 {
2616 *obj = &This->IMultiLanguage3_iface;
2617 }
2618 else if (IsEqualGUID(riid, &IID_IMLangLineBreakConsole))
2619 {
2620 *obj = &This->IMLangLineBreakConsole_iface;
2621 }
2622 else
2623 {
2624 WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), obj);
2625 *obj = NULL;
2626 return E_NOINTERFACE;
2627 }
2628
2629 IMultiLanguage3_AddRef(iface);
2630 return S_OK;
2631}

◆ fnIMultiLanguage3_Release()

static ULONG WINAPI fnIMultiLanguage3_Release ( IMultiLanguage3 *  iface)
static

Definition at line 2639 of file mlang.c.

2640{
2643
2644 TRACE("(%p)->(%ld)\n", This, ref);
2645 if (ref == 0)
2646 {
2647 free(This);
2648 UnlockModule();
2649 }
2650
2651 return ref;
2652}
static void UnlockModule(void)
Definition: mlang.c:929

◆ fnIMultiLanguage3_SetMimeDBSource()

static HRESULT WINAPI fnIMultiLanguage3_SetMimeDBSource ( IMultiLanguage3 *  iface,
MIMECONTF  dwSource 
)
static

Definition at line 3145 of file mlang.c.

3148{
3149 FIXME("0x%08x\n", dwSource);
3150 return S_OK;
3151}

◆ fnIMultiLanguage3_ValidateCodePage()

static HRESULT WINAPI fnIMultiLanguage3_ValidateCodePage ( IMultiLanguage3 *  iface,
UINT  uiCodePage,
HWND  hwnd 
)
static

Definition at line 3101 of file mlang.c.

3105{
3106 return IMultiLanguage3_ValidateCodePageEx(iface,uiCodePage,hwnd,0);
3107}
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023

◆ fnIMultiLanguage3_ValidateCodePageEx()

static HRESULT WINAPI fnIMultiLanguage3_ValidateCodePageEx ( IMultiLanguage3 *  iface,
UINT  uiCodePage,
HWND  hwnd,
DWORD  dwfIODControl 
)
static

Definition at line 3180 of file mlang.c.

3185{
3186 unsigned int i;
3188
3189 TRACE("%p %u %p %08lx\n", This, uiCodePage, hwnd, dwfIODControl);
3190
3191 /* quick check for kernel32 supported code pages */
3192 if (IsValidCodePage(uiCodePage))
3193 return S_OK;
3194
3195 /* check for mlang supported code pages */
3196 for (i = 0; i < ARRAY_SIZE(mlang_data); i++)
3197 {
3198 UINT n;
3199 for (n = 0; n < mlang_data[i].number_of_cp; n++)
3200 {
3201 if (mlang_data[i].mime_cp_info[n].cp == uiCodePage)
3202 return S_OK;
3203 }
3204 }
3205
3206 if (dwfIODControl != CPIOD_PEEK)
3207 FIXME("Request to install codepage language pack not handled\n");
3208
3209 return S_FALSE;
3210}
BOOL WINAPI IsValidCodePage(UINT codepage)
Definition: locale.c:2081

◆ fnIMultiLanguage_AddRef()

static ULONG WINAPI fnIMultiLanguage_AddRef ( IMultiLanguage *  iface)
static

Definition at line 2126 of file mlang.c.

2127{
2129 return IMultiLanguage3_AddRef(&This->IMultiLanguage3_iface);
2130}
static MLang_impl * impl_from_IMultiLanguage(IMultiLanguage *iface)
Definition: mlang.c:2112

◆ fnIMultiLanguage_ConvertString()

static HRESULT WINAPI fnIMultiLanguage_ConvertString ( IMultiLanguage *  iface,
DWORD mode,
DWORD  src_enc,
DWORD  dst_enc,
BYTE src,
UINT src_size,
BYTE dest,
UINT dest_size 
)
static

Definition at line 2211 of file mlang.c.

2220{
2222 return IMultiLanguage3_ConvertString(&This->IMultiLanguage3_iface, mode, src_enc,
2223 dst_enc, src, src_size, dest, dest_size);
2224}
GLenum mode
Definition: glext.h:6217
static char * dest
Definition: rtl.c:149

◆ fnIMultiLanguage_ConvertStringFromUnicode()

static HRESULT WINAPI fnIMultiLanguage_ConvertStringFromUnicode ( IMultiLanguage *  iface,
DWORD mode,
DWORD  encoding,
WCHAR src,
UINT src_size,
CHAR dest,
UINT dest_size 
)
static

Definition at line 2240 of file mlang.c.

2248{
2250 return IMultiLanguage3_ConvertStringFromUnicode(&This->IMultiLanguage3_iface,
2251 mode, encoding, src, src_size, dest, dest_size);
2252}

◆ fnIMultiLanguage_ConvertStringReset()

static HRESULT WINAPI fnIMultiLanguage_ConvertStringReset ( IMultiLanguage *  iface)
static

Definition at line 2254 of file mlang.c.

2256{
2258 return IMultiLanguage3_ConvertStringReset(&This->IMultiLanguage3_iface);
2259}

◆ fnIMultiLanguage_ConvertStringToUnicode()

static HRESULT WINAPI fnIMultiLanguage_ConvertStringToUnicode ( IMultiLanguage *  iface,
DWORD mode,
DWORD  src_enc,
CHAR src,
UINT src_size,
WCHAR dest,
UINT dest_size 
)
static

Definition at line 2226 of file mlang.c.

2234{
2236 return IMultiLanguage3_ConvertStringToUnicode(&This->IMultiLanguage3_iface,
2237 mode, src_enc, src, src_size, dest, dest_size);
2238}

◆ fnIMultiLanguage_CreateConvertCharset()

static HRESULT WINAPI fnIMultiLanguage_CreateConvertCharset ( IMultiLanguage *  iface,
UINT  src_cp,
UINT  dst_cp,
DWORD  prop,
IMLangConvertCharset **  convert_charset 
)
static

Definition at line 2549 of file mlang.c.

2555{
2557 return IMultiLanguage3_CreateConvertCharset(&This->IMultiLanguage3_iface, src_cp, dst_cp, prop, convert_charset);
2558}

◆ fnIMultiLanguage_EnumCodePages()

static HRESULT WINAPI fnIMultiLanguage_EnumCodePages ( IMultiLanguage *  iface,
DWORD  grfFlags,
IEnumCodePage **  ppEnumCodePage 
)
static

Definition at line 2181 of file mlang.c.

2185{
2187
2188 TRACE("%p %08lx %p\n", This, grfFlags, ppEnumCodePage);
2189
2190 return EnumCodePage_create( This, grfFlags, 0, ppEnumCodePage );
2191}

◆ fnIMultiLanguage_EnumRfc1766()

static HRESULT WINAPI fnIMultiLanguage_EnumRfc1766 ( IMultiLanguage *  iface,
IEnumRfc1766 **  ppEnumRfc1766 
)
static

Definition at line 2497 of file mlang.c.

2500{
2502
2503 TRACE("%p %p\n", This, ppEnumRfc1766);
2504
2505 return EnumRfc1766_create(0, ppEnumRfc1766);
2506}

◆ fnIMultiLanguage_GetCharsetInfo()

static HRESULT WINAPI fnIMultiLanguage_GetCharsetInfo ( IMultiLanguage *  iface,
BSTR  Charset,
PMIMECSETINFO  pCharsetInfo 
)
static

Definition at line 2193 of file mlang.c.

2197{
2199 return IMultiLanguage3_GetCharsetInfo( &This->IMultiLanguage3_iface, Charset, pCharsetInfo );
2200}

◆ fnIMultiLanguage_GetCodePageInfo()

static HRESULT WINAPI fnIMultiLanguage_GetCodePageInfo ( IMultiLanguage *  iface,
UINT  uiCodePage,
PMIMECPINFO  pCodePageInfo 
)
static

Definition at line 2147 of file mlang.c.

2151{
2152 UINT i, n;
2154
2155 TRACE("%p, %u, %p\n", This, uiCodePage, pCodePageInfo);
2156
2157 for (i = 0; i < ARRAY_SIZE(mlang_data); i++)
2158 {
2159 for (n = 0; n < mlang_data[i].number_of_cp; n++)
2160 {
2161 if (mlang_data[i].mime_cp_info[n].cp == uiCodePage)
2162 {
2163 fill_cp_info(&mlang_data[i], n, pCodePageInfo);
2164 return S_OK;
2165 }
2166 }
2167 }
2168
2169 return S_FALSE;
2170}

◆ fnIMultiLanguage_GetFamilyCodePage()

static HRESULT WINAPI fnIMultiLanguage_GetFamilyCodePage ( IMultiLanguage *  iface,
UINT  cp,
UINT family_cp 
)
static

Definition at line 2172 of file mlang.c.

2176{
2178 return IMultiLanguage3_GetFamilyCodePage(&This->IMultiLanguage3_iface, cp, family_cp);
2179}

◆ fnIMultiLanguage_GetLcidFromRfc1766()

static HRESULT WINAPI fnIMultiLanguage_GetLcidFromRfc1766 ( IMultiLanguage *  iface,
LCID locale,
BSTR  rfc1766 
)
static

Definition at line 2270 of file mlang.c.

2274{
2276 return IMultiLanguage3_GetLcidFromRfc1766(&This->IMultiLanguage3_iface, locale, rfc1766);
2277}

◆ fnIMultiLanguage_GetNumberOfCodePageInfo()

static HRESULT WINAPI fnIMultiLanguage_GetNumberOfCodePageInfo ( IMultiLanguage *  iface,
UINT cp 
)
static

Definition at line 2138 of file mlang.c.

2141{
2143 TRACE("(%p, %p)\n", This, cp);
2144 return IMultiLanguage3_GetNumberOfCodePageInfo(&This->IMultiLanguage3_iface, cp);
2145}

◆ fnIMultiLanguage_GetRfc1766FromLcid()

static HRESULT WINAPI fnIMultiLanguage_GetRfc1766FromLcid ( IMultiLanguage *  iface,
LCID  lcid,
BSTR pbstrRfc1766 
)
static

Definition at line 2261 of file mlang.c.

2265{
2267 return IMultiLanguage3_GetRfc1766FromLcid(&This->IMultiLanguage3_iface, lcid, pbstrRfc1766);
2268}

◆ fnIMultiLanguage_GetRfc1766Info()

static HRESULT WINAPI fnIMultiLanguage_GetRfc1766Info ( IMultiLanguage *  iface,
LCID  Locale,
PRFC1766INFO  pRfc1766Info 
)
static

Definition at line 2510 of file mlang.c.

2514{
2516
2517 TRACE("(%p, 0x%04lx, %p)\n", iface, Locale, pRfc1766Info);
2518
2519 if (!pRfc1766Info)
2520 return E_INVALIDARG;
2521
2522 if ((PRIMARYLANGID(Locale) == LANG_ENGLISH) ||
2523 (PRIMARYLANGID(Locale) == LANG_CHINESE) ||
2524 (PRIMARYLANGID(Locale) == LANG_ARABIC)) {
2525
2526 if (!SUBLANGID(Locale))
2527 type = LOCALE_SENGLANGUAGE; /* suppress country */
2528 }
2529 else
2530 {
2531 if (!SUBLANGID(Locale)) {
2532 TRACE("SUBLANGID missing in 0x%04lx\n", Locale);
2533 return E_FAIL;
2534 }
2535 }
2536
2537 pRfc1766Info->lcid = Locale;
2538 pRfc1766Info->wszRfc1766[0] = 0;
2539 pRfc1766Info->wszLocaleName[0] = 0;
2540
2541 if ((!lcid_to_rfc1766W(Locale, pRfc1766Info->wszRfc1766, MAX_RFC1766_NAME)) &&
2542 (GetLocaleInfoW(Locale, type, pRfc1766Info->wszLocaleName, MAX_LOCALE_NAME) > 0))
2543 return S_OK;
2544
2545 /* Locale not supported */
2546 return E_INVALIDARG;
2547}

◆ fnIMultiLanguage_IsConvertible()

static HRESULT WINAPI fnIMultiLanguage_IsConvertible ( IMultiLanguage *  iface,
DWORD  src_enc,
DWORD  dst_enc 
)
static

Definition at line 2202 of file mlang.c.

2206{
2208 return IMultiLanguage3_IsConvertible(&This->IMultiLanguage3_iface, src_enc, dst_enc);
2209}

◆ fnIMultiLanguage_QueryInterface()

static HRESULT WINAPI fnIMultiLanguage_QueryInterface ( IMultiLanguage *  iface,
REFIID  riid,
void **  obj 
)
static

Definition at line 2117 of file mlang.c.

2121{
2123 return IMultiLanguage3_QueryInterface(&This->IMultiLanguage3_iface, riid, obj);
2124}

◆ fnIMultiLanguage_Release()

static ULONG WINAPI fnIMultiLanguage_Release ( IMultiLanguage *  iface)
static

Definition at line 2132 of file mlang.c.

2133{
2135 return IMultiLanguage3_Release(&This->IMultiLanguage3_iface);
2136}

◆ GetFamilyCodePage()

static HRESULT GetFamilyCodePage ( UINT  uiCodePage,
UINT puiFamilyCodePage 
)
static

Definition at line 1136 of file mlang.c.

1139{
1140 UINT i, n;
1141
1142 TRACE("%u %p\n", uiCodePage, puiFamilyCodePage);
1143
1144 if (!puiFamilyCodePage) return S_FALSE;
1145
1146 for (i = 0; i < ARRAY_SIZE(mlang_data); i++)
1147 {
1148 for (n = 0; n < mlang_data[i].number_of_cp; n++)
1149 {
1150 if (mlang_data[i].mime_cp_info[n].cp == uiCodePage)
1151 {
1152 *puiFamilyCodePage = mlang_data[i].family_codepage;
1153 return S_OK;
1154 }
1155 }
1156 }
1157
1158 return S_FALSE;
1159}

Referenced by fnIMultiLanguage3_GetFamilyCodePage(), and IsConvertINetStringAvailable().

◆ GetGlobalFontLinkObject()

HRESULT WINAPI GetGlobalFontLinkObject ( IMLangFontLink **  obj)

Definition at line 3931 of file mlang.c.

3932{
3933 TRACE("%p\n", obj);
3934
3935 if (!obj) return E_INVALIDARG;
3936
3938 {
3939 ERR("Failed to create global font link object.\n");
3940 return E_FAIL;
3941 }
3942
3943 return IUnknown_QueryInterface(font_link_global, &IID_IMLangFontLink, (void**)obj);
3944}
#define ERR(fmt,...)
Definition: precomp.h:57
BOOL WINAPI InitOnceExecuteOnce(_Inout_ PINIT_ONCE InitOnce, _In_ __callback PINIT_ONCE_FN InitFn, _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ LPVOID *Context)
Definition: InitOnce.c:12
static BOOL WINAPI allocate_font_link_cb(PINIT_ONCE init_once, PVOID args, PVOID *context)
Definition: mlang.c:3926
static INIT_ONCE font_link_global_init_once
Definition: mlang.c:47

Referenced by test_GetGlobalFontLinkObject().

◆ han2zen()

static int han2zen ( unsigned char p1,
unsigned char p2 
)
static

Definition at line 627 of file mlang.c.

628{
629 BOOL maru = FALSE;
630 BOOL nigori = FALSE;
631 static const unsigned char char1[] = {129,129,129,129,129,131,131,131,131,
632 131,131,131,131,131,131,129,131,131,131,131,131,131,131,131,131,131,
633 131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,
634 131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,
635 131,129,129 };
636 static const unsigned char char2[] = {66,117,118,65,69,146,64,66,68,70,
637 72,131,133,135,98,91,65,67,69,71,73,74,76,78,80,82,84,86,88,90,92,94,
638 96,99,101,103,105,106,107,108,109,110,113,116,119,122,125,126,128,
639 129,130,132,134,136,137,138,139,140,141,143,147,74,75};
640
641 if (( *p2 == 222) && ((ISNIGORI(*p1) || (*p1 == 179))))
642 nigori = TRUE;
643 else if ((*p2 == 223) && (ISMARU(*p1)))
644 maru = TRUE;
645
646 if (*p1 >= 161 && *p1 <= 223)
647 {
648 unsigned char index = *p1 - 161;
649 *p1 = char1[index];
650 *p2 = char2[index];
651 }
652
653 if (maru || nigori)
654 {
655 if (nigori)
656 {
657 if (((*p2 >= 74) && (*p2 <= 103)) || ((*p2 >= 110) && (*p2 <= 122)))
658 (*p2)++;
659 else if ((*p1 == 131) && (*p2 == 69))
660 *p2 = 148;
661 }
662 else if ((maru) && ((*p2 >= 110) && (*p2 <= 122)))
663 *p2+= 2;
664
665 return 1;
666 }
667
668 return 0;
669}
#define ISMARU(A)
Definition: mlang.c:556
#define ISNIGORI(A)
Definition: mlang.c:557

Referenced by ConvertSJIS2JIS().

◆ impl_from_IClassFactory()

static IClassFactoryImpl * impl_from_IClassFactory ( IClassFactory iface)
inlinestatic

Definition at line 1474 of file mlang.c.

1475{
1476 return CONTAINING_RECORD(iface, IClassFactoryImpl, IClassFactory_iface);
1477}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by MLANGCF_AddRef(), MLANGCF_CreateInstance(), and MLANGCF_Release().

◆ impl_from_IEnumCodePage()

static EnumCodePage_impl * impl_from_IEnumCodePage ( IEnumCodePage *  iface)
inlinestatic

◆ impl_from_IEnumRfc1766()

static EnumRfc1766_impl * impl_from_IEnumRfc1766 ( IEnumRfc1766 *  iface)
inlinestatic

◆ impl_from_IEnumScript()

static EnumScript_impl * impl_from_IEnumScript ( IEnumScript *  iface)
inlinestatic

◆ impl_from_IMLangConvertCharset()

◆ impl_from_IMLangFontLink()

◆ impl_from_IMLangFontLink2()

◆ impl_from_IMLangLineBreakConsole()

static MLang_impl * impl_from_IMLangLineBreakConsole ( IMLangLineBreakConsole *  iface)
inlinestatic

Definition at line 3624 of file mlang.c.

3625{
3626 return CONTAINING_RECORD( iface, MLang_impl, IMLangLineBreakConsole_iface );
3627}

Referenced by fnIMLangLineBreakConsole_AddRef(), fnIMLangLineBreakConsole_QueryInterface(), and fnIMLangLineBreakConsole_Release().

◆ impl_from_IMultiLanguage()

◆ impl_from_IMultiLanguage3()

◆ IsConvertINetStringAvailable()

HRESULT WINAPI IsConvertINetStringAvailable ( DWORD  dwSrcEncoding,
DWORD  dwDstEncoding 
)

Definition at line 1161 of file mlang.c.

1164{
1165 UINT src_family, dst_family;
1166
1167 TRACE("%ld %ld\n", dwSrcEncoding, dwDstEncoding);
1168
1169 if (GetFamilyCodePage(dwSrcEncoding, &src_family) != S_OK ||
1170 GetFamilyCodePage(dwDstEncoding, &dst_family) != S_OK)
1171 return S_FALSE;
1172
1173 if (src_family == dst_family) return S_OK;
1174
1175 /* we can convert any codepage to/from unicode */
1176 if (src_family == CP_UNICODE || dst_family == CP_UNICODE) return S_OK;
1177
1178 return S_FALSE;
1179}

◆ jis2sjis()

static void jis2sjis ( unsigned char p1,
unsigned char p2 
)
inlinestatic

Definition at line 604 of file mlang.c.

605{
606 unsigned char c1 = *p1;
607 unsigned char c2 = *p2;
608 int row = c1 < 95 ? 112 : 176;
609 int cell = c1 % 2 ? 31 + (c2 > 95) : 126;
610
611 *p1 = ((c1 + 1) >> 1) + row;
612 *p2 = c2 + cell;
613}
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
Definition: typeof.h:78

Referenced by ConvertJIS2SJIS().

◆ lcid_from_rfc1766()

static HRESULT lcid_from_rfc1766 ( IEnumRfc1766 *  iface,
LCID lcid,
LPCWSTR  rfc1766 
)
static

Definition at line 1259 of file mlang.c.

1260{
1261 RFC1766INFO info;
1262 ULONG num;
1263
1264 while (IEnumRfc1766_Next(iface, 1, &info, &num) == S_OK)
1265 {
1266 if (!wcsicmp(info.wszRfc1766, rfc1766))
1267 {
1268 *lcid = info.lcid;
1269 return S_OK;
1270 }
1271 if (lstrlenW(rfc1766) == 2 && !memcmp(info.wszRfc1766, rfc1766, 2 * sizeof(WCHAR)))
1272 {
1273 *lcid = PRIMARYLANGID(info.lcid);
1274 return S_OK;
1275 }
1276 }
1277
1278 return E_FAIL;
1279}
#define wcsicmp
Definition: compat.h:15
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
Definition: string.c:2802
GLuint GLuint num
Definition: glext.h:9618

Referenced by fnIMultiLanguage3_GetLcidFromRfc1766(), and Rfc1766ToLcidW().

◆ lcid_to_rfc1766A()

static HRESULT lcid_to_rfc1766A ( LCID  lcid,
LPSTR  rfc1766,
INT  len 
)
inlinestatic

Definition at line 1181 of file mlang.c.

1182{
1183 CHAR buffer[MAX_RFC1766_NAME];
1184 INT n = GetLocaleInfoA(lcid, LOCALE_SISO639LANGNAME, buffer, MAX_RFC1766_NAME);
1185 INT i;
1186
1187 if (n)
1188 {
1189 i = PRIMARYLANGID(lcid);
1190 if ((((i == LANG_ENGLISH) || (i == LANG_CHINESE) || (i == LANG_ARABIC)) &&
1193
1194 buffer[n - 1] = '-';
1195 i = GetLocaleInfoA(lcid, LOCALE_SISO3166CTRYNAME, buffer + n, MAX_RFC1766_NAME - n);
1196 if (!i)
1197 buffer[n - 1] = '\0';
1198 }
1199 else
1200 i = 0;
1201
1203 return ((n + i) > len) ? E_INVALIDARG : S_OK;
1204 }
1205 return E_FAIL;
1206}
INT WINAPI LCMapStringA(LCID lcid, DWORD flags, LPCSTR src, INT srclen, LPSTR dst, INT dstlen)
Definition: locale.c:3834
INT WINAPI GetLocaleInfoA(LCID lcid, LCTYPE lctype, LPSTR buffer, INT len)
Definition: locale.c:1609
GLuint buffer
Definition: glext.h:5915
#define LOCALE_USER_DEFAULT
#define SUBLANG_DEFAULT
Definition: nls.h:168
#define LOCALE_SISO639LANGNAME
Definition: winnls.h:133
#define LCMAP_LOWERCASE
Definition: winnls.h:197
#define LOCALE_SISO3166CTRYNAME
Definition: winnls.h:134

Referenced by LcidToRfc1766A().

◆ lcid_to_rfc1766W()

static HRESULT lcid_to_rfc1766W ( LCID  lcid,
LPWSTR  rfc1766,
INT  len 
)
inlinestatic

Definition at line 1208 of file mlang.c.

1209{
1210 WCHAR buffer[MAX_RFC1766_NAME];
1211 INT n = GetLocaleInfoW(lcid, LOCALE_SISO639LANGNAME, buffer, MAX_RFC1766_NAME);
1212 INT i;
1213
1214 if (n)
1215 {
1216 i = PRIMARYLANGID(lcid);
1217 if ((((i == LANG_ENGLISH) || (i == LANG_CHINESE) || (i == LANG_ARABIC)) &&
1220
1221 buffer[n - 1] = '-';
1222 i = GetLocaleInfoW(lcid, LOCALE_SISO3166CTRYNAME, buffer + n, MAX_RFC1766_NAME - n);
1223 if (!i)
1224 buffer[n - 1] = '\0';
1225 }
1226 else
1227 i = 0;
1228
1230 return ((n + i) > len) ? E_INVALIDARG : S_OK;
1231 }
1232 return E_FAIL;
1233}
INT WINAPI LCMapStringW(LCID lcid, DWORD flags, LPCWSTR src, INT srclen, LPWSTR dst, INT dstlen)
Definition: locale.c:3808

Referenced by enum_locales_proc(), fnIMultiLanguage3_GetRfc1766FromLcid(), fnIMultiLanguage3_GetRfc1766Info(), fnIMultiLanguage_GetRfc1766Info(), and LcidToRfc1766W().

◆ LcidToRfc1766A()

HRESULT WINAPI LcidToRfc1766A ( LCID  lcid,
LPSTR  pszRfc1766,
INT  nChar 
)

Definition at line 1235 of file mlang.c.

1239{
1240 TRACE("%04lx %p %u\n", lcid, pszRfc1766, nChar);
1241 if (!pszRfc1766)
1242 return E_INVALIDARG;
1243
1244 return lcid_to_rfc1766A(lcid, pszRfc1766, nChar);
1245}
static HRESULT lcid_to_rfc1766A(LCID lcid, LPSTR rfc1766, INT len)
Definition: mlang.c:1181
int nChar
Definition: shlwapi.h:1074

◆ LcidToRfc1766W()

HRESULT WINAPI LcidToRfc1766W ( LCID  lcid,
LPWSTR  pszRfc1766,
INT  nChar 
)

Definition at line 1247 of file mlang.c.

1251{
1252 TRACE("%04lx %p %u\n", lcid, pszRfc1766, nChar);
1253 if (!pszRfc1766)
1254 return E_INVALIDARG;
1255
1256 return lcid_to_rfc1766W(lcid, pszRfc1766, nChar);
1257}

Referenced by GetAcceptLanguagesW().

◆ LockModule()

static void LockModule ( void  )
static

Definition at line 924 of file mlang.c.

925{
927}

Referenced by MLANGCF_LockServer(), MLangConvertCharset_create(), and MultiLanguage_create().

◆ map_font()

static HRESULT map_font ( HDC  hdc,
DWORD  codepages,
HFONT  src_font,
HFONT *  dst_font 
)
static

Definition at line 1350 of file mlang.c.

1351{
1352 struct font_list *font_list_entry;
1353 CHARSETINFO charset_info;
1354 LOGFONTW font_attr;
1355 DWORD mask, Csb[2];
1356 BOOL found_cached;
1357 BOOL ret;
1358 UINT i;
1360
1361 if (hdc == NULL || src_font == NULL) return E_FAIL;
1362
1363 enum_data.hdc = hdc;
1364 enum_data.font = NULL;
1365
1366 GetObjectW(src_font, sizeof(enum_data.src_lf), &enum_data.src_lf);
1367 enum_data.src_lf.lfWidth = 0;
1368
1369 for (i = 0; i < 32; i++)
1370 {
1371 mask = (DWORD)(1 << i);
1372 if (codepages & mask)
1373 {
1374 Csb[0] = mask;
1375 Csb[1] = 0x0;
1376 ret = TranslateCharsetInfo(Csb, &charset_info, TCI_SRCFONTSIG);
1377 if (!ret) continue;
1378
1379 /* use cached font if possible */
1380 found_cached = FALSE;
1382 LIST_FOR_EACH_ENTRY(font_list_entry, &font_cache, struct font_list, list_entry)
1383 {
1384 if (font_list_entry->charset == charset_info.ciCharset &&
1385 font_list_entry->base_font == src_font)
1386 {
1387 if (dst_font != NULL)
1388 *dst_font = font_list_entry->font;
1389 found_cached = TRUE;
1390 }
1391 }
1393 if (found_cached) return S_OK;
1394
1395 font_attr.lfCharSet = (BYTE)charset_info.ciCharset;
1396 font_attr.lfFaceName[0] = 0;
1397 font_attr.lfPitchAndFamily = 0;
1398
1399 enum_data.charset = charset_info.ciCharset;
1400 enum_data.mask = mask;
1401
1403 {
1404 font_list_entry = malloc(sizeof(*font_list_entry));
1405 if (font_list_entry == NULL) return E_OUTOFMEMORY;
1406
1407 font_list_entry->base_font = src_font;
1408 font_list_entry->font = enum_data.font;
1409 font_list_entry->charset = enum_data.charset;
1410
1412 list_add_tail(&font_cache, &font_list_entry->list_entry);
1414
1415 if (dst_font != NULL)
1416 *dst_font = enum_data.font;
1417 return S_OK;
1418 }
1419 }
1420 }
1421 WARN("couldn't create an appropriate mapped font...\n");
1422 return E_FAIL;
1423}
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
Definition: list.h:83
static INT CALLBACK map_font_enum_proc(const LOGFONTW *lf, const TEXTMETRICW *ntm, DWORD type, LPARAM lParam)
Definition: mlang.c:1323
if(dx< 0)
Definition: linetemp.h:194
#define DWORD
Definition: nt_native.h:44
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:198
WCHAR lfFaceName[LF_FACESIZE]
Definition: dimm.idl:72
BYTE lfCharSet
Definition: dimm.idl:67
BYTE lfPitchAndFamily
Definition: dimm.idl:71
HFONT base_font
Definition: mlang.c:528
UINT charset
Definition: mlang.c:530
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
int WINAPI EnumFontFamiliesExW(_In_ HDC, _In_ PLOGFONTW, _In_ FONTENUMPROCW, _In_ LPARAM, _In_ DWORD)
unsigned char BYTE
Definition: xxhash.c:193

Referenced by fnIMLangFontLink2_MapFont(), and fnIMLangFontLink_MapFont().

◆ map_font_enum_proc()

static INT CALLBACK map_font_enum_proc ( const LOGFONTW lf,
const TEXTMETRICW ntm,
DWORD  type,
LPARAM  lParam 
)
static

Definition at line 1323 of file mlang.c.

1324{
1325 HFONT new_font, old_font;
1327 UINT charset;
1329
1330 data->src_lf.lfCharSet = lf->lfCharSet;
1331 wcscpy(data->src_lf.lfFaceName, lf->lfFaceName);
1332
1333 new_font = CreateFontIndirectW(&data->src_lf);
1334 if (new_font == NULL) return 1;
1335
1336 old_font = SelectObject(data->hdc, new_font);
1337 charset = GetTextCharsetInfo(data->hdc, &fs, 0);
1338 SelectObject(data->hdc, old_font);
1339
1340 /* check that the font directly supports the codepage as well (not just through a child font) */
1341 if (charset == data->charset && fs.fsCsb[0] & data->mask)
1342 {
1343 data->font = new_font;
1344 return 0;
1345 }
1346 DeleteObject(new_font);
1347 return 1;
1348}
CFF_Charset charset
Definition: cffcmap.c:137
LPARAM lParam
Definition: combotst.c:139
#define fs
Definition: i386-dis.c:444
Definition: ffs.h:70
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)

Referenced by map_font().

◆ MLANGCF_AddRef()

static ULONG WINAPI MLANGCF_AddRef ( IClassFactory iface)
static

Definition at line 1509 of file mlang.c.

1510{
1512 return InterlockedIncrement(&This->ref);
1513}
static IClassFactoryImpl * impl_from_IClassFactory(IClassFactory *iface)
Definition: mlang.c:1474

◆ MLANGCF_CreateInstance()

static HRESULT WINAPI MLANGCF_CreateInstance ( IClassFactory iface,
IUnknown pOuter,
REFIID  riid,
void **  ppobj 
)
static

Definition at line 1529 of file mlang.c.

1531{
1533 HRESULT hres;
1535
1536 TRACE("(%p)->(%p,%s,%p)\n",This,pOuter,debugstr_guid(riid),ppobj);
1537
1538 *ppobj = NULL;
1539 hres = This->pfnCreateInstance(pOuter, (LPVOID *) &punk);
1540 if (SUCCEEDED(hres)) {
1541 hres = IUnknown_QueryInterface(punk, riid, ppobj);
1542 IUnknown_Release(punk);
1543 }
1544 TRACE("returning (%p) -> %lx\n", *ppobj, hres);
1545 return hres;
1546}
static LPVOID LPUNKNOWN
Definition: dinput.c:53
HRESULT hres
Definition: protocol.c:465
_In_opt_ IUnknown * punk
Definition: shlwapi.h:158

◆ MLANGCF_LockServer()

static HRESULT WINAPI MLANGCF_LockServer ( IClassFactory iface,
BOOL  dolock 
)
static

Definition at line 1548 of file mlang.c.

1549{
1550 if (dolock)
1551 LockModule();
1552 else
1553 UnlockModule();
1554
1555 return S_OK;
1556}
static void LockModule(void)
Definition: mlang.c:924

◆ MLANGCF_QueryInterface()

static HRESULT WINAPI MLANGCF_QueryInterface ( IClassFactory iface,
REFIID  riid,
void **  ppobj 
)
static

Definition at line 1492 of file mlang.c.

1493{
1494 TRACE("%s\n", debugstr_guid(riid) );
1495
1498 {
1499 IClassFactory_AddRef(iface);
1500 *ppobj = iface;
1501 return S_OK;
1502 }
1503
1504 *ppobj = NULL;
1505 WARN("(%p)->(%s,%p), not found\n", iface, debugstr_guid(riid), ppobj);
1506 return E_NOINTERFACE;
1507}

◆ MLANGCF_Release()

static ULONG WINAPI MLANGCF_Release ( IClassFactory iface)
static

Definition at line 1515 of file mlang.c.

1516{
1519
1520 if (ref == 0)
1521 {
1522 TRACE("Destroying %p\n", This);
1523 free(This);
1524 }
1525
1526 return ref;
1527}

◆ MLangConvertCharset_AddRef()

static ULONG WINAPI MLangConvertCharset_AddRef ( IMLangConvertCharset *  iface)
static

Definition at line 3757 of file mlang.c.

3758{
3761 TRACE("(%p)->(%lu)\n", This, ref);
3762 return ref;
3763}
static struct convert_charset * impl_from_IMLangConvertCharset(IMLangConvertCharset *iface)
Definition: mlang.c:3735

◆ MLangConvertCharset_create()

static HRESULT MLangConvertCharset_create ( IUnknown outer,
void **  obj 
)
static

Definition at line 3897 of file mlang.c.

3898{
3899 struct convert_charset *convert;
3900
3901 if (outer)
3902 return CLASS_E_NOAGGREGATION;
3903
3904 *obj = NULL;
3905
3906 convert = malloc(sizeof(struct convert_charset));
3907 if (!convert) return E_OUTOFMEMORY;
3908
3909 convert->IMLangConvertCharset_iface.lpVtbl = &MLangConvertCharsetVtbl;
3910 convert->ref = 1;
3911
3912 *obj = &convert->IMLangConvertCharset_iface;
3913
3914 LockModule();
3915
3916 return S_OK;
3917}
static const IMLangConvertCharsetVtbl MLangConvertCharsetVtbl
Definition: mlang.c:3850
static IUnknown * outer
Definition: compobj.c:82
int convert
Definition: msacm.c:1374
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:3771

Referenced by fnIMultiLanguage3_CreateConvertCharset().

◆ MLangConvertCharset_DoConversion()

static HRESULT WINAPI MLangConvertCharset_DoConversion ( IMLangConvertCharset *  iface,
BYTE src,
UINT src_size,
BYTE dest,
UINT dest_size 
)
static

Definition at line 3826 of file mlang.c.

3828{
3830 FIXME("(%p)->(%p %p %p %p): stub\n", This, src, src_size, dest, dest_size);
3831 return E_NOTIMPL;
3832}

◆ MLangConvertCharset_DoConversionFromUnicode()

static HRESULT WINAPI MLangConvertCharset_DoConversionFromUnicode ( IMLangConvertCharset *  iface,
WCHAR src,
UINT src_size,
CHAR dest,
UINT dest_size 
)
static

Definition at line 3842 of file mlang.c.

3844{
3846 TRACE("(%p)->(%p %p %p %p)\n", This, src, src_size, dest, dest_size);
3847 return ConvertINetUnicodeToMultiByte(NULL, This->dst_cp, src, (INT*)src_size, dest, (INT*)dest_size);
3848}

◆ MLangConvertCharset_DoConversionToUnicode()

static HRESULT WINAPI MLangConvertCharset_DoConversionToUnicode ( IMLangConvertCharset *  iface,
CHAR src,
UINT src_size,
WCHAR dest,
UINT dest_size 
)
static

Definition at line 3834 of file mlang.c.

3836{
3838 TRACE("(%p)->(%p %p %p %p)\n", This, src, src_size, dest, dest_size);
3839 return ConvertINetMultiByteToUnicode(NULL, This->src_cp, src, (INT*)src_size, dest, (INT*)dest_size);
3840}

◆ MLangConvertCharset_GetDestinationCodePage()

static HRESULT WINAPI MLangConvertCharset_GetDestinationCodePage ( IMLangConvertCharset *  iface,
UINT dst_cp 
)
static

Definition at line 3808 of file mlang.c.

3809{
3811
3812 TRACE("(%p)->(%p)\n", This, dst_cp);
3813
3814 if (!dst_cp) return E_INVALIDARG;
3815 *dst_cp = This->dst_cp;
3816 return S_OK;
3817}

◆ MLangConvertCharset_GetProperty()

static HRESULT WINAPI MLangConvertCharset_GetProperty ( IMLangConvertCharset *  iface,
DWORD prop 
)
static

Definition at line 3819 of file mlang.c.

3820{
3822 FIXME("(%p)->(%p): stub\n", This, prop);
3823 return E_NOTIMPL;
3824}

◆ MLangConvertCharset_GetSourceCodePage()

static HRESULT WINAPI MLangConvertCharset_GetSourceCodePage ( IMLangConvertCharset *  iface,
UINT src_cp 
)
static

Definition at line 3797 of file mlang.c.

3798{
3800
3801 TRACE("(%p)->(%p)\n", This, src_cp);
3802
3803 if (!src_cp) return E_INVALIDARG;
3804 *src_cp = This->src_cp;
3805 return S_OK;
3806}

◆ MLangConvertCharset_Initialize()

static HRESULT WINAPI MLangConvertCharset_Initialize ( IMLangConvertCharset *  iface,
UINT  src_cp,
UINT  dst_cp,
DWORD  prop 
)
static

Definition at line 3780 of file mlang.c.

3782{
3784
3785 TRACE("(%p)->(%u %u 0x%08lx)\n", This, src_cp, dst_cp, prop);
3786
3787 prop &= ~MLCONVCHARF_USEDEFCHAR;
3788 if (prop)
3789 FIXME("property 0x%08lx not supported\n", prop);
3790
3791 This->src_cp = src_cp;
3792 This->dst_cp = dst_cp;
3793
3794 return S_OK;
3795}

◆ MLangConvertCharset_QueryInterface()

static HRESULT WINAPI MLangConvertCharset_QueryInterface ( IMLangConvertCharset *  iface,
REFIID  riid,
void **  obj 
)
static

Definition at line 3740 of file mlang.c.

3741{
3743
3744 TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), obj);
3745
3746 if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IMLangConvertCharset))
3747 {
3748 *obj = &This->IMLangConvertCharset_iface;
3749 IMLangConvertCharset_AddRef(iface);
3750 return S_OK;
3751 }
3752
3753 *obj = NULL;
3754 return E_NOINTERFACE;
3755}
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

◆ MLangConvertCharset_Release()

static ULONG WINAPI MLangConvertCharset_Release ( IMLangConvertCharset *  iface)
static

Definition at line 3765 of file mlang.c.

3766{
3769
3770 TRACE("(%p)->(%lu)\n", This, ref);
3771 if (!ref)
3772 {
3773 free(This);
3774 UnlockModule();
3775 }
3776
3777 return ref;
3778}

◆ MultiLanguage_create()

static HRESULT MultiLanguage_create ( IUnknown pUnkOuter,
LPVOID ppObj 
)
static

Definition at line 3864 of file mlang.c.

3865{
3867 UINT i;
3868
3869 TRACE("Creating MultiLanguage object\n");
3870
3871 if( pUnkOuter )
3872 return CLASS_E_NOAGGREGATION;
3873
3874 mlang = malloc(sizeof(MLang_impl));
3875 mlang->IMLangFontLink_iface.lpVtbl = &IMLangFontLink_vtbl;
3876 mlang->IMultiLanguage_iface.lpVtbl = &IMultiLanguage_vtbl;
3877 mlang->IMultiLanguage3_iface.lpVtbl = &IMultiLanguage3_vtbl;
3878 mlang->IMLangFontLink2_iface.lpVtbl = &IMLangFontLink2_vtbl;
3879 mlang->IMLangLineBreakConsole_iface.lpVtbl = &IMLangLineBreakConsole_vtbl;
3880
3881 mlang->total_cp = 0;
3882 for (i = 0; i < ARRAY_SIZE(mlang_data); i++)
3883 mlang->total_cp += mlang_data[i].number_of_cp;
3884
3885 /* do not enumerate unicode flavours */
3886 mlang->total_scripts = ARRAY_SIZE(mlang_data) - 1;
3887
3888 mlang->ref = 1;
3889 *ppObj = &mlang->IMultiLanguage_iface;
3890 TRACE("returning %p\n", mlang);
3891
3892 LockModule();
3893
3894 return S_OK;
3895}
static const IMLangFontLink2Vtbl IMLangFontLink2_vtbl
Definition: mlang.c:3604
static const IMultiLanguage3Vtbl IMultiLanguage3_vtbl
Definition: mlang.c:3263
static const IMLangFontLinkVtbl IMLangFontLink_vtbl
Definition: mlang.c:2095
static const IMultiLanguageVtbl IMultiLanguage_vtbl
Definition: mlang.c:2560
static const IMLangLineBreakConsoleVtbl IMLangLineBreakConsole_vtbl
Definition: mlang.c:3717

Referenced by allocate_font_link_cb().

◆ release_font()

static HRESULT release_font ( HFONT  font)
static

Definition at line 1425 of file mlang.c.

1426{
1427 struct font_list *font_list_entry;
1428 HRESULT hr;
1429
1430 hr = E_FAIL;
1432 LIST_FOR_EACH_ENTRY(font_list_entry, &font_cache, struct font_list, list_entry)
1433 {
1434 if (font_list_entry->font == font)
1435 {
1436 list_remove(&font_list_entry->list_entry);
1438 free(font_list_entry);
1439 hr = S_OK;
1440 break;
1441 }
1442 }
1444
1445 return hr;
1446}
Definition: mk_font.cpp:20

Referenced by fnIMLangFontLink2_ReleaseFont(), and fnIMLangFontLink_ReleaseFont().

◆ Rfc1766ToLcidA()

HRESULT WINAPI Rfc1766ToLcidA ( LCID lcid,
LPCSTR  rfc1766A 
)

Definition at line 1301 of file mlang.c.

1302{
1303 WCHAR rfc1766W[MAX_RFC1766_NAME + 1];
1304
1305 if (!rfc1766A)
1306 return E_INVALIDARG;
1307
1308 MultiByteToWideChar(CP_ACP, 0, rfc1766A, -1, rfc1766W, MAX_RFC1766_NAME);
1309 rfc1766W[MAX_RFC1766_NAME] = 0;
1310
1311 return Rfc1766ToLcidW(lcid, rfc1766W);
1312}
HRESULT WINAPI Rfc1766ToLcidW(LCID *pLocale, LPCWSTR pszRfc1766)
Definition: mlang.c:1281

◆ Rfc1766ToLcidW()

HRESULT WINAPI Rfc1766ToLcidW ( LCID pLocale,
LPCWSTR  pszRfc1766 
)

Definition at line 1281 of file mlang.c.

1282{
1283 IEnumRfc1766 *enumrfc1766;
1284 HRESULT hr;
1285
1286 TRACE("(%p, %s)\n", pLocale, debugstr_w(pszRfc1766));
1287
1288 if (!pLocale || !pszRfc1766)
1289 return E_INVALIDARG;
1290
1291 hr = EnumRfc1766_create(0, &enumrfc1766);
1292 if (FAILED(hr))
1293 return hr;
1294
1295 hr = lcid_from_rfc1766(enumrfc1766, pLocale, pszRfc1766);
1296 IEnumRfc1766_Release(enumrfc1766);
1297
1298 return hr;
1299}

Referenced by Rfc1766ToLcidA().

◆ sjis2jis()

static void sjis2jis ( unsigned char p1,
unsigned char p2 
)
inlinestatic

Definition at line 615 of file mlang.c.

616{
617 unsigned char c1 = *p1;
618 unsigned char c2 = *p2;
619 int shift = c2 < 159;
620 int row = c1 < 160 ? 112 : 176;
621 int cell = shift ? (31 + (c2 > 127)): 126;
622
623 *p1 = ((c1 - row) << 1) - shift;
624 *p2 -= cell;
625}
#define shift
Definition: input.c:3280

Referenced by ConvertSJIS2JIS().

◆ UnlockModule()

static void UnlockModule ( void  )
static

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( mlang  )

Variable Documentation

◆ arabic_cp

const MIME_CP_INFO arabic_cp[]
static
Initial value:
=
{
{ L"Arabic (864)",
864, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
MIMECONTF_MIME_LATEST,
L"ibm864", L"ibm864", L"ibm864" },
{ L"Arabic (1006)",
1006, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
MIMECONTF_MIME_LATEST,
L"ibm1006", L"ibm1006", L"ibm1006" },
{ L"Arabic (Windows)",
1256, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
MIMECONTF_EXPORT | MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
L"windows-1256", L"windows-1256", L"windows-1256" },
{ L"Arabic (ISO)",
28596, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT |
MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
L"iso-8859-6", L"iso-8859-6", L"iso-8859-6" }
}
#define L(x)
Definition: resources.c:13

Definition at line 73 of file mlang.c.

◆ baltic_cp

const MIME_CP_INFO baltic_cp[]
static
Initial value:
=
{
{ L"Baltic (DOS)",
775, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
L"ibm775", L"ibm775", L"ibm775" },
{ L"Baltic (Windows)",
1257, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID |
MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
L"windows-1257", L"windows-1257", L"windows-1257" },
{ L"Baltic (ISO)",
28594, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
MIMECONTF_EXPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
MIMECONTF_MIME_LATEST,
L"iso-8859-4", L"iso-8859-4", L"iso-8859-4" },
{ L"Estonian (ISO)",
28603, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
L"iso-8859-13", L"iso-8859-13", L"iso-8859-13" }
}

Definition at line 95 of file mlang.c.

◆ central_european_cp

const MIME_CP_INFO central_european_cp[]
static
Initial value:
=
{
{ L"Central European (DOS)",
852, MIMECONTF_BROWSER | MIMECONTF_IMPORT | MIMECONTF_SAVABLE_BROWSER |
MIMECONTF_EXPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
L"ibm852", L"ibm852", L"ibm852" },
{ L"Central European (Windows)",
1250, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
MIMECONTF_EXPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
MIMECONTF_MIME_LATEST,
L"windows-1250", L"windows-1250", L"windows-1250" },
{ L"Central European (Mac)",
10029, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
L"x-mac-ce", L"x-mac-ce", L"x-mac-ce" },
{ L"Central European (ISO)",
28592, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID |
MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
L"iso-8859-2", L"iso-8859-2", L"iso-8859-2" }
}

Definition at line 170 of file mlang.c.

◆ chinese_simplified_cp

const MIME_CP_INFO chinese_simplified_cp[]
static

Definition at line 118 of file mlang.c.

◆ chinese_traditional_cp

const MIME_CP_INFO chinese_traditional_cp[]
static
Initial value:
=
{
{ L"Chinese Traditional (Auto-Select)",
50950, MIMECONTF_IMPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
MIMECONTF_MIME_LATEST,
L"_autodetect_cht", L"_autodetect_cht", L"_autodetect_cht" },
{ L"Chinese Traditional (Big5)",
950, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID |
MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
L"big5", L"big5", L"big5" },
{ L"Chinese Traditional (CNS)",
20000, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID |
MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
L"x-Chinese-CNS", L"x-Chinese-CNS", L"x-Chinese-CNS" }
}

Definition at line 153 of file mlang.c.

◆ cyrillic_cp

const MIME_CP_INFO cyrillic_cp[]
static

Definition at line 194 of file mlang.c.

◆ dll_count

LONG dll_count
static

Definition at line 545 of file mlang.c.

Referenced by DllCanUnloadNow(), LockModule(), and UnlockModule().

◆ font_cache

struct list font_cache = LIST_INIT(font_cache)
static

Definition at line 533 of file mlang.c.

Referenced by clear_font_cache(), map_font(), and release_font().

◆ font_cache_critical

static CRITICAL_SECTION font_cache_critical = { &font_cache_critical_debug, -1, 0, 0, 0, 0 }
static

Definition at line 534 of file mlang.c.

Referenced by clear_font_cache(), map_font(), and release_font().

◆ font_cache_critical_debug

CRITICAL_SECTION_DEBUG font_cache_critical_debug
static
Initial value:
=
{
0, 0, { (DWORD_PTR)(__FILE__ ": font_cache_critical") }
}
static CRITICAL_SECTION_DEBUG font_cache_critical_debug
Definition: mlang.c:535
#define DWORD_PTR
Definition: treelist.c:76

Definition at line 535 of file mlang.c.

◆ font_link_global

IUnknown* font_link_global = NULL
static

Definition at line 48 of file mlang.c.

Referenced by allocate_font_link_cb(), and GetGlobalFontLinkObject().

◆ font_link_global_init_once

INIT_ONCE font_link_global_init_once = INIT_ONCE_STATIC_INIT
static

Definition at line 47 of file mlang.c.

Referenced by GetGlobalFontLinkObject().

◆ greek_cp

const MIME_CP_INFO greek_cp[]
static
Initial value:
=
{
{ L"Greek (DOS)",
737, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
MIMECONTF_MIME_LATEST,
L"ibm737", L"ibm737", L"ibm737" },
{ L"Greek, Modern (DOS)",
869, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
MIMECONTF_MIME_LATEST,
L"ibm869", L"ibm869", L"ibm869" },
{ L"IBM EBCDIC (Greek Modern)",
875, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
MIMECONTF_MIME_LATEST,
L"cp875", L"cp875", L"cp875" },
{ L"Greek (Windows)",
1253, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
MIMECONTF_EXPORT | MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
L"windows-1253", L"windows-1253", L"windows-1253" },
{ L"Greek (Mac)",
10006, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
MIMECONTF_MIME_LATEST,
L"x-mac-greek", L"x-mac-greek", L"x-mac-greek" },
{ L"Greek (ISO)",
28597, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT |
MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
L"iso-8859-7", L"iso-8859-7", L"iso-8859-7" }
}

Definition at line 239 of file mlang.c.

◆ hebrew_cp

const MIME_CP_INFO hebrew_cp[]
static
Initial value:
=
{
{ L"Hebrew (424)",
424, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
MIMECONTF_MIME_LATEST,
L"ibm424", L"ibm424", L"ibm424" },
{ L"Hebrew (856)",
856, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
MIMECONTF_MIME_LATEST,
L"cp856", L"cp856", L"cp856" },
{ L"Hebrew (DOS)",
862, MIMECONTF_BROWSER | MIMECONTF_MINIMAL | MIMECONTF_IMPORT |
MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
MIMECONTF_MIME_LATEST,
L"dos-862", L"dos-862", L"dos-862" },
{ L"Hebrew (Windows)",
1255, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
MIMECONTF_EXPORT | MIMECONTF_VALID_NLS | MIMECONTF_MIME_LATEST,
L"windows-1255", L"windows-1255", L"windows-1255" },
{ L"Hebrew (ISO-Visual)",
28598, MIMECONTF_BROWSER | MIMECONTF_MINIMAL | MIMECONTF_IMPORT |
MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT |
MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
L"iso-8859-8", L"iso-8859-8", L"iso-8859-8" }
}

Definition at line 269 of file mlang.c.

◆ IEnumCodePage_vtbl

const IEnumCodePageVtbl IEnumCodePage_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI fnIEnumCodePage_Next(IEnumCodePage *iface, ULONG celt, PMIMECPINFO rgelt, ULONG *pceltFetched)
Definition: mlang.c:1694
static ULONG WINAPI fnIEnumCodePage_Release(IEnumCodePage *iface)
Definition: mlang.c:1668
static ULONG WINAPI fnIEnumCodePage_AddRef(IEnumCodePage *iface)
Definition: mlang.c:1661
static HRESULT WINAPI fnIEnumCodePage_Clone(IEnumCodePage *iface, IEnumCodePage **ppEnum)
Definition: mlang.c:1685
static HRESULT WINAPI fnIEnumCodePage_QueryInterface(IEnumCodePage *iface, REFIID riid, void **ppvObject)
Definition: mlang.c:1639
static HRESULT WINAPI fnIEnumCodePage_Skip(IEnumCodePage *iface, ULONG celt)
Definition: mlang.c:1746
static HRESULT WINAPI fnIEnumCodePage_Reset(IEnumCodePage *iface)
Definition: mlang.c:1735

Definition at line 1760 of file mlang.c.

Referenced by EnumCodePage_create().

◆ IEnumRfc1766_vtbl

const IEnumRfc1766Vtbl IEnumRfc1766_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI fnIEnumRfc1766_Skip(IEnumRfc1766 *iface, ULONG celt)
Definition: mlang.c:2395
static HRESULT WINAPI fnIEnumRfc1766_QueryInterface(IEnumRfc1766 *iface, REFIID riid, void **ppvObject)
Definition: mlang.c:2294
static ULONG WINAPI fnIEnumRfc1766_AddRef(IEnumRfc1766 *iface)
Definition: mlang.c:2316
static ULONG WINAPI fnIEnumRfc1766_Release(IEnumRfc1766 *iface)
Definition: mlang.c:2323
static HRESULT WINAPI fnIEnumRfc1766_Next(IEnumRfc1766 *iface, ULONG celt, PRFC1766INFO rgelt, ULONG *pceltFetched)
Definition: mlang.c:2349
static HRESULT WINAPI fnIEnumRfc1766_Clone(IEnumRfc1766 *iface, IEnumRfc1766 **ppEnum)
Definition: mlang.c:2339
static HRESULT WINAPI fnIEnumRfc1766_Reset(IEnumRfc1766 *iface)
Definition: mlang.c:2384

Definition at line 2409 of file mlang.c.

Referenced by EnumRfc1766_create().

◆ IEnumScript_vtbl

const IEnumScriptVtbl IEnumScript_vtbl
static
Initial value:
=
{
}
static ULONG WINAPI fnIEnumScript_AddRef(IEnumScript *iface)
Definition: mlang.c:1853
static HRESULT WINAPI fnIEnumScript_Next(IEnumScript *iface, ULONG celt, PSCRIPTINFO rgelt, ULONG *pceltFetched)
Definition: mlang.c:1886
static HRESULT WINAPI fnIEnumScript_Reset(IEnumScript *iface)
Definition: mlang.c:1912
static ULONG WINAPI fnIEnumScript_Release(IEnumScript *iface)
Definition: mlang.c:1860
static HRESULT WINAPI fnIEnumScript_QueryInterface(IEnumScript *iface, REFIID riid, void **ppvObject)
Definition: mlang.c:1831
static HRESULT WINAPI fnIEnumScript_Clone(IEnumScript *iface, IEnumScript **ppEnum)
Definition: mlang.c:1877
static HRESULT WINAPI fnIEnumScript_Skip(IEnumScript *iface, ULONG celt)
Definition: mlang.c:1923

Definition at line 1937 of file mlang.c.

Referenced by EnumScript_create().

◆ IMLangFontLink2_vtbl

const IMLangFontLink2Vtbl IMLangFontLink2_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI fnIMLangFontLink2_CodePageToScriptID(IMLangFontLink2 *This, UINT uiCodePage, SCRIPT_ID *pSid)
Definition: mlang.c:3584
static ULONG WINAPI fnIMLangFontLink2_AddRef(IMLangFontLink2 *iface)
Definition: mlang.c:3315
static HRESULT WINAPI fnIMLangFontLink2_QueryInterface(IMLangFontLink2 *iface, REFIID riid, void **ppvObject)
Definition: mlang.c:3306
static HRESULT WINAPI fnIMLangFontLink2_ResetFontMapping(IMLangFontLink2 *This)
Definition: mlang.c:3495
static HRESULT WINAPI fnIMLangFontLink2_GetCharCodePages(IMLangFontLink2 *iface, WCHAR ch_src, DWORD *ret_codepages)
Definition: mlang.c:3327
static HRESULT WINAPI fnIMLangFontLink2_CodePagesToCodePage(IMLangFontLink2 *iface, DWORD codepages, UINT def_codepage, UINT *codepage)
Definition: mlang.c:3421
static ULONG WINAPI fnIMLangFontLink2_Release(IMLangFontLink2 *iface)
Definition: mlang.c:3321
static HRESULT WINAPI fnIMLangFontLink2_MapFont(IMLangFontLink2 *This, HDC hDC, DWORD dwCodePages, WCHAR chSrc, HFONT *pFont)
Definition: mlang.c:3502
static HRESULT WINAPI fnIMLangFontLink2_GetFontUnicodeRanges(IMLangFontLink2 *This, HDC hDC, UINT *puiRanges, UNICODERANGE *pUranges)
Definition: mlang.c:3524
static HRESULT WINAPI fnIMLangFontLink2_GetStrCodePages(IMLangFontLink2 *iface, const WCHAR *src, LONG src_len, DWORD priority_cp, DWORD *codepages, LONG *ret_len)
Definition: mlang.c:3358
static HRESULT WINAPI fnIMLangFontLink2_CodePageToCodePages(IMLangFontLink2 *iface, UINT codepage, DWORD *codepages)
Definition: mlang.c:3398
static HRESULT WINAPI fnIMLangFontLink2_ReleaseFont(IMLangFontLink2 *This, HFONT hFont)
Definition: mlang.c:3487
static HRESULT WINAPI fnIMLangFontLink2_GetScriptFontInfo(IMLangFontLink2 *This, SCRIPT_ID sid, DWORD dwFlags, UINT *puiFonts, SCRIPTFONTINFO *pScriptFont)
Definition: mlang.c:3553
static HRESULT WINAPI fnIMLangFontLink2_GetFontCodePages(IMLangFontLink2 *iface, HDC hdc, HFONT hfont, DWORD *codepages)
Definition: mlang.c:3465

Definition at line 3604 of file mlang.c.

Referenced by MultiLanguage_create().

◆ IMLangFontLink_vtbl

const IMLangFontLinkVtbl IMLangFontLink_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI fnIMLangFontLink_MapFont(IMLangFontLink *iface, HDC hDC, DWORD dwCodePages, HFONT hSrcFont, HFONT *phDestFont)
Definition: mlang.c:2065
static HRESULT WINAPI fnIMLangFontLink_GetCharCodePages(IMLangFontLink *iface, WCHAR ch_src, DWORD *codepages)
Definition: mlang.c:2013
static HRESULT WINAPI fnIMLangFontLink_CodePageToCodePages(IMLangFontLink *iface, UINT codepage, DWORD *codepages)
Definition: mlang.c:2035
static ULONG WINAPI fnIMLangFontLink_Release(IMLangFontLink *iface)
Definition: mlang.c:2006
static HRESULT WINAPI fnIMLangFontLink_ResetFontMapping(IMLangFontLink *iface)
Definition: mlang.c:2086
static HRESULT WINAPI fnIMLangFontLink_GetFontCodePages(IMLangFontLink *iface, HDC hdc, HFONT hfont, DWORD *codepages)
Definition: mlang.c:2055
static HRESULT WINAPI fnIMLangFontLink_CodePagesToCodePage(IMLangFontLink *iface, DWORD codepages, UINT def_codepage, UINT *codepage)
Definition: mlang.c:2044
static HRESULT WINAPI fnIMLangFontLink_GetStrCodePages(IMLangFontLink *iface, const WCHAR *src, LONG src_len, DWORD priority_cp, DWORD *codepages, LONG *ret_len)
Definition: mlang.c:2022
static HRESULT WINAPI fnIMLangFontLink_QueryInterface(IMLangFontLink *iface, REFIID riid, void **ppvObject)
Definition: mlang.c:1990
static HRESULT WINAPI fnIMLangFontLink_ReleaseFont(IMLangFontLink *iface, HFONT hFont)
Definition: mlang.c:2077
static ULONG WINAPI fnIMLangFontLink_AddRef(IMLangFontLink *iface)
Definition: mlang.c:1999

Definition at line 2095 of file mlang.c.

Referenced by MultiLanguage_create().

◆ IMLangLineBreakConsole_vtbl

const IMLangLineBreakConsoleVtbl IMLangLineBreakConsole_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI fnIMLangLineBreakConsole_QueryInterface(IMLangLineBreakConsole *iface, REFIID riid, void **ppvObject)
Definition: mlang.c:3629
static HRESULT WINAPI fnIMLangLineBreakConsole_BreakLineW(IMLangLineBreakConsole *iface, LCID locale, const WCHAR *pszSrc, LONG cchSrc, LONG cMaxColumns, LONG *pcchLine, LONG *pcchSkip)
Definition: mlang.c:3666
static ULONG WINAPI fnIMLangLineBreakConsole_AddRef(IMLangLineBreakConsole *iface)
Definition: mlang.c:3638
static HRESULT WINAPI fnIMLangLineBreakConsole_BreakLineML(IMLangLineBreakConsole *iface, IMLangString *pSrcMLStr, LONG lSrcPos, LONG lSrcLen, LONG cMinColumns, LONG cMaxColumns, LONG *plLineLen, LONG *plSkipLen)
Definition: mlang.c:3652
static ULONG WINAPI fnIMLangLineBreakConsole_Release(IMLangLineBreakConsole *iface)
Definition: mlang.c:3645
static HRESULT WINAPI fnIMLangLineBreakConsole_BreakLineA(IMLangLineBreakConsole *iface, LCID locale, UINT uCodePage, const CHAR *pszSrc, LONG cchSrc, LONG cMaxColumns, LONG *pcchLine, LONG *pcchSkip)
Definition: mlang.c:3682

Definition at line 3717 of file mlang.c.

Referenced by MultiLanguage_create().

◆ IMultiLanguage3_vtbl

const IMultiLanguage3Vtbl IMultiLanguage3_vtbl
static

Definition at line 3263 of file mlang.c.

Referenced by MultiLanguage_create().

◆ IMultiLanguage_vtbl

const IMultiLanguageVtbl IMultiLanguage_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI fnIMultiLanguage_IsConvertible(IMultiLanguage *iface, DWORD src_enc, DWORD dst_enc)
Definition: mlang.c:2202
static HRESULT WINAPI fnIMultiLanguage_GetRfc1766FromLcid(IMultiLanguage *iface, LCID lcid, BSTR *pbstrRfc1766)
Definition: mlang.c:2261
static HRESULT WINAPI fnIMultiLanguage_GetCharsetInfo(IMultiLanguage *iface, BSTR Charset, PMIMECSETINFO pCharsetInfo)
Definition: mlang.c:2193
static HRESULT WINAPI fnIMultiLanguage_GetRfc1766Info(IMultiLanguage *iface, LCID Locale, PRFC1766INFO pRfc1766Info)
Definition: mlang.c:2510
static HRESULT WINAPI fnIMultiLanguage_GetFamilyCodePage(IMultiLanguage *iface, UINT cp, UINT *family_cp)
Definition: mlang.c:2172
static HRESULT WINAPI fnIMultiLanguage_CreateConvertCharset(IMultiLanguage *iface, UINT src_cp, UINT dst_cp, DWORD prop, IMLangConvertCharset **convert_charset)
Definition: mlang.c:2549
static HRESULT WINAPI fnIMultiLanguage_ConvertStringFromUnicode(IMultiLanguage *iface, DWORD *mode, DWORD encoding, WCHAR *src, UINT *src_size, CHAR *dest, UINT *dest_size)
Definition: mlang.c:2240
static HRESULT WINAPI fnIMultiLanguage_ConvertStringToUnicode(IMultiLanguage *iface, DWORD *mode, DWORD src_enc, CHAR *src, UINT *src_size, WCHAR *dest, UINT *dest_size)
Definition: mlang.c:2226
static HRESULT WINAPI fnIMultiLanguage_GetCodePageInfo(IMultiLanguage *iface, UINT uiCodePage, PMIMECPINFO pCodePageInfo)
Definition: mlang.c:2147
static HRESULT WINAPI fnIMultiLanguage_GetNumberOfCodePageInfo(IMultiLanguage *iface, UINT *cp)
Definition: mlang.c:2138
static HRESULT WINAPI fnIMultiLanguage_QueryInterface(IMultiLanguage *iface, REFIID riid, void **obj)
Definition: mlang.c:2117
static HRESULT WINAPI fnIMultiLanguage_GetLcidFromRfc1766(IMultiLanguage *iface, LCID *locale, BSTR rfc1766)
Definition: mlang.c:2270
static HRESULT WINAPI fnIMultiLanguage_EnumRfc1766(IMultiLanguage *iface, IEnumRfc1766 **ppEnumRfc1766)
Definition: mlang.c:2497
static HRESULT WINAPI fnIMultiLanguage_ConvertStringReset(IMultiLanguage *iface)
Definition: mlang.c:2254
static HRESULT WINAPI fnIMultiLanguage_ConvertString(IMultiLanguage *iface, DWORD *mode, DWORD src_enc, DWORD dst_enc, BYTE *src, UINT *src_size, BYTE *dest, UINT *dest_size)
Definition: mlang.c:2211
static ULONG WINAPI fnIMultiLanguage_Release(IMultiLanguage *iface)
Definition: mlang.c:2132
static HRESULT WINAPI fnIMultiLanguage_EnumCodePages(IMultiLanguage *iface, DWORD grfFlags, IEnumCodePage **ppEnumCodePage)
Definition: mlang.c:2181
static ULONG WINAPI fnIMultiLanguage_AddRef(IMultiLanguage *iface)
Definition: mlang.c:2126

Definition at line 2560 of file mlang.c.

Referenced by MultiLanguage_create().

◆ japanese_cp

const MIME_CP_INFO japanese_cp[]
static

Definition at line 295 of file mlang.c.

◆ korean_cp

const MIME_CP_INFO korean_cp[]
static
Initial value:
=
{
{ L"Korean",
949, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_MINIMAL |
MIMECONTF_IMPORT | MIMECONTF_SAVABLE_MAILNEWS |
MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT | MIMECONTF_VALID_NLS |
MIMECONTF_MIME_LATEST,
L"ks_c_5601-1987", L"ks_c_5601-1987", L"ks_c_5601-1987" }
}

Definition at line 338 of file mlang.c.

◆ mlang_data

◆ MLANGCF_Vtbl

const IClassFactoryVtbl MLANGCF_Vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI MLANGCF_LockServer(IClassFactory *iface, BOOL dolock)
Definition: mlang.c:1548
static ULONG WINAPI MLANGCF_Release(IClassFactory *iface)
Definition: mlang.c:1515
static HRESULT WINAPI MLANGCF_QueryInterface(IClassFactory *iface, REFIID riid, void **ppobj)
Definition: mlang.c:1492
static HRESULT WINAPI MLANGCF_CreateInstance(IClassFactory *iface, IUnknown *pOuter, REFIID riid, void **ppobj)
Definition: mlang.c:1529
static ULONG WINAPI MLANGCF_AddRef(IClassFactory *iface)
Definition: mlang.c:1509

Definition at line 1558 of file mlang.c.

Referenced by DllGetClassObject().

◆ MLangConvertCharsetVtbl

const IMLangConvertCharsetVtbl MLangConvertCharsetVtbl
static
Initial value:
=
{
}
static HRESULT WINAPI MLangConvertCharset_QueryInterface(IMLangConvertCharset *iface, REFIID riid, void **obj)
Definition: mlang.c:3740
static HRESULT WINAPI MLangConvertCharset_GetProperty(IMLangConvertCharset *iface, DWORD *prop)
Definition: mlang.c:3819
static HRESULT WINAPI MLangConvertCharset_DoConversion(IMLangConvertCharset *iface, BYTE *src, UINT *src_size, BYTE *dest, UINT *dest_size)
Definition: mlang.c:3826
static HRESULT WINAPI MLangConvertCharset_DoConversionFromUnicode(IMLangConvertCharset *iface, WCHAR *src, UINT *src_size, CHAR *dest, UINT *dest_size)
Definition: mlang.c:3842
static ULONG WINAPI MLangConvertCharset_AddRef(IMLangConvertCharset *iface)
Definition: mlang.c:3757
static HRESULT WINAPI MLangConvertCharset_Initialize(IMLangConvertCharset *iface, UINT src_cp, UINT dst_cp, DWORD prop)
Definition: mlang.c:3780
static ULONG WINAPI MLangConvertCharset_Release(IMLangConvertCharset *iface)
Definition: mlang.c:3765
static HRESULT WINAPI MLangConvertCharset_GetDestinationCodePage(IMLangConvertCharset *iface, UINT *dst_cp)
Definition: mlang.c:3808
static HRESULT WINAPI MLangConvertCharset_GetSourceCodePage(IMLangConvertCharset *iface, UINT *src_cp)
Definition: mlang.c:3797
static HRESULT WINAPI MLangConvertCharset_DoConversionToUnicode(IMLangConvertCharset *iface, CHAR *src, UINT *src_size, WCHAR *dest, UINT *dest_size)
Definition: mlang.c:3834

Definition at line 3850 of file mlang.c.

Referenced by MLangConvertCharset_create().

◆ object_creation

const struct object_creation_info object_creation[]
static
Initial value:
=
{
{ &CLSID_CMultiLanguage, "CLSID_CMultiLanguage", MultiLanguage_create },
{ &CLSID_CMLangConvertCharset, "CLSID_CMLangConvertCharset", MLangConvertCharset_create }
}

Definition at line 1486 of file mlang.c.

Referenced by DllGetClassObject().

◆ thai_cp

const MIME_CP_INFO thai_cp[]
static
Initial value:
=
{
{ L"Thai (Windows)",
874, MIMECONTF_IMPORT | MIMECONTF_EXPORT | MIMECONTF_MIME_LATEST,
L"ibm-thai", L"ibm-thai", L"ibm-thai" }
}

Definition at line 347 of file mlang.c.

◆ turkish_cp

const MIME_CP_INFO turkish_cp[]
static

Definition at line 353 of file mlang.c.

◆ unicode_cp

const MIME_CP_INFO unicode_cp[]
static
Initial value:
=
{
{ L"Unicode",
CP_UNICODE, MIMECONTF_MINIMAL | MIMECONTF_IMPORT |
MIMECONTF_SAVABLE_BROWSER | MIMECONTF_EXPORT |
MIMECONTF_VALID | MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 |
MIMECONTF_MIME_LATEST,
L"unicode", L"unicode", L"unicode" },
{ L"Unicode (UTF-7)",
CP_UTF7, MIMECONTF_MAILNEWS | MIMECONTF_IMPORT |
MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_EXPORT | MIMECONTF_VALID |
MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
L"utf-7", L"utf-7", L"utf-7" },
{ L"Unicode (UTF-8)",
CP_UTF8, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
MIMECONTF_EXPORT | MIMECONTF_VALID | MIMECONTF_VALID_NLS |
MIMECONTF_MIME_IE4 | MIMECONTF_MIME_LATEST,
L"utf-8", L"utf-8", L"utf-8" }
}
#define CP_UTF7
Definition: winnls.h:253

Definition at line 461 of file mlang.c.

◆ vietnamese_cp

const MIME_CP_INFO vietnamese_cp[]
static
Initial value:
=
{
{ L"Vietnamese (Windows)",
1258, MIMECONTF_MAILNEWS | MIMECONTF_BROWSER | MIMECONTF_IMPORT |
MIMECONTF_SAVABLE_MAILNEWS | MIMECONTF_SAVABLE_BROWSER |
MIMECONTF_EXPORT | MIMECONTF_VALID_NLS | MIMECONTF_MIME_IE4 |
MIMECONTF_MIME_LATEST,
L"windows-1258", L"windows-1258", L"windows-1258" }
}

Definition at line 385 of file mlang.c.

◆ western_cp

const MIME_CP_INFO western_cp[]
static

Definition at line 395 of file mlang.c.