Author: akhaldi
Date: Sat Jul 2 15:29:06 2016
New Revision: 71755
URL:
http://svn.reactos.org/svn/reactos?rev=71755&view=rev
Log:
[WINDOWSCODECS_WINETEST] Sync with Wine Staging 1.9.11. CORE-11368
Modified:
trunk/rostests/winetests/windowscodecs/bitmap.c
trunk/rostests/winetests/windowscodecs/converter.c
trunk/rostests/winetests/windowscodecs/metadata.c
Modified: trunk/rostests/winetests/windowscodecs/bitmap.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/windowscodecs/b…
==============================================================================
--- trunk/rostests/winetests/windowscodecs/bitmap.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/windowscodecs/bitmap.c [iso-8859-1] Sat Jul 2 15:29:06 2016
@@ -829,13 +829,8 @@
hr = IWICBitmap_CopyPixels(bitmap, NULL, 4, sizeof(data), data);
ok(hr == S_OK, "IWICBitmap_CopyPixels error %#x\n", hr);
for (i = 0; i < sizeof(data); i++)
- {
- if (data[i] != data_8bpp_pal_wic[i])
-todo_wine
+ todo_wine_if (data[i] != data_8bpp_pal_wic[i])
ok(data[i] == data_8bpp_pal_wic[i], "%u: expected %#x, got %#x\n",
i, data_8bpp_pal_wic[i], data[i]);
- else
- ok(data[i] == data_8bpp_pal_wic[i], "%u: expected %#x, got %#x\n",
i, data_8bpp_pal_wic[i], data[i]);
- }
IWICBitmap_Release(bitmap);
DeleteObject(hbmp);
Modified: trunk/rostests/winetests/windowscodecs/converter.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/windowscodecs/c…
==============================================================================
--- trunk/rostests/winetests/windowscodecs/converter.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/windowscodecs/converter.c [iso-8859-1] Sat Jul 2 15:29:06
2016
@@ -48,6 +48,11 @@
const bitmap_data *data;
} BitmapTestSrc;
+static BOOL near_equal(float a, float b)
+{
+ return fabsf(a - b) < 0.001;
+}
+
static inline BitmapTestSrc *impl_from_IWICBitmapSource(IWICBitmapSource *iface)
{
return CONTAINING_RECORD(iface, BitmapTestSrc, IWICBitmapSource_iface);
@@ -201,6 +206,14 @@
HeapFree(GetProcessHeap(), 0, This);
}
+/* XP and 2003 use linear color conversion, later versions use sRGB gamma */
+static const float bits_32bppGrayFloat_xp[] = {
+ 0.114000f,0.587000f,0.299000f,0.000000f,
+ 0.886000f,0.413000f,0.701000f,1.000000f};
+static const BYTE bits_8bppGray_xp[] = {
+ 29,150,76,0,
+ 226,105,179,255};
+
static void compare_bitmap_data(const struct bitmap_data *expect, IWICBitmapSource
*source, const char *name)
{
BYTE *converted_bits;
@@ -250,6 +263,33 @@
}
ok(equal, "unexpected pixel data (%s)\n", name);
}
+ else if (IsEqualGUID(expect->format, &GUID_WICPixelFormat32bppGrayFloat))
+ {
+ BOOL equal=TRUE;
+ UINT i;
+ const float *a=(const float*)expect->bits, *b=(const float*)converted_bits;
+ for (i=0; i<(buffersize/4); i++)
+ if (!near_equal(a[i], b[i]) && !near_equal(bits_32bppGrayFloat_xp[i],
b[i]))
+ {
+ equal = FALSE;
+ break;
+ }
+
+ ok(equal, "unexpected pixel data (%s)\n", name);
+ }
+ else if (IsEqualGUID(expect->format, &GUID_WICPixelFormat8bppGray))
+ {
+ UINT i;
+ BOOL equal=TRUE;
+ const BYTE *a=(const BYTE*)expect->bits, *b=(const BYTE*)converted_bits;
+ for (i=0; i<buffersize; i++)
+ if (a[i] != b[i] && bits_8bppGray_xp[i] != b[i])
+ {
+ equal = FALSE;
+ break;
+ }
+ ok(equal, "unexpected pixel data (%s)\n", name);
+ }
else
ok(memcmp(expect->bits, converted_bits, buffersize) == 0, "unexpected
pixel data (%s)\n", name);
@@ -270,6 +310,33 @@
}
ok(equal, "unexpected pixel data with rc=NULL (%s)\n", name);
}
+ else if (IsEqualGUID(expect->format, &GUID_WICPixelFormat32bppGrayFloat))
+ {
+ BOOL equal=TRUE;
+ UINT i;
+ const float *a=(const float*)expect->bits, *b=(const float*)converted_bits;
+ for (i=0; i<(buffersize/4); i++)
+ if (!near_equal(a[i], b[i]) && !near_equal(bits_32bppGrayFloat_xp[i],
b[i]))
+ {
+ equal = FALSE;
+ break;
+ }
+
+ ok(equal, "unexpected pixel data (%s)\n", name);
+ }
+ else if (IsEqualGUID(expect->format, &GUID_WICPixelFormat8bppGray))
+ {
+ UINT i;
+ BOOL equal=TRUE;
+ const BYTE *a=(const BYTE*)expect->bits, *b=(const BYTE*)converted_bits;
+ for (i=0; i<buffersize; i++)
+ if (a[i] != b[i] && bits_8bppGray_xp[i] != b[i])
+ {
+ equal = FALSE;
+ break;
+ }
+ ok(equal, "unexpected pixel data (%s)\n", name);
+ }
else
ok(memcmp(expect->bits, converted_bits, buffersize) == 0, "unexpected
pixel data with rc=NULL (%s)\n", name);
@@ -300,6 +367,24 @@
static const struct bitmap_data testdata_32bppBGRA = {
&GUID_WICPixelFormat32bppBGRA, 32, bits_32bppBGRA, 4, 2, 96.0, 96.0};
+static const float bits_32bppGrayFloat[] = {
+ 0.072200f,0.715200f,0.212600f,0.000000f,
+ 0.927800f,0.284800f,0.787400f,1.000000f};
+static const struct bitmap_data testdata_32bppGrayFloat = {
+ &GUID_WICPixelFormat32bppGrayFloat, 32, (const BYTE *)bits_32bppGrayFloat, 4, 2,
96.0, 96.0};
+
+static const BYTE bits_8bppGray[] = {
+ 76,220,127,0,
+ 247,145,230,255};
+static const struct bitmap_data testdata_8bppGray = {
+ &GUID_WICPixelFormat8bppGray, 8, bits_8bppGray, 4, 2, 96.0, 96.0};
+
+static const BYTE bits_24bppBGR_gray[] = {
+ 76,76,76, 220,220,220, 127,127,127, 0,0,0,
+ 247,247,247, 145,145,145, 230,230,230, 255,255,255};
+static const struct bitmap_data testdata_24bppBGR_gray = {
+ &GUID_WICPixelFormat24bppBGR, 24, bits_24bppBGR_gray, 4, 2, 96.0, 96.0};
+
static void test_conversion(const struct bitmap_data *src, const struct bitmap_data *dst,
const char *name, BOOL todo)
{
BitmapTestSrc *src_obj;
@@ -309,9 +394,7 @@
CreateTestBitmap(src, &src_obj);
hr = WICConvertBitmapSource(dst->format, &src_obj->IWICBitmapSource_iface,
&dst_bitmap);
- if (todo)
- todo_wine ok(SUCCEEDED(hr), "WICConvertBitmapSource(%s) failed,
hr=%x\n", name, hr);
- else
+ todo_wine_if (todo)
ok(SUCCEEDED(hr), "WICConvertBitmapSource(%s) failed, hr=%x\n", name,
hr);
if (SUCCEEDED(hr))
@@ -500,7 +583,7 @@
if (FAILED(hr))
return;
- ok(cProperties == cProperties2, "Missmatch of property count
(IPropertyBag2::CountProperties=%i, IPropertyBag2::GetPropertyInfo=%i)\n",
+ ok(cProperties == cProperties2, "Mismatch of property count
(IPropertyBag2::CountProperties=%i, IPropertyBag2::GetPropertyInfo=%i)\n",
(int)cProperties, (int)cProperties2);
}
@@ -741,6 +824,14 @@
test_conversion(&testdata_32bppBGR, &testdata_24bppRGB, "32bppBGR ->
24bppRGB", FALSE);
test_conversion(&testdata_24bppRGB, &testdata_32bppBGR, "24bppRGB ->
32bppBGR", FALSE);
+ test_conversion(&testdata_24bppRGB, &testdata_32bppGrayFloat, "24bppRGB
-> 32bppGrayFloat", FALSE);
+ test_conversion(&testdata_32bppBGR, &testdata_32bppGrayFloat, "32bppBGR
-> 32bppGrayFloat", FALSE);
+
+ test_conversion(&testdata_24bppBGR, &testdata_8bppGray, "24bppBGR ->
8bppGray", FALSE);
+ test_conversion(&testdata_32bppBGR, &testdata_8bppGray, "32bppBGR ->
8bppGray", FALSE);
+ test_conversion(&testdata_32bppGrayFloat, &testdata_24bppBGR_gray,
"32bppGrayFloat -> 24bppBGR gray", FALSE);
+ test_conversion(&testdata_32bppGrayFloat, &testdata_8bppGray,
"32bppGrayFloat -> 8bppGray", FALSE);
+
test_invalid_conversion();
test_default_converter();
Modified: trunk/rostests/winetests/windowscodecs/metadata.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/windowscodecs/m…
==============================================================================
--- trunk/rostests/winetests/windowscodecs/metadata.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/windowscodecs/metadata.c [iso-8859-1] Sat Jul 2 15:29:06
2016
@@ -969,6 +969,8 @@
IWICBitmapFrameDecode *frame;
IWICMetadataBlockReader *blockreader;
IWICMetadataReader *reader;
+ IWICMetadataQueryReader *queryreader;
+ IWICComponentFactory *factory;
GUID containerformat;
HRESULT hr;
UINT count=0xdeadbeef;
@@ -1039,7 +1041,32 @@
hr = IWICMetadataBlockReader_GetReaderByIndex(blockreader, 1, &reader);
todo_wine ok(hr == WINCODEC_ERR_VALUEOUTOFRANGE, "GetReaderByIndex failed,
hr=%x\n", hr);
+ hr = CoCreateInstance(&CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER,
+ &IID_IWICComponentFactory, (void**)&factory);
+ ok(hr == S_OK, "CoCreateInstance failed, hr=%x\n", hr);
+
+ hr = IWICComponentFactory_CreateQueryReaderFromBlockReader(factory, NULL,
&queryreader);
+ ok(hr == E_INVALIDARG, "CreateQueryReaderFromBlockReader should have failed:
%08x\n", hr);
+
+ hr = IWICComponentFactory_CreateQueryReaderFromBlockReader(factory, blockreader,
NULL);
+ ok(hr == E_INVALIDARG, "CreateQueryReaderFromBlockReader should have failed:
%08x\n", hr);
+
+ hr = IWICComponentFactory_CreateQueryReaderFromBlockReader(factory, blockreader,
&queryreader);
+ ok(hr == S_OK, "CreateQueryReaderFromBlockReader failed: %08x\n", hr);
+
+ IWICMetadataQueryReader_Release(queryreader);
+
+ IWICComponentFactory_Release(factory);
+
IWICMetadataBlockReader_Release(blockreader);
+ }
+
+ hr = IWICBitmapFrameDecode_GetMetadataQueryReader(frame, &queryreader);
+ ok(hr == S_OK, "GetMetadataQueryReader failed: %08x\n", hr);
+
+ if (SUCCEEDED(hr))
+ {
+ IWICMetadataQueryReader_Release(queryreader);
}
IWICBitmapFrameDecode_Release(frame);
@@ -1131,6 +1158,7 @@
IWICBitmapFrameDecode *frame;
IWICMetadataBlockReader *blockreader;
IWICMetadataReader *reader;
+ IWICMetadataQueryReader *queryreader;
GUID format;
HRESULT hr;
UINT count;
@@ -1451,6 +1479,16 @@
ok(hr == E_INVALIDARG, "expected E_INVALIDARG, got %#x\n", hr);
IWICMetadataBlockReader_Release(blockreader);
+ }
+
+ hr = IWICBitmapFrameDecode_GetMetadataQueryReader(frame, &queryreader);
+ ok(hr == S_OK ||
+ broken(hr == WINCODEC_ERR_UNSUPPORTEDOPERATION) /* before Vista */,
+ "GetMetadataQueryReader failed: %08x\n", hr);
+
+ if (SUCCEEDED(hr))
+ {
+ IWICMetadataQueryReader_Release(queryreader);
}
IWICBitmapFrameDecode_Release(frame);