Module: wine Branch: master Commit: 06dd790c452bbf783b98380a738e1d949213ebb6 URL: https://source.winehq.org/git/wine.git/?a=commit;h=06dd790c452bbf783b98380a7...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Jul 30 13:01:05 2021 +0200
gdi32: Store miter limit in DC_ATTR.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Huw Davies huw@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/gdi32/dc.c | 30 +++--------------------------- dlls/gdi32/dibdrv/objects.c | 2 +- dlls/gdi32/gdidc.c | 11 +++++++++++ dlls/gdi32/ntgdi_private.h | 1 - dlls/gdi32/path.c | 2 +- include/ntgdi.h | 1 + 6 files changed, 17 insertions(+), 30 deletions(-)
diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c index 675527d4df5..4a8326c647e 100644 --- a/dlls/gdi32/dc.c +++ b/dlls/gdi32/dc.c @@ -79,7 +79,7 @@ static void set_initial_dc_state( DC *dc ) dc->vport_org.y = 0; dc->vport_ext.cx = 1; dc->vport_ext.cy = 1; - dc->miterLimit = 10.0f; /* 10.0 is the default, from MSDN */ + dc->attr->miter_limit = 10.0f; /* 10.0 is the default, from MSDN */ dc->attr->layout = 0; dc->font_code_page = CP_ACP; dc->attr->rop_mode = R2_COPYPEN; @@ -1538,30 +1538,6 @@ BOOL WINAPI CancelDC(HDC hdc) return TRUE; }
-/******************************************************************* - * GetMiterLimit [GDI32.@] - * - * - */ -BOOL WINAPI GetMiterLimit(HDC hdc, PFLOAT peLimit) -{ - BOOL bRet = FALSE; - DC *dc; - - TRACE("(%p,%p)\n", hdc, peLimit); - - dc = get_dc_ptr( hdc ); - if (dc) - { - if (peLimit) - *peLimit = dc->miterLimit; - - release_dc_ptr( dc ); - bRet = TRUE; - } - return bRet; -} - /******************************************************************* * SetMiterLimit [GDI32.@] * @@ -1578,8 +1554,8 @@ BOOL WINAPI SetMiterLimit(HDC hdc, FLOAT eNewLimit, PFLOAT peOldLimit) if (dc) { if (peOldLimit) - *peOldLimit = dc->miterLimit; - dc->miterLimit = eNewLimit; + *peOldLimit = dc->attr->miter_limit; + dc->attr->miter_limit = eNewLimit; release_dc_ptr( dc ); bRet = TRUE; } diff --git a/dlls/gdi32/dibdrv/objects.c b/dlls/gdi32/dibdrv/objects.c index ce8e3572e90..c5c805ff77e 100644 --- a/dlls/gdi32/dibdrv/objects.c +++ b/dlls/gdi32/dibdrv/objects.c @@ -1316,7 +1316,7 @@ static HRGN create_miter_region( dibdrv_physdev *pdev, const POINT *pt, y = a * face_1->dy - b * face_2->dy;
if (((x - pt->x) * (x - pt->x) + (y - pt->y) * (y - pt->y)) * 4 > - dc->miterLimit * dc->miterLimit * pdev->pen_width * pdev->pen_width) + dc->attr->miter_limit * dc->attr->miter_limit * pdev->pen_width * pdev->pen_width) return 0;
pts[0] = face_2->start; diff --git a/dlls/gdi32/gdidc.c b/dlls/gdi32/gdidc.c index be9ac3d83b9..8d55d50f9a3 100644 --- a/dlls/gdi32/gdidc.c +++ b/dlls/gdi32/gdidc.c @@ -328,6 +328,17 @@ INT WINAPI SetROP2( HDC hdc, INT mode ) return ret; }
+/*********************************************************************** + * GetMiterLimit (GDI32.@) + */ +BOOL WINAPI GetMiterLimit( HDC hdc, FLOAT *limit ) +{ + DC_ATTR *dc_attr; + if (!(dc_attr = get_dc_attr( hdc ))) return FALSE; + if (limit) *limit = dc_attr->miter_limit; + return TRUE; +} + /*********************************************************************** * SetPixel (GDI32.@) */ diff --git a/dlls/gdi32/ntgdi_private.h b/dlls/gdi32/ntgdi_private.h index 73e6fd3d21f..773f6aa007d 100644 --- a/dlls/gdi32/ntgdi_private.h +++ b/dlls/gdi32/ntgdi_private.h @@ -97,7 +97,6 @@ typedef struct tagDC RECT device_rect; /* rectangle for the whole device */ int pixel_format; /* pixel format (for memory DCs) */ UINT aa_flags; /* anti-aliasing flags to pass to GetGlyphOutline for current font */ - FLOAT miterLimit; WCHAR display[CCHDEVICENAME]; /* Display name when created for a specific display device */
int flags; diff --git a/dlls/gdi32/path.c b/dlls/gdi32/path.c index 8a0369a82d0..634bea9bb89 100644 --- a/dlls/gdi32/path.c +++ b/dlls/gdi32/path.c @@ -1796,7 +1796,7 @@ static struct gdi_path *PATH_WidenPath(DC *dc) alpha = atan2( yb - yo, xb - xo ) - theta; if (alpha > 0) alpha -= M_PI; else alpha += M_PI; - if(_joint == PS_JOIN_MITER && dc->miterLimit < fabs(1 / sin(alpha/2))) { + if(_joint == PS_JOIN_MITER && dc->attr->miter_limit < fabs(1 / sin(alpha/2))) { _joint = PS_JOIN_BEVEL; } if(alpha > 0) { diff --git a/include/ntgdi.h b/include/ntgdi.h index 1fffc566adc..22d1f9da187 100644 --- a/include/ntgdi.h +++ b/include/ntgdi.h @@ -114,6 +114,7 @@ typedef struct DC_ATTR WORD rel_abs_mode; WORD stretch_blt_mode; INT map_mode; + FLOAT miter_limit; void *emf; } DC_ATTR;