/// <summary> /// Group the specified elements. /// </summary> protected override void Group() { ElementsGroup.Clear(); if (Elements.Count == 0) { return; } if (Layout.IsHorizontal) { GroupHorizontal(ElementsGroup); } else { GroupVertical(ElementsGroup); } var rows = ElementsGroup.Count; var columns = EasyLayoutUtilites.MaxCount(ElementsGroup); if ((Layout.CompactConstraint == CompactConstraints.MaxRowCount) && (rows > Layout.ConstraintCount)) { ElementsGroup.Clear(); GroupByRows(); } else if ((Layout.CompactConstraint == CompactConstraints.MaxColumnCount) && (columns > Layout.ConstraintCount)) { ElementsGroup.Clear(); GroupByColumns(); } if (!Layout.TopToBottom) { ElementsGroup.Reverse(); } if (Layout.RightToLeft) { ElementsGroup.ForEach(ReverseList); } }
/// <summary> /// Shrink elements on overflow. /// </summary> protected void ShrinkOnOverflow() { if (ElementsGroup.Count == 0) { return; } var size = Layout.InternalSize; var rows = ElementsGroup.Count - 1; var columns = EasyLayoutUtilites.MaxCount(ElementsGroup) - 1; var size_without_spacing = new Vector2(size.x - (Layout.Spacing.x * columns), size.y - (Layout.Spacing.y * rows)); var ui_size_without_spacing = new Vector2(Layout.UISize.x - (Layout.Spacing.x * columns), Layout.UISize.y - (Layout.Spacing.y * rows)); var scale = GetShrinkScale(size_without_spacing, ui_size_without_spacing); foreach (var row in ElementsGroup) { foreach (var elem in row) { elem.NewWidth = elem.Width * scale; elem.NewHeight = elem.Height * scale; } } }