http://bugs.winehq.org/show_bug.cgi?id=20145
Summary: DrawIconEx() doesn't draw 1 bpp monochrome Icons correctly Product: Wine Version: 1.1.29 Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: user32 AssignedTo: wine-bugs@winehq.org ReportedBy: wilfried.pasquazzo@gmail.com
Created an attachment (id=23728) --> (http://bugs.winehq.org/attachment.cgi?id=23728) Test program to show differences between drawing 1 bpp icons in DrawIcon() and DrawIconEx()
The function DrawIconEx() doesn't handle Icons with 1 bpp correctly.
I've attached a test program that will draw many different icons in a line with DrawIcon() and the same line of icons below with DrawIconEx() and DI_DEFAULTSIZE, DI_NORMAL, DI_COMPAT flags set - which should normally result in the exact same output.
The drawn icons are (fltr):
1 bpp 2x2 "chessboard" field 32 bpp white, black, red, green, blue icons without alpha channel 32 bpp white, black, red, green, blue icons with increasing values of alpha
This works fine in WindowsXP with 32-bit color depth (I'll attach a screenshot later). In Wine the 1 bpp icon is distorted/squeezed, the 32-bit icons are however drawn correct.
I'll search where the handling of 1 bpp icons differs in those two functions and fix DrawIconEx() accordingly.
When this is fixed, the DrawIcon-Function could just call DrawIconEx with DI_DEFAULTSIZE, DI_NORMAL, DI_COMPAT flags (as suggested in http://msdn.microsoft.com/en-us/library/ms648065(VS.85).aspx and done by the test application) and therefore a lot of complicated, duplicated code could be removed from "dlls/user32/cursoricon.c".