using System; namespace Avalonia.Layout { /// /// Extension methods for layout types. /// public static class LayoutExtensions { /// /// Aligns a rect in a constraining rect according to horizontal and vertical alignment /// settings. /// /// The rect to align. /// The constraining rect. /// The horizontal alignment. /// The vertical alignment. /// public static Rect Align( this Rect rect, Rect constraint, HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment) { switch (horizontalAlignment) { case HorizontalAlignment.Center: rect = rect.WithX((constraint.Width - rect.Width) / 2); break; case HorizontalAlignment.Right: rect = rect.WithX(constraint.Width - rect.Width); break; case HorizontalAlignment.Stretch: rect = new Rect( 0, rect.Y, Math.Max(constraint.Width, rect.Width), rect.Height); break; } switch (verticalAlignment) { case VerticalAlignment.Center: rect = rect.WithY((constraint.Height - rect.Height) / 2); break; case VerticalAlignment.Bottom: rect = rect.WithY(constraint.Height - rect.Height); break; case VerticalAlignment.Stretch: rect = new Rect( rect.X, 0, rect.Width, Math.Max(constraint.Height, rect.Height)); break; } return rect; } } }