Colin Harrison wrote:
Hi,
Tried your patch..I get no converted icons at all on my taskbar or X
windows.
In the right area though.
If I force 16 iconSize in winXIconToHICON...background stripes on icons.
If I force 32 iconSize in winXIconToHICON...works correctly (reported a few
days ago)
All run in multiwindow mode
Earle's algorithms don't appear to work with anything other than 32, which
is probably why iconSize was hard wired when he wrote them.
I thought icons were DIB's and DWORD aligned?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/
msdn_icons.asp
I'll extract my faulty/good converted icons to files and have a play.
I'll also post some screen dumps on my website and call back (with and
without various icon faults).
Colin Harrison
Icons in resources and files are stored as DIBS, therefore 32-bit
aligned. When these are loaded into an HICON, they are converted to a
device-dependent bitmap, and are WORD aligned.
The usual method is to let Windows convert from DIB to DDB. However, the
multiwindow code creates a DDB directly using CreateBitmap(), rather
than CreateDIBitmap() or CreateDIBSection(). If X-Pixmap bit data is
packed the same as Win-Bitmap data, but with alignment differences, then
a packed-to-packed transfer is faster.
One possible source of the current problem is that WinXP changed how the
device-dependent data is stored, by adding an Alpha channel. (Are you
running XP?) This is mostly undocumented, because they assume everyone
creates DIB icons. So, the icon code should probably always unpack RGB
data into a DIB, and let Windows do the DDB conversion.
Now, I just need to figure out how to unpack the pixmap data. That can
also be tricky to get right, unless we can use RENDER extension routines
to do the work.
Joe
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://x.cygwin.com/docs/
FAQ: http://x.cygwin.com/docs/faq/