[PATCH] windowscodecs: Correctly handle 8bpp custom conversions
Alistair Leslie-Hughes
leslie_alistair at hotmail.com
Mon Feb 21 01:21:49 CST 2022
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
dlls/windowscodecs/converter.c | 2 +-
dlls/windowscodecs/tests/converter.c | 34 ++++++++++++++++++++++++++++
2 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/dlls/windowscodecs/converter.c b/dlls/windowscodecs/converter.c
index c321627885b..b27d478f717 100644
--- a/dlls/windowscodecs/converter.c
+++ b/dlls/windowscodecs/converter.c
@@ -1703,7 +1703,7 @@ static HRESULT WINAPI FormatConverter_Initialize(IWICFormatConverter *iface,
case WICBitmapPaletteTypeCustom:
IWICPalette_Release(palette);
palette = NULL;
- if (bpp <= 8) return E_INVALIDARG;
+ if (bpp < 8) return E_INVALIDARG;
break;
case WICBitmapPaletteTypeMedianCut:
diff --git a/dlls/windowscodecs/tests/converter.c b/dlls/windowscodecs/tests/converter.c
index df6528afa71..456b3502c77 100644
--- a/dlls/windowscodecs/tests/converter.c
+++ b/dlls/windowscodecs/tests/converter.c
@@ -637,6 +637,39 @@ static void test_default_converter(void)
DeleteTestBitmap(src_obj);
}
+static void test_converter_8bppGray(void)
+{
+ BitmapTestSrc *src_obj;
+ IWICFormatConverter *converter;
+ BOOL can_convert = TRUE;
+ HRESULT hr;
+
+ CreateTestBitmap(&testdata_32bppBGRA, &src_obj);
+
+ hr = CoCreateInstance(&CLSID_WICDefaultFormatConverter, NULL, CLSCTX_INPROC_SERVER,
+ &IID_IWICFormatConverter, (void**)&converter);
+ ok(SUCCEEDED(hr), "CoCreateInstance failed, hr=%x\n", hr);
+ if (SUCCEEDED(hr))
+ {
+ hr = IWICFormatConverter_CanConvert(converter, &GUID_WICPixelFormat32bppBGRA,
+ &GUID_WICPixelFormat8bppGray, &can_convert);
+ ok(SUCCEEDED(hr), "CanConvert returned %x\n", hr);
+ ok(can_convert, "expected TRUE, got %i\n", can_convert);
+
+ hr = IWICFormatConverter_Initialize(converter, &src_obj->IWICBitmapSource_iface,
+ &GUID_WICPixelFormat8bppGray, WICBitmapDitherTypeNone, NULL, 0.0,
+ WICBitmapPaletteTypeCustom);
+ ok(SUCCEEDED(hr), "Initialize returned %x\n", hr);
+
+ if (SUCCEEDED(hr))
+ compare_bitmap_data(&testdata_32bppBGRA, &testdata_8bppGray, (IWICBitmapSource*)converter, "8bppGray converter");
+
+ IWICFormatConverter_Release(converter);
+ }
+
+ DeleteTestBitmap(src_obj);
+}
+
typedef struct property_opt_test_data
{
LPCOLESTR name;
@@ -1922,6 +1955,7 @@ START_TEST(converter)
test_invalid_conversion();
test_default_converter();
+ test_converter_8bppGray();
test_converter_8bppIndexed();
test_encoder(&testdata_8bppIndexed, &CLSID_WICGifEncoder,
--
2.34.1
More information about the wine-devel
mailing list