Changeset 198399 in webkit
- Timestamp:
- Mar 18, 2016 6:56:40 AM (8 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r198398 r198399 1 2016-03-18 Manuel Rego Casasnovas <rego@igalia.com> 2 3 [css-grid] Rename GridSpan properties 4 https://bugs.webkit.org/show_bug.cgi?id=155636 5 6 Reviewed by Sergio Villar Senin. 7 8 GridSpan was using old names initialResolvedPosition and 9 finalResolvedPosition. 10 This patch rename them to startLine and endLine. 11 12 Some reasons for this refactoring: 13 - "position" is a vague term not defined in the spec. 14 - GridSpan is currently storing grid lines. A grid "line" is defined 15 in the spec: https://drafts.csswg.org/css-grid/#grid-line-concept 16 - The spec uses the concepts "start" and "end" lines too. 17 18 No new tests, no change of behavior. 19 20 * css/CSSGridTemplateAreasValue.cpp: 21 (WebCore::stringForPosition): 22 * css/CSSParser.cpp: 23 (WebCore::CSSParser::parseGridTemplateAreasRow): 24 * css/StyleBuilderConverter.h: 25 (WebCore::StyleBuilderConverter::createImplicitNamedGridLinesFromGridArea): 26 * rendering/RenderGrid.cpp: 27 (WebCore::RenderGrid::computeUsedBreadthOfGridTracks): 28 (WebCore::RenderGrid::resolveContentBasedTrackSizingFunctionsForNonSpanningItems): 29 (WebCore::RenderGrid::insertItemIntoGrid): 30 (WebCore::RenderGrid::populateExplicitGridAndOrderIterator): 31 (WebCore::RenderGrid::placeSpecifiedMajorAxisItemsOnGrid): 32 (WebCore::RenderGrid::placeAutoMajorAxisItemOnGrid): 33 (WebCore::RenderGrid::offsetAndBreadthForPositionedChild): 34 (WebCore::RenderGrid::gridAreaBreadthForChildIncludingAlignmentOffsets): 35 (WebCore::RenderGrid::columnAxisOffsetForChild): 36 (WebCore::RenderGrid::rowAxisOffsetForChild): 37 * rendering/style/GridArea.h: 38 (WebCore::GridSpan::untranslatedDefiniteGridSpan): 39 (WebCore::GridSpan::translatedDefiniteGridSpan): 40 (WebCore::GridSpan::operator==): 41 (WebCore::GridSpan::integerSpan): 42 (WebCore::GridSpan::untranslatedStartLine): 43 (WebCore::GridSpan::untranslatedEndLine): 44 (WebCore::GridSpan::startLine): 45 (WebCore::GridSpan::endLine): 46 (WebCore::GridSpan::begin): 47 (WebCore::GridSpan::end): 48 (WebCore::GridSpan::translate): 49 (WebCore::GridSpan::GridSpan): 50 (WebCore::GridSpan::untranslatedResolvedInitialPosition): Deleted. 51 (WebCore::GridSpan::untranslatedResolvedFinalPosition): Deleted. 52 (WebCore::GridSpan::resolvedInitialPosition): Deleted. 53 (WebCore::GridSpan::resolvedFinalPosition): Deleted. 54 * rendering/style/GridPositionsResolver.cpp: 55 (WebCore::definiteGridSpanWithNamedLineSpanAgainstOpposite): 56 (WebCore::resolveNamedGridLinePositionAgainstOppositePosition): 57 (WebCore::resolveGridPositionAgainstOppositePosition): 58 (WebCore::GridPositionsResolver::resolveGridPositionsFromStyle): 59 1 60 2016-03-18 Csaba Osztrogonác <ossy@webkit.org> 2 61 -
trunk/Source/WebCore/css/CSSGridTemplateAreasValue.cpp
r198210 r198399 56 56 for (const auto& it : gridAreaMap) { 57 57 const GridArea& area = it.value; 58 if (row >= area.rows. resolvedInitialPosition() && row < area.rows.resolvedFinalPosition())58 if (row >= area.rows.startLine() && row < area.rows.endLine()) 59 59 candidates.append(it.key); 60 60 } … … 62 62 for (const auto& it : gridAreaMap) { 63 63 const GridArea& area = it.value; 64 if (column >= area.columns. resolvedInitialPosition() && column < area.columns.resolvedFinalPosition() && candidates.contains(it.key))64 if (column >= area.columns.startLine() && column < area.columns.endLine() && candidates.contains(it.key)) 65 65 return it.key; 66 66 } -
trunk/Source/WebCore/css/CSSParser.cpp
r198255 r198399 6256 6256 // The following checks test that the grid area is a single filled-in rectangle. 6257 6257 // 1. The new row is adjacent to the previously parsed row. 6258 if (rowCount != gridArea.rows. resolvedFinalPosition())6258 if (rowCount != gridArea.rows.endLine()) 6259 6259 return false; 6260 6260 6261 6261 // 2. The new area starts at the same position as the previously parsed area. 6262 if (currentColumn != gridArea.columns. resolvedInitialPosition())6262 if (currentColumn != gridArea.columns.startLine()) 6263 6263 return false; 6264 6264 6265 6265 // 3. The new area ends at the same position as the previously parsed area. 6266 if (lookAheadColumn != gridArea.columns. resolvedFinalPosition())6266 if (lookAheadColumn != gridArea.columns.endLine()) 6267 6267 return false; 6268 6268 6269 gridArea.rows = GridSpan::translatedDefiniteGridSpan(gridArea.rows. resolvedInitialPosition(), gridArea.rows.resolvedFinalPosition() + 1);6269 gridArea.rows = GridSpan::translatedDefiniteGridSpan(gridArea.rows.startLine(), gridArea.rows.endLine() + 1); 6270 6270 } 6271 6271 currentColumn = lookAheadColumn - 1; -
trunk/Source/WebCore/css/StyleBuilderConverter.h
r197617 r198399 940 940 { 941 941 auto& startVector = namedGridLines.add(area.key + "-start", Vector<unsigned>()).iterator->value; 942 startVector.append(areaSpan. resolvedInitialPosition());942 startVector.append(areaSpan.startLine()); 943 943 std::sort(startVector.begin(), startVector.end()); 944 944 } 945 945 { 946 946 auto& endVector = namedGridLines.add(area.key + "-end", Vector<unsigned>()).iterator->value; 947 endVector.append(areaSpan. resolvedFinalPosition());947 endVector.append(areaSpan.endLine()); 948 948 std::sort(endVector.begin(), endVector.end()); 949 949 } -
trunk/Source/WebCore/rendering/RenderGrid.cpp
r198210 r198399 579 579 580 580 // Do not include already processed items. 581 if (i > 0 && span. resolvedInitialPosition() <= flexibleSizedTracksIndex[i - 1])581 if (i > 0 && span.startLine() <= flexibleSizedTracksIndex[i - 1]) 582 582 continue; 583 583 … … 869 869 void RenderGrid::resolveContentBasedTrackSizingFunctionsForNonSpanningItems(GridTrackSizingDirection direction, const GridSpan& span, RenderBox& gridItem, GridTrack& track, Vector<GridTrack>& columnTracks) 870 870 { 871 unsigned trackPosition = span. resolvedInitialPosition();871 unsigned trackPosition = span.startLine(); 872 872 GridTrackSize trackSize = gridTrackSize(direction, trackPosition); 873 873 … … 1143 1143 { 1144 1144 ASSERT(area.rows.isTranslatedDefinite() && area.columns.isTranslatedDefinite()); 1145 ensureGridSize(area.rows. resolvedFinalPosition(), area.columns.resolvedFinalPosition());1145 ensureGridSize(area.rows.endLine(), area.columns.endLine()); 1146 1146 1147 1147 for (auto row : area.rows) { … … 1215 1215 GridSpan rowPositions = GridPositionsResolver::resolveGridPositionsFromStyle(style(), *child, ForRows); 1216 1216 if (!rowPositions.isIndefinite()) { 1217 m_smallestRowStart = std::min(m_smallestRowStart, rowPositions.untranslated ResolvedInitialPosition());1218 maximumRowIndex = std::max<int>(maximumRowIndex, rowPositions.untranslated ResolvedFinalPosition());1217 m_smallestRowStart = std::min(m_smallestRowStart, rowPositions.untranslatedStartLine()); 1218 maximumRowIndex = std::max<int>(maximumRowIndex, rowPositions.untranslatedEndLine()); 1219 1219 } else { 1220 1220 // Grow the grid for items with a definite row span, getting the largest such span. … … 1225 1225 GridSpan columnPositions = GridPositionsResolver::resolveGridPositionsFromStyle(style(), *child, ForColumns); 1226 1226 if (!columnPositions.isIndefinite()) { 1227 m_smallestColumnStart = std::min(m_smallestColumnStart, columnPositions.untranslated ResolvedInitialPosition());1228 maximumColumnIndex = std::max<int>(maximumColumnIndex, columnPositions.untranslated ResolvedFinalPosition());1227 m_smallestColumnStart = std::min(m_smallestColumnStart, columnPositions.untranslatedStartLine()); 1228 maximumColumnIndex = std::max<int>(maximumColumnIndex, columnPositions.untranslatedEndLine()); 1229 1229 } else { 1230 1230 // Grow the grid for items with a definite column span, getting the largest such span. … … 1265 1265 ASSERT(cachedGridSpan(*autoGridItem, autoPlacementMinorAxisDirection()).isIndefinite()); 1266 1266 unsigned minorAxisSpanSize = GridPositionsResolver::spanSizeForAutoPlacedItem(style(), *autoGridItem, autoPlacementMinorAxisDirection()); 1267 unsigned majorAxisInitialPosition = majorAxisPositions. resolvedInitialPosition();1268 1269 GridIterator iterator(m_grid, autoPlacementMajorAxisDirection(), majorAxisPositions. resolvedInitialPosition(), isGridAutoFlowDense ? 0 : minorAxisCursors.get(majorAxisInitialPosition));1267 unsigned majorAxisInitialPosition = majorAxisPositions.startLine(); 1268 1269 GridIterator iterator(m_grid, autoPlacementMajorAxisDirection(), majorAxisPositions.startLine(), isGridAutoFlowDense ? 0 : minorAxisCursors.get(majorAxisInitialPosition)); 1270 1270 std::unique_ptr<GridArea> emptyGridArea = iterator.nextEmptyGridArea(majorAxisPositions.integerSpan(), minorAxisSpanSize); 1271 1271 if (!emptyGridArea) … … 1276 1276 1277 1277 if (!isGridAutoFlowDense) 1278 minorAxisCursors.set(majorAxisInitialPosition, isForColumns ? emptyGridArea->rows. resolvedInitialPosition() : emptyGridArea->columns.resolvedInitialPosition());1278 minorAxisCursors.set(majorAxisInitialPosition, isForColumns ? emptyGridArea->rows.startLine() : emptyGridArea->columns.startLine()); 1279 1279 } 1280 1280 } … … 1308 1308 if (minorAxisPositions.isTranslatedDefinite()) { 1309 1309 // Move to the next track in major axis if initial position in minor axis is before auto-placement cursor. 1310 if (minorAxisPositions. resolvedInitialPosition() < minorAxisAutoPlacementCursor)1310 if (minorAxisPositions.startLine() < minorAxisAutoPlacementCursor) 1311 1311 majorAxisAutoPlacementCursor++; 1312 1312 1313 1313 if (majorAxisAutoPlacementCursor < endOfMajorAxis) { 1314 GridIterator iterator(m_grid, autoPlacementMinorAxisDirection(), minorAxisPositions. resolvedInitialPosition(), majorAxisAutoPlacementCursor);1314 GridIterator iterator(m_grid, autoPlacementMinorAxisDirection(), minorAxisPositions.startLine(), majorAxisAutoPlacementCursor); 1315 1315 emptyGridArea = iterator.nextEmptyGridArea(minorAxisPositions.integerSpan(), majorAxisSpanSize); 1316 1316 } … … 1327 1327 if (emptyGridArea) { 1328 1328 // Check that it fits in the minor axis direction, as we shouldn't grow in that direction here (it was already managed in populateExplicitGridAndOrderIterator()). 1329 unsigned minorAxisFinalPositionIndex = autoPlacementMinorAxisDirection() == ForColumns ? emptyGridArea->columns. resolvedFinalPosition() : emptyGridArea->rows.resolvedFinalPosition();1329 unsigned minorAxisFinalPositionIndex = autoPlacementMinorAxisDirection() == ForColumns ? emptyGridArea->columns.endLine() : emptyGridArea->rows.endLine(); 1330 1330 const unsigned endOfMinorAxis = autoPlacementMinorAxisDirection() == ForColumns ? gridColumnCount() : gridRowCount(); 1331 1331 if (minorAxisFinalPositionIndex <= endOfMinorAxis) … … 1347 1347 m_gridItemArea.set(&gridItem, *emptyGridArea); 1348 1348 insertItemIntoGrid(gridItem, *emptyGridArea); 1349 autoPlacementCursor.first = emptyGridArea->rows. resolvedInitialPosition();1350 autoPlacementCursor.second = emptyGridArea->columns. resolvedInitialPosition();1349 autoPlacementCursor.first = emptyGridArea->rows.startLine(); 1350 autoPlacementCursor.second = emptyGridArea->columns.startLine(); 1351 1351 } 1352 1352 … … 1496 1496 // For positioned items we cannot use GridSpan::translate() because we could end up with negative values, as the positioned items do not create implicit tracks per spec. 1497 1497 int smallestStart = std::abs(isRowAxis ? m_smallestColumnStart : m_smallestRowStart); 1498 int resolvedInitialPosition = positions.untranslatedResolvedInitialPosition() + smallestStart;1499 int resolvedFinalPosition = positions.untranslatedResolvedFinalPosition() + smallestStart;1498 int startLine = positions.untranslatedStartLine() + smallestStart; 1499 int endLine = positions.untranslatedEndLine() + smallestStart; 1500 1500 1501 1501 GridPosition startPosition = isRowAxis ? child.style().gridItemColumnStart() : child.style().gridItemRowStart(); … … 1506 1506 bool startIsAuto = startPosition.isAuto() 1507 1507 || (startPosition.isNamedGridArea() && GridPositionsResolver::isNonExistentNamedLineOrArea(startPosition.namedGridLine(), style(), (direction == ForColumns) ? ColumnStartSide : RowStartSide)) 1508 || ( resolvedInitialPosition< firstExplicitLine)1509 || ( resolvedInitialPosition> lastExplicitLine);1508 || (startLine < firstExplicitLine) 1509 || (startLine > lastExplicitLine); 1510 1510 bool endIsAuto = endPosition.isAuto() 1511 1511 || (endPosition.isNamedGridArea() && GridPositionsResolver::isNonExistentNamedLineOrArea(endPosition.namedGridLine(), style(), (direction == ForColumns) ? ColumnEndSide : RowEndSide)) 1512 || ( resolvedFinalPosition< firstExplicitLine)1513 || ( resolvedFinalPosition> lastExplicitLine);1514 1515 unsigned initialPosition = startIsAuto ? 0 : resolvedInitialPosition;1516 unsigned finalPosition = endIsAuto ? lastExplicitLine : resolvedFinalPosition;1512 || (endLine < firstExplicitLine) 1513 || (endLine > lastExplicitLine); 1514 1515 unsigned initialPosition = startIsAuto ? 0 : startLine; 1516 unsigned finalPosition = endIsAuto ? lastExplicitLine : endLine; 1517 1517 1518 1518 LayoutUnit start = startIsAuto ? LayoutUnit() : isRowAxis ? m_columnPositions[initialPosition] : m_rowPositions[initialPosition]; … … 1575 1575 const auto& linePositions = (direction == ForColumns) ? m_columnPositions : m_rowPositions; 1576 1576 1577 LayoutUnit initialTrackPosition = linePositions[span. resolvedInitialPosition()];1578 LayoutUnit finalTrackPosition = linePositions[span. resolvedFinalPosition() - 1];1577 LayoutUnit initialTrackPosition = linePositions[span.startLine()]; 1578 LayoutUnit finalTrackPosition = linePositions[span.endLine() - 1]; 1579 1579 1580 1580 // Track Positions vector stores the 'start' grid line of each track, so we have to add last track's baseSize. 1581 return finalTrackPosition - initialTrackPosition + tracks[span. resolvedFinalPosition() - 1].baseSize();1581 return finalTrackPosition - initialTrackPosition + tracks[span.endLine() - 1].baseSize(); 1582 1582 } 1583 1583 … … 1858 1858 { 1859 1859 const GridSpan& rowsSpan = cachedGridSpan(child, ForRows); 1860 unsigned childStartLine = rowsSpan. resolvedInitialPosition();1860 unsigned childStartLine = rowsSpan.startLine(); 1861 1861 LayoutUnit startOfRow = m_rowPositions[childStartLine]; 1862 1862 LayoutUnit startPosition = startOfRow + marginBeforeForChild(child); … … 1869 1869 case GridAxisEnd: 1870 1870 case GridAxisCenter: { 1871 unsigned childEndLine = rowsSpan. resolvedFinalPosition();1871 unsigned childEndLine = rowsSpan.endLine(); 1872 1872 LayoutUnit endOfRow = m_rowPositions[childEndLine]; 1873 1873 // m_rowPositions include gutters so we need to substract them to get the actual end position for a given … … 1892 1892 { 1893 1893 const GridSpan& columnsSpan = cachedGridSpan(child, ForColumns); 1894 unsigned childStartLine = columnsSpan. resolvedInitialPosition();1894 unsigned childStartLine = columnsSpan.startLine(); 1895 1895 LayoutUnit startOfColumn = m_columnPositions[childStartLine]; 1896 1896 LayoutUnit startPosition = startOfColumn + marginStartForChild(child); … … 1903 1903 case GridAxisEnd: 1904 1904 case GridAxisCenter: { 1905 unsigned childEndLine = columnsSpan. resolvedFinalPosition();1905 unsigned childEndLine = columnsSpan.endLine(); 1906 1906 LayoutUnit endOfColumn = m_columnPositions[childEndLine]; 1907 1907 // m_columnPositions include gutters so we need to substract them to get the actual end position for a given -
trunk/Source/WebCore/rendering/style/GridArea.h
r198210 r198399 44 44 const int kGridMaxTracks = 1000000; 45 45 46 // A span in a single direction (either rows or columns). Note that | resolvedInitialPosition|47 // and | resolvedFinalPosition| are grid lines' indexes.48 // Iterating over the span shouldn't include |resolvedFinalPosition| to be correct.46 // A span in a single direction (either rows or columns). Note that |startLine| 47 // and |endLine| are grid lines' indexes. 48 // Despite line numbers in the spec start in "1", the indexes here start in "0". 49 49 class GridSpan { 50 50 public: 51 51 52 static GridSpan untranslatedDefiniteGridSpan(int resolvedInitialPosition, int resolvedFinalPosition)53 { 54 return GridSpan( resolvedInitialPosition, resolvedFinalPosition, UntranslatedDefinite);55 } 56 57 static GridSpan translatedDefiniteGridSpan(unsigned resolvedInitialPosition, unsigned resolvedFinalPosition)58 { 59 return GridSpan( resolvedInitialPosition, resolvedFinalPosition, TranslatedDefinite);52 static GridSpan untranslatedDefiniteGridSpan(int startLine, int endLine) 53 { 54 return GridSpan(startLine, endLine, UntranslatedDefinite); 55 } 56 57 static GridSpan translatedDefiniteGridSpan(unsigned startLine, unsigned endLine) 58 { 59 return GridSpan(startLine, endLine, TranslatedDefinite); 60 60 } 61 61 … … 67 67 bool operator==(const GridSpan& o) const 68 68 { 69 return m_type == o.m_type && m_ resolvedInitialPosition == o.m_resolvedInitialPosition && m_resolvedFinalPosition == o.m_resolvedFinalPosition;69 return m_type == o.m_type && m_startLine == o.m_startLine && m_endLine == o.m_endLine; 70 70 } 71 71 … … 73 73 { 74 74 ASSERT(isTranslatedDefinite()); 75 return m_ resolvedFinalPosition - m_resolvedInitialPosition;76 } 77 78 int untranslated ResolvedInitialPosition() const75 return m_endLine - m_startLine; 76 } 77 78 int untranslatedStartLine() const 79 79 { 80 80 ASSERT(m_type == UntranslatedDefinite); 81 return m_ resolvedInitialPosition;82 } 83 84 int untranslated ResolvedFinalPosition() const81 return m_startLine; 82 } 83 84 int untranslatedEndLine() const 85 85 { 86 86 ASSERT(m_type == UntranslatedDefinite); 87 return m_ resolvedFinalPosition;88 } 89 90 unsigned resolvedInitialPosition() const91 { 92 ASSERT(isTranslatedDefinite()); 93 ASSERT(m_ resolvedFinalPosition>= 0);94 return m_ resolvedInitialPosition;95 } 96 97 unsigned resolvedFinalPosition() const98 { 99 ASSERT(isTranslatedDefinite()); 100 ASSERT(m_ resolvedFinalPosition> 0);101 return m_ resolvedFinalPosition;87 return m_endLine; 88 } 89 90 unsigned startLine() const 91 { 92 ASSERT(isTranslatedDefinite()); 93 ASSERT(m_endLine >= 0); 94 return m_startLine; 95 } 96 97 unsigned endLine() const 98 { 99 ASSERT(isTranslatedDefinite()); 100 ASSERT(m_endLine > 0); 101 return m_endLine; 102 102 } 103 103 … … 117 117 { 118 118 ASSERT(isTranslatedDefinite()); 119 return m_ resolvedInitialPosition;119 return m_startLine; 120 120 } 121 121 … … 123 123 { 124 124 ASSERT(isTranslatedDefinite()); 125 return m_ resolvedFinalPosition;125 return m_endLine; 126 126 } 127 127 … … 141 141 142 142 m_type = TranslatedDefinite; 143 m_ resolvedInitialPosition+= offset;144 m_ resolvedFinalPosition+= offset;145 146 ASSERT(m_ resolvedInitialPosition>= 0);147 ASSERT(m_ resolvedFinalPosition> 0);143 m_startLine += offset; 144 m_endLine += offset; 145 146 ASSERT(m_startLine >= 0); 147 ASSERT(m_endLine > 0); 148 148 } 149 149 … … 152 152 enum GridSpanType {UntranslatedDefinite, TranslatedDefinite, Indefinite}; 153 153 154 GridSpan(int resolvedInitialPosition, int resolvedFinalPosition, GridSpanType type)154 GridSpan(int startLine, int endLine, GridSpanType type) 155 155 : m_type(type) 156 156 { 157 157 #if ENABLE(ASSERT) 158 ASSERT( resolvedInitialPosition < resolvedFinalPosition);158 ASSERT(startLine < endLine); 159 159 if (type == TranslatedDefinite) { 160 ASSERT( resolvedInitialPosition>= 0);161 ASSERT( resolvedFinalPosition> 0);160 ASSERT(startLine >= 0); 161 ASSERT(endLine > 0); 162 162 } 163 163 #endif 164 164 165 m_ resolvedInitialPosition = std::max(-kGridMaxTracks, std::min(resolvedInitialPosition, kGridMaxTracks - 1));166 m_ resolvedFinalPosition = std::max(-kGridMaxTracks + 1, std::min(resolvedFinalPosition, kGridMaxTracks));167 } 168 169 int m_ resolvedInitialPosition;170 int m_ resolvedFinalPosition;165 m_startLine = std::max(-kGridMaxTracks, std::min(startLine, kGridMaxTracks - 1)); 166 m_endLine = std::max(-kGridMaxTracks + 1, std::min(endLine, kGridMaxTracks)); 167 } 168 169 int m_startLine; 170 int m_endLine; 171 171 GridSpanType m_type; 172 172 -
trunk/Source/WebCore/rendering/style/GridPositionsResolver.cpp
r198210 r198399 170 170 } 171 171 172 static GridSpan definiteGridSpanWithNamedLineSpanAgainstOpposite(int resolvedOppositePosition, const GridPosition& position, GridPositionSide side, const Vector<unsigned>* gridLines, unsigned lastLine)172 static GridSpan definiteGridSpanWithNamedLineSpanAgainstOpposite(int oppositeLine, const GridPosition& position, GridPositionSide side, const Vector<unsigned>* gridLines, unsigned lastLine) 173 173 { 174 174 int start, end; 175 175 176 176 if (side == RowStartSide || side == ColumnStartSide) { 177 start = lookBackForNamedGridLine( resolvedOppositePosition- 1, position.spanPosition(), gridLines, lastLine);178 end = resolvedOppositePosition;177 start = lookBackForNamedGridLine(oppositeLine - 1, position.spanPosition(), gridLines, lastLine); 178 end = oppositeLine; 179 179 } else { 180 start = resolvedOppositePosition;181 end = lookAheadForNamedGridLine( resolvedOppositePosition+ 1, position.spanPosition(), gridLines, lastLine);180 start = oppositeLine; 181 end = lookAheadForNamedGridLine(oppositeLine + 1, position.spanPosition(), gridLines, lastLine); 182 182 } 183 183 … … 185 185 } 186 186 187 static GridSpan resolveNamedGridLinePositionAgainstOppositePosition(const RenderStyle& gridContainerStyle, int resolvedOppositePosition, const GridPosition& position, GridPositionSide side)187 static GridSpan resolveNamedGridLinePositionAgainstOppositePosition(const RenderStyle& gridContainerStyle, int oppositeLine, const GridPosition& position, GridPositionSide side) 188 188 { 189 189 ASSERT(position.isSpan()); … … 197 197 unsigned lastLine = explicitGridSizeForSide(gridContainerStyle, side); 198 198 199 return definiteGridSpanWithNamedLineSpanAgainstOpposite( resolvedOppositePosition, position, side, gridLines, lastLine);200 } 201 202 static GridSpan resolveGridPositionAgainstOppositePosition(const RenderStyle& gridContainerStyle, int resolvedOppositePosition, const GridPosition& position, GridPositionSide side)199 return definiteGridSpanWithNamedLineSpanAgainstOpposite(oppositeLine, position, side, gridLines, lastLine); 200 } 201 202 static GridSpan resolveGridPositionAgainstOppositePosition(const RenderStyle& gridContainerStyle, int oppositeLine, const GridPosition& position, GridPositionSide side) 203 203 { 204 204 if (position.isAuto()) { 205 205 if (isStartSide(side)) 206 return GridSpan::untranslatedDefiniteGridSpan( resolvedOppositePosition - 1, resolvedOppositePosition);207 return GridSpan::untranslatedDefiniteGridSpan( resolvedOppositePosition, resolvedOppositePosition+ 1);206 return GridSpan::untranslatedDefiniteGridSpan(oppositeLine - 1, oppositeLine); 207 return GridSpan::untranslatedDefiniteGridSpan(oppositeLine, oppositeLine + 1); 208 208 } 209 209 … … 213 213 if (!position.namedGridLine().isNull()) { 214 214 // span 2 'c' -> we need to find the appropriate grid line before / after our opposite position. 215 return resolveNamedGridLinePositionAgainstOppositePosition(gridContainerStyle, resolvedOppositePosition, position, side);215 return resolveNamedGridLinePositionAgainstOppositePosition(gridContainerStyle, oppositeLine, position, side); 216 216 } 217 217 … … 220 220 unsigned positionOffset = position.spanPosition(); 221 221 if (isStartSide(side)) 222 return GridSpan::untranslatedDefiniteGridSpan( resolvedOppositePosition - positionOffset, resolvedOppositePosition);223 224 return GridSpan::untranslatedDefiniteGridSpan( resolvedOppositePosition, resolvedOppositePosition+ positionOffset);222 return GridSpan::untranslatedDefiniteGridSpan(oppositeLine - positionOffset, oppositeLine); 223 224 return GridSpan::untranslatedDefiniteGridSpan(oppositeLine, oppositeLine + positionOffset); 225 225 } 226 226 … … 309 309 if (initialPosition.shouldBeResolvedAgainstOppositePosition()) { 310 310 // Infer the position from the final position ('auto / 1' or 'span 2 / 3' case). 311 auto finalResolvedPosition= resolveGridPositionFromStyle(gridContainerStyle, finalPosition, finalSide);312 return resolveGridPositionAgainstOppositePosition(gridContainerStyle, finalResolvedPosition, initialPosition, initialSide);311 auto endLine = resolveGridPositionFromStyle(gridContainerStyle, finalPosition, finalSide); 312 return resolveGridPositionAgainstOppositePosition(gridContainerStyle, endLine, initialPosition, initialSide); 313 313 } 314 314 315 315 if (finalPosition.shouldBeResolvedAgainstOppositePosition()) { 316 316 // Infer our position from the initial position ('1 / auto' or '3 / span 2' case). 317 auto initialResolvedPosition= resolveGridPositionFromStyle(gridContainerStyle, initialPosition, initialSide);318 return resolveGridPositionAgainstOppositePosition(gridContainerStyle, initialResolvedPosition, finalPosition, finalSide);319 } 320 321 int resolvedInitialPosition= resolveGridPositionFromStyle(gridContainerStyle, initialPosition, initialSide);322 int resolvedFinalPosition= resolveGridPositionFromStyle(gridContainerStyle, finalPosition, finalSide);323 324 if ( resolvedInitialPosition > resolvedFinalPosition)325 std::swap( resolvedInitialPosition, resolvedFinalPosition);326 else if ( resolvedInitialPosition == resolvedFinalPosition)327 resolvedFinalPosition = resolvedInitialPosition+ 1;328 329 return GridSpan::untranslatedDefiniteGridSpan( resolvedInitialPosition, std::max(resolvedInitialPosition, resolvedFinalPosition));317 auto startLine = resolveGridPositionFromStyle(gridContainerStyle, initialPosition, initialSide); 318 return resolveGridPositionAgainstOppositePosition(gridContainerStyle, startLine, finalPosition, finalSide); 319 } 320 321 int startLine = resolveGridPositionFromStyle(gridContainerStyle, initialPosition, initialSide); 322 int endLine = resolveGridPositionFromStyle(gridContainerStyle, finalPosition, finalSide); 323 324 if (startLine > endLine) 325 std::swap(startLine, endLine); 326 else if (startLine == endLine) 327 endLine = startLine + 1; 328 329 return GridSpan::untranslatedDefiniteGridSpan(startLine, std::max(startLine, endLine)); 330 330 } 331 331
Note: See TracChangeset
for help on using the changeset viewer.