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: Icons [in Server Test 87]


Howdy Lev and Colin...

---------- Original Message -------------
Subject: Re: Icons [in Server Test 87]
I thought we were OK at 32bpp (1280x1024) until I looked again!
Device dependence maybe, I'm got an old ATI Rage Pro card (don't ask why?).
It's the black and white icon's images that's are going wrong not the masks.
The black (0) is rendered transparent.
-----------------------------------
Lev's got an ATI too, so that seems to be the common thread.
Luckily my laptop has a Rage Mobility so I might be able to
reproduce this and see what's shaking with it.  My Rage Pro is
sitting in a box somewhere, ATI had the worst driver support I've
ever seen back in the W95 days.

Also, the mask, not the bitmap that's not working.  The mask is what
gives you black, the icon gives you the white:  the way Windoze does
an icon is first take MASK & BACKGROUND (giving black or the background)
and then takes the (MASK&BACK) | ICON (giving white/color or the
masked off black or the unmasked background).

------------------------------------
I've just started a trace on this one:-
On xclock I get
6 calls on winScaleXBitmapToWindows
effBPP=32 effXBPP=1 effXDepth=1
effBPP=1 effXBPP=1 effXDepth=1
effBPP=32 effXBPP=1 effXDepth=1
   repeat
effBPP=32 effXBPP=1 effXDepth=1
effBPP=1 effXBPP=1 effXDepth=1
effBPP=32 effXBPP=1 effXDepth=1
----------------------------
The effBPP=1, effXBPP=1 followed by the effBPP=32, effXBPP=1 are
the mask generation stages.  I make a mask and then need to set
all non-masked areas to 0 (since we'll be doing an OR and we don't
want unmasked areas to show at all)...

-------------
The 1st and 4th are the image passes.
If I nobble these passes (effXBPP=1 and effBPP=32) (leaving the 3rd and 6th
mask pass unchanged) and
bodge in say 127 to case32 outPtr's (4 times the same to the break) instead
of the original 4x0 fall through; I get
white and 'grey' (i.e. the outline and hands are no longer transparent!).
I'm just a born hacker and can't resist mucking about in someone else's
algoryrhymes!
Some endian problem perhaps?
-----------------------

That gray's probably because the mask isn't set to anything, so the
OR combines the background and the image giving a kinda funky alpha
type blend.  

There's definitely not an endianness problem, all X86 cards expect
bits in the same place, thankfully!

What is really funky is you say that xload does this too.  Xload doesn't
have a mask so I generate a solid black one (meaning you should get a solid
white background on which to draw the black bars and graph in the icon)...

-- 
-Earle F. Philhower, III
 earle@ziplabel.com
 http://www.ziplabel.com


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