public ChildArranger(AbstractPoint startingOffset, int childrenPerWrappingLevel) { this._childrenPerWrappingLevel = childrenPerWrappingLevel; this._currentOffset = startingOffset; this._currentWrappingLevelChildrenCount = 0; this._currentWrappingLevelWidth = 0.0; this._biggestHeight = 0.0; }
public AbstractPoint GetPositionOfNextChild(AbstractSize childSize) { if (this._currentWrappingLevelChildrenCount >= this._childrenPerWrappingLevel) { this.ShiftToNewWrappingLevel(); } AbstractPoint currentOffset = this._currentOffset; if (childSize.AbstractWidth > this._currentWrappingLevelWidth) { this._currentWrappingLevelWidth = childSize.AbstractWidth; } this.ShiftToBelowPreviousChild(childSize.AbstractHeight); return(currentOffset); }
protected override Size ArrangeOverride(Size finalSize) { int totalCount = this.NonCollapsedChildren.Count <UIElement>(); if (totalCount == 0) { return(finalSize); } GreedyWrapPanel.ChildArranger childArranger = new GreedyWrapPanel.ChildArranger(new AbstractPoint(Orientation.Vertical, this.Orientation, 0.0, 0.0), GreedyWrapPanel.CalculateCountPerWrappingLevel(totalCount, this.ActualWrappingLevels)); foreach (UIElement nonCollapsedChild in this.NonCollapsedChildren) { AbstractSize abstractSize = this.ConvertToAbstractSize(nonCollapsedChild.DesiredSize); AbstractPoint positionOfNextChild = childArranger.GetPositionOfNextChild(abstractSize); nonCollapsedChild.Arrange(new Rect(positionOfNextChild.RealPoint, nonCollapsedChild.DesiredSize)); } return(childArranger.TotalSize.RealSize); }
protected override Size ArrangeOverride(Size constraint) { UIElement[] array = this.NonCollapsedChildren.ToArray <UIElement>(); AbstractPoint abstractPoint = this.MakeAbstractPoint(); AbstractSize abstractSize1 = this.MakeAbstractSize(constraint); AbstractSize abstractItemSpacing = this.AbstractItemSpacing; double itemSpacing; double remainder; this.ComputeItemSpacing(this._measureInfo.RowCount, abstractSize1.AbstractHeight, this._measureInfo.AbstractSize.AbstractHeight, abstractItemSpacing.AbstractHeight, out itemSpacing, out remainder); int index1 = 0; for (int index2 = 0; index2 < this._measureInfo.RowCount; ++index2) { SpacingWrapPanel.RowInfo row = this._measureInfo.Rows[index2]; int childCount = row.ChildCount; double abstractWidth1 = abstractSize1.AbstractWidth; AbstractSize abstractSize2 = row.AbstractSize; double abstractWidth2 = abstractSize2.AbstractWidth; double abstractWidth3 = abstractItemSpacing.AbstractWidth; double num1; double num2; this.ComputeItemSpacing(childCount, abstractWidth1, abstractWidth2, abstractWidth3, out num1, out num2); int index3 = 0; while (index3 < row.ChildCount) { UIElement uiElement = array[index1]; AbstractSize childSize = row.ChildSizes[index3]; Rect finalRect = new Rect(abstractPoint.RealPoint, childSize.RealSize); uiElement.Arrange(finalRect); double num3 = num1 + ((double)index3 < num2 ? 1.0 : 0.0); abstractPoint.AbstractX += childSize.AbstractWidth + num3; ++index3; ++index1; } double num4 = itemSpacing + ((double)index2 < remainder ? 1.0 : 0.0); abstractPoint.AbstractX = 0.0; ref AbstractPoint local3 = ref abstractPoint; double abstractY = local3.AbstractY; abstractSize2 = row.AbstractSize; double num5 = abstractSize2.AbstractHeight + num4; local3.AbstractY = abstractY + num5; }
public AbstractPoint(Orientation naturalOrientation, Orientation actualOrientation, double realX, double realY) { this = new AbstractPoint(naturalOrientation, actualOrientation); this._abstractPoint = this.IsNatural ? new Point(realX, realY) : new Point(realY, realX); }
public AbstractPoint(Orientation naturalOrientation, Orientation actualOrientation, Point realPoint) { this = new AbstractPoint(naturalOrientation, actualOrientation); this._abstractPoint = this.IsNatural ? realPoint : AbstractPoint.Invert(realPoint); }