Transparent windows (with alpha channel)

Roderick Colenbrander thunderbird2k at gmail.com
Thu Nov 4 10:07:52 CDT 2010


On Thu, Nov 4, 2010 at 3:08 AM, Vassilis Virvilis
<vasvir at iit.demokritos.gr> wrote:
> On 03/11/2010 12:36 πμ, Vassilis Virvilis wrote:
>>
>> On 02/11/2010 02:12 πμ, Vincent Povirk wrote:
>>>
>>> It is probably a layered window, in which case the following functions
>>> in user32 are relevant: SetLayeredWindowAttributes,
>>> GetLayeredWindowAttributes, UpdateLayeredWindowIndirect, and
>>> UpdateLayeredWindow
>>>
>>> Most of user32 is implemented based on gdi32, wineserver, and
>>> winex11.drv. When you see USER_Driver in user32, that indicates a
>>> function in winex11.drv. So USER_Driver->pSetLayeredWindowAttributes
>>> is really X11DRV_SetLayeredWindowAttributes.
>>>
>>> Wine requires a compositing window manager to implement layered
>>> windows properly. It does not matter whether the window manager
>>> provides any 3D effects or uses opengl.
>>
>> Thank you very much for the directions. They certainly put me on the
>> right track.
>>
>
> Again thanks for the directions.
>
> The UpdateLayeredWindowIndirect implementation of wine only utilizes a
> global per window alpha value.
>
> After a little bit of research it looks like what I want is something called
> per-pixel alpha or per color alpha or blending with alpha channel.
>
> Does wine and/or X-Windows support something like this and if so where?
>
> My guess is in bitblit but any insightful comment is welcome.
>
>           .bill
>
>
>

You would require ARGB visuals. Various drivers support them these
days for desktop composition purposes. When I asked Alexandre about
them a long time ago, he said we couldn't use them in Wine. I don't
know why that was. Further even if we could use it, we would have to
recreate the window upon this call since I don't think we would want
to use ARGB by default.

Roderick



More information about the wine-devel mailing list