Jacek Caban : gdi32: Store brush origin in DC_ATTR.

Alexandre Julliard julliard at winehq.org
Tue Aug 3 16:52:23 CDT 2021


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Aug  3 12:56:21 2021 +0200

gdi32: Store brush origin 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/brush.c           |  6 +++---
 dlls/gdi32/dc.c              | 20 +++-----------------
 dlls/gdi32/dibdrv/bitblt.c   |  2 +-
 dlls/gdi32/dibdrv/graphics.c |  4 ++--
 dlls/gdi32/gdidc.c           | 11 +++++++++++
 dlls/gdi32/ntgdi_private.h   |  2 --
 include/ntgdi.h              |  1 +
 7 files changed, 21 insertions(+), 25 deletions(-)

diff --git a/dlls/gdi32/brush.c b/dlls/gdi32/brush.c
index 638e7fc7fed..a59fee700ce 100644
--- a/dlls/gdi32/brush.c
+++ b/dlls/gdi32/brush.c
@@ -390,10 +390,10 @@ BOOL WINAPI SetBrushOrgEx( HDC hdc, INT x, INT y, LPPOINT oldorg )
 
     if (!dc) return FALSE;
     if (oldorg)
-        *oldorg = dc->brush_org;
+        *oldorg = dc->attr->brush_org;
 
-    dc->brush_org.x = x;
-    dc->brush_org.y = y;
+    dc->attr->brush_org.x = x;
+    dc->attr->brush_org.y = y;
     release_dc_ptr( dc );
     return TRUE;
 }
diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c
index 8c2ac20fb49..8c03392c513 100644
--- a/dlls/gdi32/dc.c
+++ b/dlls/gdi32/dc.c
@@ -91,8 +91,8 @@ static void set_initial_dc_state( DC *dc )
     dc->attr->brush_color      = RGB( 255, 255, 255 );
     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;
+    dc->attr->brush_org.x   = 0;
+    dc->attr->brush_org.y   = 0;
     dc->mapperFlags         = 0;
     dc->attr->text_align    = TA_LEFT | TA_TOP | TA_NOUPDATECP;
     dc->charExtra           = 0;
@@ -410,7 +410,7 @@ BOOL CDECL nulldrv_RestoreDC( PHYSDEV dev, INT level )
     dc->attr->text_color       = dcs->attr->text_color;
     dc->attr->brush_color      = dcs->attr->brush_color;
     dc->attr->pen_color        = dcs->attr->pen_color;
-    dc->brush_org        = dcs->brush_org;
+    dc->attr->brush_org        = dcs->attr->brush_org;
     dc->mapperFlags      = dcs->mapperFlags;
     dc->attr->text_align = dcs->attr->text_align;
     dc->charExtra        = dcs->charExtra;
@@ -544,7 +544,6 @@ INT WINAPI NtGdiSaveDC( HDC hdc )
     newdc->hFont            = dc->hFont;
     newdc->hBitmap          = dc->hBitmap;
     newdc->hPalette         = dc->hPalette;
-    newdc->brush_org        = dc->brush_org;
     newdc->mapperFlags      = dc->mapperFlags;
     newdc->charExtra        = dc->charExtra;
     newdc->breakExtra       = dc->breakExtra;
@@ -1274,19 +1273,6 @@ UINT WINAPI NtGdiSetBoundsRect( HDC hdc, const RECT *rect, UINT flags )
 }
 
 
