Hi Adam, This is mainly a brain-dump, there's nothing wrong the patch.
On Thu, Jul 10, 2008 at 12:44:55AM -0400, Adam Petaccia wrote: > --- > dlls/gdiplus/tests/region.c | 38 ++++++++++++++++++++++++++++++++++++++ > 1 files changed, 38 insertions(+), 0 deletions(-) > > diff --git a/dlls/gdiplus/tests/region.c b/dlls/gdiplus/tests/region.c > index 1b1b047..7b1eba5 100644 > --- a/dlls/gdiplus/tests/region.c > +++ b/dlls/gdiplus/tests/region.c > @@ -361,6 +361,44 @@ todo_wine > expect(Ok, status); > status = GdipDeleteRegion(region); > expect(Ok, status); > + status = GdipGetRegionDataSize(region, &needed); > + expect(Ok, status); > + ok(needed == 72, "Expected 72, got %d\n", needed); > + status = GdipGetRegionData(region, (BYTE*)buf, sizeof(buf), &needed); > + expect(Ok, status); > + expect_dword(buf, 64); > + trace("buf[1] = %08x\n", buf[1]); > + expect_dword(buf + 2, RGNDATA_MAGIC); > + expect_dword(buf + 3, 0); > + expect_dword(buf + 4, RGNDATA_PATH); > + > + expect_dword(buf + 5, 48); > + expect_dword(buf + 6, RGNDATA_MAGIC); > + expect_dword(buf + 7, 4); > + expect_dword(buf + 8, 0); > + expect_float(buf + 9, 5.6); > + expect_float(buf + 10, 6.2); > + expect_float(buf + 11, 7.2); > + expect_float(buf + 12, 8.9); > + expect_float(buf + 13, 8.1); > + expect_float(buf + 14, 1.6); > + expect_float(buf + 15, 5.6); > + expect_float(buf + 16, 6.2); There's one more DWORD left here (buf + 17). I realised after I sent in my last lot of tests that this is the BYTE array of PathPointType*s packed into DWORDs (hence the 0x81...... vs 0x01...... that you noted in an earlier patch). As you've also noticed there are two ways of storing paths, if all the co-ords are short ints then they get stored that way and the 0x00004000 bit of buf + 8 is set. Otherwise the co-ords are stored as floats. In addition, the 0x00002000 bit of that same DWORD corresponds to the FillMode of the path. Anyway, good work! Huw. -- Huw Davies [EMAIL PROTECTED]