private static RawFlowLayout OrientedFlowParent(Orientation orientation, string name, LayoutSize size, FlowLayoutStyle style, params LayoutNodeOrInstruction[] children) { var workableAreaStyle = new LayoutStyle(margin: style.Margin, alignment: style.Alignment); var workableArea = LayoutNode.NamelessOneOffParent(size, workableAreaStyle, LayoutNode.Leaf("workableArea", LayoutSize.StretchedBoth())).Bake().GetNode("workableArea"); var rows = new FlowLayoutRows(workableArea.Size, style, orientation); foreach (var item in children) { if (item.IsLayoutNode) { if (!rows.CanFitItemPerpendicular(item)) { break; } if (rows.CanFitItemAlongCurrentRow(item)) { rows.AddItemToCurrentRow(item); } else { rows.CreateNextRowAndAdd(item); } } else if (item.IsInstruction) { rows.ConsumeInstruction(item); } } return(new RawFlowLayout(name, size, workableAreaStyle, orientation, style, rows)); }
public static LayoutNode StretchedSpacer() { return(new LayoutNode(false, LayoutNodeName.Nameless, LayoutSize.StretchedBoth(), Orientation.Horizontal, LayoutStyle.Empty, null)); }