Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2011 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 960 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 971 PassOwnPtr<GridCoordinate> RenderGrid::createEmptyGridAreaAtSpecifiedPositionsOu tsideGrid(const RenderBox& gridItem, GridTrackSizingDirection specifiedDirection , const GridSpan& specifiedPositions) const | 971 PassOwnPtr<GridCoordinate> RenderGrid::createEmptyGridAreaAtSpecifiedPositionsOu tsideGrid(const RenderBox& gridItem, GridTrackSizingDirection specifiedDirection , const GridSpan& specifiedPositions) const |
| 972 { | 972 { |
| 973 GridTrackSizingDirection crossDirection = specifiedDirection == ForColumns ? ForRows : ForColumns; | 973 GridTrackSizingDirection crossDirection = specifiedDirection == ForColumns ? ForRows : ForColumns; |
| 974 const size_t endOfCrossDirection = crossDirection == ForColumns ? gridColumn Count() : gridRowCount(); | 974 const size_t endOfCrossDirection = crossDirection == ForColumns ? gridColumn Count() : gridRowCount(); |
| 975 GridSpan crossDirectionPositions = GridResolvedPosition::resolveGridPosition sFromAutoPlacementPosition(*style(), gridItem, crossDirection, GridResolvedPosit ion(endOfCrossDirection)); | 975 GridSpan crossDirectionPositions = GridResolvedPosition::resolveGridPosition sFromAutoPlacementPosition(*style(), gridItem, crossDirection, GridResolvedPosit ion(endOfCrossDirection)); |
| 976 return adoptPtr(new GridCoordinate(specifiedDirection == ForColumns ? crossD irectionPositions : specifiedPositions, specifiedDirection == ForColumns ? speci fiedPositions : crossDirectionPositions)); | 976 return adoptPtr(new GridCoordinate(specifiedDirection == ForColumns ? crossD irectionPositions : specifiedPositions, specifiedDirection == ForColumns ? speci fiedPositions : crossDirectionPositions)); |
| 977 } | 977 } |
| 978 | 978 |
| 979 void RenderGrid::placeSpecifiedMajorAxisItemsOnGrid(const Vector<RenderBox*>& au toGridItems) | 979 void RenderGrid::placeSpecifiedMajorAxisItemsOnGrid(const Vector<RenderBox*>& au toGridItems) |
| 980 { | 980 { |
| 981 GridTrackSizingDirection direction = autoPlacementMajorAxisDirection(); | |
| 982 bool isGridAutoFlowDense = style()->isGridAutoFlowAlgorithmDense(); | |
| 983 | |
| 984 Vector<size_t> minorAxisCursors; | |
|
Julien - ping for review
2015/02/23 16:15:16
I would love a comment about this vector to explai
Manuel Rego
2015/02/23 22:22:00
I agree. But finally I'm changing the Vector for a
| |
| 985 if (!isGridAutoFlowDense) | |
| 986 minorAxisCursors.grow(direction == ForColumns ? gridColumnCount() : grid RowCount()); | |
| 987 | |
| 981 for (const auto& autoGridItem : autoGridItems) { | 988 for (const auto& autoGridItem : autoGridItems) { |
| 982 OwnPtr<GridSpan> majorAxisPositions = GridResolvedPosition::resolveGridP ositionsFromStyle(*style(), *autoGridItem, autoPlacementMajorAxisDirection()); | 989 OwnPtr<GridSpan> majorAxisPositions = GridResolvedPosition::resolveGridP ositionsFromStyle(*style(), *autoGridItem, autoPlacementMajorAxisDirection()); |
| 983 GridSpan minorAxisPositions = GridResolvedPosition::resolveGridPositions FromAutoPlacementPosition(*style(), *autoGridItem, autoPlacementMinorAxisDirecti on(), GridResolvedPosition(0)); | 990 GridSpan minorAxisPositions = GridResolvedPosition::resolveGridPositions FromAutoPlacementPosition(*style(), *autoGridItem, autoPlacementMinorAxisDirecti on(), GridResolvedPosition(0)); |
| 984 | 991 |
| 985 GridIterator iterator(m_grid, autoPlacementMajorAxisDirection(), majorAx isPositions->resolvedInitialPosition.toInt()); | 992 GridIterator iterator(m_grid, autoPlacementMajorAxisDirection(), majorAx isPositions->resolvedInitialPosition.toInt(), isGridAutoFlowDense ? 0 : minorAxi sCursors[majorAxisPositions->resolvedInitialPosition.toInt()]); |
|
Julien - ping for review
2015/02/18 21:08:40
That's relying on the default value in minorAxisCu
Manuel Rego
2015/02/18 21:23:10
We can use minorAxisCursors.fill(0) before to make
Julien - ping for review
2015/02/23 16:15:16
minorAxisCursors.fill(0) makes the code more clear
| |
| 993 | |
| 986 OwnPtr<GridCoordinate> emptyGridArea = iterator.nextEmptyGridArea(majorA xisPositions->integerSpan(), minorAxisPositions.integerSpan()); | 994 OwnPtr<GridCoordinate> emptyGridArea = iterator.nextEmptyGridArea(majorA xisPositions->integerSpan(), minorAxisPositions.integerSpan()); |
| 987 if (!emptyGridArea) | 995 if (!emptyGridArea) |
| 988 emptyGridArea = createEmptyGridAreaAtSpecifiedPositionsOutsideGrid(* autoGridItem, autoPlacementMajorAxisDirection(), *majorAxisPositions); | 996 emptyGridArea = createEmptyGridAreaAtSpecifiedPositionsOutsideGrid(* autoGridItem, autoPlacementMajorAxisDirection(), *majorAxisPositions); |
| 989 insertItemIntoGrid(*autoGridItem, *emptyGridArea); | 997 insertItemIntoGrid(*autoGridItem, *emptyGridArea); |
| 998 | |
| 999 if (!isGridAutoFlowDense) | |
| 1000 minorAxisCursors[majorAxisPositions->resolvedInitialPosition.toInt() ] = (direction == ForColumns) ? emptyGridArea->rows.resolvedInitialPosition.toIn t() : emptyGridArea->columns.resolvedInitialPosition.toInt(); | |
| 990 } | 1001 } |
| 991 } | 1002 } |
| 992 | 1003 |
| 993 void RenderGrid::placeAutoMajorAxisItemsOnGrid(const Vector<RenderBox*>& autoGri dItems) | 1004 void RenderGrid::placeAutoMajorAxisItemsOnGrid(const Vector<RenderBox*>& autoGri dItems) |
| 994 { | 1005 { |
| 995 std::pair<size_t, size_t> autoPlacementCursor = std::make_pair(0, 0); | 1006 std::pair<size_t, size_t> autoPlacementCursor = std::make_pair(0, 0); |
| 996 bool isGridAutoFlowDense = style()->isGridAutoFlowAlgorithmDense(); | 1007 bool isGridAutoFlowDense = style()->isGridAutoFlowAlgorithmDense(); |
| 997 | 1008 |
| 998 for (const auto& autoGridItem : autoGridItems) { | 1009 for (const auto& autoGridItem : autoGridItems) { |
| 999 placeAutoMajorAxisItemOnGrid(*autoGridItem, autoPlacementCursor); | 1010 placeAutoMajorAxisItemOnGrid(*autoGridItem, autoPlacementCursor); |
| (...skipping 735 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1735 if (isOutOfFlowPositioned()) | 1746 if (isOutOfFlowPositioned()) |
| 1736 return "RenderGrid (positioned)"; | 1747 return "RenderGrid (positioned)"; |
| 1737 if (isAnonymous()) | 1748 if (isAnonymous()) |
| 1738 return "RenderGrid (generated)"; | 1749 return "RenderGrid (generated)"; |
| 1739 if (isRelPositioned()) | 1750 if (isRelPositioned()) |
| 1740 return "RenderGrid (relative positioned)"; | 1751 return "RenderGrid (relative positioned)"; |
| 1741 return "RenderGrid"; | 1752 return "RenderGrid"; |
| 1742 } | 1753 } |
| 1743 | 1754 |
| 1744 } // namespace blink | 1755 } // namespace blink |
| OLD | NEW |