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
IPlatformGraphicsuseUiThreadForSynchronousCommits
bool
Methods
CreateAnimationGroup()
public CompositionAnimationGroup CreateAnimationGroup()
Returns
CreateBooleanKeyFrameAnimation()
public BooleanKeyFrameAnimation CreateBooleanKeyFrameAnimation()
Returns
CreateColorKeyFrameAnimation()
public ColorKeyFrameAnimation CreateColorKeyFrameAnimation()
Returns
CreateCompositionVisualSnapshot(CompositionVisual, double)
public Task<Bitmap> CreateCompositionVisualSnapshot(CompositionVisual visual, double scaling)
Parameters
visual
CompositionVisualscaling
double
Returns
CreateContainerVisual()
public CompositionContainerVisual CreateContainerVisual()
Returns
CreateCustomVisual(CompositionCustomVisualHandler)
public CompositionCustomVisual CreateCustomVisual(CompositionCustomVisualHandler handler)
Parameters
handler
CompositionCustomVisualHandler
Returns
CreateDoubleKeyFrameAnimation()
public DoubleKeyFrameAnimation CreateDoubleKeyFrameAnimation()
Returns
CreateDrawingSurface()
public CompositionDrawingSurface CreateDrawingSurface()
Returns
CreateExpressionAnimation()
public ExpressionAnimation CreateExpressionAnimation()
Returns
CreateExpressionAnimation(string)
public ExpressionAnimation CreateExpressionAnimation(string expression)
Parameters
expression
string
Returns
CreateImplicitAnimationCollection()
public ImplicitAnimationCollection CreateImplicitAnimationCollection()
Returns
CreateQuaternionKeyFrameAnimation()
public QuaternionKeyFrameAnimation CreateQuaternionKeyFrameAnimation()
Returns
CreateScalarKeyFrameAnimation()
public ScalarKeyFrameAnimation CreateScalarKeyFrameAnimation()
Returns
CreateSolidColorVisual()
public CompositionSolidColorVisual CreateSolidColorVisual()
Returns
CreateSurfaceVisual()
public CompositionSurfaceVisual CreateSurfaceVisual()
Returns
CreateVector2KeyFrameAnimation()
public Vector2KeyFrameAnimation CreateVector2KeyFrameAnimation()
Returns
CreateVector3DKeyFrameAnimation()
public Vector3DKeyFrameAnimation CreateVector3DKeyFrameAnimation()
Returns
CreateVector3KeyFrameAnimation()
public Vector3KeyFrameAnimation CreateVector3KeyFrameAnimation()
Returns
CreateVector4KeyFrameAnimation()
public Vector4KeyFrameAnimation CreateVector4KeyFrameAnimation()
Returns
CreateVectorKeyFrameAnimation()
public VectorKeyFrameAnimation CreateVectorKeyFrameAnimation()
Returns
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
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
TryGetRenderInterfaceFeature(Type)
Attempts to query for a feature from the platform render interface
public ValueTask<object?> TryGetRenderInterfaceFeature(Type featureType)
Parameters
featureType
Type