This is the mail archive of the cygwin-xfree mailing list for the Cygwin XFree86 project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Icons


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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]