Composition functionality for 2D nodes. More...
#include <kanzi/core.ui/node/node_compositor2d.hpp>
Classes | |
struct | ManagedCompositionTarget |
Managed composition target container. More... | |
struct | PerspectiveTransformParameters |
Perspective transform container. More... | |
Public Types | |
enum | ComposeChildrenBits { ChildrenCompositingBitCache, ChildrenCompositingBitRequest, ChildrenCompositingBitCount } |
Enum for children compositing bit flags. More... | |
enum | ComposeFinalBits { FinalCompositingBitCache, FinalCompositingBitForce, FinalCompositingBitOffscreen, FinalCompositingBitOpacity, FinalCompositingBitRequest, FinalCompositingBitCount } |
Enum for final result compositing bit flags. More... | |
enum | ComposeSelfBits { SelfCompositingBitCache, SelfCompositingBitRequest, SelfCompositingBitCount } |
Enum for self compositing bit flags. More... | |
Public Member Functions | |
NodeCompositor2D () | |
Constructor. More... | |
tuple< TextureSharedPtr, bool > | beginFinalComposition (CompositionStack &compositionStack, CompositionManager *compositionManager, Vector2 requiredSize, bool alphaRequired, bool depthRequired, bool stencilRequired) |
Begin final composition. More... | |
void | endFinalComposition (CompositionStack &compositionStack) |
End final composition. More... | |
void | blitFinalComposition (Renderer3D &renderer, CompositionStack &compositionStack, CompositionManager *compositionManager, TextureSharedPtr renderTargetTexture, QuadDescription &backgroundQuad, const Matrix3x3 &transform, Vector2 quadSize) |
Blit final composition. More... | |
tuple< TextureSharedPtr, bool > | beginSelfComposition (CompositionStack &compositionStack, Vector2 requiredSize) |
Begin self composition. More... | |
void | endSelfComposition (CompositionStack &compositionStack) |
void | blitSelfComposition (Renderer3D &renderer, CompositionStack &compositionStack, Texture &texture, QuadDescription &backgroundQuad, const Matrix3x3 &transform, Vector2 quadSize) |
Blit self composition. More... | |
tuple< TextureSharedPtr, bool > | beginChildrenComposition (CompositionStack &compositionStack, Vector2 requiredSize) |
Begin children composition. More... | |
void | endChildrenComposition (CompositionStack &compositionStack) |
void | blitChildrenComposition (Renderer3D &renderer, CompositionStack &compositionStack, Texture &texture, QuadDescription &backgroundQuad, const Matrix3x3 &transform, Vector2 quadSize) |
Blit self composition. More... | |
void | renderCompositionQuad (Renderer3D &renderer, BrushRenderer &brushRenderer, const Texture &texture, QuadDescription &backgroundQuad, const Matrix4x4 &transform, Vector2 quadSize) |
Render composition quad. More... | |
void | createCompositionBrushRenderer (Node &node, Brush &brush, TextureSharedPtr texture) |
Create composition brush renderer. More... | |
TextureSharedPtr | getCacheChildrenCompositionTarget () const |
Access cache composition target for Node2D's children. More... | |
TextureSharedPtr | getCacheSelfCompositionTarget () const |
Access cache composition target for Node2D itself. More... | |
TextureSharedPtr | getFinalCompositionTarget () const |
Access 'final' managed composition target. More... | |
void | resizeUserCompositionTarget (Vector2 compositionSize) |
Resize automatic sizes in user composition target if necessary. More... | |
void | onDetached () |
Run when node owning the compositor becomes detached. More... | |
void | restoreResources (Vector2 compositionSize) |
Restore resources. More... | |
void | updateRender (Node2D &node, Vector2 actualSize, bool alphaRequired, bool depthRequired, bool stencilRequired, float opacity, bool opaquenessHint, bool translucencyHint) |
Update for rendering, recreating composition targets and brush renderers as needed. More... | |
BrushRenderer * | getCacheChildrenBrushRenderer () const |
Access cache children brush renderer. More... | |
BrushRenderer * | getCacheSelfBrushRenderer () const |
Access cache self brush renderer. More... | |
BrushRenderer * | getCompositionBrushRenderer () const |
Access composition brush renderer. More... | |
bool | hasCompositionBrushRenderer () const |
Tell if composition brush renderer has been created. More... | |
bool | hasManagedCompositionTargetFinal () const |
Tell if managed composition target has been created. More... | |
void | setUserCompositionBrush (BrushSharedPtr brush) |
Set user composition brush. More... | |
Vector2 | getUserCompositionTargetSize () const |
Get size of user composition target. More... | |
void | setUserCompositionTarget (TextureSharedPtr texture) |
Set user composition target. More... | |
bool | isCacheChildren () const |
Tell if cache children has been set. More... | |
void | setCacheChildren (bool enabled) |
Set cache children state. More... | |
bool | isCacheResult () const |
Tell if cache result has been set. More... | |
void | setCacheResult (bool enabled) |
Set cache result state. More... | |
bool | isCacheSelf () const |
Tell if cache self has been set. More... | |
void | setCacheSelf (bool enabled) |
Set cache self state. More... | |
void | invalidateCompositionBrush () |
Invalidate composition brush. More... | |
bool | isCacheChildrenValid () const |
Tell if children cache is valid. More... | |
void | setCacheChildrenValid (bool valid) |
Mark self cache as valid. More... | |
bool | isCacheFinalValid () const |
Tell if final cache is valid. More... | |
void | setCacheFinalValid (bool valid) |
Mark final cache as valid. More... | |
bool | isCacheSelfValid () const |
Tell if self cache is valid. More... | |
void | setCacheSelfValid (bool valid) |
Mark self cache as valid. More... | |
bool | isChildrenCompositionRequired () const |
Tell if compositing children is required. More... | |
bool | isFinalCompositionRequired () const |
Tell if compositing final result is required. More... | |
bool | isSelfCompositionRequired () const |
Tell if compositing self is required. More... | |
bool | isFinalCompositionRequested () const |
Is compositing requested from code? More... | |
void | setFinalCompositionRequested (bool enabled) |
Set compositing request. More... | |
bool | isForceComposition () const |
Is force composition on? More... | |
void | setForceComposition (bool enabled) |
Set force composition. More... | |
bool | isOffscreenRendering () const |
Is offscreen rendering on? More... | |
void | setOffscreenRendering (bool enabled) |
Set offscreen rendering flag. More... | |
bool | isOpacityCompositionRequest () const |
Is Opacity composition request flag on? More... | |
void | setOpacityCompositionRequested (bool enabled) |
Set opacity composition request flag. More... | |
void | resetManagedCompositionTargetCacheChildren () |
Reset cache children managed composition target. More... | |
void | resetManagedCompositionTargetCacheSelf () |
Reset cache self managed composition target. More... | |
void | resetManagedCompositionTargetFinal () |
Reset final managed composition target. More... | |
const Matrix4x4 * | getPerspectiveTransform () const |
Access perspective transform. More... | |
void | resetPerspectiveTransform () |
Reset perspective transform. More... | |
void | setPerspectiveTransform (const Matrix4x4 &transform) |
Set perspective transform. More... | |
const Vector4 * | getWorldPerspectiveOffset () const |
Access world perspective transform. More... | |
void | resetWorldPerspectiveOffset () |
Reset world perspective transform. More... | |
void | setWorldPerspectiveOffset (const Vector4 &offset) |
Set world perspective transform. More... | |
Protected Member Functions | |
bool | updatePersistentCompositionTarget (Node2D &node, ManagedCompositionTarget &managedCompositionTarget, Vector2 requiredSize, bool alphaRequired, bool depthRequired, bool stencilRequired) |
Update a managed composition target to match current requirements. More... | |
Protected Attributes | |
ManagedCompositionTarget | m_finalCompositionTarget |
Managed composition target for complete node composition. More... | |
ManagedCompositionTarget | m_cacheChildrenCompositionTarget |
Managed composition target for caching children. More... | |
ManagedCompositionTarget | m_cacheSelfCompositionTarget |
Managed composition target for caching node contents. More... | |
BrushSharedPtr | m_userCompositionBrush |
User-set composition brush. More... | |
TextureSharedPtr | m_userCompositionTarget |
User-set composition target. More... | |
CompositionBrushSharedPtr | m_cacheChildrenBrush |
Brush used to render cached children. More... | |
BrushRendererPtr | m_cacheChildrenBrushRenderer |
Cache children brush renderer. More... | |
CompositionBrushSharedPtr | m_cacheSelfBrush |
Brush used to render cached node itself. More... | |
BrushRendererPtr | m_cacheSelfBrushRenderer |
Cache self brush renderer. More... | |
CompositionBrushSharedPtr | m_managedCompositionBrush |
Composition brush managed by node. More... | |
BrushRendererPtr | m_compositionBrushRenderer |
Composition brush renderer. More... | |
unique_ptr< PerspectiveTransformParameters > | m_perspective |
Perspective components. More... | |
bitset< ChildrenCompositingBitCount > | m_childrenComposeMask |
Bit mask for states affecting whether or not the node should compose its children. More... | |
bitset< FinalCompositingBitCount > | m_finalComposeMask |
Bit mask for states affecting whether or not the node should compose itself and its children. More... | |
bitset< SelfCompositingBitCount > | m_selfComposeMask |
Bit mask for states affecting whether or not the node should compose itself. More... | |
Composition functionality for 2D nodes.
Enum for final result compositing bit flags.
|
inline |
Constructor.
|
protected |
Update a managed composition target to match current requirements.
If the composition target does not exist or the settings required from it have been changed, it is (re)created.
node | Node to attach to. |
managedCompositionTarget | Existing composition target container. |
requiredSize | Size required of the composition target. |
alphaRequired | Alpha requirement. |
depthRequired | Depth requirement. |
stencilRequired | Stencil requirement. |
tuple<TextureSharedPtr, bool> kanzi::NodeCompositor2D::beginFinalComposition | ( | CompositionStack & | compositionStack, |
CompositionManager * | compositionManager, | ||
Vector2 | requiredSize, | ||
bool | alphaRequired, | ||
bool | depthRequired, | ||
bool | stencilRequired | ||
) |
Begin final composition.
compositionStack | Composition stack to use. |
compositionManager | Composition manager to use. |
requiredSize | Size required of the composition target. |
alphaRequired | Alpha requirement. |
depthRequired | Depth requirement. |
stencilRequired | Stencil requirement. |
void kanzi::NodeCompositor2D::endFinalComposition | ( | CompositionStack & | compositionStack | ) |
End final composition.
compositionStack | Composition stack to use. |
void kanzi::NodeCompositor2D::blitFinalComposition | ( | Renderer3D & | renderer, |
CompositionStack & | compositionStack, | ||
CompositionManager * | compositionManager, | ||
TextureSharedPtr | renderTargetTexture, | ||
QuadDescription & | backgroundQuad, | ||
const Matrix3x3 & | transform, | ||
Vector2 | quadSize | ||
) |
Blit final composition.
renderer | Renderer to use. |
compositionStack | Composition stack to use. |
compositionManager | Composition manager to use. |
renderTargetTexture | Render target texture used. |
backgroundQuad | Clip quad for background area. |
transform | Transform used for rendering. |
quadSize | Rendered quad size. |
tuple<TextureSharedPtr, bool> kanzi::NodeCompositor2D::beginSelfComposition | ( | CompositionStack & | compositionStack, |
Vector2 | requiredSize | ||
) |
Begin self composition.
compositionStack | Composition stack to use. |
requiredSize | Size required of the composition target. |
void kanzi::NodeCompositor2D::endSelfComposition | ( | CompositionStack & | compositionStack | ) |
compositionStack | Composition stack to use. Begin self composition. |
void kanzi::NodeCompositor2D::blitSelfComposition | ( | Renderer3D & | renderer, |
CompositionStack & | compositionStack, | ||
Texture & | texture, | ||
QuadDescription & | backgroundQuad, | ||
const Matrix3x3 & | transform, | ||
Vector2 | quadSize | ||
) |
tuple<TextureSharedPtr, bool> kanzi::NodeCompositor2D::beginChildrenComposition | ( | CompositionStack & | compositionStack, |
Vector2 | requiredSize | ||
) |
Begin children composition.
compositionStack | Composition stack to use. |
requiredSize | Size required of the composition target. |
void kanzi::NodeCompositor2D::endChildrenComposition | ( | CompositionStack & | compositionStack | ) |
compositionStack | Composition stack to use. Begin self composition. |
void kanzi::NodeCompositor2D::blitChildrenComposition | ( | Renderer3D & | renderer, |
CompositionStack & | compositionStack, | ||
Texture & | texture, | ||
QuadDescription & | backgroundQuad, | ||
const Matrix3x3 & | transform, | ||
Vector2 | quadSize | ||
) |
void kanzi::NodeCompositor2D::renderCompositionQuad | ( | Renderer3D & | renderer, |
BrushRenderer & | brushRenderer, | ||
const Texture & | texture, | ||
QuadDescription & | backgroundQuad, | ||
const Matrix4x4 & | transform, | ||
Vector2 | quadSize | ||
) |
void kanzi::NodeCompositor2D::createCompositionBrushRenderer | ( | Node & | node, |
Brush & | brush, | ||
TextureSharedPtr | texture | ||
) |
TextureSharedPtr kanzi::NodeCompositor2D::getCacheChildrenCompositionTarget | ( | ) | const |
TextureSharedPtr kanzi::NodeCompositor2D::getCacheSelfCompositionTarget | ( | ) | const |
TextureSharedPtr kanzi::NodeCompositor2D::getFinalCompositionTarget | ( | ) | const |
Access 'final' managed composition target.
Will deploy the composition target if necessary.
void kanzi::NodeCompositor2D::resizeUserCompositionTarget | ( | Vector2 | compositionSize | ) |
Resize automatic sizes in user composition target if necessary.
compositionSize | Composition size to resize to. |
void kanzi::NodeCompositor2D::onDetached | ( | ) |
Run when node owning the compositor becomes detached.
void kanzi::NodeCompositor2D::restoreResources | ( | Vector2 | compositionSize | ) |
Restore resources.
Will restore all GL resources and resize render targets with automatic size.
compositionSize | Composition size to resize to. |
void kanzi::NodeCompositor2D::updateRender | ( | Node2D & | node, |
Vector2 | actualSize, | ||
bool | alphaRequired, | ||
bool | depthRequired, | ||
bool | stencilRequired, | ||
float | opacity, | ||
bool | opaquenessHint, | ||
bool | translucencyHint | ||
) |
Update for rendering, recreating composition targets and brush renderers as needed.
node | Node to attach to. |
actualSize | Size required of the composition target. |
alphaRequired | Alpha requirement. |
depthRequired | Depth requirement. |
stencilRequired | Stencil requirement. |
opacity | Opacity value that should be used for rendering. |
opaquenessHint | Should opaque rendering especially be used? |
translucencyHint | Should translucent rendering especially be used? |
|
inline |
Access cache children brush renderer.
|
inline |
Access cache self brush renderer.
|
inline |
Access composition brush renderer.
|
inline |
Tell if composition brush renderer has been created.
|
inline |
Tell if managed composition target has been created.
|
inline |
Set user composition brush.
|
inline |
Get size of user composition target.
|
inline |
Set user composition target.
|
inline |
Tell if cache children has been set.
|
inline |
Set cache children state.
enabled | New cache children state. |
|
inline |
Tell if cache result has been set.
|
inline |
Set cache result state.
enabled | New cache result state. |
|
inline |
Tell if cache self has been set.
|
inline |
Set cache self state.
enabled | New cache children state. |
|
inline |
Invalidate composition brush.
|
inline |
Tell if children cache is valid.
|
inline |
Mark self cache as valid.
valid | New validity status. |
|
inline |
Tell if final cache is valid.
|
inline |
Mark final cache as valid.
valid | New validity status. |
|
inline |
Tell if self cache is valid.
|
inline |
Mark self cache as valid.
valid | New validity status. |
|
inline |
Tell if compositing children is required.
|
inline |
Tell if compositing final result is required.
|
inline |
Tell if compositing self is required.
|
inline |
Is compositing requested from code?
|
inline |
Set compositing request.
|
inline |
Is force composition on?
|
inline |
Set force composition.
|
inline |
Is offscreen rendering on?
|
inline |
Set offscreen rendering flag.
|
inline |
Is Opacity composition request flag on?
|
inline |
Set opacity composition request flag.
|
inline |
Reset cache children managed composition target.
|
inline |
Reset cache self managed composition target.
|
inline |
Reset final managed composition target.
|
inline |
Access perspective transform.
|
inline |
Reset perspective transform.
|
inline |
Set perspective transform.
transform | Perspective transform to use. |
|
inline |
Access world perspective transform.
|
inline |
Reset world perspective transform.
|
inline |
Set world perspective transform.
transform | World perspective transform to use. |
|
protected |
Managed composition target for complete node composition.
|
protected |
Managed composition target for caching children.
|
protected |
Managed composition target for caching node contents.
|
protected |
User-set composition brush.
|
protected |
User-set composition target.
|
protected |
Brush used to render cached children.
|
protected |
Cache children brush renderer.
|
protected |
Brush used to render cached node itself.
|
protected |
Cache self brush renderer.
|
protected |
Composition brush managed by node.
|
protected |
Composition brush renderer.
|
protected |
Perspective components.
|
protected |
Bit mask for states affecting whether or not the node should compose its children.
|
protected |
Bit mask for states affecting whether or not the node should compose itself and its children.
|
protected |
Bit mask for states affecting whether or not the node should compose itself.