[Gdiplus 2/3] Add a test for a floating-point triangle

Huw Davies huw at codeweavers.com
Thu Jul 10 04:21:35 CDT 2008


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
huw at codeweavers.com



More information about the wine-devel mailing list