Dmitry Timoshkov : windowscodecs/tests: Add a test for loading PNG grayscale images.

Alexandre Julliard julliard at winehq.org
Sun Aug 20 00:02:26 CDT 2017


Module: wine
Branch: master
Commit: 1dbc9fcb9cf7d4caf87a4eaaeed8c1728fda922c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1dbc9fcb9cf7d4caf87a4eaaeed8c1728fda922c

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Thu Aug 17 13:35:29 2017 -0500

windowscodecs/tests: Add a test for loading PNG grayscale images.

Signed-off-by: Vincent Povirk <vincent at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/windowscodecs/tests/pngformat.c | 58 +++++++++++++++++++++++++++++++++++-
 1 file changed, 57 insertions(+), 1 deletion(-)

diff --git a/dlls/windowscodecs/tests/pngformat.c b/dlls/windowscodecs/tests/pngformat.c
index 1aeb9bc..d266910 100644
--- a/dlls/windowscodecs/tests/pngformat.c
+++ b/dlls/windowscodecs/tests/pngformat.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012 Dmitry Timoshkov
+ * Copyright 2012, 2016 Dmitry Timoshkov
  * Copyright 2012 Hans Leidekker for CodeWeavers
  *
  * This library is free software; you can redistribute it and/or
@@ -580,6 +580,61 @@ static void test_png_palette(void)
     IWICBitmapDecoder_Release(decoder);
 }
 
+/* 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_color_formats(void)
+{
+    static const struct
+    {
+        char bit_depth, color_type;
+        const GUID *format;
+    } td[] =
+    {
+        /* 2 - PNG_COLOR_TYPE_RGB */
+        { 8, 2, &GUID_WICPixelFormat24bppBGR },
+        /* 0 - PNG_COLOR_TYPE_GRAY */
+        { 1, 0, &GUID_WICPixelFormatBlackWhite },
+        { 2, 0, &GUID_WICPixelFormat2bppGray },
+        { 4, 0, &GUID_WICPixelFormat4bppGray },
+        { 8, 0, &GUID_WICPixelFormat8bppGray },
+        { 16, 0, &GUID_WICPixelFormat16bppGray },
+    };
+    char buf[sizeof(png_1x1_data)];
+    HRESULT hr;
+    IWICBitmapDecoder *decoder;
+    IWICBitmapFrameDecode *frame;
+    GUID 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;
+
+        decoder = create_decoder(buf, sizeof(buf));
+        ok(decoder != NULL, "Failed to load PNG image data\n");
+        if (!decoder) continue;
+
+        hr = IWICBitmapDecoder_GetFrame(decoder, 0, &frame);
+        ok(hr == S_OK, "GetFrame error %#x\n", hr);
+
+        hr = IWICBitmapFrameDecode_GetPixelFormat(frame, &format);
+        ok(hr == S_OK, "GetPixelFormat error %#x\n", hr);
+        ok(IsEqualGUID(&format, td[i].format),
+           "expected %s, got %s\n", wine_dbgstr_guid(td[i].format), wine_dbgstr_guid(&format));
+
+        IWICBitmapFrameDecode_Release(frame);
+        IWICBitmapDecoder_Release(decoder);
+    }
+}
+
 START_TEST(pngformat)
 {
     HRESULT hr;
@@ -592,6 +647,7 @@ START_TEST(pngformat)
 
     test_color_contexts();
     test_png_palette();
+    test_color_formats();
 
     IWICImagingFactory_Release(factory);
     CoUninitialize();




More information about the wine-cvs mailing list