From 4198e0760b400d55525fb77f895b6cee31075543 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 29 Jul 2021 13:22:02 +0100 Subject: [PATCH] gdi32: Store stretch_blt_mode in DC_ATTR. Signed-off-by: Jacek Caban Signed-off-by: Huw Davies Signed-off-by: Alexandre Julliard --- 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; @@ -1393,22 +1393,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.@) */ INT WINAPI SetStretchBltMode( HDC hdc, INT mode ) @@ -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 @@ -197,6 +197,15 @@ INT WINAPI SetPolyFillMode( HDC hdc, INT mode ) } /*********************************************************************** + * 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.@) */ BOOL WINAPI GetCurrentPositionEx( HDC hdc, POINT *point ) 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.11.4.GIT