Module: wine Branch: master Commit: 7ad7ec5b8b903733bc521cfdc1200bf4d76fb182 URL: https://source.winehq.org/git/wine.git/?a=commit;h=7ad7ec5b8b903733bc521cfdc...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Aug 20 10:42:24 2021 +0200
gdi32: Store font code page in DC_ATTR.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Huw Davies huw@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/gdi32/dc.c | 2 +- dlls/gdi32/font.c | 28 ++++++---------------------- dlls/gdi32/ntgdi_private.h | 1 - dlls/gdi32/text.c | 9 +++++++++ include/ntgdi.h | 1 + 5 files changed, 17 insertions(+), 24 deletions(-)
diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c index 51b754d1ccd..e4f643389d5 100644 --- a/dlls/gdi32/dc.c +++ b/dlls/gdi32/dc.c @@ -80,8 +80,8 @@ static void set_initial_dc_state( DC *dc ) dc->attr->vport_ext.cy = 1; dc->attr->miter_limit = 10.0f; /* 10.0 is the default, from MSDN */ dc->attr->layout = 0; - dc->font_code_page = CP_ACP; dc->attr->rop_mode = R2_COPYPEN; + dc->attr->font_code_page = CP_ACP; dc->attr->poly_fill_mode = ALTERNATE; dc->attr->stretch_blt_mode = BLACKONWHITE; dc->attr->rel_abs_mode = ABSOLUTE; diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c index bfb27ccd1af..e267190fb64 100644 --- a/dlls/gdi32/font.c +++ b/dlls/gdi32/font.c @@ -4163,22 +4163,6 @@ static BOOL get_char_positions_indices( DC *dc, const WORD *indices, INT count, return TRUE; }
-/*********************************************************************** - * GdiGetCodePage (GDI32.@) - */ -DWORD WINAPI GdiGetCodePage( HDC hdc ) -{ - UINT cp = CP_ACP; - DC *dc = get_dc_ptr( hdc ); - - if (dc) - { - cp = dc->font_code_page; - release_dc_ptr( dc ); - } - return cp; -} - /*********************************************************************** * get_text_charset_info * @@ -4457,14 +4441,14 @@ static void update_font_code_page( DC *dc, HANDLE font )
/* Hmm, nicely designed api this one! */ if (TranslateCharsetInfo( ULongToPtr(charset), &csi, TCI_SRCCHARSET) ) - dc->font_code_page = csi.ciACP; + dc->attr->font_code_page = csi.ciACP; else { switch(charset) { case OEM_CHARSET: - dc->font_code_page = GetOEMCP(); + dc->attr->font_code_page = GetOEMCP(); break; case DEFAULT_CHARSET: - dc->font_code_page = GetACP(); + dc->attr->font_code_page = GetACP(); break;
case VISCII_CHARSET: @@ -4481,17 +4465,17 @@ static void update_font_code_page( DC *dc, HANDLE font ) each of these, but since it's broken anyway we'll just use CP_ACP and hope it'll go away... */ - dc->font_code_page = CP_ACP; + dc->attr->font_code_page = CP_ACP; break;
default: FIXME("Can't find codepage for charset %d\n", charset); - dc->font_code_page = CP_ACP; + dc->attr->font_code_page = CP_ACP; break; } }
- TRACE("charset %d => cp %d\n", charset, dc->font_code_page); + TRACE( "charset %d => cp %d\n", charset, dc->attr->font_code_page ); }
/*********************************************************************** diff --git a/dlls/gdi32/ntgdi_private.h b/dlls/gdi32/ntgdi_private.h index 522bd51b6cc..91230666fad 100644 --- a/dlls/gdi32/ntgdi_private.h +++ b/dlls/gdi32/ntgdi_private.h @@ -99,7 +99,6 @@ typedef struct tagDC
const struct font_gamma_ramp *font_gamma_ramp;
- UINT font_code_page; INT breakExtra; /* breakTotalExtra / breakCount */ INT breakRem; /* breakTotalExtra % breakCount */ ABORTPROC pAbortProc; /* AbortProc for Printing */ diff --git a/dlls/gdi32/text.c b/dlls/gdi32/text.c index 2d3902d2433..ffbc9806e78 100644 --- a/dlls/gdi32/text.c +++ b/dlls/gdi32/text.c @@ -737,6 +737,15 @@ static void text_metric_WtoA( const TEXTMETRICW *tmW, TEXTMETRICA *tmA ) tmA->tmCharSet = tmW->tmCharSet; }
+/*********************************************************************** + * GdiGetCodePage (GDI32.@) + */ +DWORD WINAPI GdiGetCodePage( HDC hdc ) +{ + DC_ATTR *dc_attr = get_dc_attr( hdc ); + return dc_attr ? dc_attr->font_code_page : CP_ACP; +} + /*********************************************************************** * ExtTextOutW (GDI32.@) */ diff --git a/include/ntgdi.h b/include/ntgdi.h index 52eb0767617..14808593501 100644 --- a/include/ntgdi.h +++ b/include/ntgdi.h @@ -156,6 +156,7 @@ typedef struct DC_ATTR SIZE vport_ext; /* viewport extent */ SIZE virtual_res; SIZE virtual_size; + UINT font_code_page; void *emf; } DC_ATTR;