Paul Gofman : user32: Select more appropriate stretch mode for colored images interpolation.
Alexandre Julliard
julliard at winehq.org
Wed May 15 14:32:23 CDT 2019
Module: wine
Branch: stable
Commit: b364e0b0e3c86492c646515d8fdda2b9ceca886f
URL: https://source.winehq.org/git/wine.git/?a=commit;h=b364e0b0e3c86492c646515d8fdda2b9ceca886f
Author: Paul Gofman <gofmanp at gmail.com>
Date: Tue Feb 5 18:28:11 2019 +0300
user32: Select more appropriate stretch mode for colored images interpolation.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46375
Signed-off-by: Paul Gofman <gofmanp at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit bfe1ea26dd5ee401159e117029ecc63466a6ccb5)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>
---
dlls/user32/cursoricon.c | 4 ++++
dlls/user32/tests/cursoricon.c | 4 ++--
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/user32/cursoricon.c b/dlls/user32/cursoricon.c
index 539fc7c..3214746 100644
--- a/dlls/user32/cursoricon.c
+++ b/dlls/user32/cursoricon.c
@@ -2976,6 +2976,8 @@ static HBITMAP BITMAP_Load( HINSTANCE instance, LPCWSTR name,
}
orig_bm = SelectObject(screen_mem_dc, hbitmap);
+ if (info->bmiHeader.biBitCount > 1)
+ SetStretchBltMode(screen_mem_dc, HALFTONE);
StretchDIBits(screen_mem_dc, 0, 0, new_width, new_height, 0, 0, width, height, bits, fix_info, DIB_RGB_COLORS, SRCCOPY);
SelectObject(screen_mem_dc, orig_bm);
@@ -3217,6 +3219,8 @@ HANDLE WINAPI CopyImage( HANDLE hnd, UINT type, INT desiredx,
void * bits;
dc = CreateCompatibleDC(NULL);
+ if (ds.dsBm.bmBitsPixel > 1)
+ SetStretchBltMode(dc, HALFTONE);
bi->bmiHeader.biWidth = ds.dsBm.bmWidth;
bi->bmiHeader.biHeight = ds.dsBm.bmHeight;
diff --git a/dlls/user32/tests/cursoricon.c b/dlls/user32/tests/cursoricon.c
index 56621a6..8ce1eb1 100644
--- a/dlls/user32/tests/cursoricon.c
+++ b/dlls/user32/tests/cursoricon.c
@@ -2918,9 +2918,9 @@ static void test_Image_StretchMode(void)
sizeof(colors_bits_1), FALSE},
{4, 4, 2, 2, 8, test_bits_8, expected_bits_8,
sizeof(test_bits_8), sizeof(expected_bits_8), colors_bits_8,
- sizeof(colors_bits_8), TRUE},
+ sizeof(colors_bits_8), FALSE},
{4, 4, 2, 2, 16, (const unsigned char *)test_bits_16, (const unsigned char *)expected_bits_16,
- sizeof(test_bits_16), sizeof(expected_bits_16), NULL, 0, TRUE},
+ sizeof(test_bits_16), sizeof(expected_bits_16), NULL, 0, FALSE},
};
static const char filename[] = "test.bmp";
BITMAPINFO *bmi, *bmi_output;
More information about the wine-cvs
mailing list