Jacek Caban : gdi32: Store DC brush color in DC_ATTR.

Alexandre Julliard julliard at winehq.org
Fri Jul 30 14:21:08 CDT 2021


Module: wine
Branch: master
Commit: e7abb54f430e92a559425f933b0e237ccb8294e1
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=e7abb54f430e92a559425f933b0e237ccb8294e1

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Jul 30 13:00:45 2021 +0200

gdi32: Store DC brush color in DC_ATTR.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/gdi32/dc.c             | 29 ++++-------------------------
 dlls/gdi32/dibdrv/objects.c |  2 +-
 dlls/gdi32/gdidc.c          |  9 +++++++++
 dlls/gdi32/ntgdi_private.h  |  1 -
 include/ntgdi.h             |  1 +
 5 files changed, 15 insertions(+), 27 deletions(-)

diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c
index bae1e9d21ab..fd4a1d3abd0 100644
--- a/dlls/gdi32/dc.c
+++ b/dlls/gdi32/dc.c
@@ -88,7 +88,7 @@ static void set_initial_dc_state( DC *dc )
     dc->attr->rel_abs_mode     = ABSOLUTE;
     dc->attr->background_mode  = OPAQUE;
     dc->attr->background_color = RGB( 255, 255, 255 );
-    dc->dcBrushColor        = RGB( 255, 255, 255 );
+    dc->attr->brush_color      = RGB( 255, 255, 255 );
     dc->dcPenColor          = RGB( 0, 0, 0 );
     dc->attr->text_color    = RGB( 0, 0, 0 );
     dc->brush_org.x         = 0;
@@ -398,7 +398,6 @@ INT CDECL nulldrv_SaveDC( PHYSDEV dev )
     newdc->hFont            = dc->hFont;
     newdc->hBitmap          = dc->hBitmap;
     newdc->hPalette         = dc->hPalette;
-    newdc->dcBrushColor     = dc->dcBrushColor;
     newdc->dcPenColor       = dc->dcPenColor;
     newdc->brush_org        = dc->brush_org;
     newdc->mapperFlags      = dc->mapperFlags;
@@ -470,7 +469,7 @@ BOOL CDECL nulldrv_RestoreDC( PHYSDEV dev, INT level )
     dc->attr->background_mode  = dcs->attr->background_mode;
     dc->attr->background_color = dcs->attr->background_color;
     dc->attr->text_color       = dcs->attr->text_color;
-    dc->dcBrushColor     = dcs->dcBrushColor;
+    dc->attr->brush_color      = dcs->attr->brush_color;
     dc->dcPenColor       = dcs->dcPenColor;
     dc->brush_org        = dcs->brush_org;
     dc->mapperFlags      = dcs->mapperFlags;
@@ -1479,26 +1478,6 @@ DWORD WINAPI SetLayout(HDC hdc, DWORD layout)
     return oldlayout;
 }
 
-/***********************************************************************
- *           GetDCBrushColor    (GDI32.@)
- */
-COLORREF WINAPI GetDCBrushColor(HDC hdc)
-{
-    DC *dc;
-    COLORREF dcBrushColor = CLR_INVALID;
-
-    TRACE("hdc(%p)\n", hdc);
-
-    dc = get_dc_ptr( hdc );
-    if (dc)
-    {
-        dcBrushColor = dc->dcBrushColor;
-	release_dc_ptr( dc );
-    }
-
-    return dcBrushColor;
-}
-
 /***********************************************************************
  *           SetDCBrushColor    (GDI32.@)
  */
@@ -1516,8 +1495,8 @@ COLORREF WINAPI SetDCBrushColor(HDC hdc, COLORREF crColor)
         crColor = physdev->funcs->pSetDCBrushColor( physdev, crColor );
         if (crColor != CLR_INVALID)
         {
-            oldClr = dc->dcBrushColor;
-            dc->dcBrushColor = crColor;
+            oldClr = dc->attr->brush_color;
+            dc->attr->brush_color = crColor;
         }
         release_dc_ptr( dc );
     }
diff --git a/dlls/gdi32/dibdrv/objects.c b/dlls/gdi32/dibdrv/objects.c
index 3a0ea7465a6..9d2c4022759 100644
--- a/dlls/gdi32/dibdrv/objects.c
+++ b/dlls/gdi32/dibdrv/objects.c
@@ -2137,7 +2137,7 @@ HBRUSH CDECL dibdrv_SelectBrush( PHYSDEV dev, HBRUSH hbrush, const struct brush_
     GetObjectW( hbrush, sizeof(logbrush), &logbrush );
 
     if (hbrush == GetStockObject( DC_BRUSH ))
-        logbrush.lbColor = dc->dcBrushColor;
+        logbrush.lbColor = dc->attr->brush_color;
 
     select_brush( pdev, &pdev->brush, &logbrush, pattern, TRUE );
     return hbrush;
diff --git a/dlls/gdi32/gdidc.c b/dlls/gdi32/gdidc.c
index bbd172239cd..9e85143ce0c 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;
 }
 
+/***********************************************************************
+ *           GetDCBrushColor  (GDI32.@)
+ */
+COLORREF WINAPI GetDCBrushColor( HDC hdc )
+{
+    DC_ATTR *dc_attr = get_dc_attr( hdc );
+    return dc_attr ? dc_attr->brush_color : CLR_INVALID;
+}
+
 /***********************************************************************
  *		GetTextColor (GDI32.@)
  */
diff --git a/dlls/gdi32/ntgdi_private.h b/dlls/gdi32/ntgdi_private.h
index 19a5819f031..fb110409357 100644
--- a/dlls/gdi32/ntgdi_private.h
+++ b/dlls/gdi32/ntgdi_private.h
@@ -116,7 +116,6 @@ typedef struct tagDC
     const struct font_gamma_ramp *font_gamma_ramp;
 
     UINT          font_code_page;
-    COLORREF      dcBrushColor;
     COLORREF      dcPenColor;
     POINT         brush_org;
 
diff --git a/include/ntgdi.h b/include/ntgdi.h
index 08df860a5e6..1f33cfe5143 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  brush_color;
     COLORREF  text_color;
     POINT     cur_pos;
     INT       graphics_mode;




More information about the wine-cvs mailing list