Index: Source/core/rendering/style/GridCoordinate.h |
diff --git a/Source/core/rendering/style/GridCoordinate.h b/Source/core/rendering/style/GridCoordinate.h |
index 937d3f08b9b2c73688b0ada58ccf780c3d81b9c1..6c665c1fc3e8f309bfa509ef78c046f9c2b71292 100644 |
--- a/Source/core/rendering/style/GridCoordinate.h |
+++ b/Source/core/rendering/style/GridCoordinate.h |
@@ -31,7 +31,7 @@ |
#ifndef GridCoordinate_h |
#define GridCoordinate_h |
-#include "core/rendering/style/GridPosition.h" |
+#include "core/rendering/style/GridResolvedPosition.h" |
#include "wtf/HashMap.h" |
#include "wtf/PassOwnPtr.h" |
#include "wtf/text/WTFString.h" |
@@ -42,25 +42,25 @@ namespace WebCore { |
// and |finalPositionIndex| are grid areas' indexes, NOT grid lines'. Iterating over the |
// span should include both |initialPositionIndex| and |finalPositionIndex| to be correct. |
struct GridSpan { |
- static PassOwnPtr<GridSpan> create(size_t initialPosition, size_t finalPosition) |
+ static PassOwnPtr<GridSpan> create(const GridResolvedPosition& initialPosition, const GridResolvedPosition& finalPosition) |
{ |
return adoptPtr(new GridSpan(initialPosition, finalPosition)); |
} |
- static PassOwnPtr<GridSpan> createWithSpanAgainstOpposite(size_t resolvedOppositePosition, const GridPosition& position, GridPositionSide side) |
+ static PassOwnPtr<GridSpan> createWithSpanAgainstOpposite(const GridResolvedPosition& resolvedOppositePosition, const GridPosition& position, GridPositionSide side) |
{ |
// 'span 1' is contained inside a single grid track regardless of the direction. |
// That's why the CSS span value is one more than the offset we apply. |
size_t positionOffset = position.spanPosition() - 1; |
if (side == ColumnStartSide || side == RowStartSide) { |
- size_t initialResolvedPosition = std::max<int>(0, resolvedOppositePosition - positionOffset); |
+ GridResolvedPosition initialResolvedPosition = GridResolvedPosition(std::max<int>(0, resolvedOppositePosition.integerPosition() - positionOffset)); |
return GridSpan::create(initialResolvedPosition, resolvedOppositePosition); |
} |
- return GridSpan::create(resolvedOppositePosition, resolvedOppositePosition + positionOffset); |
+ return GridSpan::create(resolvedOppositePosition, GridResolvedPosition(resolvedOppositePosition.integerPosition() + positionOffset)); |
} |
- static PassOwnPtr<GridSpan> createWithNamedSpanAgainstOpposite(size_t resolvedOppositePosition, const GridPosition& position, GridPositionSide side, const Vector<size_t>& gridLines) |
+ static PassOwnPtr<GridSpan> createWithNamedSpanAgainstOpposite(const GridResolvedPosition& resolvedOppositePosition, const GridPosition& position, GridPositionSide side, const Vector<size_t>& gridLines) |
{ |
if (side == RowStartSide || side == ColumnStartSide) |
return createWithInitialNamedSpanAgainstOpposite(resolvedOppositePosition, position, gridLines); |
@@ -68,37 +68,38 @@ struct GridSpan { |
return createWithFinalNamedSpanAgainstOpposite(resolvedOppositePosition, position, gridLines); |
} |
- static PassOwnPtr<GridSpan> createWithInitialNamedSpanAgainstOpposite(size_t resolvedOppositePosition, const GridPosition& position, const Vector<size_t>& gridLines) |
+ static PassOwnPtr<GridSpan> createWithInitialNamedSpanAgainstOpposite(const GridResolvedPosition& resolvedOppositePosition, const GridPosition& position, const Vector<size_t>& gridLines) |
{ |
// The grid line inequality needs to be strict (which doesn't match the after / end case) because |resolvedOppositePosition| |
// is already converted to an index in our grid representation (ie one was removed from the grid line to account for the side). |
size_t firstLineBeforeOppositePositionIndex = 0; |
- const size_t* firstLineBeforeOppositePosition = std::lower_bound(gridLines.begin(), gridLines.end(), resolvedOppositePosition); |
+ const size_t* firstLineBeforeOppositePosition = std::lower_bound(gridLines.begin(), gridLines.end(), resolvedOppositePosition.integerPosition()); |
if (firstLineBeforeOppositePosition != gridLines.end()) |
firstLineBeforeOppositePositionIndex = firstLineBeforeOppositePosition - gridLines.begin(); |
size_t gridLineIndex = std::max<int>(0, firstLineBeforeOppositePositionIndex - position.spanPosition() + 1); |
size_t resolvedGridLinePosition = gridLines[gridLineIndex]; |
- if (resolvedGridLinePosition > resolvedOppositePosition) |
- resolvedGridLinePosition = resolvedOppositePosition; |
- return GridSpan::create(resolvedGridLinePosition, resolvedOppositePosition); |
+ if (resolvedGridLinePosition > resolvedOppositePosition.integerPosition()) |
+ resolvedGridLinePosition = resolvedOppositePosition.integerPosition(); |
+ return GridSpan::create(GridResolvedPosition(resolvedGridLinePosition), resolvedOppositePosition); |
} |
- static PassOwnPtr<GridSpan> createWithFinalNamedSpanAgainstOpposite(size_t resolvedOppositePosition, const GridPosition& position, const Vector<size_t>& gridLines) |
+ static PassOwnPtr<GridSpan> createWithFinalNamedSpanAgainstOpposite(const GridResolvedPosition& resolvedOppositePosition, const GridPosition& position, const Vector<size_t>& gridLines) |
{ |
size_t firstLineAfterOppositePositionIndex = gridLines.size() - 1; |
- const size_t* firstLineAfterOppositePosition = std::upper_bound(gridLines.begin(), gridLines.end(), resolvedOppositePosition); |
+ const size_t* firstLineAfterOppositePosition = std::upper_bound(gridLines.begin(), gridLines.end(), resolvedOppositePosition.integerPosition()); |
if (firstLineAfterOppositePosition != gridLines.end()) |
firstLineAfterOppositePositionIndex = firstLineAfterOppositePosition - gridLines.begin(); |
size_t gridLineIndex = std::min(gridLines.size() - 1, firstLineAfterOppositePositionIndex + position.spanPosition() - 1); |
- size_t resolvedGridLinePosition = GridPosition::adjustGridPositionForAfterEndSide(gridLines[gridLineIndex]); |
+ size_t resolvedGridLinePositionInteger = GridResolvedPosition::adjustGridPositionForAfterEndSide(gridLines[gridLineIndex]); |
+ GridResolvedPosition resolvedGridLinePosition = GridResolvedPosition(resolvedGridLinePositionInteger); |
if (resolvedGridLinePosition < resolvedOppositePosition) |
- resolvedGridLinePosition = resolvedOppositePosition; |
+ resolvedGridLinePosition.setIntegerPosition(resolvedOppositePosition.integerPosition()); |
return GridSpan::create(resolvedOppositePosition, resolvedGridLinePosition); |
} |
- GridSpan(size_t initialPosition, size_t finalPosition) |
+ GridSpan(const GridResolvedPosition& initialPosition, const GridResolvedPosition& finalPosition) |
: initialPositionIndex(initialPosition) |
, finalPositionIndex(finalPosition) |
{ |
@@ -110,8 +111,8 @@ struct GridSpan { |
return initialPositionIndex == o.initialPositionIndex && finalPositionIndex == o.finalPositionIndex; |
} |
- size_t initialPositionIndex; |
- size_t finalPositionIndex; |
+ GridResolvedPosition initialPositionIndex; |
+ GridResolvedPosition finalPositionIndex; |
}; |
// This represents a grid area that spans in both rows' and columns' direction. |