551438b9be
* Add new methods BView::BeginLayer(uint8 opacity) BView::EndLayer() * All drawing between begin and end of a layer is redirected onto an intermediate bitmap. When ending the layer, this bitmap is composited onto the view with the opacity given when the layer was started. * Layers can be nested arbitrarily and will be blended onto each other in order. There can also be any arbitrary interleaving of layer begin/end and drawing operations. * Internally, drawing commands are redirected into a BPicture between BeginLayer and EndLayer (but client code need not know or care about this). Client code can also start/end other BPictures while inside a layer. * Uses the PictureBoundingBoxPlayer to determine the size of the layer bitmap before allocating and drawing into it, so it does not allocate more memory than necessary and -- more importantly -- it will not alpha-composite more pixels than necessary. * Drawing mode is always set to B_OP_ALPHA, blend mode to (B_PIXEL_ALPHA, B_ALPHA_COMPOSITE) while inside layers. This is necessary for (a) correct compositing output and (b) for redirection of drawing into the intermediate bitmap, which uses the renderer_region offset (in B_OP_COPY, the Painter does not use the AGG renderer methods, it directly accesses the pixel data. This would access out-of-bounds without the offset, so B_OP_COPY cannot be allowed.) To ensure these modes aren't changed, BView::SetDrawingMode() and BView::SetBlendingMode() are ignored while inside a layer. * The main motivation behind this new API is WebKit, which internally expects such a layers functionality to be present. A performant and reusable implementation of this functionality can only be done server-side in app_server. |
||
---|---|---|
.. | ||
AboutWindow.h | ||
BitmapPrivate.h | ||
BMCPrivate.h | ||
clipping.h | ||
ColorConversion.h | ||
ColorTools.h | ||
ColumnListView.h | ||
ColumnTypes.h | ||
DecoratorPrivate.h | ||
DecorInfo.h | ||
DefaultColors.h | ||
DirectWindowPrivate.h | ||
DraggerPrivate.h | ||
FontPrivate.h | ||
Icon.h | ||
input_globals.h | ||
InterfacePrivate.h | ||
MenuPrivate.h | ||
MenuWindow.h | ||
Palette.h | ||
PictureDataWriter.h | ||
PicturePlayer.h | ||
PicturePrivate.h | ||
PictureProtocol.h | ||
PrivateScreen.h | ||
RegionSupport.h | ||
ShapePrivate.h | ||
StackAndTilePrivate.h | ||
TabViewPrivate.h | ||
TextViewSupportBuffer.h | ||
ToolTip.h | ||
ToolTipManager.h | ||
ToolTipWindow.h | ||
truncate_string.h | ||
utf8_functions.h | ||
ViewPort.h | ||
ViewPrivate.h | ||
WidthBuffer.h | ||
WindowInfo.h | ||
WindowPrivate.h | ||
WindowStack.h | ||
ZombieReplicantView.h |