From 24b6d30dcb28648fe579d995138171c482ef5431 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Thu, 6 Nov 2008 02:36:10 +0000 Subject: [PATCH] - Make sure we process path for Rectangles and Polygons. svn path=/trunk/; revision=37221 --- .../subsystems/win32/win32k/objects/fillshap.c | 15 +++++++++------ reactos/subsystems/win32/win32k/objects/path.c | 2 +- reactos/subsystems/win32/win32k/objects/region.c | 1 + 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/reactos/subsystems/win32/win32k/objects/fillshap.c b/reactos/subsystems/win32/win32k/objects/fillshap.c index ba9247086b7..6bf346339d1 100644 --- a/reactos/subsystems/win32/win32k/objects/fillshap.c +++ b/reactos/subsystems/win32/win32k/objects/fillshap.c @@ -506,20 +506,23 @@ IntRectangle(PDC dc, Dc_Attr = dc->pDc_Attr; if(!Dc_Attr) Dc_Attr = &dc->Dc_Attr; - if ( PATH_IsPathOpen(dc->DcLevel) ) - { - return PATH_Rectangle ( dc, LeftRect, TopRect, RightRect, BottomRect ); - } - /* Do we rotate or shear? */ if (!(dc->DcLevel.mxWorldToDevice.flAccel & MX_SCALE)) { + POINTL DestCoords[4]; + ULONG PolyCounts = 4; DestCoords[0].x = DestCoords[3].x = LeftRect; DestCoords[0].y = DestCoords[1].y = TopRect; DestCoords[1].x = DestCoords[2].x = RightRect; DestCoords[2].y = DestCoords[3].y = BottomRect; - return IntGdiPolygon(dc, DestCoords, 4); + // Use IntGdiPolyPolygon so to support PATH. + return IntGdiPolyPolygon(dc, DestCoords, &PolyCounts, 1); + } + // Rectangle Path only. + if ( PATH_IsPathOpen(dc->DcLevel) ) + { + return PATH_Rectangle ( dc, LeftRect, TopRect, RightRect, BottomRect ); } DestRect.left = LeftRect; diff --git a/reactos/subsystems/win32/win32k/objects/path.c b/reactos/subsystems/win32/win32k/objects/path.c index fad30cd99a3..c3d2c87651a 100644 --- a/reactos/subsystems/win32/win32k/objects/path.c +++ b/reactos/subsystems/win32/win32k/objects/path.c @@ -140,7 +140,7 @@ PATH_FillPath( PDC dc, PPATH pPath ) /* Restore the old mapping mode */ // IntGdiSetMapMode( dc, mapMode ); // Dc_Attr->szlViewportExt = ptViewportExt; -// Dc_Attr->ptlViewportOrg = ptViewportOrg; +// Dc_Attr->ptlViewportOrg = ptViewportOrg; // Dc_Attr->szlWindowExt = ptWindowExt; // Dc_Attr->ptlWindowOrg = ptWindowOrg; diff --git a/reactos/subsystems/win32/win32k/objects/region.c b/reactos/subsystems/win32/win32k/objects/region.c index 43ffefc54c4..16c0481689f 100644 --- a/reactos/subsystems/win32/win32k/objects/region.c +++ b/reactos/subsystems/win32/win32k/objects/region.c @@ -2501,6 +2501,7 @@ NtGdiExtCreateRegion( NTSTATUS Status = STATUS_SUCCESS; MATRIX matrix; + DPRINT("NtGdiExtCreateRegion\n"); _SEH_TRY { ProbeForRead(RgnData, Count, 1);