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

Unified Diff: client/layout/GridTracks.dart

Issue 9382027: Move client/{base, observable, layout, touch, util, view} to samples/ui_lib . (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 8 years, 10 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « client/layout/GridLayoutParser.dart ('k') | client/layout/SizingFunctions.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/layout/GridTracks.dart
===================================================================
--- client/layout/GridTracks.dart (revision 4144)
+++ client/layout/GridTracks.dart (working copy)
@@ -1,187 +0,0 @@
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// This file has classes representing the grid tracks and grid template
-
-/**
- * The data structure representing the grid-rows or grid-columns
- * properties.
- */
-class GridTrackList {
- /** The set of tracks defined in CSS via grid-rows and grid-columns */
- final List<GridTrack> tracks;
-
- /**
- * Maps edge names to the corresponding track. Depending on whether the index
- * is used as a start or end, it might be interpreted exclusively or
- * inclusively.
- */
- final Map<String, int> lineNames;
-
- GridTrackList(this.tracks, this.lineNames) {}
-}
-
-
-/** Represents a row or a column. */
-class GridTrack {
- /**
- * The start position of this track. Equal to the sum of previous track's
- * usedBreadth.
- */
- num start;
-
- /** The final computed breadth of this track. */
- num usedBreadth;
-
- // Fields used internally by the sizing algorithm
- num maxBreadth;
- num updatedBreadth;
- num tempBreadth;
-
- final TrackSizing sizing;
-
- GridTrack(this.sizing) {}
-
- /**
- * Support for the feature that repeats rows and columns, e.g.
- * [:grid-columns: 10px ("content" 250px 10px)[4]:]
- */
- GridTrack clone() => new GridTrack(sizing.clone());
-
- /** The min sizing function for the track. */
- SizingFunction get minSizing() => sizing.min;
-
- /** The min sizing function for the track. */
- SizingFunction get maxSizing() => sizing.max;
-
- num get end() => start + usedBreadth;
-
- bool get isFractional() => minSizing.isFraction || maxSizing.isFraction;
-}
-
-
-/** Represents the grid-row-align or grid-column-align. */
-class GridItemAlignment {
- // TODO(jmesserly): should this be stored as an int for performance?
- final String value;
-
- // 'start' | 'end' | 'center' | 'stretch'
- GridItemAlignment.fromString(String value)
- : this.value = (value == null) ? 'stretch' : value {
-
- switch (this.value) {
- case 'start': case 'end': case 'center': case 'stretch':
- break;
- default:
- throw new UnsupportedOperationException(
- 'invalid row/column alignment "$value"');
- }
- }
-
- _GridLocation align(_GridLocation span, int size) {
- switch (value) {
- case 'start':
- return new _GridLocation(span.start, size);
- case 'end':
- return new _GridLocation(span.end - size, size);
- case 'center':
- size = Math.min(size, span.length);
- num center = span.start + span.length / 2;
- num left = center - size / 2;
- return new _GridLocation(left.round().toInt(), size);
- case 'stretch':
- return span;
- }
- }
-}
-
-
-/**
- * Represents a grid-template. Used in conjunction with a grid-cell to
- * place cells in the grid, without needing to specify the exact row/column.
- */
-class GridTemplate {
- final Map<int, _GridTemplateRect> _rects;
- final int _numRows;
-
- GridTemplate(List<String> rows)
- : _rects = new Map<int, _GridTemplateRect>(),
- _numRows = rows.length {
- _buildRects(rows);
- }
-
- /** Scans the template strings and computes bounds for each one. */
- void _buildRects(List<String> templateRows) {
- for (int r = 0; r < templateRows.length; r++) {
- String row = templateRows[r];
- for (int c = 0; c < row.length; c++) {
- int cell = row.charCodeAt(c);
- final rect = _rects[cell];
- if (rect != null) {
- rect.add(r + 1, c + 1);
- } else {
- _rects[cell] = new _GridTemplateRect(cell, r + 1, c + 1);
- }
- }
- }
-
- // Finally, check that each rectangle is valid (i.e. all spaces filled)
- for (final rect in _rects.getValues()) {
- rect.checkValid();
- }
- }
-
- /**
- * Looks up the given cell in the template, and returns the rect.
- */
- _GridTemplateRect lookupCell(String cell) {
- if (cell.length != 1) {
- throw new UnsupportedOperationException(
- 'grid-cell "$cell" must be a one character string');
- }
- final rect = _rects[cell.charCodeAt(0)];
- if (rect == null) {
- throw new UnsupportedOperationException(
- 'grid-cell "$cell" not found in parent\'s grid-template');
- }
- return rect;
- }
-}
-
-/** Used by GridTemplate to track a single cell's bounds. */
-class _GridTemplateRect {
- int row, column, rowSpan, columnSpan, _count, _char;
- _GridTemplateRect(this._char, this.row, this.column)
- : rowSpan = 1, columnSpan = 1, _count = 1 {}
-
- void add(int r, int c) {
- assert (r >= row && c >= column);
- _count++;
- rowSpan = Math.max(rowSpan, r - row + 1);
- columnSpan = Math.max(columnSpan, c - column + 1);
- }
-
- void checkValid() {
- int expected = rowSpan * columnSpan;
- if (expected != _count) {
- // TODO(jmesserly): not sure if we should throw here, due to CSS's
- // permissiveness. At the moment we're noisy about errors.
- String cell = new String.fromCharCodes([_char]);
- throw new UnsupportedOperationException('grid-template "$cell"' +
- ' is not square, expected $expected cells but got $_count');
- }
- }
-}
-
-
-/**
- * Used to return a row/column and span during parsing of grid-row and
- * grid-column during parsing.
- */
-class _GridLocation {
- final int start, length;
- _GridLocation(this.start, this.length) {}
-
- int get end() => start + length;
-}
« no previous file with comments | « client/layout/GridLayoutParser.dart ('k') | client/layout/SizingFunctions.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698