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

Side by Side Diff: samples-dev/swarm/swarm_ui_lib/layout/GridTracks.dart

Issue 2828603002: Format samples and samples-dev directories. (Closed)
Patch Set: Created 3 years, 8 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 unified diff | Download patch
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 part of layout; 5 part of layout;
6 6
7 // This file has classes representing the grid tracks and grid template 7 // This file has classes representing the grid tracks and grid template
8 8
9 /** 9 /**
10 * The data structure representing the grid-rows or grid-columns 10 * The data structure representing the grid-rows or grid-columns
11 * properties. 11 * properties.
12 */ 12 */
13 class GridTrackList { 13 class GridTrackList {
14 /** The set of tracks defined in CSS via grid-rows and grid-columns */ 14 /** The set of tracks defined in CSS via grid-rows and grid-columns */
15 final List<GridTrack> tracks; 15 final List<GridTrack> tracks;
16 16
17 /** 17 /**
18 * Maps edge names to the corresponding track. Depending on whether the index 18 * Maps edge names to the corresponding track. Depending on whether the index
19 * is used as a start or end, it might be interpreted exclusively or 19 * is used as a start or end, it might be interpreted exclusively or
20 * inclusively. 20 * inclusively.
21 */ 21 */
22 final Map<String, int> lineNames; 22 final Map<String, int> lineNames;
23 23
24 GridTrackList(this.tracks, this.lineNames) {} 24 GridTrackList(this.tracks, this.lineNames) {}
25 } 25 }
26 26
27
28 /** Represents a row or a column. */ 27 /** Represents a row or a column. */
29 class GridTrack { 28 class GridTrack {
30 /** 29 /**
31 * The start position of this track. Equal to the sum of previous track's 30 * The start position of this track. Equal to the sum of previous track's
32 * usedBreadth. 31 * usedBreadth.
33 */ 32 */
34 num start; 33 num start;
35 34
36 /** The final computed breadth of this track. */ 35 /** The final computed breadth of this track. */
37 num usedBreadth; 36 num usedBreadth;
(...skipping 17 matching lines...) Expand all
55 SizingFunction get minSizing => sizing.min; 54 SizingFunction get minSizing => sizing.min;
56 55
57 /** The min sizing function for the track. */ 56 /** The min sizing function for the track. */
58 SizingFunction get maxSizing => sizing.max; 57 SizingFunction get maxSizing => sizing.max;
59 58
60 num get end => start + usedBreadth; 59 num get end => start + usedBreadth;
61 60
62 bool get isFractional => minSizing.isFraction || maxSizing.isFraction; 61 bool get isFractional => minSizing.isFraction || maxSizing.isFraction;
63 } 62 }
64 63
65
66 /** Represents the grid-row-align or grid-column-align. */ 64 /** Represents the grid-row-align or grid-column-align. */
67 class GridItemAlignment { 65 class GridItemAlignment {
68 // TODO(jmesserly): should this be stored as an int for performance? 66 // TODO(jmesserly): should this be stored as an int for performance?
69 final String value; 67 final String value;
70 68
71 // 'start' | 'end' | 'center' | 'stretch' 69 // 'start' | 'end' | 'center' | 'stretch'
72 GridItemAlignment.fromString(String value) 70 GridItemAlignment.fromString(String value)
73 : this.value = (value == null) ? 'stretch' : value { 71 : this.value = (value == null) ? 'stretch' : value {
74 72 switch (this.value) {
75 switch (this.value) { 73 case 'start':
76 case 'start': case 'end': case 'center': case 'stretch': 74 case 'end':
75 case 'center':
76 case 'stretch':
77 break; 77 break;
78 default: 78 default:
79 throw new UnsupportedError( 79 throw new UnsupportedError('invalid row/column alignment "$value"');
80 'invalid row/column alignment "$value"');
81 } 80 }
82 } 81 }
83 82
84 _GridLocation align(_GridLocation span, int size) { 83 _GridLocation align(_GridLocation span, int size) {
85 switch (value) { 84 switch (value) {
86 case 'start': 85 case 'start':
87 return new _GridLocation(span.start, size); 86 return new _GridLocation(span.start, size);
88 case 'end': 87 case 'end':
89 return new _GridLocation(span.end - size, size); 88 return new _GridLocation(span.end - size, size);
90 case 'center': 89 case 'center':
91 size = Math.min(size, span.length); 90 size = Math.min(size, span.length);
92 num center = span.start + span.length / 2; 91 num center = span.start + span.length / 2;
93 num left = center - size / 2; 92 num left = center - size / 2;
94 return new _GridLocation(left.round(), size); 93 return new _GridLocation(left.round(), size);
95 case 'stretch': 94 case 'stretch':
96 return span; 95 return span;
97 } 96 }
98 } 97 }
99 } 98 }
100 99
101
102 /** 100 /**
103 * Represents a grid-template. Used in conjunction with a grid-cell to 101 * Represents a grid-template. Used in conjunction with a grid-cell to
104 * place cells in the grid, without needing to specify the exact row/column. 102 * place cells in the grid, without needing to specify the exact row/column.
105 */ 103 */
106 class GridTemplate { 104 class GridTemplate {
107 final Map<int, _GridTemplateRect> _rects; 105 final Map<int, _GridTemplateRect> _rects;
108 final int _numRows; 106 final int _numRows;
109 107
110 GridTemplate(List<String> rows) 108 GridTemplate(List<String> rows)
111 : _rects = new Map<int, _GridTemplateRect>(), 109 : _rects = new Map<int, _GridTemplateRect>(),
112 _numRows = rows.length { 110 _numRows = rows.length {
113 _buildRects(rows); 111 _buildRects(rows);
114 } 112 }
115 113
116 /** Scans the template strings and computes bounds for each one. */ 114 /** Scans the template strings and computes bounds for each one. */
117 void _buildRects(List<String> templateRows) { 115 void _buildRects(List<String> templateRows) {
118 for (int r = 0; r < templateRows.length; r++) { 116 for (int r = 0; r < templateRows.length; r++) {
119 String row = templateRows[r]; 117 String row = templateRows[r];
120 for (int c = 0; c < row.length; c++) { 118 for (int c = 0; c < row.length; c++) {
121 int cell = row.codeUnitAt(c); 119 int cell = row.codeUnitAt(c);
122 final rect = _rects[cell]; 120 final rect = _rects[cell];
(...skipping 15 matching lines...) Expand all
138 * Looks up the given cell in the template, and returns the rect. 136 * Looks up the given cell in the template, and returns the rect.
139 */ 137 */
140 _GridTemplateRect lookupCell(String cell) { 138 _GridTemplateRect lookupCell(String cell) {
141 if (cell.length != 1) { 139 if (cell.length != 1) {
142 throw new UnsupportedError( 140 throw new UnsupportedError(
143 'grid-cell "$cell" must be a one character string'); 141 'grid-cell "$cell" must be a one character string');
144 } 142 }
145 final rect = _rects[cell.codeUnitAt(0)]; 143 final rect = _rects[cell.codeUnitAt(0)];
146 if (rect == null) { 144 if (rect == null) {
147 throw new UnsupportedError( 145 throw new UnsupportedError(
148 'grid-cell "$cell" not found in parent\'s grid-template'); 146 'grid-cell "$cell" not found in parent\'s grid-template');
149 } 147 }
150 return rect; 148 return rect;
151 } 149 }
152 } 150 }
153 151
154 /** Used by GridTemplate to track a single cell's bounds. */ 152 /** Used by GridTemplate to track a single cell's bounds. */
155 class _GridTemplateRect { 153 class _GridTemplateRect {
156 int row, column, rowSpan, columnSpan, _count, _char; 154 int row, column, rowSpan, columnSpan, _count, _char;
157 _GridTemplateRect(this._char, this.row, this.column) 155 _GridTemplateRect(this._char, this.row, this.column)
158 : rowSpan = 1, columnSpan = 1, _count = 1 {} 156 : rowSpan = 1,
157 columnSpan = 1,
158 _count = 1 {}
159 159
160 void add(int r, int c) { 160 void add(int r, int c) {
161 assert (r >= row && c >= column); 161 assert(r >= row && c >= column);
162 _count++; 162 _count++;
163 rowSpan = Math.max(rowSpan, r - row + 1); 163 rowSpan = Math.max(rowSpan, r - row + 1);
164 columnSpan = Math.max(columnSpan, c - column + 1); 164 columnSpan = Math.max(columnSpan, c - column + 1);
165 } 165 }
166 166
167 void checkValid() { 167 void checkValid() {
168 int expected = rowSpan * columnSpan; 168 int expected = rowSpan * columnSpan;
169 if (expected != _count) { 169 if (expected != _count) {
170 // TODO(jmesserly): not sure if we should throw here, due to CSS's 170 // TODO(jmesserly): not sure if we should throw here, due to CSS's
171 // permissiveness. At the moment we're noisy about errors. 171 // permissiveness. At the moment we're noisy about errors.
172 String cell = new String.fromCharCodes([_char]); 172 String cell = new String.fromCharCodes([_char]);
173 throw new UnsupportedError('grid-template "$cell"' 173 throw new UnsupportedError('grid-template "$cell"'
174 ' is not square, expected $expected cells but got $_count'); 174 ' is not square, expected $expected cells but got $_count');
175 } 175 }
176 } 176 }
177 } 177 }
178 178
179
180 /** 179 /**
181 * Used to return a row/column and span during parsing of grid-row and 180 * Used to return a row/column and span during parsing of grid-row and
182 * grid-column during parsing. 181 * grid-column during parsing.
183 */ 182 */
184 class _GridLocation { 183 class _GridLocation {
185 final int start, length; 184 final int start, length;
186 _GridLocation(this.start, this.length) {} 185 _GridLocation(this.start, this.length) {}
187 186
188 int get end => start + length; 187 int get end => start + length;
189 } 188 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698