OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "config.h" | 5 #include "config.h" |
6 #include "core/style/GridResolvedPosition.h" | 6 #include "core/style/GridResolvedPosition.h" |
7 | 7 |
8 #include "core/layout/LayoutBox.h" | 8 #include "core/layout/LayoutBox.h" |
9 #include "core/style/GridCoordinate.h" | 9 #include "core/style/GridCoordinate.h" |
10 | 10 |
11 namespace blink { | 11 namespace blink { |
12 | 12 |
13 static const NamedGridLinesMap& gridLinesForSide(const ComputedStyle& style, Gri
dPositionSide side) | 13 static const NamedGridLinesMap& gridLinesForSide(const ComputedStyle& style, Gri
dPositionSide side) |
14 { | 14 { |
15 return (side == ColumnStartSide || side == ColumnEndSide) ? style.namedGridC
olumnLines() : style.namedGridRowLines(); | 15 return (side == ColumnStartSide || side == ColumnEndSide) ? style.namedGridC
olumnLines() : style.namedGridRowLines(); |
16 } | 16 } |
17 | 17 |
18 static inline String implicitNamedGridLineForSide(const String& lineName, GridPo
sitionSide side) | 18 static inline String implicitNamedGridLineForSide(const String& lineName, GridPo
sitionSide side) |
19 { | 19 { |
20 return lineName + ((side == ColumnStartSide || side == RowStartSide) ? "-sta
rt" : "-end"); | 20 return lineName + ((side == ColumnStartSide || side == RowStartSide) ? "-sta
rt" : "-end"); |
21 } | 21 } |
22 | 22 |
23 static bool isValidNamedLineOrArea(const String& lineName, const ComputedStyle&
style, GridPositionSide side) | 23 bool GridResolvedPosition::isValidNamedLineOrArea(const String& lineName, const
ComputedStyle& style, GridPositionSide side) |
24 { | 24 { |
25 const NamedGridLinesMap& gridLineNames = gridLinesForSide(style, side); | 25 const NamedGridLinesMap& gridLineNames = gridLinesForSide(style, side); |
26 | 26 |
27 return gridLineNames.contains(implicitNamedGridLineForSide(lineName, side))
|| gridLineNames.contains(lineName); | 27 return gridLineNames.contains(implicitNamedGridLineForSide(lineName, side))
|| gridLineNames.contains(lineName); |
28 } | 28 } |
29 | 29 |
30 static GridPositionSide calculateInitialPositionSide(GridTrackSizingDirection di
rection) | 30 GridPositionSide GridResolvedPosition::calculateInitialPositionSide(GridTrackSiz
ingDirection direction) |
31 { | 31 { |
32 return (direction == ForColumns) ? ColumnStartSide : RowStartSide; | 32 return (direction == ForColumns) ? ColumnStartSide : RowStartSide; |
33 } | 33 } |
34 | 34 |
35 static GridPositionSide calculateFinalPositionSide(GridTrackSizingDirection dire
ction) | 35 GridPositionSide GridResolvedPosition::calculateFinalPositionSide(GridTrackSizin
gDirection direction) |
36 { | 36 { |
37 return (direction == ForColumns) ? ColumnEndSide : RowEndSide; | 37 return (direction == ForColumns) ? ColumnEndSide : RowEndSide; |
38 } | 38 } |
39 | 39 |
40 void GridResolvedPosition::initialAndFinalPositionsFromStyle(const ComputedStyle
& gridContainerStyle, const LayoutBox& gridItem, GridTrackSizingDirection direct
ion, GridPosition& initialPosition, GridPosition& finalPosition) | 40 void GridResolvedPosition::initialAndFinalPositionsFromStyle(const ComputedStyle
& gridContainerStyle, const LayoutBox& gridItem, GridTrackSizingDirection direct
ion, GridPosition& initialPosition, GridPosition& finalPosition) |
41 { | 41 { |
42 initialPosition = (direction == ForColumns) ? gridItem.style()->gridColumnSt
art() : gridItem.style()->gridRowStart(); | 42 initialPosition = (direction == ForColumns) ? gridItem.style()->gridColumnSt
art() : gridItem.style()->gridRowStart(); |
43 finalPosition = (direction == ForColumns) ? gridItem.style()->gridColumnEnd(
) : gridItem.style()->gridRowEnd(); | 43 finalPosition = (direction == ForColumns) ? gridItem.style()->gridColumnEnd(
) : gridItem.style()->gridRowEnd(); |
44 GridPositionSide initialPositionSide = calculateInitialPositionSide(directio
n); | 44 GridPositionSide initialPositionSide = calculateInitialPositionSide(directio
n); |
45 GridPositionSide finalPositionSide = calculateFinalPositionSide(direction); | 45 GridPositionSide finalPositionSide = calculateFinalPositionSide(direction); |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 | 240 |
241 // If there is no named grid line of that name, we resolve the position to '
auto' (which is equivalent to 'span 1' in this case). | 241 // If there is no named grid line of that name, we resolve the position to '
auto' (which is equivalent to 'span 1' in this case). |
242 // See http://lists.w3.org/Archives/Public/www-style/2013Jun/0394.html. | 242 // See http://lists.w3.org/Archives/Public/www-style/2013Jun/0394.html. |
243 if (it == gridLinesNames.end()) | 243 if (it == gridLinesNames.end()) |
244 return GridSpan::create(resolvedOppositePosition, resolvedOppositePositi
on); | 244 return GridSpan::create(resolvedOppositePosition, resolvedOppositePositi
on); |
245 | 245 |
246 return GridSpan::createWithNamedSpanAgainstOpposite(resolvedOppositePosition
, position, side, it->value); | 246 return GridSpan::createWithNamedSpanAgainstOpposite(resolvedOppositePosition
, position, side, it->value); |
247 } | 247 } |
248 | 248 |
249 } // namespace blink | 249 } // namespace blink |
OLD | NEW |