Table of Contents

Class Compositor

Namespace
Avalonia.Rendering.Composition
Assembly
Avalonia.Base.dll

The Compositor class manages communication between UI-thread and render-thread parts of the composition engine. It also serves as a factory to create UI-thread parts of various composition objects

public class Compositor
Inheritance
Compositor
Inherited Members

Constructors

Compositor(IPlatformGraphics?, bool)

Creates a new compositor on a specified render loop that would use a particular GPU

[PrivateApi]
public Compositor(IPlatformGraphics? gpu, bool useUiThreadForSynchronousCommits = false)

Parameters

gpu IPlatformGraphics
useUiThreadForSynchronousCommits bool

Methods

CreateAnimationGroup()

public CompositionAnimationGroup CreateAnimationGroup()

Returns

CompositionAnimationGroup

CreateBooleanKeyFrameAnimation()

public BooleanKeyFrameAnimation CreateBooleanKeyFrameAnimation()

Returns

BooleanKeyFrameAnimation

CreateColorKeyFrameAnimation()

public ColorKeyFrameAnimation CreateColorKeyFrameAnimation()

Returns

ColorKeyFrameAnimation

CreateCompositionVisualSnapshot(CompositionVisual, double)

public Task<Bitmap> CreateCompositionVisualSnapshot(CompositionVisual visual, double scaling)

Parameters

visual CompositionVisual
scaling double

Returns

Task<Bitmap>

CreateContainerVisual()

public CompositionContainerVisual CreateContainerVisual()

Returns

CompositionContainerVisual

CreateCustomVisual(CompositionCustomVisualHandler)

public CompositionCustomVisual CreateCustomVisual(CompositionCustomVisualHandler handler)

Parameters

handler CompositionCustomVisualHandler

Returns

CompositionCustomVisual

CreateDoubleKeyFrameAnimation()

public DoubleKeyFrameAnimation CreateDoubleKeyFrameAnimation()

Returns

DoubleKeyFrameAnimation

CreateDrawingSurface()

public CompositionDrawingSurface CreateDrawingSurface()

Returns

CompositionDrawingSurface

CreateExpressionAnimation()

public ExpressionAnimation CreateExpressionAnimation()

Returns

ExpressionAnimation

CreateExpressionAnimation(string)

public ExpressionAnimation CreateExpressionAnimation(string expression)

Parameters

expression string

Returns

ExpressionAnimation

CreateImplicitAnimationCollection()

public ImplicitAnimationCollection CreateImplicitAnimationCollection()

Returns

ImplicitAnimationCollection

CreateQuaternionKeyFrameAnimation()

public QuaternionKeyFrameAnimation CreateQuaternionKeyFrameAnimation()

Returns

QuaternionKeyFrameAnimation

CreateScalarKeyFrameAnimation()

public ScalarKeyFrameAnimation CreateScalarKeyFrameAnimation()

Returns

ScalarKeyFrameAnimation

CreateSolidColorVisual()

public CompositionSolidColorVisual CreateSolidColorVisual()

Returns

CompositionSolidColorVisual

CreateSurfaceVisual()

public CompositionSurfaceVisual CreateSurfaceVisual()

Returns

CompositionSurfaceVisual

CreateVector2KeyFrameAnimation()

public Vector2KeyFrameAnimation CreateVector2KeyFrameAnimation()

Returns

Vector2KeyFrameAnimation

CreateVector3DKeyFrameAnimation()

public Vector3DKeyFrameAnimation CreateVector3DKeyFrameAnimation()

Returns

Vector3DKeyFrameAnimation

CreateVector3KeyFrameAnimation()

public Vector3KeyFrameAnimation CreateVector3KeyFrameAnimation()

Returns

Vector3KeyFrameAnimation

CreateVector4KeyFrameAnimation()

public Vector4KeyFrameAnimation CreateVector4KeyFrameAnimation()

Returns

Vector4KeyFrameAnimation

CreateVectorKeyFrameAnimation()

public VectorKeyFrameAnimation CreateVectorKeyFrameAnimation()

Returns

VectorKeyFrameAnimation

RequestCommitAsync()

Requests pending changes in the composition objects to be serialized and sent to the render thread

public Task RequestCommitAsync()

Returns

Task

A task that completes when sent changes are applied on the render thread

RequestCompositionBatchCommitAsync()

Requests pending changes in the composition objects to be serialized and sent to the render thread

public CompositionBatch RequestCompositionBatchCommitAsync()

Returns

CompositionBatch

A CompositionBatch object that provides batch lifetime information

RequestCompositionUpdate(Action)

Enqueues a callback to be called before the next scheduled commit. If there is no scheduled commit it automatically schedules one This is useful for updating your composition tree objects after binding and layout passes have completed

public void RequestCompositionUpdate(Action action)

Parameters

action Action

TryGetCompositionGpuInterop()

Attempts to query for GPU interop feature from the platform render interface

public ValueTask<ICompositionGpuInterop?> TryGetCompositionGpuInterop()

Returns

ValueTask<ICompositionGpuInterop>

TryGetDefaultCompositor()

Attempts to get the Compositor instance that will be used by default for new TopLevels created by the current platform backend.

This won't work for every single platform backend and backend settings, e. g. with web we'll need to have separate Compositor instances per output HTML canvas since they don't share OpenGL state. Another case where default compositor won't be available is our planned multithreaded rendering mode where each window would get its own Compositor instance

This method is still useful for obtaining GPU device LUID to speed up initialization, but you should always check if default Compositor matches one used by our control once it gets attached to a TopLevel

public static Compositor? TryGetDefaultCompositor()

Returns

Compositor

TryGetRenderInterfaceFeature(Type)

Attempts to query for a feature from the platform render interface

public ValueTask<object?> TryGetRenderInterfaceFeature(Type featureType)

Parameters

featureType Type

Returns

ValueTask<object>