gdiplus: Implement GdipCombineRegionPath.

This commit is contained in:
Adam Petaccia 2008-08-04 13:56:59 -04:00 committed by Alexandre Julliard
parent 2a445d0ebd
commit 93eae5e83f
2 changed files with 32 additions and 3 deletions

View File

@ -252,8 +252,38 @@ GpStatus WINGDIPAPI GdipCloneRegion(GpRegion *region, GpRegion **clone)
GpStatus WINGDIPAPI GdipCombineRegionPath(GpRegion *region, GpPath *path, CombineMode mode)
{
FIXME("(%p %p %d): stub\n", region, path, mode);
return NotImplemented;
GpRegion *path_region;
region_element *left, *right = NULL;
GpStatus stat;
TRACE("%p %p %d\n", region, path, mode);
if (!(region && path))
return InvalidParameter;
stat = GdipCreateRegionPath(path, &path_region);
if (stat != Ok)
return stat;
left = GdipAlloc(sizeof(region_element));
if (!left)
goto out;
*left = region->node;
stat = clone_element(&path_region->node, &right);
if (stat != Ok)
goto out;
fuse_region(region, left, right, mode);
GdipDeleteRegion(path_region);
return Ok;
out:
GdipFree(left);
delete_element(right);
GdipDeleteRegion(path_region);
return stat;
}
GpStatus WINGDIPAPI GdipCombineRegionRect(GpRegion *region,

View File

@ -70,7 +70,6 @@ static void test_getregiondata(void)
status = GdipGetRegionDataSize(region, &needed);
ok(status == Ok, "status %08x\n", status);
expect(20, needed);
todo_wine
status = GdipGetRegionData(region, (BYTE*)buf, sizeof(buf), &needed);
ok(status == Ok, "status %08x\n", status);
expect(20, needed);