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 X512)

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:

  1. Introduce Surface objects for HWInterface 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.
  1. Allocate and attach Surface to a window that has semi-transparent parts and redirect rendering to that surface instead of screen framebuffer.
  1. Modify Desktop visible region calculation so window with attached Surface will be not subtracted from windows with lower Z-order. Windows with upper Z-order and no attached Surface will be subtracted from window visible region. Window visible region will be also set to Surface object.

Change History (3)

comment:1 by X512, 20 months ago

Description: modified (diff)

comment:3 by X512, 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.

Note: See TracTickets for help on using tickets.