ComponentFactory.Quicksilver.Layout.GridLayout.MeasureElements C# (CSharp) Method

MeasureElements() private method

private MeasureElements ( MetaElementStateDict stateDict, ICollection elements ) : void
stateDict MetaElementStateDict
elements ICollection
return void
        private void MeasureElements(MetaElementStateDict stateDict,
                                     ICollection elements)
        {
            foreach (UIElement element in elements)
            {
                // Find the row/col definitions for this element
                int col = Math.Max(0, Math.Min(_columns.Count - 1, GetColumn(element)));
                int row = Math.Max(0, Math.Min(_rows.Count - 1, GetRow(element)));

                // Find the row/col spanning definitions for this element (convert to zero based spanning)
                int colSpan = Math.Max(Math.Min(_columns.Count - col, GetColumnSpan(element)), 1) - 1;
                int rowSpan = Math.Max(Math.Min(_rows.Count - row, GetRowSpan(element)), 1) - 1;

                // Find column width to use for measuring
                int index = col;
                double measureWidth = 0;
                do
                {
                    measureWidth += _proxyColumns[index].MeasureSize;

                } while ((measureWidth < double.PositiveInfinity) && (index++ < (col + colSpan)));

                // Find row height to use for measuring
                index = row;
                double measureHeight = 0;
                do
                {
                    measureHeight += _proxyRows[index].MeasureSize;

                } while ((measureWidth < double.PositiveInfinity) && (index++ < (row + rowSpan)));

                stateDict[element].Element.Measure(new Size(measureWidth, measureHeight));
            }
        }