using System.Numerics;
using Avalonia.Platform;
// Special license applies License.md
namespace Avalonia.Rendering.Composition.Server
{
///
/// Server-side counterpart of .
/// Mostly propagates update and render calls, but is also responsible
/// for updating adorners in deferred manner
///
internal partial class ServerCompositionContainerVisual : ServerCompositionVisual
{
public ServerCompositionVisualCollection Children { get; private set; } = null!;
protected override void RenderCore(CompositorDrawingContextProxy canvas, Rect currentTransformedClip)
{
base.RenderCore(canvas, currentTransformedClip);
foreach (var ch in Children)
{
ch.Render(canvas, currentTransformedClip);
}
}
public override void Update(ServerCompositionTarget root)
{
base.Update(root);
foreach (var child in Children)
{
if (child.AdornedVisual != null)
root.EnqueueAdornerUpdate(child);
else
child.Update(root);
}
IsDirtyComposition = false;
}
partial void Initialize()
{
Children = new ServerCompositionVisualCollection(Compositor);
}
}
}