mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-09-13 09:17:20 -07:00
windowscodecs-32bppPRGBA: Update patchset.
This commit is contained in:
parent
2e509b911f
commit
e374d7a750
@ -7919,12 +7919,15 @@ fi
|
||||
# | windowscodecs-IWICPalette_InitializeFromBitmap, windowscodecs-TIFF_Support
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/windowscodecs/converter.c, dlls/windowscodecs/info.c, dlls/windowscodecs/regsvr.c
|
||||
# | * dlls/windowscodecs/converter.c, dlls/windowscodecs/info.c, dlls/windowscodecs/regsvr.c,
|
||||
# | dlls/windowscodecs/tests/converter.c
|
||||
# |
|
||||
if test "$enable_windowscodecs_32bppPRGBA" -eq 1; then
|
||||
patch_apply windowscodecs-32bppPRGBA/0001-windowscodecs-Add-support-for-32bppRGB-32bppRGBA-and.patch
|
||||
patch_apply windowscodecs-32bppPRGBA/0002-windowscodecs-Fix-32bppRGB-to-32bppRGBA-conversion.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Add support for 32bppRGB, 32bppRGBA and 32bppPRGBA to format converter.", 1 },';
|
||||
printf '%s\n' '+ { "Dmitry Timoshkov", "windowscodecs: Fix 32bppRGB to 32bppRGBA conversion.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
|
@ -0,0 +1,111 @@
|
||||
From ff6282f297e67822ee0def394a677a4fdc0fa609 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Thu, 26 Jan 2017 19:01:21 +0800
|
||||
Subject: windowscodecs: Fix 32bppRGB to 32bppRGBA conversion.
|
||||
|
||||
---
|
||||
dlls/windowscodecs/converter.c | 2 ++
|
||||
dlls/windowscodecs/tests/converter.c | 45 +++++++++++++++++++++++++++++++++++-
|
||||
2 files changed, 46 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/windowscodecs/converter.c b/dlls/windowscodecs/converter.c
|
||||
index 519860d9065..1378c85bc2d 100644
|
||||
--- a/dlls/windowscodecs/converter.c
|
||||
+++ b/dlls/windowscodecs/converter.c
|
||||
@@ -868,7 +868,9 @@ static HRESULT copypixels_to_32bppRGBA(struct FormatConverter *This, const WICRe
|
||||
|
||||
switch (source_format)
|
||||
{
|
||||
+ case format_32bppRGB:
|
||||
case format_32bppRGBA:
|
||||
+ case format_32bppPRGBA:
|
||||
if (prc)
|
||||
return IWICBitmapSource_CopyPixels(This->source, prc, cbStride, cbBufferSize, pbBuffer);
|
||||
return S_OK;
|
||||
diff --git a/dlls/windowscodecs/tests/converter.c b/dlls/windowscodecs/tests/converter.c
|
||||
index 1cafe90c734..17724d9ed01 100644
|
||||
--- a/dlls/windowscodecs/tests/converter.c
|
||||
+++ b/dlls/windowscodecs/tests/converter.c
|
||||
@@ -291,6 +291,21 @@ static BOOL compare_bits(const struct bitmap_data *expect, UINT buffersize, cons
|
||||
if (!equal && expect->alt_data)
|
||||
equal = compare_bits(expect->alt_data, buffersize, converted_bits);
|
||||
|
||||
+ if (!equal && winetest_debug > 1)
|
||||
+ {
|
||||
+ UINT i, bps;
|
||||
+ bps = expect->bpp / 8;
|
||||
+ if (!bps) bps = buffersize;
|
||||
+ printf("converted_bits (%u bytes):\n ", buffersize);
|
||||
+ for (i = 0; i < buffersize; i++)
|
||||
+ {
|
||||
+ printf("%u,", converted_bits[i]);
|
||||
+ if (!((i + 1) % 32)) printf("\n ");
|
||||
+ else if (!((i+1) % bps)) printf(" ");
|
||||
+ }
|
||||
+ printf("\n");
|
||||
+ }
|
||||
+
|
||||
return equal;
|
||||
}
|
||||
|
||||
@@ -438,6 +453,10 @@ static const BYTE bits_32bppBGR[] = {
|
||||
0,255,255,80, 255,0,255,80, 255,255,0,80, 255,255,255,80, 0,255,255,80, 255,0,255,80, 255,255,0,80, 255,255,255,80};
|
||||
static const struct bitmap_data testdata_32bppBGR = {
|
||||
&GUID_WICPixelFormat32bppBGR, 32, bits_32bppBGR, 32, 2, 96.0, 96.0};
|
||||
+static const struct bitmap_data testdata_32bppBGRA80 = {
|
||||
+ &GUID_WICPixelFormat32bppBGRA, 32, bits_32bppBGR, 32, 2, 96.0, 96.0};
|
||||
+static const struct bitmap_data testdata_32bppRGBA80 = {
|
||||
+ &GUID_WICPixelFormat32bppRGBA, 32, bits_32bppBGR, 32, 2, 96.0, 96.0};
|
||||
|
||||
static const BYTE bits_32bppBGRA[] = {
|
||||
255,0,0,255, 0,255,0,255, 0,0,255,255, 0,0,0,255, 255,0,0,255, 0,255,0,255, 0,0,255,255, 0,0,0,255,
|
||||
@@ -450,6 +469,24 @@ static const BYTE bits_32bppBGRA[] = {
|
||||
0,255,255,255, 255,0,255,255, 255,255,0,255, 255,255,255,255, 0,255,255,255, 255,0,255,255, 255,255,0,255, 255,255,255,255};
|
||||
static const struct bitmap_data testdata_32bppBGRA = {
|
||||
&GUID_WICPixelFormat32bppBGRA, 32, bits_32bppBGRA, 32, 2, 96.0, 96.0};
|
||||
+static const struct bitmap_data testdata_32bppRGBA = {
|
||||
+ &GUID_WICPixelFormat32bppRGBA, 32, bits_32bppBGRA, 32, 2, 96.0, 96.0};
|
||||
+static const struct bitmap_data testdata_32bppRGB = {
|
||||
+ &GUID_WICPixelFormat32bppRGB, 32, bits_32bppBGRA, 32, 2, 96.0, 96.0};
|
||||
+
|
||||
+static const BYTE bits_32bppPBGRA[] = {
|
||||
+ 80,0,0,80, 0,80,0,80, 0,0,80,80, 0,0,0,80, 80,0,0,80, 0,80,0,80, 0,0,80,80, 0,0,0,80,
|
||||
+ 80,0,0,80, 0,80,0,80, 0,0,80,80, 0,0,0,80, 80,0,0,80, 0,80,0,80, 0,0,80,80, 0,0,0,80,
|
||||
+ 80,0,0,80, 0,80,0,80, 0,0,80,80, 0,0,0,80, 80,0,0,80, 0,80,0,80, 0,0,80,80, 0,0,0,80,
|
||||
+ 80,0,0,80, 0,80,0,80, 0,0,80,80, 0,0,0,80, 80,0,0,80, 0,80,0,80, 0,0,80,80, 0,0,0,80,
|
||||
+ 0,80,80,80, 80,0,80,80, 80,80,0,80, 80,80,80,80, 0,80,80,80, 80,0,80,80, 80,80,0,80, 80,80,80,80,
|
||||
+ 0,80,80,80, 80,0,80,80, 80,80,0,80, 80,80,80,80, 0,80,80,80, 80,0,80,80, 80,80,0,80, 80,80,80,80,
|
||||
+ 0,80,80,80, 80,0,80,80, 80,80,0,80, 80,80,80,80, 0,80,80,80, 80,0,80,80, 80,80,0,80, 80,80,80,80,
|
||||
+ 0,80,80,80, 80,0,80,80, 80,80,0,80, 80,80,80,80, 0,80,80,80, 80,0,80,80, 80,80,0,80, 80,80,80,80};
|
||||
+static const struct bitmap_data testdata_32bppPBGRA = {
|
||||
+ &GUID_WICPixelFormat32bppPBGRA, 32, bits_32bppPBGRA, 32, 2, 96.0, 96.0};
|
||||
+static const struct bitmap_data testdata_32bppPRGBA = {
|
||||
+ &GUID_WICPixelFormat32bppPRGBA, 32, bits_32bppPBGRA, 32, 2, 96.0, 96.0};
|
||||
|
||||
/* XP and 2003 use linear color conversion, later versions use sRGB gamma */
|
||||
static const float bits_32bppGrayFloat_xp[] = {
|
||||
@@ -515,7 +552,7 @@ static void test_conversion(const struct bitmap_data *src, const struct bitmap_d
|
||||
hr = WICConvertBitmapSource(dst->format, &src_obj->IWICBitmapSource_iface, &dst_bitmap);
|
||||
todo_wine_if (todo)
|
||||
ok(hr == S_OK ||
|
||||
- broken(hr == E_INVALIDARG) /* XP */, "WICConvertBitmapSource(%s) failed, hr=%x\n", name, hr);
|
||||
+ broken(hr == E_INVALIDARG || hr == WINCODEC_ERR_COMPONENTNOTFOUND) /* XP */, "WICConvertBitmapSource(%s) failed, hr=%x\n", name, hr);
|
||||
|
||||
if (hr == S_OK)
|
||||
{
|
||||
@@ -1752,6 +1789,12 @@ START_TEST(converter)
|
||||
test_conversion(&testdata_32bppBGRA, &testdata_32bppBGR, "BGRA -> BGR", FALSE);
|
||||
test_conversion(&testdata_32bppBGR, &testdata_32bppBGRA, "BGR -> BGRA", FALSE);
|
||||
test_conversion(&testdata_32bppBGRA, &testdata_32bppBGRA, "BGRA -> BGRA", FALSE);
|
||||
+ test_conversion(&testdata_32bppBGRA80, &testdata_32bppPBGRA, "BGRA -> PBGRA", FALSE);
|
||||
+
|
||||
+ test_conversion(&testdata_32bppRGBA, &testdata_32bppRGB, "RGBA -> RGB", FALSE);
|
||||
+ test_conversion(&testdata_32bppRGB, &testdata_32bppRGBA, "RGB -> RGBA", FALSE);
|
||||
+ test_conversion(&testdata_32bppRGBA, &testdata_32bppRGBA, "RGBA -> RGBA", FALSE);
|
||||
+ test_conversion(&testdata_32bppRGBA80, &testdata_32bppPRGBA, "RGBA -> PRGBA", FALSE);
|
||||
|
||||
test_conversion(&testdata_24bppBGR, &testdata_24bppBGR, "24bppBGR -> 24bppBGR", FALSE);
|
||||
test_conversion(&testdata_24bppBGR, &testdata_24bppRGB, "24bppBGR -> 24bppRGB", FALSE);
|
||||
--
|
||||
2.11.0
|
||||
|
Loading…
Reference in New Issue
Block a user