/// <summary>
        /// Arranges the specified control considering the horizontal and vertical alignment of the
        /// given control.
        /// </summary>
        /// <param name="control">The control.</param>
        /// <param name="position">The position.</param>
        /// <param name="constraintSize">The constraint size.</param>
        internal static void Arrange(UIControl control, Vector2F position, Vector2F constraintSize)
        {
            if (control == null)
            {
                return;
            }

            Vector2F childPosition = position;
            Vector2F childSize     = constraintSize;

            switch (control.HorizontalAlignment)
            {
            case HorizontalAlignment.Left:
                childPosition.X = position.X + control.X;
                childSize.X     = control.DesiredWidth;
                break;

            case HorizontalAlignment.Center:
                childPosition.X = position.X + constraintSize.X / 2 - control.DesiredWidth / 2;
                childSize.X     = control.DesiredWidth;
                break;

            case HorizontalAlignment.Right:
                childPosition.X = position.X + constraintSize.X - control.DesiredWidth;
                childSize.X     = control.DesiredWidth;
                break;

            default: // HorizontalAlignment.Stretch
                break;
            }

            switch (control.VerticalAlignment)
            {
            case VerticalAlignment.Top:
                childPosition.Y = position.Y + control.Y;
                childSize.Y     = control.DesiredHeight;
                break;

            case VerticalAlignment.Center:
                childPosition.Y = position.Y + constraintSize.Y / 2 - control.DesiredHeight / 2;
                childSize.Y     = control.DesiredHeight;
                break;

            case VerticalAlignment.Bottom:
                childPosition.Y = position.Y + constraintSize.Y - control.DesiredHeight;
                childSize.Y     = control.DesiredHeight;
                break;

            default: // VerticalAlignment.Stretch
                break;
            }

            control.Arrange(childPosition, childSize);
        }