-/***********************************************************************
- *		GetBrushOrgEx (GDI32.@)
- */
-BOOL WINAPI GetBrushOrgEx( HDC hdc, LPPOINT pt )
-{
-    DC * dc = get_dc_ptr( hdc );
-    if (!dc) return FALSE;
-    *pt = dc->brush_org;
-    release_dc_ptr( dc );
-    return TRUE;
-}
-
-
 /***********************************************************************
  *           SetLayout    (GDI32.@)
  *
diff --git a/dlls/gdi32/dibdrv/bitblt.c b/dlls/gdi32/dibdrv/bitblt.c
index 35413ccb942..dabdf01a591 100644
--- a/dlls/gdi32/dibdrv/bitblt.c
+++ b/dlls/gdi32/dibdrv/bitblt.c
@@ -1030,7 +1030,7 @@ DWORD CDECL dibdrv_PutImage( PHYSDEV dev, HRGN clip, BITMAPINFO *info,
         }
         else
             ret = execute_rop( pdev, &dst->visrect, &src_dib, &src->visrect, &clipped_rects,
-                               &dc->brush_org, rop );
+                               &dc->attr->brush_org, rop );
         free_clipped_rects( &clipped_rects );
     }
     free_dib_info( &src_dib );
diff --git a/dlls/gdi32/dibdrv/graphics.c b/dlls/gdi32/dibdrv/graphics.c
index e4e2de8f99f..c6f11ae6a69 100644
--- a/dlls/gdi32/dibdrv/graphics.c
+++ b/dlls/gdi32/dibdrv/graphics.c
@@ -73,7 +73,7 @@ static BOOL brush_rect( dibdrv_physdev *pdev, dib_brush *brush, const RECT *rect
 
     if (!get_clipped_rects( &pdev->dib, rect, clip, &clipped_rects )) return TRUE;
     ret = brush->rects( pdev, brush, &pdev->dib, clipped_rects.count, clipped_rects.rects,
-                        &dc->brush_org, dc->attr->rop_mode );
+                        &dc->attr->brush_org, dc->attr->rop_mode );
     free_clipped_rects( &clipped_rects );
     return ret;
 }
@@ -1203,7 +1203,7 @@ BOOL CDECL dibdrv_PatBlt( PHYSDEV dev, struct bitblt_coords *dst, DWORD rop )
         break;
     default:
         ret = brush->rects( pdev, brush, &pdev->dib, clipped_rects.count, clipped_rects.rects,
-                            &dc->brush_org, rop2 );
+                            &dc->attr->brush_org, rop2 );
         break;
     }
     free_clipped_rects( &clipped_rects );
diff --git a/dlls/gdi32/gdidc.c b/dlls/gdi32/gdidc.c
index e2138508d87..a0af23c169d 100644
--- a/dlls/gdi32/gdidc.c
+++ b/dlls/gdi32/gdidc.c
@@ -330,6 +330,17 @@ INT WINAPI GetStretchBltMode( HDC hdc )
     return dc_attr ? dc_attr->stretch_blt_mode : 0;
 }
 
+/***********************************************************************
+ *		GetBrushOrgEx (GDI32.@)
+ */
+BOOL WINAPI GetBrushOrgEx( HDC hdc, POINT *point )
+{
+    DC_ATTR *dc_attr;
+    if (!(dc_attr = get_dc_attr( hdc ))) return FALSE;
+    *point = dc_attr->brush_org;
+    return TRUE;
+}
+
 /***********************************************************************
  *           GetDCOrgEx  (GDI32.@)
  */
diff --git a/dlls/gdi32/ntgdi_private.h b/dlls/gdi32/ntgdi_private.h
index 5dd685e07ec..c3ae797ddf6 100644
--- a/dlls/gdi32/ntgdi_private.h
+++ b/dlls/gdi32/ntgdi_private.h
@@ -110,8 +110,6 @@ typedef struct tagDC
     const struct font_gamma_ramp *font_gamma_ramp;
 
     UINT          font_code_page;
-    POINT         brush_org;
-
     DWORD         mapperFlags;       /* Font mapper flags */
     INT           charExtra;         /* Spacing from SetTextCharacterExtra() */
     INT           breakExtra;        /* breakTotalExtra / breakCount */
diff --git a/include/ntgdi.h b/include/ntgdi.h
index 38a2dfd3835..1698aa17054 100644
--- a/include/ntgdi.h
+++ b/include/ntgdi.h
@@ -116,6 +116,7 @@ typedef struct DC_ATTR
     INT       map_mode;
     RECT      vis_rect;            /* visible rectangle in screen coords */
     FLOAT     miter_limit;
+    POINT     brush_org;           /* brush origin */
     POINT     wnd_org;             /* window origin */
     SIZE      wnd_ext;             /* window extent */
     POINT     vport_org;           /* viewport origin */




More information about the wine-cvs mailing list