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 695 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
706 if (computeUsedBreadthOfMinLength(direction, minTrackBreadth) > tracks[i
].m_usedBreadth) | 706 if (computeUsedBreadthOfMinLength(direction, minTrackBreadth) > tracks[i
].m_usedBreadth) |
707 return false; | 707 return false; |
708 } | 708 } |
709 return true; | 709 return true; |
710 } | 710 } |
711 #endif | 711 #endif |
712 | 712 |
713 void RenderGrid::growGrid(GridTrackSizingDirection direction, size_t maximumPosi
tionIndex) | 713 void RenderGrid::growGrid(GridTrackSizingDirection direction, size_t maximumPosi
tionIndex) |
714 { | 714 { |
715 if (direction == ForColumns) { | 715 if (direction == ForColumns) { |
716 ASSERT(maximumPositionIndex >= m_grid[0].size()); | 716 ASSERT(maximumPositionIndex >= gridColumnCount()); |
717 for (size_t row = 0; row < m_grid.size(); ++row) | 717 for (size_t row = 0; row < gridRowCount(); ++row) |
718 m_grid[row].grow(maximumPositionIndex + 1); | 718 m_grid[row].grow(maximumPositionIndex + 1); |
719 } else { | 719 } else { |
720 ASSERT(maximumPositionIndex >= m_grid.size()); | 720 ASSERT(maximumPositionIndex >= gridRowCount()); |
721 const size_t oldRowSize = m_grid.size(); | 721 const size_t oldRowSize = gridRowCount(); |
722 m_grid.grow(maximumPositionIndex + 1); | 722 m_grid.grow(maximumPositionIndex + 1); |
723 for (size_t row = oldRowSize; row < m_grid.size(); ++row) | 723 for (size_t row = oldRowSize; row < gridRowCount(); ++row) |
724 m_grid[row].grow(m_grid[0].size()); | 724 m_grid[row].grow(gridColumnCount()); |
725 } | 725 } |
726 } | 726 } |
727 | 727 |
728 void RenderGrid::insertItemIntoGrid(RenderBox* child, const GridCoordinate& coor
dinate) | 728 void RenderGrid::insertItemIntoGrid(RenderBox* child, const GridCoordinate& coor
dinate) |
729 { | 729 { |
730 for (GridResolvedPosition row = coordinate.rows.resolvedInitialPosition; row
<= coordinate.rows.resolvedFinalPosition; ++row) { | 730 for (GridResolvedPosition row = coordinate.rows.resolvedInitialPosition; row
<= coordinate.rows.resolvedFinalPosition; ++row) { |
731 for (GridResolvedPosition column = coordinate.columns.resolvedInitialPos
ition; column <= coordinate.columns.resolvedFinalPosition; ++column) | 731 for (GridResolvedPosition column = coordinate.columns.resolvedInitialPos
ition; column <= coordinate.columns.resolvedFinalPosition; ++column) |
732 m_grid[row.toInt()][column.toInt()].append(child); | 732 m_grid[row.toInt()][column.toInt()].append(child); |
733 } | 733 } |
734 | 734 |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
820 void RenderGrid::placeSpecifiedMajorAxisItemsOnGrid(const Vector<RenderBox*>& au
toGridItems) | 820 void RenderGrid::placeSpecifiedMajorAxisItemsOnGrid(const Vector<RenderBox*>& au
toGridItems) |
821 { | 821 { |
822 for (size_t i = 0; i < autoGridItems.size(); ++i) { | 822 for (size_t i = 0; i < autoGridItems.size(); ++i) { |
823 OwnPtr<GridSpan> majorAxisPositions = GridResolvedPosition::resolveGridP
ositionsFromStyle(*style(), *autoGridItems[i], autoPlacementMajorAxisDirection()
); | 823 OwnPtr<GridSpan> majorAxisPositions = GridResolvedPosition::resolveGridP
ositionsFromStyle(*style(), *autoGridItems[i], autoPlacementMajorAxisDirection()
); |
824 GridIterator iterator(m_grid, autoPlacementMajorAxisDirection(), majorAx
isPositions->resolvedInitialPosition.toInt()); | 824 GridIterator iterator(m_grid, autoPlacementMajorAxisDirection(), majorAx
isPositions->resolvedInitialPosition.toInt()); |
825 if (OwnPtr<GridCoordinate> emptyGridArea = iterator.nextEmptyGridArea())
{ | 825 if (OwnPtr<GridCoordinate> emptyGridArea = iterator.nextEmptyGridArea())
{ |
826 insertItemIntoGrid(autoGridItems[i], emptyGridArea->rows.resolvedIni
tialPosition, emptyGridArea->columns.resolvedInitialPosition); | 826 insertItemIntoGrid(autoGridItems[i], emptyGridArea->rows.resolvedIni
tialPosition, emptyGridArea->columns.resolvedInitialPosition); |
827 continue; | 827 continue; |
828 } | 828 } |
829 | 829 |
830 growGrid(autoPlacementMinorAxisDirection(), autoPlacementMinorAxisDirect
ion() == ForColumns ? m_grid[0].size() : m_grid.size()); | 830 growGrid(autoPlacementMinorAxisDirection(), autoPlacementMinorAxisDirect
ion() == ForColumns ? gridColumnCount() : gridRowCount()); |
831 OwnPtr<GridCoordinate> emptyGridArea = iterator.nextEmptyGridArea(); | 831 OwnPtr<GridCoordinate> emptyGridArea = iterator.nextEmptyGridArea(); |
832 ASSERT(emptyGridArea); | 832 ASSERT(emptyGridArea); |
833 insertItemIntoGrid(autoGridItems[i], emptyGridArea->rows.resolvedInitial
Position, emptyGridArea->columns.resolvedInitialPosition); | 833 insertItemIntoGrid(autoGridItems[i], emptyGridArea->rows.resolvedInitial
Position, emptyGridArea->columns.resolvedInitialPosition); |
834 } | 834 } |
835 } | 835 } |
836 | 836 |
837 void RenderGrid::placeAutoMajorAxisItemsOnGrid(const Vector<RenderBox*>& autoGri
dItems) | 837 void RenderGrid::placeAutoMajorAxisItemsOnGrid(const Vector<RenderBox*>& autoGri
dItems) |
838 { | 838 { |
839 for (size_t i = 0; i < autoGridItems.size(); ++i) | 839 for (size_t i = 0; i < autoGridItems.size(); ++i) |
840 placeAutoMajorAxisItemOnGrid(autoGridItems[i]); | 840 placeAutoMajorAxisItemOnGrid(autoGridItems[i]); |
(...skipping 16 matching lines...) Expand all Loading... |
857 for (size_t majorAxisIndex = 0; majorAxisIndex < endOfMajorAxis; ++major
AxisIndex) { | 857 for (size_t majorAxisIndex = 0; majorAxisIndex < endOfMajorAxis; ++major
AxisIndex) { |
858 GridIterator iterator(m_grid, autoPlacementMajorAxisDirection(), maj
orAxisIndex); | 858 GridIterator iterator(m_grid, autoPlacementMajorAxisDirection(), maj
orAxisIndex); |
859 if (OwnPtr<GridCoordinate> emptyGridArea = iterator.nextEmptyGridAre
a()) { | 859 if (OwnPtr<GridCoordinate> emptyGridArea = iterator.nextEmptyGridAre
a()) { |
860 insertItemIntoGrid(gridItem, emptyGridArea->rows.resolvedInitial
Position, emptyGridArea->columns.resolvedInitialPosition); | 860 insertItemIntoGrid(gridItem, emptyGridArea->rows.resolvedInitial
Position, emptyGridArea->columns.resolvedInitialPosition); |
861 return; | 861 return; |
862 } | 862 } |
863 } | 863 } |
864 } | 864 } |
865 | 865 |
866 // We didn't find an empty grid area so we need to create an extra major axi
s line and insert our gridItem in it. | 866 // We didn't find an empty grid area so we need to create an extra major axi
s line and insert our gridItem in it. |
867 const size_t columnIndex = (autoPlacementMajorAxisDirection() == ForColumns)
? m_grid[0].size() : minorAxisIndex; | 867 const size_t columnIndex = (autoPlacementMajorAxisDirection() == ForColumns)
? gridColumnCount() : minorAxisIndex; |
868 const size_t rowIndex = (autoPlacementMajorAxisDirection() == ForColumns) ?
minorAxisIndex : m_grid.size(); | 868 const size_t rowIndex = (autoPlacementMajorAxisDirection() == ForColumns) ?
minorAxisIndex : gridRowCount(); |
869 growGrid(autoPlacementMajorAxisDirection(), autoPlacementMajorAxisDirection(
) == ForColumns ? m_grid[0].size() : m_grid.size()); | 869 growGrid(autoPlacementMajorAxisDirection(), autoPlacementMajorAxisDirection(
) == ForColumns ? gridColumnCount() : gridRowCount()); |
870 insertItemIntoGrid(gridItem, rowIndex, columnIndex); | 870 insertItemIntoGrid(gridItem, rowIndex, columnIndex); |
871 } | 871 } |
872 | 872 |
873 GridTrackSizingDirection RenderGrid::autoPlacementMajorAxisDirection() const | 873 GridTrackSizingDirection RenderGrid::autoPlacementMajorAxisDirection() const |
874 { | 874 { |
875 GridAutoFlow flow = style()->gridAutoFlow(); | 875 GridAutoFlow flow = style()->gridAutoFlow(); |
876 ASSERT(flow != AutoFlowNone); | 876 ASSERT(flow != AutoFlowNone); |
877 return (flow == AutoFlowColumn) ? ForColumns : ForRows; | 877 return (flow == AutoFlowColumn) ? ForColumns : ForRows; |
878 } | 878 } |
879 | 879 |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1222 if (isOutOfFlowPositioned()) | 1222 if (isOutOfFlowPositioned()) |
1223 return "RenderGrid (positioned)"; | 1223 return "RenderGrid (positioned)"; |
1224 if (isAnonymous()) | 1224 if (isAnonymous()) |
1225 return "RenderGrid (generated)"; | 1225 return "RenderGrid (generated)"; |
1226 if (isRelPositioned()) | 1226 if (isRelPositioned()) |
1227 return "RenderGrid (relative positioned)"; | 1227 return "RenderGrid (relative positioned)"; |
1228 return "RenderGrid"; | 1228 return "RenderGrid"; |
1229 } | 1229 } |
1230 | 1230 |
1231 } // namespace WebCore | 1231 } // namespace WebCore |
OLD | NEW |