| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of layout; | 5 part of layout; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * Implements a grid-based layout system based on: | 8 * Implements a grid-based layout system based on: |
| 9 * [http://dev.w3.org/csswg/css3-grid-align/] | 9 * [http://dev.w3.org/csswg/css3-grid-align/] |
| 10 * | 10 * |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 * 1. That each Grid Track satisfies its minSizing | 148 * 1. That each Grid Track satisfies its minSizing |
| 149 * 2. That each Grid Track grows from the breadth which satisfied its | 149 * 2. That each Grid Track grows from the breadth which satisfied its |
| 150 * minSizing to a breadth which satifies its | 150 * minSizing to a breadth which satifies its |
| 151 * maxSizing, subject to RemainingSpace. | 151 * maxSizing, subject to RemainingSpace. |
| 152 */ | 152 */ |
| 153 // Note: spec does not correctly doc all the parameters to this function. | 153 // Note: spec does not correctly doc all the parameters to this function. |
| 154 void _computeUsedBreadthOfTracks(List<GridTrack> tracks) { | 154 void _computeUsedBreadthOfTracks(List<GridTrack> tracks) { |
| 155 | 155 |
| 156 // TODO(jmesserly): as a performance optimization we could cache this | 156 // TODO(jmesserly): as a performance optimization we could cache this |
| 157 final items = view.childViews | 157 final items = view.childViews |
| 158 .map((view_) => view_.layout) | 158 .mappedBy((view_) => view_.layout) |
| 159 .toList(); | 159 .toList(); |
| 160 CollectionUtils.sortBy(items, (item) => _getSpanCount(item)); | 160 CollectionUtils.sortBy(items, (item) => _getSpanCount(item)); |
| 161 | 161 |
| 162 // 1. Initialize per Grid Track variables | 162 // 1. Initialize per Grid Track variables |
| 163 for (final t in tracks) { | 163 for (final t in tracks) { |
| 164 // percentage or length sizing functions will return a value | 164 // percentage or length sizing functions will return a value |
| 165 // min-content, max-content, or a fraction will be set to 0 | 165 // min-content, max-content, or a fraction will be set to 0 |
| 166 t.usedBreadth = t.minSizing.resolveLength(_getGridContentSize()); | 166 t.usedBreadth = t.minSizing.resolveLength(_getGridContentSize()); |
| 167 t.maxBreadth = t.maxSizing.resolveLength(_getGridContentSize()); | 167 t.maxBreadth = t.maxSizing.resolveLength(_getGridContentSize()); |
| 168 t.updatedBreadth = 0; | 168 t.updatedBreadth = 0; |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 415 } | 415 } |
| 416 | 416 |
| 417 /** | 417 /** |
| 418 * Scans children creating GridLayoutParams as needed, and creates all of the | 418 * Scans children creating GridLayoutParams as needed, and creates all of the |
| 419 * rows and columns that we will need. | 419 * rows and columns that we will need. |
| 420 * | 420 * |
| 421 * Note: this can potentially create new rows/columns, so this needs to be | 421 * Note: this can potentially create new rows/columns, so this needs to be |
| 422 * run before the track sizing algorithm. | 422 * run before the track sizing algorithm. |
| 423 */ | 423 */ |
| 424 void _ensureAllTracks() { | 424 void _ensureAllTracks() { |
| 425 final items = view.childViews.map((view_) => view_.layout); | 425 final items = view.childViews.mappedBy((view_) => view_.layout); |
| 426 | 426 |
| 427 for (final child in items) { | 427 for (final child in items) { |
| 428 if (child.layoutParams == null) { | 428 if (child.layoutParams == null) { |
| 429 final p = new GridLayoutParams(child.view, this); | 429 final p = new GridLayoutParams(child.view, this); |
| 430 _ensureTrack(_rowTracks, rowSizing, p.row, p.rowSpan); | 430 _ensureTrack(_rowTracks, rowSizing, p.row, p.rowSpan); |
| 431 _ensureTrack(_columnTracks, columnSizing, p.column, p.columnSpan); | 431 _ensureTrack(_columnTracks, columnSizing, p.column, p.columnSpan); |
| 432 child.layoutParams = p; | 432 child.layoutParams = p; |
| 433 } | 433 } |
| 434 child.cacheExistingBrowserLayout(); | 434 child.cacheExistingBrowserLayout(); |
| 435 } | 435 } |
| 436 } | 436 } |
| 437 | 437 |
| 438 /** | 438 /** |
| 439 * Given the track sizes that were computed, position children in the grid. | 439 * Given the track sizes that were computed, position children in the grid. |
| 440 */ | 440 */ |
| 441 void _setBoundsOfChildren() { | 441 void _setBoundsOfChildren() { |
| 442 final items = view.childViews.map((view_) => view_.layout); | 442 final items = view.childViews.mappedBy((view_) => view_.layout); |
| 443 | 443 |
| 444 for (final item in items) { | 444 for (final item in items) { |
| 445 GridLayoutParams childLayout = item.layoutParams; | 445 GridLayoutParams childLayout = item.layoutParams; |
| 446 var xPos = _getTrackLocationX(childLayout); | 446 var xPos = _getTrackLocationX(childLayout); |
| 447 var yPos = _getTrackLocationY(childLayout); | 447 var yPos = _getTrackLocationY(childLayout); |
| 448 | 448 |
| 449 int left = xPos.start, width = xPos.length; | 449 int left = xPos.start, width = xPos.length; |
| 450 int top = yPos.start, height = yPos.length; | 450 int top = yPos.start, height = yPos.length; |
| 451 | 451 |
| 452 // Somewhat counterintuitively (at least to me): | 452 // Somewhat counterintuitively (at least to me): |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 512 } | 512 } |
| 513 return result; | 513 return result; |
| 514 } | 514 } |
| 515 | 515 |
| 516 int _getSpanCount(ViewLayout item) { | 516 int _getSpanCount(ViewLayout item) { |
| 517 GridLayoutParams childLayout = item.layoutParams; | 517 GridLayoutParams childLayout = item.layoutParams; |
| 518 return (_dimension == Dimension.WIDTH ? | 518 return (_dimension == Dimension.WIDTH ? |
| 519 childLayout.columnSpan : childLayout.rowSpan); | 519 childLayout.columnSpan : childLayout.rowSpan); |
| 520 } | 520 } |
| 521 } | 521 } |
| OLD | NEW |