Microsoft.Phone.Controls.WrapPanel.ArrangeLine C# (CSharp) Method

ArrangeLine() private method

private ArrangeLine ( int lineStart, int lineEnd, double directDelta, double indirectOffset, double indirectGrowth ) : void
lineStart int
lineEnd int
directDelta double
indirectOffset double
indirectGrowth double
return void
        private void ArrangeLine( int lineStart, int lineEnd, double? directDelta, double indirectOffset, double indirectGrowth )
        {
            double directOffset = 0.0;

            Orientation o = Orientation;
            bool isHorizontal = o == Orientation.Horizontal;

            UIElementCollection children = Children;
            for ( int index = lineStart; index < lineEnd; index++ )
            {
                // Get the size of the element
                UIElement element = children[ index ];
                OrientedSize elementSize = new OrientedSize( o, element.DesiredSize.Width, element.DesiredSize.Height );

                // Determine if we should use the element's desired size or the
                // fixed item width or height
                double directGrowth = directDelta != null ?
                    directDelta.Value :
                    elementSize.Direct;

                // Arrange the element
                Rect bounds = isHorizontal ?
                    new Rect( directOffset, indirectOffset, directGrowth, indirectGrowth ) :
                    new Rect( indirectOffset, directOffset, indirectGrowth, directGrowth );
                element.Arrange( bounds );

                directOffset += directGrowth;
            }
        }
    }