[try7][Gdiplus 07/10] Implement GdipCombineRegionRectI
Adam Petaccia
adam at tpetaccia.com
Mon Aug 4 12:56:53 CDT 2008
---
dlls/gdiplus/region.c | 19 +++++++++++++++----
dlls/gdiplus/tests/region.c | 18 +++---------------
2 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/dlls/gdiplus/region.c b/dlls/gdiplus/region.c
index 1ad6bb4..d0889be 100644
--- a/dlls/gdiplus/region.c
+++ b/dlls/gdiplus/region.c
@@ -295,11 +295,22 @@ out:
return stat;
}
-GpStatus WINGDIPAPI GdipCombineRegionRectI(GpRegion *region, GDIPCONST GpRect *rect,
- CombineMode mode)
+GpStatus WINGDIPAPI GdipCombineRegionRectI(GpRegion *region,
+ GDIPCONST GpRect *rect, CombineMode mode)
{
- FIXME("(%p %p %d): stub\n", region, rect, mode);
- return NotImplemented;
+ GpRectF rectf;
+
+ TRACE("%p %p %d\n", region, rect, mode);
+
+ if (!rect)
+ return InvalidParameter;
+
+ rectf.X = (REAL)rect->X;
+ rectf.Y = (REAL)rect->Y;
+ rectf.Height = (REAL)rect->Height;
+ rectf.Width = (REAL)rect->Width;
+
+ return GdipCombineRegionRect(region, &rectf, mode);
}
GpStatus WINGDIPAPI GdipCombineRegionRegion(GpRegion *region1, GpRegion *region2,
diff --git a/dlls/gdiplus/tests/region.c b/dlls/gdiplus/tests/region.c
index 738c86d..d1e65d6 100644
--- a/dlls/gdiplus/tests/region.c
+++ b/dlls/gdiplus/tests/region.c
@@ -137,8 +137,6 @@ todo_wine
rect.Y = 30;
rect.Width = 10;
rect.Height = 20;
-todo_wine
-{
status = GdipCombineRegionRectI(region, &rect, CombineModeIntersect);
ok(status == Ok, "status %08x\n", status);
rect.X = 100;
@@ -147,7 +145,6 @@ todo_wine
rect.Height = 50;
status = GdipCombineRegionRectI(region, &rect, CombineModeXor);
ok(status == Ok, "status %08x\n", status);
-}
rect.X = 200;
rect.Y = 100;
@@ -159,12 +156,11 @@ todo_wine
rect.Y = 10;
rect.Width = 40;
rect.Height = 66;
-todo_wine
-{
status = GdipCombineRegionRectI(region2, &rect, CombineModeUnion);
ok(status == Ok, "status %08x\n", status);
status = GdipCombineRegionRegion(region, region2, CombineModeComplement);
+todo_wine
ok(status == Ok, "status %08x\n", status);
rect.X = 400;
@@ -174,7 +170,6 @@ todo_wine
status = GdipCombineRegionRectI(region, &rect, CombineModeExclude);
ok(status == Ok, "status %08x\n", status);
-}
status = GdipGetRegionDataSize(region, &needed);
ok(status == Ok, "status %08x\n", status);
todo_wine
@@ -189,9 +184,10 @@ todo_wine
trace("buf[1] = %08x\n", buf[1]);
expect_magic((DWORD*)(buf + 2));
todo_wine
-{
expect_dword(buf + 3, 10);
expect_dword(buf + 4, CombineModeExclude);
+todo_wine
+{
expect_dword(buf + 5, CombineModeComplement);
expect_dword(buf + 6, CombineModeXor);
expect_dword(buf + 7, CombineModeIntersect);
@@ -272,23 +268,16 @@ todo_wine
rect.Width = 10;
rect.Height = 20;
status = GdipCombineRegionRectI(region, &rect, CombineModeIntersect);
-todo_wine
ok(status == Ok, "status %08x\n", status);
status = GdipGetRegionDataSize(region, &needed);
ok(status == Ok, "status %08x\n", status);
-todo_wine
expect(96, needed);
status = GdipGetRegionData(region, (BYTE*)buf, sizeof(buf), &needed);
ok(status == Ok, "status %08x\n", status);
-todo_wine
-{
expect(96, needed);
expect_dword(buf, 88);
trace("buf[1] = %08x\n", buf[1]);
-}
expect_magic((DWORD*)(buf + 2));
-todo_wine
-{
expect_dword(buf + 3, 2);
expect_dword(buf + 4, CombineModeIntersect);
expect_dword(buf + 5, RGNDATA_PATH);
@@ -310,7 +299,6 @@ todo_wine
expect_float(buf + 21, 30.0);
expect_float(buf + 22, 10.0);
expect_float(buf + 23, 20.0);
-}
status = GdipDeleteRegion(region);
ok(status == Ok, "status %08x\n", status);
--
1.5.4.3
More information about the wine-patches
mailing list