public void Arrange(float x, float y, float width, float height) { for (var i = 0; i < _views.Length; i++) { _scope.Arrange(ref _views[i], x, y, width, height); } }
public override void LayoutSubviews() { var scope = new LayoutScope <UIView>(LayoutAdapter.Instance); var root = LayoutHandler?.Invoke(scope); if (root != null) { var frame = Frame; scope.Arrange(root.Value, (float)frame.X, (float)frame.Y, (float)frame.Width, (float)frame.Height); } }
protected override void OnLayout(bool changed, int l, int t, int r, int b) { var scope = new LayoutScope <View>(LayoutAdapter.Instance); var handler = LayoutHandler; if (handler != null) { var root = handler.Invoke(scope); scope.Arrange(ref root, l, t, r - l, b - t); } }
protected override Windows.Foundation.Size ArrangeOverride(Windows.Foundation.Size finalSize) { var scope = new LayoutScope <UIElement>(LayoutAdapter.Instance); var root = LayoutHandler?.Invoke(scope); if (root != null) { scope.Arrange(root.Value, 0, 0, (float)finalSize.Width, (float)finalSize.Height); } return(base.ArrangeOverride(finalSize)); }
public void Arrange(float x, float y, float width, float height) { var offset = y; for (var i = 0; i < _views.Length; i++) { var size = _scope.Measure(ref _views[i], width, height); _scope.Arrange(ref _views[i], x, offset, width, size.Height, size.Width, size.Height); offset += size.Height; offset += _spacing; } }
public static Rectangle[] Layout(float width, float height, Func <LayoutScope <Size>, LayoutView <Size> > layoutHandler) { var adapter = new TestLayoutAdapter(); var scope = new LayoutScope <Size>(adapter); var root = layoutHandler(scope); if ((root.View.Width != 0 && root.View.Height != 0) || root.Panel != null) { scope.Arrange(ref root, 0, 0, width, height); } return(adapter.ArrangedRectangles.ToArray()); }
public void Arrange(float x, float y, float width, float height) { MeasureColumns(width, height); MeasureRows(width, height); if (_grid.ColumnStarWeights != null) { var columns = (GridColumnDefinition[])_grid.Columns; var starWidth = 0.0f; for (var i = 0; i < _columnWidths.Length; i++) { if (columns[i].Type != GridUnitType.Star) { starWidth += _columnWidths[i]; } } starWidth = width - starWidth; if (starWidth > 0) { for (var i = 0; i < _grid.ColumnStarWeights.Length; i++) { if (columns[i].Type == GridUnitType.Star) { var columnWidth = starWidth * _grid.ColumnStarWeights[i]; if (columnWidth > _columnWidths[i]) { _columnWidths[i] = columnWidth; } } } } } if (_grid.RowStarWeights != null) { var rows = (GridRowDefinition[])_grid.Rows; var starHeight = 0.0f; for (var i = 0; i < _rowHeights.Length; i++) { if (rows[i].Type != GridUnitType.Star) { starHeight += _rowHeights[i]; } } starHeight = height - starHeight; if (starHeight > 0) { for (var i = 0; i < _grid.RowStarWeights.Length; i++) { if (_grid.Rows[i].Type == GridUnitType.Star) { var rowHeight = starHeight * _grid.RowStarWeights[i]; if (rowHeight > _rowHeights[i]) { _rowHeights[i] = rowHeight; } } } } } var columnLefts = _columnWidths; var currentLeft = _columnWidths[0]; for (var i = 1; i < _columnWidths.Length; i++) { currentLeft += _columnWidths[i]; _columnWidths[i] = currentLeft; } var rowTops = _rowHeights; var currentTop = _rowHeights[0]; for (var i = 1; i < _rowHeights.Length; i++) { currentTop += _rowHeights[i]; _rowHeights[i] = currentTop; } for (var i = 0; i < _views.Length; i++) { var view = _views[i]; var left = view.Column == 0 ? 0 : columnLefts[view.Column - 1]; var right = columnLefts[view.Column + view.ColumnSpan - 1]; var top = view.Row == 0 ? 0 : rowTops[view.Row - 1]; var bottom = rowTops[view.Row + view.RowSpan - 1]; _scope.Arrange(ref view.View, left, top, right - left, bottom - top); } }