gdiplus: In CompositingModeSourceCopy, fully transparent pixels are drawn black.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=42585
Signed-off-by: Damjan Jovanovic <damjan.jov@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
(cherry picked from commit 99a171981c)
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
stable
Damjan Jovanovic 2020-03-05 03:35:40 +02:00 committed by Michael Stefaniuc
parent 3020b07c4b
commit 79b2c4a97d
2 changed files with 7 additions and 2 deletions

View File

@ -384,7 +384,12 @@ static GpStatus alpha_blend_bmp_pixels(GpGraphics *graphics, INT dst_x, INT dst_
src_color = ((ARGB*)(src + src_stride * y))[x];
if (comp_mode == CompositingModeSourceCopy)
GdipBitmapSetPixel(dst_bitmap, x+dst_x, y+dst_y, src_color);
{
if (!(src_color & 0xff000000))
GdipBitmapSetPixel(dst_bitmap, x+dst_x, y+dst_y, 0);
else
GdipBitmapSetPixel(dst_bitmap, x+dst_x, y+dst_y, src_color);
}
else
{
if (!(src_color & 0xff000000))

View File

@ -4208,7 +4208,7 @@ static void test_DrawImage_SourceCopy(void)
expect(0, dst_pixels[0]);
expect(0xffff0000, dst_pixels[1]);
expect(0, dst_pixels[2]);
todo_wine expect(0, dst_pixels[3]);
expect(0, dst_pixels[3]);
status = GdipDeleteGraphics(graphics);
expect(Ok, status);