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 |