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