This is the mail archive of the cygwin-xfree@cygwin.com 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: [ANNOUNCEMENT] Server Test 88


Hi Earle,

> As for the scaling, check out the bottom of winmultiwindowwindow.c.  
> Feel free to put in a nice 2d filter, but it'll really only make a
> difference for xcalc.  X apps normally only have one icon size
> specified, and that size can be almost anything.  Some of the QT(KDE?)
> apps have an additional extension where they specify multiple icons per
> app, but I have no idea how to get Windoze to grok a multi-sized
> on-the-fly created icon.  It was a real pain getting it to take a
> single-sized on-the-fly one!

I think I can tell you what you need to do to allow small and large icons 
specified seperately. First, you need your window to be WNDCLASSEX not 
WNDCLASS. This gives you the hIcon element as before, which is to be of 
"system large" size, and in addition gives you an element hIconSm, which 
is of "system small" size. Now of course you need to know what system 
large, system small sizes are (the current code seems to assume system 
large is 32x32). You can get this using GetSystemMetrics with parameters 
SM_CXICON, SMCYICON for the system large and SM_CXSMICON, SMCYSMICON for 
system small. The system large size is determined by the video driver and 
cannot be changed any other way, the system small size is controlled by 
the "caption buttons" size setting in the "display properties" applet, 
appearance tab.

How to choose between the different icons available once you know the size 
you want? This is how windows does it:

The image closest in size to the requested size is chosen. 
If two or more images of that size are present, the one that matches the 
color depth of the display is chosen. 
If none exactly match the color depth of the display, Windows chooses the 
image with the greatest color depth without exceeding the color depth of 
the display. 
If all the size-matched images exceed the color depth of the display, the 
one with the lowest color depth is chosen. 
Windows treats all color depths of 8 or more bpp as equal. For example, it 
is pointless to have a 16x16 256 color image and a 16x16 16bpp image in 
the same resourceWindows will simply choose the first one it encounters. 
When the display is in 8bpp mode, Windows will prefer a 16 color icon over 
a 256 color icon, and will display all icons using the system default 
palette. 

Lev


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