mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-16 00:57:16 +00:00
gdiplus: Force conversion of 8 bpp grayscale PNG images to 32 bpp BGRA.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
cc49c40f05
commit
5870431ad9
|
@ -3961,7 +3961,37 @@ static GpStatus decode_image_jpeg(IStream* stream, GpImage **image)
|
|||
|
||||
static GpStatus decode_image_png(IStream* stream, GpImage **image)
|
||||
{
|
||||
return decode_image_wic(stream, &GUID_ContainerFormatPng, png_metadata_reader, image);
|
||||
IWICBitmapDecoder *decoder;
|
||||
IWICBitmapFrameDecode *frame;
|
||||
GpStatus status;
|
||||
HRESULT hr;
|
||||
GUID format;
|
||||
BOOL force_conversion = FALSE;
|
||||
|
||||
status = initialize_decoder_wic(stream, &GUID_ContainerFormatPng, &decoder);
|
||||
if (status != Ok)
|
||||
return status;
|
||||
|
||||
hr = IWICBitmapDecoder_GetFrame(decoder, 0, &frame);
|
||||
if (hr == S_OK)
|
||||
{
|
||||
hr = IWICBitmapFrameDecode_GetPixelFormat(frame, &format);
|
||||
if (hr == S_OK)
|
||||
{
|
||||
if (IsEqualGUID(&format, &GUID_WICPixelFormat8bppGray))
|
||||
force_conversion = TRUE;
|
||||
status = decode_frame_wic(decoder, force_conversion, 0, png_metadata_reader, image);
|
||||
}
|
||||
else
|
||||
status = hresult_to_status(hr);
|
||||
|
||||
IWICBitmapFrameDecode_Release(frame);
|
||||
}
|
||||
else
|
||||
status = hresult_to_status(hr);
|
||||
|
||||
IWICBitmapDecoder_Release(decoder);
|
||||
return status;
|
||||
}
|
||||
|
||||
static GpStatus decode_image_gif(IStream* stream, GpImage **image)
|
||||
|
|
|
@ -5014,7 +5014,6 @@ static void test_png_color_formats(void)
|
|||
|
||||
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);
|
||||
|
|
Loading…
Reference in a new issue