Commit 06dd790c authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

gdi32: Store miter limit in DC_ATTR.

parent b9ffa2bf
......@@ -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;
......@@ -1539,30 +1539,6 @@ BOOL WINAPI CancelDC(HDC hdc)
}
/*******************************************************************
* 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;
}
......
......@@ -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;
......
......@@ -329,6 +329,17 @@ INT WINAPI SetROP2( HDC hdc, INT mode )
}
/***********************************************************************
* 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.@)
*/
COLORREF WINAPI SetPixel( HDC hdc, INT x, INT y, COLORREF color )
......
......@@ -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;
......
......@@ -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) {
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment