Composition functionality for 2D nodes. More...
#include <kanzi/core.ui/node/node_compositor2d.hpp>
Classes | |
| struct | CompositionState |
| CompositionState defines the state held by the compositor while Kanzi performs the composition, that is, between calls to beginComposition and blitComposition. More... | |
| struct | GeometryState |
| GeometryState defines the state used for rendering a quad. More... | |
Public Types | |
| enum | CompositingBits { CompositingBitUserTarget , CompositingBitBlend , CompositingBitCache , CompositingBitForce , CompositingBitOffscreen , CompositingBitBlendAndChildren , CompositingBitOpacityAndChildren , CompositingBitPerspective , CompositingBitRequest , CompositingBitEffect , CompositingBitCount } |
| Enum for compositing bit flags. More... | |
| enum | PotentialCompositingBits { PotentialCompositingBitCache , PotentialCompositingBitViewport , PotentialCompositingBitCount } |
| Enum for compositing potential bit flags. More... | |
Public Member Functions | |
| bool | beginComposition (Renderer3D &renderer, CompositionStack &compositionStack, CompositionManager *compositionManager, const CompositionContentRequirements &requirements, bool drawFlagSet) |
| Begins the composition. | |
| void | blitComposition (Domain *domain, Renderer3D &renderer, CompositionStack &compositionStack, CompositionManager *compositionManager, QuadDescription &backgroundQuad, const Matrix3x3 &transform, Vector2 quadSize, const Matrix4x4 *perspectiveMatrix, const Matrix4x4 *projectionMatrix) |
| Blits the composition. | |
| void | disableCaching () |
| Disable caching. | |
| void | enableCaching (CachingMode mode) |
| Enable caching. | |
| void | endComposition (Renderer3D &renderer, CompositionStack &compositionStack, CompositionManager *compositionManager) |
| End final composition. | |
| const Geometry & | getBlitGeometry () const |
| Gets the blit geometry. | |
| Matrix3x3 | getBlitLocalTransformation () const |
| Gets the blit geometry local transformation. | |
| CachingMode | getCachingMode () const |
| Gets the caching mode stored in the compositor. | |
| const Geometry & | getClearGeometry () const |
| Gets the clear geometry. | |
| Matrix3x3 | getClearLocalTransformation () const |
| Gets the local transformation of the blit geometry. | |
| BrushRenderer * | getCompositionBrushRenderer () const |
| Access composition brush renderer. | |
| TextureSharedPtr | getCompositionTarget () const |
| Access managed composition target. | |
| NodeEffect2D * | getEffect () const |
| Gets the active effect or null pointer. | |
| NodeEffectRenderer2D * | getEffectRenderer () const |
| Gets the active effect renderer or null pointer if compositor has no active effect. | |
| TextureSharedPtr | getManagedCompositionTarget () const |
| Gets the managed composition target. | |
| Vector2 | getUserCompositionTargetSize () const |
| Gets the size of user composition target. | |
| bool | hasCompositionBrushRenderer () const |
| Indicates whether a composition brush renderer has been created. | |
| bool | hasManagedCompositionTarget () const |
| Indicates whether a managed composition target has been allocated. | |
| bool | hasUserCompositionTarget () const |
| Indicates whether user composition target is set. | |
| void | invalidateCompositionBrush () |
| Invalidate composition brush. | |
| bool | isBlendCompositionRequested () const |
| Indicates whether composition due to blending is requested. | |
| bool | isBlendModeAndChildrenCompositionRequest () const |
| Indicates whether composition due to blend mode and children is requested. | |
| bool | isCacheValid () const |
| Indicates whether or not the cache is valid. | |
| bool | isCompositionPotentiallyRequired () const |
| Indicates whether composition can potentially be required during rendering. | |
| bool | isCompositionRequested () const |
| Indicates whether composition is requested from code. | |
| bool | isCompositionRequired () const |
| Indicates whether compositing the node is required. | |
| bool | isCompositionRequiredDuringRendering (const optional< Matrix3x3 > &transform, bool drawFlagSet) const |
| Indicates whether compositing the node is required during rendering. | |
| bool | isForceComposition () const |
| Indicates whether force composition flag is set. | |
| bool | isOffscreenRendering () const |
| Indicates whether offscreen rendering is enabled. | |
| bool | isOpacityAndChildrenCompositionRequest () const |
| Indicates whether composition due to opacity is requested. | |
| bool | isPerspectiveCompositionRequested () const |
| Indicates whether composition due to perspective transform is requested. | |
| bool | isPotentialCompositionBitViewport () const |
| Indicates whether potential composition request flag is set. | |
| void | onDetached () |
| Kanzi calls this function when the node that owns the compositor becomes detached. | |
| void | renderCompositionQuad (Domain *domain, Renderer &renderer, BrushRenderer &brushRenderer, const Texture &texture, QuadDescription &backgroundQuad, const Matrix4x4 &transform, Vector2 quadSize) |
| Render composition quad. | |
| void | resetBlitGeometry () |
| Resets the blit geometry. | |
| void | resetClearGeometry () |
| Resets the clear geometry. | |
| void | resizeUserCompositionTarget (Vector2 compositionSize) |
| Resize automatic sizes in user composition target if necessary. | |
| void | restoreResources (Vector2 compositionSize) |
| Restore resources. | |
| void | setBlendCompositionRequested (bool enabled) |
| Sets the blend composition request flag. | |
| void | setBlendModeAndChildrenCompositionRequested (bool enabled) |
| Sets the opacity composition request flag. | |
| void | setBlitGeometry (Domain *domain, Renderer &renderer, const QuadDescription &quad) |
| Sets the blit geometry for the compositor. | |
| void | setCacheValid (bool valid) |
| Set cache validity flag. | |
| void | setClearGeometry (Domain *domain, Renderer &renderer, const QuadDescription &quad) |
| Sets the clear geometry for the compositor. | |
| void | setCompositionRequested (bool enabled) |
| Sets the compositing request. | |
| void | setEffect (NodeEffect2D *effect) |
| Sets the active effect or clears the active effect with empty shared pointer. | |
| void | setForceComposition (bool enabled) |
| Sets force composition. | |
| void | setOffscreenRendering (bool enabled) |
| Sets the offscreen rendering flag. | |
| void | setOpacityAndChildrenCompositionRequested (bool enabled) |
| Sets the opacity composition request flag. | |
| void | setPerspectiveCompositionRequested (bool enabled) |
| Sets the perspective composition request flag. | |
| void | setPotentialCompositionBitVierport (bool enabled) |
| Sets the potential composition request flag. | |
| void | setUserCompositionBrush (BrushSharedPtr brush) |
| Sets user composition brush. | |
| void | setUserCompositionTarget (TextureSharedPtr texture) |
| Set user composition target. | |
| void | updateRender (Node2D &node, const CompositionContentRequirements &requirements, optional< int > blendMode, float opacity) |
| Update for rendering, recreating composition targets and brush renderers as needed. | |
| ~NodeCompositor2D () | |
| Destructor. | |
Static Public Member Functions | |
| static unique_ptr< NodeCompositor2D > | create () |
| Creates a NodeCompositor2D. | |
Protected Attributes | |
| optional< int > | m_blendMode |
| Saved blend mode. | |
| GeometryState | m_blitGeometryState |
| Geometry state for blits. | |
| bool | m_brushRenderersDirty |
| Brush renderer dirty flag. | |
| bool | m_cacheValid |
| Cache status flag. | |
| CachingMode | m_cachingMode |
| Caching mode setting. | |
| GeometryState | m_clearGeometryState |
| Geometry state for clears. | |
| bitset< CompositingBitCount > | m_compositingMask |
| Bit mask for states affecting whether or not the node should compose itself and its children. | |
| BrushRendererPtr | m_compositionBrushRenderer |
| Composition brush renderer. | |
| NodeEffectRenderer2DUniquePtr | m_effectRenderer |
| Effect renderer instance, or null if no effect is active. | |
| bool | m_effectRequiresCompositionBlit |
| Whether the effect blit needs to be followed with composition blit. | |
| CompositionBrushSharedPtr | m_managedCompositionBrush |
| Composition brush managed by node. | |
| TextureSharedPtr | m_managedCompositionTarget |
| Current framebuffer. | |
| bitset< PotentialCompositingBitCount > | m_potentialCompositingMask |
| Bit mask for states affecting whether or not the node should potentially compose itself and its children. | |
| optional< CompositionState > | m_state |
| Active composition state, or nullopt if the composition is not active. | |
| BrushSharedPtr | m_userCompositionBrush |
| User-set composition brush. | |
| TextureSharedPtr | m_userCompositionTarget |
| User-set composition target. | |
Composition functionality for 2D nodes.
Enum for compositing bit flags.
| kanzi::NodeCompositor2D::~NodeCompositor2D | ( | ) |
Destructor.
|
explicitprotected |
Default constructor.
|
static |
Creates a NodeCompositor2D.
| bool kanzi::NodeCompositor2D::beginComposition | ( | Renderer3D & | renderer, |
| CompositionStack & | compositionStack, | ||
| CompositionManager * | compositionManager, | ||
| const CompositionContentRequirements & | requirements, | ||
| bool | drawFlagSet ) |
Begins the composition.
| renderer | Renderer to use. |
| compositionStack | Composition stack to use. |
| compositionManager | Composition manager to use. |
| requirements | Requirements for the composition target. |
| drawFlagSet | Whether the draw flag is set for the node or any of its descendants. |
requirements parameter. | void kanzi::NodeCompositor2D::endComposition | ( | Renderer3D & | renderer, |
| CompositionStack & | compositionStack, | ||
| CompositionManager * | compositionManager ) |
End final composition.
| renderer | Renderer to use. |
| compositionStack | Composition stack to use. |
| compositionManager | Composition manager to use. |
| void kanzi::NodeCompositor2D::blitComposition | ( | Domain * | domain, |
| Renderer3D & | renderer, | ||
| CompositionStack & | compositionStack, | ||
| CompositionManager * | compositionManager, | ||
| QuadDescription & | backgroundQuad, | ||
| const Matrix3x3 & | transform, | ||
| Vector2 | quadSize, | ||
| const Matrix4x4 * | perspectiveMatrix, | ||
| const Matrix4x4 * | projectionMatrix ) |
Blits the composition.
| domain | Domain to use. |
| renderer | Renderer to use. |
| compositionStack | Composition stack to use. |
| compositionManager | Composition manager to use. |
| backgroundQuad | Clip quad for background area. |
| transform | Transform used for rendering. |
| quadSize | Rendered quad size. |
| perspectiveMatrix | Optional transform to use for perspective projection. |
| projectionMatrix | Optional projection to use for perspective projection. |
| void kanzi::NodeCompositor2D::renderCompositionQuad | ( | Domain * | domain, |
| Renderer & | renderer, | ||
| BrushRenderer & | brushRenderer, | ||
| const Texture & | texture, | ||
| QuadDescription & | backgroundQuad, | ||
| const Matrix4x4 & | transform, | ||
| Vector2 | quadSize ) |
| TextureSharedPtr kanzi::NodeCompositor2D::getCompositionTarget | ( | ) | const |
Access managed composition target.
Resize automatic sizes in user composition target if necessary.
| compositionSize | Composition size to resize to. |
| void kanzi::NodeCompositor2D::onDetached | ( | ) |
Kanzi calls this function when the node that owns the compositor becomes detached.
Restore resources.
Will restore all GL resources and resize render targets with automatic size.
| compositionSize | Composition size to resize to. |
renderer parameter. | void kanzi::NodeCompositor2D::updateRender | ( | Node2D & | node, |
| const CompositionContentRequirements & | requirements, | ||
| optional< int > | blendMode, | ||
| float | opacity ) |
Update for rendering, recreating composition targets and brush renderers as needed.
| node | The node to which to attach. |
| blendMode | Optional blend mode to select for the composition brush. |
| requirements | Requirements for the composition target. |
| opacity | Opacity value that should be used for rendering. |
blendMode parameter. opaquenessHint parameter. requirements parameter. translucencyHint parameter.
|
inline |
Access composition brush renderer.
|
inline |
Indicates whether a composition brush renderer has been created.
|
inline |
Sets user composition brush.
| brush | Brush to use as the composition brush. |
| Vector2 kanzi::NodeCompositor2D::getUserCompositionTargetSize | ( | ) | const |
Gets the size of user composition target.
|
inline |
Indicates whether user composition target is set.
|
inline |
Set user composition target.
|
inline |
Invalidate composition brush.
|
inline |
Gets the caching mode stored in the compositor.
|
inline |
Enable caching.
| mode | New caching mode, must not be CachingModeDisabled. |
|
inline |
Disable caching.
|
inline |
Indicates whether or not the cache is valid.
Set cache validity flag.
| valid | Cache status flag. |
|
inline |
Indicates whether compositing the node is required.
This query does not take draw flags into account.
|
inline |
Indicates whether composition can potentially be required during rendering.
This status is in addition to the obligatory requirement.
| bool kanzi::NodeCompositor2D::isCompositionRequiredDuringRendering | ( | const optional< Matrix3x3 > & | transform, |
| bool | drawFlagSet ) const |
Indicates whether compositing the node is required during rendering.
This status is in addition to the obligatory requirement.
| transform | Local override transform for the node. |
| drawFlagSet | Whether the draw flag is set for the node or any of its descendants. |
|
inline |
Indicates whether composition is requested from code.
Sets the compositing request.
| enabled | New flag state. |
|
inline |
Indicates whether force composition flag is set.
Sets force composition.
| enabled | New flag state. |
|
inline |
Indicates whether offscreen rendering is enabled.
Sets the offscreen rendering flag.
| enabled | New flag state. |
|
inline |
Indicates whether composition due to blending is requested.
Sets the blend composition request flag.
| enabled | New flag state. |
|
inline |
Indicates whether composition due to blend mode and children is requested.
Sets the opacity composition request flag.
| enabled | New flag state. |
|
inline |
Indicates whether composition due to opacity is requested.
Sets the opacity composition request flag.
| enabled | New flag state. |
|
inline |
Indicates whether composition due to perspective transform is requested.
Sets the perspective composition request flag.
| enabled | New flag state. |
|
inline |
Indicates whether potential composition request flag is set.
Sets the potential composition request flag.
| enabled | New flag state. |
|
inline |
Gets the managed composition target.
|
inline |
Indicates whether a managed composition target has been allocated.
| void kanzi::NodeCompositor2D::setEffect | ( | NodeEffect2D * | effect | ) |
Sets the active effect or clears the active effect with empty shared pointer.
| effect | Effect instance or empty shared pointer. |
| NodeEffect2D * kanzi::NodeCompositor2D::getEffect | ( | ) | const |
Gets the active effect or null pointer.
|
inline |
Gets the active effect renderer or null pointer if compositor has no active effect.
Gets the clear geometry.
| void kanzi::NodeCompositor2D::resetClearGeometry | ( | ) |
Resets the clear geometry.
| void kanzi::NodeCompositor2D::setClearGeometry | ( | Domain * | domain, |
| Renderer & | renderer, | ||
| const QuadDescription & | quad ) |
| Matrix3x3 kanzi::NodeCompositor2D::getClearLocalTransformation | ( | ) | const |
Gets the local transformation of the blit geometry.
Gets the blit geometry.
| void kanzi::NodeCompositor2D::resetBlitGeometry | ( | ) |
Resets the blit geometry.
| void kanzi::NodeCompositor2D::setBlitGeometry | ( | Domain * | domain, |
| Renderer & | renderer, | ||
| const QuadDescription & | quad ) |
| Matrix3x3 kanzi::NodeCompositor2D::getBlitLocalTransformation | ( | ) | const |
Gets the blit geometry local transformation.
|
protected |
Update the managed composition target to match current requirements.
If the composition target does not exist or the settings required from it have changed, it is (re)created.
| node | Node to attach to. |
| managedCompositionTarget | Existing composition target. |
| requirements | Requirements for the composition target. |
requirements parameter.
|
protected |
Begins the final composition.
| compositionStack | Composition stack to use. |
| compositionManager | Composition manager to use. |
| requirements | Requirements for the composition target. |
| needsRender | Whether to perform node rendering. |
requirements parameter.
|
protected |
Ends the final composition.
| compositionStack | Composition stack to use. |
|
protected |
Blits the final composition.
| domain | Domain to use. |
| 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. |
| perspectiveMatrix | Optional transform to use for perspective projection. |
| projectionMatrix | Optional projection to use for perspective projection. |
Indicates whether node rendering is required.
|
protected |
Current framebuffer.
|
protected |
Caching mode setting.
|
protected |
Cache status flag.
|
protected |
User-set composition brush.
|
protected |
User-set composition target.
|
protected |
Composition brush managed by node.
|
protected |
Composition brush renderer.
|
protected |
Geometry state for blits.
|
protected |
Geometry state for clears.
|
protected |
Saved blend mode.
|
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 potentially compose itself and its children.
|
protected |
Active composition state, or nullopt if the composition is not active.
|
protected |
Effect renderer instance, or null if no effect is active.
|
protected |
Whether the effect blit needs to be followed with composition blit.