Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: client/layout/GridLayout.dart

Issue 8966029: Report errors and warnings for hiding elements, issue 572. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fixes for comments Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « client/html/release/htmlimpl.dart ('k') | client/samples/dartcombat/state.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 /** 5 /**
6 * Implements a grid-based layout system based on: 6 * Implements a grid-based layout system based on:
7 * [http://dev.w3.org/csswg/css3-grid-align/] 7 * [http://dev.w3.org/csswg/css3-grid-align/]
8 * 8 *
9 * This layout is designed to support animations and work on browsers that 9 * This layout is designed to support animations and work on browsers that
10 * don't support grid natively. As such, we implement it on top of absolute 10 * don't support grid natively. As such, we implement it on top of absolute
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 * and Grid rows. The goal of the function is to ensure: 145 * and Grid rows. The goal of the function is to ensure:
146 * 1. That each Grid Track satisfies its minSizing 146 * 1. That each Grid Track satisfies its minSizing
147 * 2. That each Grid Track grows from the breadth which satisfied its 147 * 2. That each Grid Track grows from the breadth which satisfied its
148 * minSizing to a breadth which satifies its 148 * minSizing to a breadth which satifies its
149 * maxSizing, subject to RemainingSpace. 149 * maxSizing, subject to RemainingSpace.
150 */ 150 */
151 // Note: spec does not correctly doc all the parameters to this function. 151 // Note: spec does not correctly doc all the parameters to this function.
152 void _computeUsedBreadthOfTracks(List<GridTrack> tracks) { 152 void _computeUsedBreadthOfTracks(List<GridTrack> tracks) {
153 153
154 // TODO(jmesserly): as a performance optimization we could cache this 154 // TODO(jmesserly): as a performance optimization we could cache this
155 final items = CollectionUtils.map(view.childViews, (view) => view.layout); 155 final items = CollectionUtils.map(view.childViews, (view_) => view_.layout);
156 CollectionUtils.sortBy(items, (item) => _getSpanCount(item)); 156 CollectionUtils.sortBy(items, (item) => _getSpanCount(item));
157 157
158 // 1. Initialize per Grid Track variables 158 // 1. Initialize per Grid Track variables
159 for (final t in tracks) { 159 for (final t in tracks) {
160 // percentage or length sizing functions will return a value 160 // percentage or length sizing functions will return a value
161 // min-content, max-content, or a fraction will be set to 0 161 // min-content, max-content, or a fraction will be set to 0
162 t.usedBreadth = t.minSizing.resolveLength(_getGridContentSize()); 162 t.usedBreadth = t.minSizing.resolveLength(_getGridContentSize());
163 t.maxBreadth = t.maxSizing.resolveLength(_getGridContentSize()); 163 t.maxBreadth = t.maxSizing.resolveLength(_getGridContentSize());
164 t.updatedBreadth = 0; 164 t.updatedBreadth = 0;
165 } 165 }
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 */ 378 */
379 static bool _hasContentSizedTracks(Collection<GridTrack> tracks, 379 static bool _hasContentSizedTracks(Collection<GridTrack> tracks,
380 ContentSizeMode sizeMode, _BreadthAccumulator breadth) { 380 ContentSizeMode sizeMode, _BreadthAccumulator breadth) {
381 381
382 for (final t in tracks) { 382 for (final t in tracks) {
383 final fn = breadth.getSizingFunction(t); 383 final fn = breadth.getSizingFunction(t);
384 if (sizeMode == ContentSizeMode.MAX && fn.isMaxContentSized || 384 if (sizeMode == ContentSizeMode.MAX && fn.isMaxContentSized ||
385 sizeMode == ContentSizeMode.MIN && fn.isContentSized) { 385 sizeMode == ContentSizeMode.MIN && fn.isContentSized) {
386 386
387 // Make sure we don't cross a fractional track 387 // Make sure we don't cross a fractional track
388 return tracks.length == 1 || !tracks.some((t) => t.isFractional); 388 return tracks.length == 1 || !tracks.some((t_) => t_.isFractional);
389 } 389 }
390 } 390 }
391 return false; 391 return false;
392 } 392 }
393 393
394 /** Ensures that the numbered track exists. */ 394 /** Ensures that the numbered track exists. */
395 void _ensureTrack(List<GridTrack> tracks, TrackSizing sizing, 395 void _ensureTrack(List<GridTrack> tracks, TrackSizing sizing,
396 int start, int span) { 396 int start, int span) {
397 // Start is 1-based. Make it 0-based. 397 // Start is 1-based. Make it 0-based.
398 start -= 1; 398 start -= 1;
(...skipping 12 matching lines...) Expand all
411 } 411 }
412 412
413 /** 413 /**
414 * Scans children creating GridLayoutParams as needed, and creates all of the 414 * Scans children creating GridLayoutParams as needed, and creates all of the
415 * rows and columns that we will need. 415 * rows and columns that we will need.
416 * 416 *
417 * Note: this can potentially create new rows/columns, so this needs to be 417 * Note: this can potentially create new rows/columns, so this needs to be
418 * run before the track sizing algorithm. 418 * run before the track sizing algorithm.
419 */ 419 */
420 void _ensureAllTracks() { 420 void _ensureAllTracks() {
421 final items = CollectionUtils.map(view.childViews, (view) => view.layout); 421 final items = CollectionUtils.map(view.childViews, (view_) => view_.layout);
422 422
423 for (final child in items) { 423 for (final child in items) {
424 if (child.layoutParams == null) { 424 if (child.layoutParams == null) {
425 final p = new GridLayoutParams(child.view, this); 425 final p = new GridLayoutParams(child.view, this);
426 _ensureTrack(_rowTracks, rowSizing, p.row, p.rowSpan); 426 _ensureTrack(_rowTracks, rowSizing, p.row, p.rowSpan);
427 _ensureTrack(_columnTracks, columnSizing, p.column, p.columnSpan); 427 _ensureTrack(_columnTracks, columnSizing, p.column, p.columnSpan);
428 child.layoutParams = p; 428 child.layoutParams = p;
429 } 429 }
430 child.cacheExistingBrowserLayout(); 430 child.cacheExistingBrowserLayout();
431 } 431 }
432 } 432 }
433 433
434 /** 434 /**
435 * Given the track sizes that were computed, position children in the grid. 435 * Given the track sizes that were computed, position children in the grid.
436 */ 436 */
437 void _setBoundsOfChildren() { 437 void _setBoundsOfChildren() {
438 final items = CollectionUtils.map(view.childViews, (view) => view.layout); 438 final items = CollectionUtils.map(view.childViews, (view_) => view_.layout);
439 439
440 for (final item in items) { 440 for (final item in items) {
441 GridLayoutParams childLayout = item.layoutParams; 441 GridLayoutParams childLayout = item.layoutParams;
442 var xPos = _getTrackLocationX(childLayout); 442 var xPos = _getTrackLocationX(childLayout);
443 var yPos = _getTrackLocationY(childLayout); 443 var yPos = _getTrackLocationY(childLayout);
444 444
445 int left = xPos.start, width = xPos.length; 445 int left = xPos.start, width = xPos.length;
446 int top = yPos.start, height = yPos.length; 446 int top = yPos.start, height = yPos.length;
447 447
448 // Somewhat counterintuitively (at least to me): 448 // Somewhat counterintuitively (at least to me):
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 } 511 }
512 return result; 512 return result;
513 } 513 }
514 514
515 int _getSpanCount(ViewLayout item) { 515 int _getSpanCount(ViewLayout item) {
516 GridLayoutParams childLayout = item.layoutParams; 516 GridLayoutParams childLayout = item.layoutParams;
517 return (_dimension == Dimension.WIDTH ? 517 return (_dimension == Dimension.WIDTH ?
518 childLayout.columnSpan : childLayout.rowSpan); 518 childLayout.columnSpan : childLayout.rowSpan);
519 } 519 }
520 } 520 }
OLDNEW
« no previous file with comments | « client/html/release/htmlimpl.dart ('k') | client/samples/dartcombat/state.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698