Module: wine Branch: master Commit: 454b0fcb1eb692a7a5754aefb10b6a4f0553f35e URL: https://source.winehq.org/git/wine.git/?a=commit;h=454b0fcb1eb692a7a5754aefb...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Jul 28 11:40:07 2021 +0200
gdi32: Store text color 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/bitblt.c | 2 +- dlls/gdi32/dc.c | 29 ++++++----------------------- dlls/gdi32/dib.c | 2 +- dlls/gdi32/dibdrv/graphics.c | 4 ++-- dlls/gdi32/dibdrv/objects.c | 2 +- dlls/gdi32/font.c | 4 ++-- dlls/gdi32/gdidc.c | 9 +++++++++ dlls/gdi32/ntgdi_private.h | 1 - include/ntgdi.h | 1 + 9 files changed, 23 insertions(+), 31 deletions(-)
diff --git a/dlls/gdi32/bitblt.c b/dlls/gdi32/bitblt.c index b58419f1c78..39b28cba6df 100644 --- a/dlls/gdi32/bitblt.c +++ b/dlls/gdi32/bitblt.c @@ -262,7 +262,7 @@ static RGBQUAD get_dc_rgb_color( DC *dc, int color_table_size, COLORREF color ) void get_mono_dc_colors( DC *dc, int color_table_size, BITMAPINFO *info, int count ) { info->bmiColors[count - 1] = get_dc_rgb_color( dc, color_table_size, dc->attr->background_color ); - if (count > 1) info->bmiColors[0] = get_dc_rgb_color( dc, color_table_size, dc->textColor ); + if (count > 1) info->bmiColors[0] = get_dc_rgb_color( dc, color_table_size, dc->attr->text_color ); info->bmiHeader.biClrUsed = count; }
diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c index 3725bd1abf6..71d27c03e4f 100644 --- a/dlls/gdi32/dc.c +++ b/dlls/gdi32/dc.c @@ -90,7 +90,7 @@ static void set_initial_dc_state( DC *dc ) dc->attr->background_color = RGB( 255, 255, 255 ); dc->dcBrushColor = RGB( 255, 255, 255 ); dc->dcPenColor = RGB( 0, 0, 0 ); - dc->textColor = RGB( 0, 0, 0 ); + dc->attr->text_color = RGB( 0, 0, 0 ); dc->brush_org.x = 0; dc->brush_org.y = 0; dc->mapperFlags = 0; @@ -275,7 +275,7 @@ void DC_InitDC( DC* dc ) { PHYSDEV physdev = GET_DC_PHYSDEV( dc, pRealizeDefaultPalette ); physdev->funcs->pRealizeDefaultPalette( physdev ); - SetTextColor( dc->hSelf, dc->textColor ); + SetTextColor( dc->hSelf, dc->attr->text_color ); SetBkColor( dc->hSelf, dc->attr->background_color ); NtGdiSelectPen( dc->hSelf, dc->hPen ); NtGdiSelectBrush( dc->hSelf, dc->hBrush ); @@ -401,7 +401,6 @@ INT CDECL nulldrv_SaveDC( PHYSDEV dev ) newdc->polyFillMode = dc->polyFillMode; newdc->stretchBltMode = dc->stretchBltMode; newdc->relAbsMode = dc->relAbsMode; - newdc->textColor = dc->textColor; newdc->dcBrushColor = dc->dcBrushColor; newdc->dcPenColor = dc->dcPenColor; newdc->brush_org = dc->brush_org; @@ -475,7 +474,7 @@ BOOL CDECL nulldrv_RestoreDC( PHYSDEV dev, INT level ) dc->relAbsMode = dcs->relAbsMode; dc->attr->background_mode = dcs->attr->background_mode; dc->attr->background_color = dcs->attr->background_color; - dc->textColor = dcs->textColor; + dc->attr->text_color = dcs->attr->text_color; dc->dcBrushColor = dcs->dcBrushColor; dc->dcPenColor = dcs->dcPenColor; dc->brush_org = dcs->brush_org; @@ -527,7 +526,7 @@ BOOL CDECL nulldrv_RestoreDC( PHYSDEV dev, INT level ) NtGdiSelectFont( dev->hdc, dcs->hFont ); NtGdiSelectPen( dev->hdc, dcs->hPen ); SetBkColor( dev->hdc, dcs->attr->background_color); - SetTextColor( dev->hdc, dcs->textColor); + SetTextColor( dev->hdc, dcs->attr->text_color); GDISelectPalette( dev->hdc, dcs->hPalette, FALSE );
dc->saved_dc = dcs->saved_dc; @@ -929,22 +928,6 @@ COLORREF WINAPI SetBkColor( HDC hdc, COLORREF color ) }
-/*********************************************************************** - * GetTextColor (GDI32.@) - */ -COLORREF WINAPI GetTextColor( HDC hdc ) -{ - COLORREF ret = 0; - DC * dc = get_dc_ptr( hdc ); - if (dc) - { - ret = dc->textColor; - release_dc_ptr( dc ); - } - return ret; -} - - /*********************************************************************** * SetTextColor (GDI32.@) */ @@ -958,8 +941,8 @@ COLORREF WINAPI SetTextColor( HDC hdc, COLORREF color ) if (dc) { PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetTextColor ); - ret = dc->textColor; - dc->textColor = physdev->funcs->pSetTextColor( physdev, color ); + ret = dc->attr->text_color; + dc->attr->text_color = physdev->funcs->pSetTextColor( physdev, color ); release_dc_ptr( dc ); } return ret; diff --git a/dlls/gdi32/dib.c b/dlls/gdi32/dib.c index 4c65b271661..22237b207a5 100644 --- a/dlls/gdi32/dib.c +++ b/dlls/gdi32/dib.c @@ -937,7 +937,7 @@ UINT WINAPI SetDIBColorTable( HDC hdc, UINT startpos, UINT entries, const RGBQUA
if (result) /* update colors of selected objects */ { - SetTextColor( hdc, dc->textColor ); + SetTextColor( hdc, dc->attr->text_color ); SetBkColor( hdc, dc->attr->background_color ); NtGdiSelectPen( hdc, dc->hPen ); NtGdiSelectBrush( hdc, dc->hBrush ); diff --git a/dlls/gdi32/dibdrv/graphics.c b/dlls/gdi32/dibdrv/graphics.c index 402b1b10323..3eb9c5184a4 100644 --- a/dlls/gdi32/dibdrv/graphics.c +++ b/dlls/gdi32/dibdrv/graphics.c @@ -674,7 +674,7 @@ static inline void get_text_bkgnd_masks( DC *dc, const dib_info *dib, rop_mask * mask->xor = get_pixel_color( dc, dib, bg, FALSE ); else { - COLORREF fg = dc->textColor; + COLORREF fg = dc->attr->text_color; mask->xor = get_pixel_color( dc, dib, fg, TRUE ); if (fg != bg) mask->xor = ~mask->xor; } @@ -823,7 +823,7 @@ static void render_string( DC *dc, dib_info *dib, struct cached_font *font, INT glyph_dib.bits.is_copy = FALSE; glyph_dib.bits.free = NULL;
- text_color = get_pixel_color( dc, dib, dc->textColor, TRUE ); + text_color = get_pixel_color( dc, dib, dc->attr->text_color, TRUE );
if (glyph_dib.bit_count == 32) intensity.gamma_ramp = dc->font_gamma_ramp; diff --git a/dlls/gdi32/dibdrv/objects.c b/dlls/gdi32/dibdrv/objects.c index e34e78550eb..3a0ea7465a6 100644 --- a/dlls/gdi32/dibdrv/objects.c +++ b/dlls/gdi32/dibdrv/objects.c @@ -1981,7 +1981,7 @@ static BOOL select_pattern_brush( dibdrv_physdev *pdev, dib_brush *brush, BOOL * BOOL got_pixel; COLORREF color;
- color = make_rgb_colorref( dc, &pdev->dib, dc->textColor, &got_pixel, &pixel ); + color = make_rgb_colorref( dc, &pdev->dib, dc->attr->text_color, &got_pixel, &pixel ); color_table[0].rgbRed = GetRValue( color ); color_table[0].rgbGreen = GetGValue( color ); color_table[0].rgbBlue = GetBValue( color ); diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c index e9595caa503..6e4a52fec02 100644 --- a/dlls/gdi32/font.c +++ b/dlls/gdi32/font.c @@ -5783,7 +5783,7 @@ BOOL CDECL nulldrv_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags, const RECT } }
- pen = CreatePen( PS_SOLID, 1, dc->textColor ); + pen = CreatePen( PS_SOLID, 1, dc->attr->text_color ); orig = NtGdiSelectPen( dev->hdc, pen );
for (i = 0; i < count; i++) @@ -6238,7 +6238,7 @@ done: OUTLINETEXTMETRICW* otm = NULL; POINT pts[5]; HPEN hpen = NtGdiSelectPen(hdc, GetStockObject(NULL_PEN)); - HBRUSH hbrush = CreateSolidBrush(dc->textColor); + HBRUSH hbrush = CreateSolidBrush( dc->attr->text_color );
hbrush = NtGdiSelectBrush(hdc, hbrush);
diff --git a/dlls/gdi32/gdidc.c b/dlls/gdi32/gdidc.c index d16d6c8d94a..3a4e6e48899 100644 --- a/dlls/gdi32/gdidc.c +++ b/dlls/gdi32/gdidc.c @@ -74,6 +74,15 @@ COLORREF WINAPI GetBkColor( HDC hdc ) return dc_attr ? dc_attr->background_color : CLR_INVALID; }
+/*********************************************************************** + * GetTextColor (GDI32.@) + */ +COLORREF WINAPI GetTextColor( HDC hdc ) +{ + DC_ATTR *dc_attr = get_dc_attr( hdc ); + return dc_attr ? dc_attr->text_color : 0; +} + /*********************************************************************** * GetBkMode (GDI32.@) */ diff --git a/dlls/gdi32/ntgdi_private.h b/dlls/gdi32/ntgdi_private.h index 65a06db61e5..110fc622d03 100644 --- a/dlls/gdi32/ntgdi_private.h +++ b/dlls/gdi32/ntgdi_private.h @@ -119,7 +119,6 @@ typedef struct tagDC WORD polyFillMode; WORD stretchBltMode; WORD relAbsMode; - COLORREF textColor; COLORREF dcBrushColor; COLORREF dcPenColor; POINT brush_org; diff --git a/include/ntgdi.h b/include/ntgdi.h index cb238b6eda1..c1221d7995b 100644 --- a/include/ntgdi.h +++ b/include/ntgdi.h @@ -100,6 +100,7 @@ typedef struct DC_ATTR { LONG disabled; /* disabled flag, controled by DCHF_(DISABLE|ENABLE)DC */ COLORREF background_color; + COLORREF text_color; POINT cur_pos; INT graphics_mode; DWORD layout;