You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Rebase against 79ebd3f3bf9e5b6607363667d03def04e254f710.
This commit is contained in:
@@ -1,97 +0,0 @@
|
||||
From eff83781e6c1be78d1614810902b2b0f38f6045e Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Fri, 3 Jun 2016 13:20:14 +0800
|
||||
Subject: gdiplus/tests: Add a test for loading PNG grayscale images.
|
||||
|
||||
---
|
||||
dlls/gdiplus/tests/image.c | 60 +++++++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 59 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/gdiplus/tests/image.c b/dlls/gdiplus/tests/image.c
|
||||
index 6abd026..3d123ad 100644
|
||||
--- a/dlls/gdiplus/tests/image.c
|
||||
+++ b/dlls/gdiplus/tests/image.c
|
||||
@@ -2,7 +2,7 @@
|
||||
* Unit test suite for images
|
||||
*
|
||||
* Copyright (C) 2007 Google (Evan Stade)
|
||||
- * Copyright (C) 2012 Dmitry Timoshkov
|
||||
+ * Copyright (C) 2012,2016 Dmitry Timoshkov
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@@ -4941,6 +4941,63 @@ static void test_imageabort(void)
|
||||
GdipDisposeImage((GpImage*)bm);
|
||||
}
|
||||
|
||||
+/* RGB 24 bpp 1x1 pixel PNG image */
|
||||
+static const char png_1x1_data[] = {
|
||||
+ 0x89,'P','N','G',0x0d,0x0a,0x1a,0x0a,
|
||||
+ 0x00,0x00,0x00,0x0d,'I','H','D','R',0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x08,0x02,0x00,0x00,0x00,0x90,0x77,0x53,0xde,
|
||||
+ 0x00,0x00,0x00,0x0c,'I','D','A','T',0x08,0xd7,0x63,0xf8,0xff,0xff,0x3f,0x00,0x05,0xfe,0x02,0xfe,0xdc,0xcc,0x59,0xe7,
|
||||
+ 0x00,0x00,0x00,0x00,'I','E','N','D',0xae,0x42,0x60,0x82
|
||||
+};
|
||||
+
|
||||
+static void test_png_color_formats(void)
|
||||
+{
|
||||
+ static const struct
|
||||
+ {
|
||||
+ char bit_depth, color_type;
|
||||
+ PixelFormat format;
|
||||
+ } td[] =
|
||||
+ {
|
||||
+ /* 2 - PNG_COLOR_TYPE_RGB */
|
||||
+ { 8, 2, PixelFormat24bppRGB },
|
||||
+ /* 0 - PNG_COLOR_TYPE_GRAY */
|
||||
+ { 1, 0, PixelFormat1bppIndexed },
|
||||
+ { 2, 0, PixelFormat32bppARGB },
|
||||
+ { 4, 0, PixelFormat32bppARGB },
|
||||
+ { 8, 0, PixelFormat32bppARGB },
|
||||
+ { 16, 0, PixelFormat32bppARGB },
|
||||
+ };
|
||||
+ BYTE buf[sizeof(png_1x1_data)];
|
||||
+ GpStatus status;
|
||||
+ GpImage *image;
|
||||
+ ImageType type;
|
||||
+ PixelFormat format;
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < sizeof(td)/sizeof(td[0]); i++)
|
||||
+ {
|
||||
+ memcpy(buf, png_1x1_data, sizeof(png_1x1_data));
|
||||
+ buf[24] = td[i].bit_depth;
|
||||
+ buf[25] = td[i].color_type;
|
||||
+
|
||||
+ image = load_image(buf, sizeof(buf));
|
||||
+ ok(image != NULL, "%d: failed to load image data\n", i);
|
||||
+ if (!image) continue;
|
||||
+
|
||||
+ status = GdipGetImageType(image, &type);
|
||||
+ ok(status == Ok, "%u: GdipGetImageType error %d\n", i, status);
|
||||
+ ok(type == ImageTypeBitmap, "%d: wrong image type %d\n", i, type);
|
||||
+
|
||||
+ status = GdipGetImagePixelFormat(image, &format);
|
||||
+ expect(Ok, status);
|
||||
+todo_wine_if(td[i].bit_depth == 8 && td[i].color_type == 0)
|
||||
+ ok(format == td[i].format ||
|
||||
+ broken(td[i].bit_depth == 1 && td[i].color_type == 0 && format == PixelFormat32bppARGB), /* XP */
|
||||
+ "%d: expected %#x, got %#x\n", i, td[i].format, format);
|
||||
+
|
||||
+ GdipDisposeImage(image);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
START_TEST(image)
|
||||
{
|
||||
HMODULE mod = GetModuleHandleA("gdiplus.dll");
|
||||
@@ -4958,6 +5015,7 @@ START_TEST(image)
|
||||
pGdipBitmapGetHistogram = (void*)GetProcAddress(mod, "GdipBitmapGetHistogram");
|
||||
pGdipImageSetAbort = (void*)GetProcAddress(mod, "GdipImageSetAbort");
|
||||
|
||||
+ test_png_color_formats();
|
||||
test_supported_encoders();
|
||||
test_CloneBitmapArea();
|
||||
test_ARGB_conversion();
|
||||
--
|
||||
2.9.0
|
||||
|
||||
Reference in New Issue
Block a user