Exemplo n.º 1
0
        /// <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;
                }
            }
        }