[PATCH v2 07/10] gdi32: Store stretch_blt_mode in DC_ATTR.

Huw Davies huw at codeweavers.com
Thu Jul 29 07:22:02 CDT 2021


From: Jacek Caban <jacek at codeweavers.com>

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
---
 dlls/gdi32/bitblt.c        |  2 +-
 dlls/gdi32/dc.c            | 24 ++++--------------------
 dlls/gdi32/dib.c           |  2 +-
 dlls/gdi32/gdidc.c         |  9 +++++++++
 dlls/gdi32/ntgdi_private.h |  1 -
 include/ntgdi.h            |  1 +
 6 files changed, 16 insertions(+), 23 deletions(-)

diff --git a/dlls/gdi32/bitblt.c b/dlls/gdi32/bitblt.c
index 39b28cba6df..4c80f1af611 100644
--- a/dlls/gdi32/bitblt.c
+++ b/dlls/gdi32/bitblt.c
@@ -313,7 +313,7 @@ BOOL CDECL nulldrv_StretchBlt( PHYSDEV dst_dev, struct bitblt_coords *dst,
         ((src->width != dst->width) || (src->height != dst->height)))
     {
         copy_bitmapinfo( src_info, dst_info );
-        err = stretch_bits( src_info, src, dst_info, dst, &bits, dc_dst->stretchBltMode );
+        err = stretch_bits( src_info, src, dst_info, dst, &bits, dc_dst->attr->stretch_blt_mode );
         if (!err) err = dst_dev->funcs->pPutImage( dst_dev, 0, dst_info, &bits, src, dst, rop );
     }
 
diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c
index d14593652b8..70e7132d0c5 100644
--- a/dlls/gdi32/dc.c
+++ b/dlls/gdi32/dc.c
@@ -84,7 +84,7 @@ static void set_initial_dc_state( DC *dc )
     dc->font_code_page      = CP_ACP;
     dc->attr->rop_mode      = R2_COPYPEN;
     dc->attr->poly_fill_mode   = ALTERNATE;
-    dc->stretchBltMode         = BLACKONWHITE;
+    dc->attr->stretch_blt_mode = BLACKONWHITE;
     dc->attr->rel_abs_mode     = ABSOLUTE;
     dc->attr->background_mode  = OPAQUE;
     dc->attr->background_color = RGB( 255, 255, 255 );
@@ -466,7 +466,7 @@ BOOL CDECL nulldrv_RestoreDC( PHYSDEV dev, INT level )
     dc->attr->layout     = dcs->attr->layout;
     dc->attr->rop_mode   = dcs->attr->rop_mode;
     dc->attr->poly_fill_mode   = dcs->attr->poly_fill_mode;
-    dc->stretchBltMode   = dcs->stretchBltMode;
+    dc->attr->stretch_blt_mode = dcs->attr->stretch_blt_mode;
     dc->attr->rel_abs_mode     = dcs->attr->rel_abs_mode;
     dc->attr->background_mode  = dcs->attr->background_mode;
     dc->attr->background_color = dcs->attr->background_color;
@@ -1392,22 +1392,6 @@ UINT WINAPI SetBoundsRect(HDC hdc, const RECT* rect, UINT flags)
 }
 
 
-/***********************************************************************
- *		GetStretchBltMode (GDI32.@)
- */
-INT WINAPI GetStretchBltMode( HDC hdc )
-{
-    INT ret = 0;
-    DC * dc = get_dc_ptr( hdc );
-    if (dc)
-    {
-        ret = dc->stretchBltMode;
-        release_dc_ptr( dc );
-    }
-    return ret;
-}
-
-
 /***********************************************************************
  *		SetStretchBltMode (GDI32.@)
  */
@@ -1427,8 +1411,8 @@ INT WINAPI SetStretchBltMode( HDC hdc, INT mode )
         mode = physdev->funcs->pSetStretchBltMode( physdev, mode );
         if (mode)
         {
-            ret = dc->stretchBltMode;
-            dc->stretchBltMode = mode;
+            ret = dc->attr->stretch_blt_mode;
+            dc->attr->stretch_blt_mode = mode;
         }
         release_dc_ptr( dc );
     }
diff --git a/dlls/gdi32/dib.c b/dlls/gdi32/dib.c
index 22237b207a5..432f33151d9 100644
--- a/dlls/gdi32/dib.c
+++ b/dlls/gdi32/dib.c
@@ -592,7 +592,7 @@ INT CDECL nulldrv_StretchDIBits( PHYSDEV dev, INT xDst, INT yDst, INT widthDst,
     if (err == ERROR_TRANSFORM_NOT_SUPPORTED)
     {
         copy_bitmapinfo( src_info, dst_info );
-        err = stretch_bits( src_info, &src, dst_info, &dst, &src_bits, dc->stretchBltMode );
+        err = stretch_bits( src_info, &src, dst_info, &dst, &src_bits, dc->attr->stretch_blt_mode );
         if (!err) err = dev->funcs->pPutImage( dev, NULL, dst_info, &src_bits, &src, &dst, rop );
     }
     if (err) ret = 0;
diff --git a/dlls/gdi32/gdidc.c b/dlls/gdi32/gdidc.c
index 90c70f9d976..f8a6eea6de5 100644
--- a/dlls/gdi32/gdidc.c
+++ b/dlls/gdi32/gdidc.c
@@ -196,6 +196,15 @@ INT WINAPI SetPolyFillMode( HDC hdc, INT mode )
     return ret;
 }
 
+/***********************************************************************
+ *		GetStretchBltMode (GDI32.@)
+ */
+INT WINAPI GetStretchBltMode( HDC hdc )
+{
+    DC_ATTR *dc_attr = get_dc_attr( hdc );
+    return dc_attr ? dc_attr->stretch_blt_mode : 0;
+}
+
 /***********************************************************************
  *		GetCurrentPositionEx (GDI32.@)
  */
diff --git a/dlls/gdi32/ntgdi_private.h b/dlls/gdi32/ntgdi_private.h
index 262971f2a8a..cb7a8e7f7c9 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;
-    WORD          stretchBltMode;
     COLORREF      dcBrushColor;
     COLORREF      dcPenColor;
     POINT         brush_org;
diff --git a/include/ntgdi.h b/include/ntgdi.h
index 38798213f88..a4ed8b6aec9 100644
--- a/include/ntgdi.h
+++ b/include/ntgdi.h
@@ -110,6 +110,7 @@ typedef struct DC_ATTR
     WORD      poly_fill_mode;
     WORD      rop_mode;
     WORD      rel_abs_mode;
+    WORD      stretch_blt_mode;
     void     *emf;
 } DC_ATTR;
 
-- 
2.25.1




More information about the wine-devel mailing list