Author: tkreuzer
Date: Thu Nov 8 05:19:25 2007
New Revision: 30259
URL:
http://svn.reactos.org/svn/reactos?rev=30259&view=rev
Log:
IntGdiPolygon: close the polygon outline
See issue #2782 for more details.
Modified:
trunk/reactos/subsystems/win32/win32k/objects/fillshap.c
Modified: trunk/reactos/subsystems/win32/win32k/objects/fillshap.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/fillshap.c (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/fillshap.c Thu Nov 8 05:19:25 2007
@@ -104,9 +104,11 @@
// Draw the Polygon Edges with the current pen ( if not a NULL pen )
if (PenBrushObj && !(PenBrushObj->flAttrs & GDIBRUSH_IS_NULL))
{
+ int i;
+
IntGdiInitBrushInstance(&PenBrushInst, PenBrushObj, dc->XlatePen);
- while (Count-- >1)
+ for (i = 0; i < Count-1; i++)
{
// DPRINT1("Polygon Making line from (%d,%d) to (%d,%d)\n",
@@ -116,14 +118,26 @@
ret = IntEngLineTo(&BitmapObj->SurfObj,
dc->CombinedClip,
&PenBrushInst.BrushObject,
- UnsafePoints[0].x, /* From */
- UnsafePoints[0].y,
- UnsafePoints[1].x, /* To */
- UnsafePoints[1].y,
+ UnsafePoints[i].x, /* From */
+ UnsafePoints[i].y,
+ UnsafePoints[i+1].x, /* To */
+ UnsafePoints[i+1].y,
&DestRect,
ROP2_TO_MIX(dc->Dc_Attr.jROP2)); /* MIX */
if (!ret) break;
- UnsafePoints++;
+ }
+ /* Close the polygon */
+ if (ret)
+ {
+ ret = IntEngLineTo(&BitmapObj->SurfObj,
+ dc->CombinedClip,
+ &PenBrushInst.BrushObject,
+ UnsafePoints[Count-1].x, /* From */
+ UnsafePoints[Count-1].y,
+ UnsafePoints[0].x, /* To */
+ UnsafePoints[0].y,
+ &DestRect,
+ ROP2_TO_MIX(dc->Dc_Attr.jROP2)); /* MIX */
}
}
PENOBJ_UnlockPen(PenBrushObj);