Jacek Caban : gdi32: Store miter limit in DC_ATTR.
Alexandre Julliard
julliard at winehq.org
Fri Jul 30 14:21:08 CDT 2021
Module: wine
Branch: master
Commit: 06dd790c452bbf783b98380a738e1d949213ebb6
URL: https://source.winehq.org/git/wine.git/?a=commit;h=06dd790c452bbf783b98380a738e1d949213ebb6
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Jul 30 13:01:05 2021 +0200
gdi32: Store miter limit 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 | 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;
More information about the wine-cvs
mailing list