gdiplus: Use passed pen in GdipAddPathWorldBound.
This commit is contained in:
parent
bcd0eda687
commit
e547ceb1f6
|
@ -217,6 +217,7 @@ GpStatus WINGDIPAPI GdipGetPathWorldBounds(GpPath* path, GpRectF* bounds,
|
||||||
GpPointF extrema[2];
|
GpPointF extrema[2];
|
||||||
GpPointF * points;
|
GpPointF * points;
|
||||||
INT count, i;
|
INT count, i;
|
||||||
|
REAL path_width;
|
||||||
|
|
||||||
/* Matrix and pen can be null. */
|
/* Matrix and pen can be null. */
|
||||||
if(!path || !bounds)
|
if(!path || !bounds)
|
||||||
|
@ -229,10 +230,6 @@ GpStatus WINGDIPAPI GdipGetPathWorldBounds(GpPath* path, GpRectF* bounds,
|
||||||
return Ok;
|
return Ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME: implement case where pen is non-NULL. */
|
|
||||||
if(pen)
|
|
||||||
return NotImplemented;
|
|
||||||
|
|
||||||
points = path->pathdata.Points;
|
points = path->pathdata.Points;
|
||||||
extrema[0].X = extrema[1].X = points[0].X;
|
extrema[0].X = extrema[1].X = points[0].X;
|
||||||
extrema[0].Y = extrema[1].Y = points[0].Y;
|
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);
|
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->X = extrema[0].X;
|
||||||
bounds->Y = extrema[0].Y;
|
bounds->Y = extrema[0].Y;
|
||||||
bounds->Width = extrema[1].X - extrema[0].X;
|
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);
|
GdipAddPathArc(path, 100.0, 100.0, 500.0, 700.0, 0.0, 100.0);
|
||||||
GdipAddPathLine2(path, &(line2_points[0]), 10);
|
GdipAddPathLine2(path, &(line2_points[0]), 10);
|
||||||
status = GdipGetPathWorldBounds(path, &bounds, NULL, pen);
|
status = GdipGetPathWorldBounds(path, &bounds, NULL, pen);
|
||||||
todo_wine
|
|
||||||
expect(Ok, status);
|
expect(Ok, status);
|
||||||
GdipDeletePath(path);
|
GdipDeletePath(path);
|
||||||
|
|
||||||
todo_wine{
|
|
||||||
expectf(100.0, bounds.X);
|
expectf(100.0, bounds.X);
|
||||||
expectf(100.0, bounds.Y);
|
expectf(100.0, bounds.Y);
|
||||||
expectf(650.0, bounds.Width);
|
expectf(650.0, bounds.Width);
|
||||||
expectf(800.0, bounds.Height);
|
expectf(800.0, bounds.Height);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
START_TEST(graphicspath)
|
START_TEST(graphicspath)
|
||||||
|
|
Loading…
Reference in New Issue