From 41f763ea879045464b02d45c048852e7e13cea93 Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Fri, 29 Jul 2016 13:13:06 +0100 Subject: [PATCH] gdi32: Add an internal version of GetTextCharsetInfo() that takes a DC pointer. Signed-off-by: Huw Davies Signed-off-by: Alexandre Julliard --- dlls/gdi32/font.c | 57 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c index b42aaa641e6..2faefe8b26b 100644 --- a/dlls/gdi32/font.c +++ b/dlls/gdi32/font.c @@ -407,6 +407,40 @@ DWORD WINAPI GdiGetCodePage( HDC hdc ) } /*********************************************************************** + * get_text_charset_info + * + * Internal version of GetTextCharsetInfo() that takes a DC pointer. + */ +static UINT get_text_charset_info(DC *dc, FONTSIGNATURE *fs, DWORD flags) +{ + UINT ret = DEFAULT_CHARSET; + PHYSDEV dev; + + dev = GET_DC_PHYSDEV( dc, pGetTextCharsetInfo ); + ret = dev->funcs->pGetTextCharsetInfo( dev, fs, flags ); + + if (ret == DEFAULT_CHARSET && fs) + memset(fs, 0, sizeof(FONTSIGNATURE)); + return ret; +} + +/*********************************************************************** + * GetTextCharsetInfo (GDI32.@) + */ +UINT WINAPI GetTextCharsetInfo(HDC hdc, FONTSIGNATURE *fs, DWORD flags) +{ + UINT ret = DEFAULT_CHARSET; + DC *dc = get_dc_ptr(hdc); + + if (dc) + { + ret = get_text_charset_info( dc, fs, flags ); + release_dc_ptr( dc ); + } + return ret; +} + +/*********************************************************************** * FONT_mbtowc * * Returns a Unicode translation of str using the charset of the @@ -646,7 +680,7 @@ static DWORD get_associated_charset_info(void) static void update_font_code_page( DC *dc, HANDLE font ) { CHARSETINFO csi; - int charset = GetTextCharsetInfo( dc->hSelf, NULL, 0 ); + int charset = get_text_charset_info( dc, NULL, 0 ); LOGFONTW lf; GetObjectW( font, sizeof(lf), &lf ); @@ -3689,27 +3723,6 @@ UINT WINAPI GetTextCharset(HDC hdc) } /*********************************************************************** - * GetTextCharsetInfo (GDI32.@) - */ -UINT WINAPI GetTextCharsetInfo(HDC hdc, LPFONTSIGNATURE fs, DWORD flags) -{ - UINT ret = DEFAULT_CHARSET; - DC *dc = get_dc_ptr(hdc); - PHYSDEV dev; - - if (dc) - { - dev = GET_DC_PHYSDEV( dc, pGetTextCharsetInfo ); - ret = dev->funcs->pGetTextCharsetInfo( dev, fs, flags ); - release_dc_ptr( dc ); - } - - if (ret == DEFAULT_CHARSET && fs) - memset(fs, 0, sizeof(FONTSIGNATURE)); - return ret; -} - -/*********************************************************************** * GdiGetCharDimensions (GDI32.@) * * Gets the average width of the characters in the English alphabet. -- 2.11.4.GIT