From 56238cd70e2b3c7835c6d1aab9ba27c984cb2952 Mon Sep 17 00:00:00 2001 From: Justin Chevrier Date: Thu, 25 Feb 2010 21:45:54 -0500 Subject: [PATCH] gdiplus/test: Add GdipGetNearestColor test. --- dlls/gdiplus/tests/graphics.c | 153 ++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) diff --git a/dlls/gdiplus/tests/graphics.c b/dlls/gdiplus/tests/graphics.c index 45bd9f7871b..32d115eddd3 100644 --- a/dlls/gdiplus/tests/graphics.c +++ b/dlls/gdiplus/tests/graphics.c @@ -2270,6 +2270,158 @@ static void test_GdipIsVisibleRect(void) ReleaseDC(0, hdc); } +static void test_GdipGetNearestColor(void) +{ + GpStatus status; + GpGraphics *graphics; + GpBitmap *bitmap; + ARGB color = 0xdeadbeef; + HDC hdc = GetDC(0); + + /* 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); + GdipDeleteGraphics(graphics); + + status = GdipCreateBitmapFromScan0(10, 10, 10, PixelFormat1bppIndexed, NULL, &bitmap); + expect(Ok, status); + status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics); + ok(broken(status == OutOfMemory) /* winver < Win7 */ || status == Ok, "status=%u\n", status); + if (status == Ok) + { + status = GdipGetNearestColor(graphics, &color); + todo_wine expect(Ok, status); + expect(0xdeadbeef, color); + GdipDeleteGraphics(graphics); + } + GdipDisposeImage((GpImage*)bitmap); + + status = GdipCreateBitmapFromScan0(10, 10, 10, PixelFormat4bppIndexed, NULL, &bitmap); + expect(Ok, status); + status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics); + ok(broken(status == OutOfMemory) /* winver < Win7 */ || status == Ok, "status=%u\n", status); + if (status == Ok) + { + status = GdipGetNearestColor(graphics, &color); + todo_wine expect(Ok, status); + expect(0xdeadbeef, color); + GdipDeleteGraphics(graphics); + } + GdipDisposeImage((GpImage*)bitmap); + + status = GdipCreateBitmapFromScan0(10, 10, 10, PixelFormat8bppIndexed, NULL, &bitmap); + expect(Ok, status); + status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics); + ok(broken(status == OutOfMemory) /* winver < Win7 */ || status == Ok, "status=%u\n", status); + if (status == Ok) + { + status = GdipGetNearestColor(graphics, &color); + todo_wine expect(Ok, status); + expect(0xdeadbeef, color); + GdipDeleteGraphics(graphics); + } + GdipDisposeImage((GpImage*)bitmap); + + status = GdipCreateBitmapFromScan0(10, 10, 10, PixelFormat16bppGrayScale, NULL, &bitmap); + expect(Ok, status); + status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics); + todo_wine expect(OutOfMemory, status); + if (status == Ok) + GdipDeleteGraphics(graphics); + GdipDisposeImage((GpImage*)bitmap); + + status = GdipCreateBitmapFromScan0(10, 10, 10, PixelFormat24bppRGB, NULL, &bitmap); + expect(Ok, status); + status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics); + expect(Ok, status); + status = GdipGetNearestColor(graphics, &color); + todo_wine expect(Ok, status); + expect(0xdeadbeef, color); + GdipDeleteGraphics(graphics); + GdipDisposeImage((GpImage*)bitmap); + + status = GdipCreateBitmapFromScan0(10, 10, 10, PixelFormat32bppRGB, NULL, &bitmap); + expect(Ok, status); + status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics); + expect(Ok, status); + status = GdipGetNearestColor(graphics, &color); + todo_wine expect(Ok, status); + expect(0xdeadbeef, color); + GdipDeleteGraphics(graphics); + GdipDisposeImage((GpImage*)bitmap); + + status = GdipCreateBitmapFromScan0(10, 10, 10, PixelFormat32bppARGB, NULL, &bitmap); + expect(Ok, status); + status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics); + expect(Ok, status); + status = GdipGetNearestColor(graphics, &color); + todo_wine expect(Ok, status); + expect(0xdeadbeef, color); + GdipDeleteGraphics(graphics); + GdipDisposeImage((GpImage*)bitmap); + + status = GdipCreateBitmapFromScan0(10, 10, 10, PixelFormat48bppRGB, NULL, &bitmap); + expect(Ok, status); + status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics); + expect(Ok, status); + status = GdipGetNearestColor(graphics, &color); + todo_wine expect(Ok, status); + expect(0xdeadbeef, color); + GdipDeleteGraphics(graphics); + GdipDisposeImage((GpImage*)bitmap); + + status = GdipCreateBitmapFromScan0(10, 10, 10, PixelFormat64bppARGB, NULL, &bitmap); + expect(Ok, status); + status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics); + expect(Ok, status); + status = GdipGetNearestColor(graphics, &color); + todo_wine expect(Ok, status); + expect(0xdeadbeef, color); + GdipDeleteGraphics(graphics); + GdipDisposeImage((GpImage*)bitmap); + + status = GdipCreateBitmapFromScan0(10, 10, 10, PixelFormat64bppPARGB, NULL, &bitmap); + expect(Ok, status); + status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics); + expect(Ok, status); + status = GdipGetNearestColor(graphics, &color); + todo_wine expect(Ok, status); + expect(0xdeadbeef, color); + GdipDeleteGraphics(graphics); + GdipDisposeImage((GpImage*)bitmap); + + status = GdipCreateBitmapFromScan0(10, 10, 10, PixelFormat16bppRGB565, NULL, &bitmap); + expect(Ok, status); + status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics); + expect(Ok, status); + status = GdipGetNearestColor(graphics, &color); + todo_wine expect(Ok, status); + todo_wine expect(0xffa8bce8, color); + GdipDeleteGraphics(graphics); + GdipDisposeImage((GpImage*)bitmap); + + status = GdipCreateBitmapFromScan0(10, 10, 10, PixelFormat16bppRGB555, NULL, &bitmap); + expect(Ok, status); + status = GdipGetImageGraphicsContext((GpImage*)bitmap, &graphics); + expect(Ok, status); + status = GdipGetNearestColor(graphics, &color); + todo_wine expect(Ok, status); + todo_wine expect(0xffa8b8e8, color); + GdipDeleteGraphics(graphics); + GdipDisposeImage((GpImage*)bitmap); + + ReleaseDC(0, hdc); +} + START_TEST(graphics) { struct GdiplusStartupInput gdiplusStartupInput; @@ -2296,6 +2448,7 @@ START_TEST(graphics) test_GdipDrawLineI(); test_GdipDrawLinesI(); test_GdipDrawString(); + test_GdipGetNearestColor(); test_GdipGetVisibleClipBounds(); test_GdipIsVisiblePoint(); test_GdipIsVisibleRect();