internal static List <FlowPanelLayoutUtilities.LineInfo> ExtractLines(SceneElement container)
        {
            List <FlowPanelLayoutUtilities.LineInfo> list = new List <FlowPanelLayoutUtilities.LineInfo>();
            IViewPanel  flowPanel   = MoveStrategy.GetContainerHost(container) as IViewPanel;
            Orientation orientation = flowPanel.Orientation;
            double      num         = -1.0;
            Point       startPoint  = new Point(0.0, 0.0);

            FlowPanelLayoutUtilities.InitializeStartPoint(ref startPoint, flowPanel);
            int startElementIndex = 0;
            int endElementIndex   = 0;
            ActualBoundsInParent actualBoundsInParent = new ActualBoundsInParent(container);

            for (int index = 0; index < flowPanel.ChildrenCount; ++index)
            {
                IViewVisual child1 = flowPanel.GetChild(index);
                Rect        rect   = actualBoundsInParent[child1];
                num = FlowPanelLayoutUtilities.UpdateLineLength(num, startPoint, rect, orientation);
                if (endElementIndex + 1 < flowPanel.ChildrenCount)
                {
                    IViewVisual child2 = flowPanel.GetChild(endElementIndex + 1);
                    Rect        nextElementLayoutBounds = actualBoundsInParent[child2];
                    if (FlowPanelLayoutUtilities.IsNextElementStartOfNewLine(rect, nextElementLayoutBounds, orientation))
                    {
                        list.Add(new FlowPanelLayoutUtilities.LineInfo(startPoint, num, startElementIndex, endElementIndex));
                        startElementIndex = endElementIndex + 1;
                        FlowPanelLayoutUtilities.UpdateStartPoint(ref startPoint, num, orientation);
                        num = -1.0;
                    }
                    ++endElementIndex;
                }
                else
                {
                    list.Add(new FlowPanelLayoutUtilities.LineInfo(startPoint, num, startElementIndex, endElementIndex));
                    break;
                }
            }
            return(list);
        }