AerialForWindowsTester.AspectRatioLayoutDecorator.ArrangeOverride C# (CSharp) Method

ArrangeOverride() protected method

protected ArrangeOverride ( Size arrangeSize ) : Size
arrangeSize System.Windows.Size
return System.Windows.Size
        protected override Size ArrangeOverride(Size arrangeSize)
        {
            if (Child != null) {
                var newSize = SizeToRatio(arrangeSize, false);

                double widthDelta = arrangeSize.Width - newSize.Width;
                double heightDelta = arrangeSize.Height - newSize.Height;

                double top = 0;
                double left = 0;

                if (!double.IsNaN(widthDelta)
                    && !double.IsInfinity(widthDelta)) {
                    left = widthDelta/2;
                }

                if (!double.IsNaN(heightDelta)
                    && !double.IsInfinity(heightDelta)) {
                    top = heightDelta/2;
                }

                var finalRect = new Rect(new Point(left, top), newSize);
                Child.Arrange(finalRect);
            }

            return arrangeSize;
        }