diff --git a/objects/clipping.c b/objects/clipping.c index 89b362985f5..499de2e113b 100644 --- a/objects/clipping.c +++ b/objects/clipping.c @@ -194,14 +194,14 @@ INT WINAPI ExcludeClipRect( HDC hdc, INT left, INT top, ret = dc->funcs->pExcludeClipRect( dc->physDev, left, top, right, bottom ); else { - RECT rect; - rect.left = left; - rect.top = top; - rect.right = right; - rect.bottom = bottom; - LPtoDP( hdc, (POINT*)&rect, 2 ); + POINT pt[2]; - if (!(newRgn = CreateRectRgn( rect.left, rect.top, rect.right, rect.bottom ))) ret = ERROR; + pt[0].x = left; + pt[0].y = top; + pt[1].x = right; + pt[1].y = bottom; + LPtoDP( hdc, pt, 2 ); + if (!(newRgn = CreateRectRgn( pt[0].x, pt[0].y, pt[1].x, pt[1].y ))) ret = ERROR; else { if (!dc->hClipRgn) @@ -234,24 +234,25 @@ INT WINAPI IntersectClipRect( HDC hdc, INT left, INT top, INT right, INT bottom ret = dc->funcs->pIntersectClipRect( dc->physDev, left, top, right, bottom ); else { - RECT rect; + POINT pt[2]; - rect.left = left; - rect.top = top; - rect.right = right; - rect.bottom = bottom; - LPtoDP( hdc, (POINT*)&rect, 2 ); + pt[0].x = left; + pt[0].y = top; + pt[1].x = right; + pt[1].y = bottom; + + LPtoDP( hdc, pt, 2 ); if (!dc->hClipRgn) { - dc->hClipRgn = CreateRectRgn( rect.left, rect.top, rect.right, rect.bottom ); + dc->hClipRgn = CreateRectRgn( pt[0].x, pt[0].y, pt[1].x, pt[1].y ); ret = SIMPLEREGION; } else { HRGN newRgn; - if (!(newRgn = CreateRectRgn( rect.left, rect.top, rect.right, rect.bottom))) ret = ERROR; + if (!(newRgn = CreateRectRgn( pt[0].x, pt[0].y, pt[1].x, pt[1].y ))) ret = ERROR; else { ret = CombineRgn( dc->hClipRgn, dc->hClipRgn, newRgn, RGN_AND ); @@ -273,19 +274,20 @@ INT16 WINAPI ExcludeVisRect16( HDC16 hdc, INT16 left, INT16 top, { HRGN tempRgn; INT16 ret; - RECT rect; + POINT pt[2]; DC * dc = DC_GetDCUpdate( hdc ); if (!dc) return ERROR; - rect.left = left; - rect.top = top; - rect.right = right; - rect.bottom = bottom; - LPtoDP( hdc, (POINT*)&rect, 2 ); + pt[0].x = left; + pt[0].y = top; + pt[1].x = right; + pt[1].y = bottom; - TRACE("%04x %d,%d - %d,%d\n", hdc, rect.left, rect.top, rect.right, rect.bottom ); + LPtoDP( hdc, pt, 2 ); - if (!(tempRgn = CreateRectRgn( rect.left, rect.top, rect.right, rect.bottom ))) ret = ERROR; + TRACE("%04x %ld,%ld - %ld,%ld\n", hdc, pt[0].x, pt[0].y, pt[1].x, pt[1].y); + + if (!(tempRgn = CreateRectRgn( pt[0].x, pt[0].y, pt[1].x, pt[1].y ))) ret = ERROR; else { ret = CombineRgn( dc->hVisRgn, dc->hVisRgn, tempRgn, RGN_DIFF ); @@ -305,19 +307,21 @@ INT16 WINAPI IntersectVisRect16( HDC16 hdc, INT16 left, INT16 top, { HRGN tempRgn; INT16 ret; - RECT rect; + POINT pt[2]; DC * dc = DC_GetDCUpdate( hdc ); if (!dc) return ERROR; - rect.left = left; - rect.top = top; - rect.right = right; - rect.bottom = bottom; - LPtoDP( hdc, (POINT*)&rect, 2 ); + pt[0].x = left; + pt[0].y = top; + pt[1].x = right; + pt[1].y = bottom; - TRACE("%04x %d,%d - %d,%d\n", hdc, rect.left, rect.top, rect.right, rect.bottom ); + LPtoDP( hdc, pt, 2 ); - if (!(tempRgn = CreateRectRgn( rect.left, rect.top, rect.right, rect.bottom ))) ret = ERROR; + TRACE("%04x %ld,%ld - %ld,%ld\n", hdc, pt[0].x, pt[0].y, pt[1].x, pt[1].y); + + + if (!(tempRgn = CreateRectRgn( pt[0].x, pt[0].y, pt[1].x, pt[1].y ))) ret = ERROR; else { ret = CombineRgn( dc->hVisRgn, dc->hVisRgn, tempRgn, RGN_AND ); @@ -359,16 +363,24 @@ BOOL WINAPI PtVisible( HDC hdc, INT x, INT y ) BOOL WINAPI RectVisible( HDC hdc, const RECT* rect ) { BOOL ret = FALSE; - RECT tmpRect; DC *dc = DC_GetDCUpdate( hdc ); if (!dc) return FALSE; TRACE("%04x %d,%dx%d,%d\n", hdc, rect->left, rect->top, rect->right, rect->bottom ); if (dc->hGCClipRgn) { - /* copy rectangle to avoid overwriting by LPtoDP */ - tmpRect = *rect; - LPtoDP( hdc, (LPPOINT)&tmpRect, 2 ); + POINT pt[2]; + RECT tmpRect; + + pt[0].x = rect->left; + pt[0].y = rect->top; + pt[1].x = rect->right; + pt[1].y = rect->bottom; + LPtoDP( hdc, pt, 2 ); + tmpRect.left = pt[0].x; + tmpRect.top = pt[0].y; + tmpRect.right = pt[1].x; + tmpRect.bottom = pt[1].y; ret = RectInRegion( dc->hGCClipRgn, &tmpRect ); } GDI_ReleaseObj( hdc ); diff --git a/objects/enhmetafile.c b/objects/enhmetafile.c index 8d935b7815e..e9481204b08 100644 --- a/objects/enhmetafile.c +++ b/objects/enhmetafile.c @@ -303,7 +303,7 @@ BOOL WINAPI PlayEnhMetaFileRecord( ) { int type; - RECT tmprc; + POINT pt[2]; TRACE( "hdc = %08x, handletable = %p, record = %p, numHandles = %d\n", @@ -1566,11 +1566,12 @@ BOOL WINAPI PlayEnhMetaFileRecord( FIXME("type %d is unimplemented\n", type); break; } - tmprc.left = tmprc.top = 0; - tmprc.right = tmprc.bottom = 1000; - LPtoDP(hdc, (POINT*)&tmprc, 2); - TRACE("L:0,0 - 1000,1000 -> D:%d,%d - %d,%d\n", tmprc.left, - tmprc.top, tmprc.right, tmprc.bottom); + + pt[0].x = pt[0].y = 0; + pt[1].x = pt[1].y = 1000; + LPtoDP(hdc, pt, 2); + TRACE("L:0,0 - 1000,1000 -> D:%ld,%ld - %ld,%ld\n", pt[0].x, pt[0].y, + pt[1].x, pt[1].y); return TRUE; } @@ -1612,7 +1613,7 @@ BOOL WINAPI EnumEnhMetaFile( HPEN hPen = (HPEN)NULL; HBRUSH hBrush = (HBRUSH)NULL; HFONT hFont = (HFONT)NULL; - RECT tmprc; + POINT pt[2]; if(!lpRect) { @@ -1671,11 +1672,11 @@ BOOL WINAPI EnumEnhMetaFile( hFont = GetCurrentObject(hdc, OBJ_FONT); } - tmprc.left = tmprc.top = 0; - tmprc.right = tmprc.bottom = 1000; - LPtoDP(hdc, (POINT*)&tmprc, 2); - TRACE("L:0,0-1000,1000 maps to D:%d,%d - %d,%d\n", tmprc.left, tmprc.top, - tmprc.right, tmprc.bottom); + pt[0].x = pt[0].y = 0; + pt[1].x = pt[1].y = 1000; + LPtoDP(hdc, pt, 2); + TRACE("L:0,0-1000,1000 maps to D:%ld,%ld - %ld,%ld\n", pt[0].x, pt[0].y, + pt[1].x, pt[1].y); TRACE("nSize = %ld, nBytes = %ld, nHandles = %d, nRecords = %ld, nPalEntries = %ld\n", emh->nSize, emh->nBytes, emh->nHandles, emh->nRecords, emh->nPalEntries);