[PATCH 1/2] gdiplus/test: Add GdipGetNearestColor test [try 2]

Vincent Povirk madewokherd+8cd9 at gmail.com
Wed Feb 24 21:04:24 CST 2010


If you send me a patch for the test, I'll run it on Windows 7.

Also, there's https://winetestbot.geldorp.nl/

On Wed, Feb 24, 2010 at 8:48 PM, Justin Chevrier <jchevrier at gmail.com> wrote:
> I tried creating a DIB, then converting it to a GpBitmap via:
> GdipCreateBitmapFromHBITMAP and piping that into
> GdipGetImageGraphicsContext with the same result.
> I also tried selecting the DIB and sending the DC into GdipCreateFromHDC,
> same deal. Maybe you're talking about doing something else though.
>
> I don't have Windows 7 here, what's the easiest way to test that out?
> Get the test
> committed leaving the test expecting OutOfMemory and see if Win7
> returns something
> else?
>
> Justin
>
> On Wed, Feb 24, 2010 at 8:12 PM, Vincent Povirk
> <madewokherd+8cd9 at gmail.com> wrote:
>> Well, that's interesting.
>>
>> It would be worth trying your test on Windows 7, as some other
>> problems with paletted images were fixed in that version.
>>
>> You could also try creating an 8-bit device-independent bitmap using
>> gdi32 and selecting it into a compatible DC.
>>
>> On Wed, Feb 24, 2010 at 6:29 PM, Justin Chevrier <jchevrier at gmail.com> wrote:
>>> Thanks for reviewing the patch Vincent!
>>>
>>> I'm reworking the test to use bitmaps but I've run into a problem.
>>> I'm using GdipGetImageGraphicsContext to convert from a bitmap
>>> to a graphic, this works fine at 16bpp and higher, but below that it
>>> returns OutOfMemory on Window (seems that this function doesn't
>>> accept palettized images). Thoughts on how to test at these
>>> color depths?
>>>
>>> Justin
>>>
>>> On Tue, Feb 23, 2010 at 10:55 PM, Vincent Povirk
>>> <madewokherd+8cd9 at gmail.com> wrote:
>>>> You should probably use a Bitmap object rather than the display for
>>>> this, since the pixel format is important. That should make it
>>>> possible to test other depths, even though they can't yet be
>>>> implemented properly in Wine.
>>>>
>>>> Also, you should mark tests that fail in wine with todo_wine and
>>>> remove the todo_wine in any subsequent patches that fix them.
>>>>
>>>> On Tue, Feb 23, 2010 at 8:56 PM, Justin Chevrier <jchevrier at gmail.com> wrote:
>>>>> ---
>>>>>  dlls/gdiplus/tests/graphics.c |   45 +++++++++++++++++++++++++++++++++++++++++
>>>>>  1 files changed, 45 insertions(+), 0 deletions(-)
>>>>>
>>>>> diff --git a/dlls/gdiplus/tests/graphics.c b/dlls/gdiplus/tests/graphics.c
>>>>> index 45bd9f7..97c520d 100644
>>>>> --- a/dlls/gdiplus/tests/graphics.c
>>>>> +++ b/dlls/gdiplus/tests/graphics.c
>>>>> @@ -21,6 +21,7 @@
>>>>>  #include "windows.h"
>>>>>  #include "gdiplus.h"
>>>>>  #include "wingdi.h"
>>>>> +#include "winuser.h"
>>>>>  #include "wine/test.h"
>>>>>  #include <math.h>
>>>>>
>>>>> @@ -2270,6 +2271,49 @@ static void test_GdipIsVisibleRect(void)
>>>>>     ReleaseDC(0, hdc);
>>>>>  }
>>>>>
>>>>> +static void test_GdipGetNearestColor(void)
>>>>> +{
>>>>> +    GpStatus status;
>>>>> +    GpGraphics *graphics = NULL;
>>>>> +    ARGB color = 0xdeadbeef;
>>>>> +    HDC hdc = GetDC(0);
>>>>> +    DEVMODEA dmA;
>>>>> +    BOOL ret;
>>>>> +
>>>>> +    /* create a graphics object */
>>>>> +    ok(hdc != NULL, "Expected HDC to be initialized\n");
>>>>> +
>>>>> +    status = GdipCreateFromHDC(hdc, &graphics);
>>>>> +    expect(Ok, status);
>>>>> +    ok(graphics != NULL, "Expected graphics to be initialized\n");
>>>>> +
>>>>> +    status = GdipGetNearestColor(graphics, NULL);
>>>>> +    expect(InvalidParameter, status);
>>>>> +
>>>>> +    status = GdipGetNearestColor(NULL, &color);
>>>>> +    expect(InvalidParameter, status);
>>>>> +
>>>>> +    ret = EnumDisplaySettingsA(NULL, ENUM_CURRENT_SETTINGS, &dmA);
>>>>> +    if (!ret)
>>>>> +    {
>>>>> +        skip("Could not determine color depth\n");
>>>>> +        goto end;
>>>>> +    }
>>>>> +
>>>>> +    if (dmA.dmBitsPerPel >= 24)
>>>>> +    {
>>>>> +        status = GdipGetNearestColor(graphics, &color);
>>>>> +        expect(Ok, status);
>>>>> +        ok(color == 0xdeadbeef, "expected 0xdeadbeef, got: 0x%08x\n", color);
>>>>> +    }
>>>>> +    else
>>>>> +        skip("Color depth less than 24bpp.\n");
>>>>> +
>>>>> +    end:
>>>>> +    GdipDeleteGraphics(graphics);
>>>>> +    ReleaseDC(0, hdc);
>>>>> +}
>>>>> +
>>>>>  START_TEST(graphics)
>>>>>  {
>>>>>     struct GdiplusStartupInput gdiplusStartupInput;
>>>>> @@ -2296,6 +2340,7 @@ START_TEST(graphics)
>>>>>     test_GdipDrawLineI();
>>>>>     test_GdipDrawLinesI();
>>>>>     test_GdipDrawString();
>>>>> +    test_GdipGetNearestColor();
>>>>>     test_GdipGetVisibleClipBounds();
>>>>>     test_GdipIsVisiblePoint();
>>>>>     test_GdipIsVisibleRect();
>>>>> --
>>>>> 1.6.5.rc1
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>
>



More information about the wine-devel mailing list