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

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


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

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

gdi32: Store DC pen 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 fd4a1d3abd0..675527d4df5 100644
--- a/dlls/gdi32/dc.c
+++ b/dlls/gdi32/dc.c
@@ -89,7 +89,7 @@ static void set_initial_dc_state( DC *dc )
     dc->attr->background_mode  = OPAQUE;
     dc->attr->background_color = RGB( 255, 255, 255 );
     dc->attr->brush_color      = RGB( 255, 255, 255 );
-    dc->dcPenColor          = RGB( 0, 0, 0 );
+    dc->attr->pen_color        = RGB( 0, 0, 0 );
     dc->attr->text_color    = RGB( 0, 0, 0 );
     dc->brush_org.x         = 0;
     dc->brush_org.y         = 0;
@@ -398,7 +398,6 @@ INT CDECL nulldrv_SaveDC( PHYSDEV dev )
     newdc->hFont            = dc->hFont;
     newdc->hBitmap          = dc->hBitmap;
     newdc->hPalette         = dc->hPalette;
-    newdc->dcPenColor       = dc->dcPenColor;
     newdc->brush_org        = dc->brush_org;
     newdc->mapperFlags      = dc->mapperFlags;
     newdc->charExtra        = dc->charExtra;
@@ -470,7 +469,7 @@ BOOL CDECL nulldrv_RestoreDC( PHYSDEV dev, INT level )
     dc->attr->background_color = dcs->attr->background_color;
     dc->attr->text_color       = dcs->attr->text_color;
     dc->attr->brush_color      = dcs->attr->brush_color;
-    dc->dcPenColor       = dcs->dcPenColor;
+    dc->attr->pen_color        = dcs->attr->pen_color;
     dc->brush_org        = dcs->brush_org;
     dc->mapperFlags      = dcs->mapperFlags;
     dc->attr->text_align = dcs->attr->text_align;
@@ -1504,26 +1503,6 @@ COLORREF WINAPI SetDCBrushColor(HDC hdc, COLORREF crColor)
     return oldClr;
 }
 
-/***********************************************************************
- *           GetDCPenColor    (GDI32.@)
- */
-COLORREF WINAPI GetDCPenColor(HDC hdc)
-{
-    DC *dc;
-    COLORREF dcPenColor = CLR_INVALID;
-
-    TRACE("hdc(%p)\n", hdc);
-
-    dc = get_dc_ptr( hdc );
-    if (dc)
-    {
-        dcPenColor = dc->dcPenColor;
-	release_dc_ptr( dc );
-    }
-
-    return dcPenColor;
-}
-
 /***********************************************************************
  *           SetDCPenColor    (GDI32.@)
  */
@@ -1541,8 +1520,8 @@ COLORREF WINAPI SetDCPenColor(HDC hdc, COLORREF crColor)
         crColor = physdev->funcs->pSetDCPenColor( physdev, crColor );
         if (crColor != CLR_INVALID)
         {
-            oldClr = dc->dcPenColor;
-            dc->dcPenColor = crColor;
+            oldClr = dc->attr->pen_color;
+            dc->attr->pen_color = crColor;
         }
         release_dc_ptr( dc );
     }
diff --git a/dlls/gdi32/dibdrv/objects.c b/dlls/gdi32/dibdrv/objects.c
index 9d2c4022759..ce8e3572e90 100644
--- a/dlls/gdi32/dibdrv/objects.c
+++ b/dlls/gdi32/dibdrv/objects.c
@@ -2189,7 +2189,7 @@ HPEN CDECL dibdrv_SelectPen( PHYSDEV dev, HPEN hpen, const struct brush_pattern
     pdev->pen_width  = get_pen_device_width( dc, logpen.lopnWidth.x );
 
     if (hpen == GetStockObject( DC_PEN ))
-        logbrush.lbColor = dc->dcPenColor;
+        logbrush.lbColor = dc->attr->pen_color;
 
     set_dash_pattern( &pdev->pen_pattern, 0, NULL );
     select_brush( pdev, &pdev->pen_brush, &logbrush, pattern, dither );
diff --git a/dlls/gdi32/gdidc.c b/dlls/gdi32/gdidc.c
index 9e85143ce0c..be9ac3d83b9 100644
--- a/dlls/gdi32/gdidc.c
+++ b/dlls/gdi32/gdidc.c
@@ -83,6 +83,15 @@ COLORREF WINAPI GetDCBrushColor( HDC hdc )
     return dc_attr ? dc_attr->brush_color : CLR_INVALID;
 }
 
+/***********************************************************************
+ *           GetDCPenColor    (GDI32.@)
+ */
+COLORREF WINAPI GetDCPenColor(HDC hdc)
+{
+    DC_ATTR *dc_attr = get_dc_attr( hdc );
+    return dc_attr ? dc_attr->pen_color : CLR_INVALID;
+}
+
 /***********************************************************************
  *		GetTextColor (GDI32.@)
  */
diff --git a/dlls/gdi32/ntgdi_private.h b/dlls/gdi32/ntgdi_private.h
index fb110409357..73e6fd3d21f 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      dcPenColor;
     POINT         brush_org;
 
     DWORD         mapperFlags;       /* Font mapper flags */
diff --git a/include/ntgdi.h b/include/ntgdi.h
index 1f33cfe5143..1fffc566adc 100644
--- a/include/ntgdi.h
+++ b/include/ntgdi.h
@@ -101,6 +101,7 @@ typedef struct DC_ATTR
     LONG      disabled;            /* disabled flag, controled by DCHF_(DISABLE|ENABLE)DC */
     COLORREF  background_color;
     COLORREF  brush_color;
+    COLORREF  pen_color;
     COLORREF  text_color;
     POINT     cur_pos;
     INT       graphics_mode;




More information about the wine-cvs mailing list