Opened 20 months ago
Last modified 20 months ago
#18368 new enhancement
app_server: add semi-transparent window support
Reported by: | X512 | Owned by: | axeld |
---|---|---|---|
Priority: | normal | Milestone: | Unscheduled |
Component: | Servers/app_server | Version: | R1/Development |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Platform: | All |
Description (last modified by )
Today many 3rd-party applications use semi-transparent windows for decorations, shadows or visual effects that currently looks bad in Haiku. For sone software it may be unrealistic and/or undesired to turn off using semi/transparent parts. Many people prefer themes with semi-transparent parts that are currently impossible to implement.
Proposed implementation strategy:
- Introduce
Surface
objects forHWInterface
that can store raster buffer and be composited with alpha channel blending. Surfaces have Z-order relations and displayed on top of screen framebuffer. In future hardware compositing acceleration can be considered.
- Allocate and attach
Surface
to a window that has semi-transparent parts and redirect rendering to that surface instead of screen framebuffer.
- Modify
Desktop
visible region calculation so window with attachedSurface
will be not subtracted from windows with lower Z-order. Windows with upper Z-order and no attachedSurface
will be subtracted from window visible region. Window visible region will be also set toSurface
object.
Change History (3)
comment:1 by , 20 months ago
Description: | modified (diff) |
---|
comment:2 by , 20 months ago
comment:3 by , 20 months ago
Surface
infrastructure can be also used for remote desktop seamless integration. In this case Surface
will use vector data, not raster. Surface
can accept and transfer drawing commands to client and client can create host OS windows corresponding to each surface.
Related: https://www.haiku-os.org/blog/stippi/2011-06-15_how_transform_app_server_code_use_compositing/