Commit 1802ca5e authored by Jeff Smith's avatar Jeff Smith Committed by Alexandre Julliard

gdiplus: Calculate centroid of path as default center of path gradient.

parent 3a092fb6
......@@ -574,7 +574,8 @@ GpStatus WINGDIPAPI GdipCreateLineBrushFromRectWithAngleI(GDIPCONST GpRect* rect
static GpStatus create_path_gradient(GpPath *path, ARGB centercolor, GpPathGradient **grad)
{
GpRectF bounds;
INT i;
REAL sum_x = 0, sum_y = 0;
if(!path || !grad)
return InvalidParameter;
......@@ -582,8 +583,6 @@ static GpStatus create_path_gradient(GpPath *path, ARGB centercolor, GpPathGradi
if (path->pathdata.Count < 2)
return OutOfMemory;
GdipGetPathWorldBounds(path, &bounds, NULL, NULL);
*grad = heap_alloc_zero(sizeof(GpPathGradient));
if (!*grad)
{
......@@ -613,9 +612,14 @@ static GpStatus create_path_gradient(GpPath *path, ARGB centercolor, GpPathGradi
(*grad)->centercolor = centercolor;
(*grad)->wrap = WrapModeClamp;
(*grad)->gamma = FALSE;
/* FIXME: this should be set to the "centroid" of the path by default */
(*grad)->center.X = bounds.X + bounds.Width / 2;
(*grad)->center.Y = bounds.Y + bounds.Height / 2;
for (i=0; i<path->pathdata.Count; i++)
{
sum_x += path->pathdata.Points[i].X;
sum_y += path->pathdata.Points[i].Y;
}
(*grad)->center.X = sum_x / path->pathdata.Count;
(*grad)->center.Y = sum_y / path->pathdata.Count;
(*grad)->focus.X = 0.0;
(*grad)->focus.Y = 0.0;
(*grad)->surroundcolors[0] = 0xffffffff;
......
......@@ -1342,8 +1342,8 @@ static void test_pathgradientcenterpoint(void)
status = GdipGetPathGradientCenterPoint(grad, &point);
expect(Ok, status);
todo_wine expectf(1.0, point.X);
todo_wine expectf(4.0/3.0, point.Y);
expectf(1.0, point.X);
expectf(4.0/3.0, point.Y);
status = GdipDeleteBrush((GpBrush*)grad);
expect(Ok, status);
......@@ -1359,7 +1359,7 @@ static void test_pathgradientcenterpoint(void)
status = GdipGetPathGradientCenterPoint(grad, &point);
expect(Ok, status);
todo_wine expectf(700.0/13.0, point.X);
expectf(700.0/13.0, point.X);
expectf(25.0, point.Y);
status = GdipDeletePath(path);
......
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