Commit e547ceb1 authored by Evan Stade's avatar Evan Stade Committed by Alexandre Julliard

gdiplus: Use passed pen in GdipAddPathWorldBound.

parent bcd0eda6
......@@ -217,6 +217,7 @@ GpStatus WINGDIPAPI GdipGetPathWorldBounds(GpPath* path, GpRectF* bounds,
GpPointF extrema[2];
GpPointF * points;
INT count, i;
REAL path_width;
/* Matrix and pen can be null. */
if(!path || !bounds)
......@@ -229,10 +230,6 @@ GpStatus WINGDIPAPI GdipGetPathWorldBounds(GpPath* path, GpRectF* bounds,
return Ok;
}
/* FIXME: implement case where pen is non-NULL. */
if(pen)
return NotImplemented;
points = path->pathdata.Points;
extrema[0].X = extrema[1].X = points[0].X;
extrema[0].Y = extrema[1].Y = points[0].Y;
......@@ -249,6 +246,14 @@ GpStatus WINGDIPAPI GdipGetPathWorldBounds(GpPath* path, GpRectF* bounds,
GdipTransformMatrixPoints((GpMatrix*)matrix, extrema, 2);
}
if(pen){
path_width = pen->width * pen->miterlimit / 2.0;
extrema[0].X -= path_width;
extrema[0].Y -= path_width;
extrema[1].X += path_width;
extrema[1].Y += path_width;
}
bounds->X = extrema[0].X;
bounds->Y = extrema[0].Y;
bounds->Width = extrema[1].X - extrema[0].X;
......
......@@ -301,16 +301,13 @@ static void test_worldbounds(void)
GdipAddPathArc(path, 100.0, 100.0, 500.0, 700.0, 0.0, 100.0);
GdipAddPathLine2(path, &(line2_points[0]), 10);
status = GdipGetPathWorldBounds(path, &bounds, NULL, pen);
todo_wine
expect(Ok, status);
GdipDeletePath(path);
todo_wine{
expectf(100.0, bounds.X);
expectf(100.0, bounds.Y);
expectf(650.0, bounds.Width);
expectf(800.0, bounds.Height);
}
}
START_TEST(graphicspath)
......
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