Changeset 190784 in webkit


Ignore:
Timestamp:
Oct 9, 2015 5:56:43 AM (9 years ago)
Author:
svillar@igalia.com
Message:

[css-grid] Include freeSpace in GridSizingData struct
https://bugs.webkit.org/show_bug.cgi?id=149876

Reviewed by Darin Adler.

During the layout process we keep the free space for rows and
columns in two variables that are passed to a few methods
along with the GridSizingData struct. Those two variables
should clearly be part of GridSizingData as they're temporary
values used just for the sake of the layout.

No new tests required as this is just a refactoring.

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::GridSizingData::GridSizingData):
(WebCore::RenderGrid::GridSizingData::freeSpaceForDirection):
(WebCore::RenderGrid::computeIntrinsicLogicalWidths):
(WebCore::RenderGrid::computeUsedBreadthOfGridTracks):
(WebCore::RenderGrid::applyStretchAlignmentToTracksIfNeeded):
(WebCore::RenderGrid::layoutGridItems):
(WebCore::RenderGrid::populateGridPositions):
(WebCore::contentDistributionOffset):
(WebCore::RenderGrid::computeContentPositionAndDistributionOffset):

  • rendering/RenderGrid.h:
Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r190783 r190784  
     12015-10-07  Sergio Villar Senin  <svillar@igalia.com>
     2
     3        [css-grid] Include freeSpace in GridSizingData struct
     4        https://bugs.webkit.org/show_bug.cgi?id=149876
     5
     6        Reviewed by Darin Adler.
     7
     8        During the layout process we keep the free space for rows and
     9        columns in two variables that are passed to a few methods
     10        along with the GridSizingData struct. Those two variables
     11        should clearly be part of GridSizingData as they're temporary
     12        values used just for the sake of the layout.
     13
     14        No new tests required as this is just a refactoring.
     15
     16        * rendering/RenderGrid.cpp:
     17        (WebCore::RenderGrid::GridSizingData::GridSizingData):
     18        (WebCore::RenderGrid::GridSizingData::freeSpaceForDirection):
     19        (WebCore::RenderGrid::computeIntrinsicLogicalWidths):
     20        (WebCore::RenderGrid::computeUsedBreadthOfGridTracks):
     21        (WebCore::RenderGrid::applyStretchAlignmentToTracksIfNeeded):
     22        (WebCore::RenderGrid::layoutGridItems):
     23        (WebCore::RenderGrid::populateGridPositions):
     24        (WebCore::contentDistributionOffset):
     25        (WebCore::RenderGrid::computeContentPositionAndDistributionOffset):
     26        * rendering/RenderGrid.h:
     27
    1282015-10-08  Sergio Villar Senin  <svillar@igalia.com>
    229
  • trunk/Source/WebCore/rendering/RenderGrid.cpp

    r190783 r190784  
    211211    WTF_MAKE_NONCOPYABLE(GridSizingData);
    212212public:
    213     GridSizingData(unsigned gridColumnCount, unsigned gridRowCount)
     213    GridSizingData(unsigned gridColumnCount, unsigned gridRowCount, LayoutUnit freeSpaceForColumns, LayoutUnit freeSpaceForRows)
    214214        : columnTracks(gridColumnCount)
    215215        , rowTracks(gridRowCount)
     216        , freeSpaceForColumns(freeSpaceForColumns)
     217        , freeSpaceForRows(freeSpaceForRows)
    216218    {
    217219    }
     
    225227    Vector<GridTrack*> growBeyondGrowthLimitsTracks;
    226228    Vector<GridItemWithSpan> itemsSortedByIncreasingSpan;
     229
     230    LayoutUnit& freeSpaceForDirection(GridTrackSizingDirection direction) { return direction == ForColumns ? freeSpaceForColumns : freeSpaceForRows; }
     231
     232private:
     233    LayoutUnit freeSpaceForColumns;
     234    LayoutUnit freeSpaceForRows;
    227235};
    228236
     
    346354        const_cast<RenderGrid*>(this)->placeItemsOnGrid();
    347355
    348     GridSizingData sizingData(gridColumnCount(), gridRowCount());
    349     LayoutUnit availableLogicalSpace = 0;
    350     const_cast<RenderGrid*>(this)->computeUsedBreadthOfGridTracks(ForColumns, sizingData, availableLogicalSpace);
     356    GridSizingData sizingData(gridColumnCount(), gridRowCount(), 0, 0);
     357    const_cast<RenderGrid*>(this)->computeUsedBreadthOfGridTracks(ForColumns, sizingData);
    351358
    352359    for (auto& column : sizingData.columnTracks) {
     
    380387}
    381388
    382 void RenderGrid::computeUsedBreadthOfGridTracks(GridTrackSizingDirection direction, GridSizingData& sizingData, LayoutUnit& availableLogicalSpace)
    383 {
     389void RenderGrid::computeUsedBreadthOfGridTracks(GridTrackSizingDirection direction, GridSizingData& sizingData)
     390{
     391    LayoutUnit& availableLogicalSpace = sizingData.freeSpaceForDirection(direction);
    384392    const LayoutUnit initialAvailableLogicalSpace = availableLogicalSpace;
    385393    Vector<GridTrack>& tracks = (direction == ForColumns) ? sizingData.columnTracks : sizingData.rowTracks;
     
    12231231}
    12241232
    1225 void RenderGrid::applyStretchAlignmentToTracksIfNeeded(GridTrackSizingDirection direction, GridSizingData& sizingData, LayoutUnit availableSpace)
    1226 {
     1233void RenderGrid::applyStretchAlignmentToTracksIfNeeded(GridTrackSizingDirection direction, GridSizingData& sizingData)
     1234{
     1235    LayoutUnit& availableSpace = sizingData.freeSpaceForDirection(direction);
    12271236    if (availableSpace <= 0
    12281237        || (direction == ForColumns && style().resolvedJustifyContentDistribution() != ContentDistributionStretch)
     
    12481257        track.setBaseSize(track.baseSize() + sizeToIncrease);
    12491258    }
     1259    availableSpace = 0;
    12501260}
    12511261
     
    12611271    availableSpaceForRows -= guttersSize(ForRows, gridRowCount());
    12621272
    1263     GridSizingData sizingData(gridColumnCount(), gridRowCount());
    1264     computeUsedBreadthOfGridTracks(ForColumns, sizingData, availableSpaceForColumns);
     1273    GridSizingData sizingData(gridColumnCount(), gridRowCount(), availableSpaceForColumns, availableSpaceForRows);
     1274    computeUsedBreadthOfGridTracks(ForColumns, sizingData);
    12651275    ASSERT(tracksAreWiderThanMinTrackBreadth(ForColumns, sizingData.columnTracks));
    1266     computeUsedBreadthOfGridTracks(ForRows, sizingData, availableSpaceForRows);
     1276    computeUsedBreadthOfGridTracks(ForRows, sizingData);
    12671277    ASSERT(tracksAreWiderThanMinTrackBreadth(ForRows, sizingData.rowTracks));
    12681278
    1269     applyStretchAlignmentToTracksIfNeeded(ForColumns, sizingData, availableSpaceForColumns);
    1270     applyStretchAlignmentToTracksIfNeeded(ForRows, sizingData, availableSpaceForRows);
    1271 
    1272     populateGridPositions(sizingData, availableSpaceForColumns, availableSpaceForRows);
     1279    applyStretchAlignmentToTracksIfNeeded(ForColumns, sizingData);
     1280    applyStretchAlignmentToTracksIfNeeded(ForRows, sizingData);
     1281
     1282    populateGridPositions(sizingData);
    12731283
    12741284    for (RenderBox* child = firstChildBox(); child; child = child->nextSiblingBox()) {
     
    13621372}
    13631373
    1364 void RenderGrid::populateGridPositions(GridSizingData& sizingData, LayoutUnit availableSpaceForColumns, LayoutUnit availableSpaceForRows)
     1374void RenderGrid::populateGridPositions(GridSizingData& sizingData)
    13651375{
    13661376    // Since we add alignment offsets and track gutters, grid lines are not always adjacent. Hence we will have to
     
    13741384    unsigned lastLine = numberOfLines - 1;
    13751385    unsigned nextToLastLine = numberOfLines - 2;
    1376     ContentAlignmentData offset = computeContentPositionAndDistributionOffset(ForColumns, availableSpaceForColumns, numberOfTracks);
     1386    ContentAlignmentData offset = computeContentPositionAndDistributionOffset(ForColumns, sizingData.freeSpaceForDirection(ForColumns), numberOfTracks);
    13771387    LayoutUnit trackGap = guttersSize(ForColumns, 2);
    13781388    m_columnPositions.resize(numberOfLines);
     
    13861396    lastLine = numberOfLines - 1;
    13871397    nextToLastLine = numberOfLines - 2;
    1388     offset = computeContentPositionAndDistributionOffset(ForRows, availableSpaceForRows, numberOfTracks);
     1398    offset = computeContentPositionAndDistributionOffset(ForRows, sizingData.freeSpaceForDirection(ForRows), numberOfTracks);
    13891399    trackGap = guttersSize(ForRows, 2);
    13901400    m_rowPositions.resize(numberOfLines);
     
    17481758}
    17491759
    1750 static ContentAlignmentData contentDistributionOffset(LayoutUnit availableFreeSpace, ContentPosition& fallbackPosition, ContentDistributionType distribution, unsigned numberOfGridTracks)
     1760static ContentAlignmentData contentDistributionOffset(const LayoutUnit& availableFreeSpace, ContentPosition& fallbackPosition, ContentDistributionType distribution, unsigned numberOfGridTracks)
    17511761{
    17521762    if (distribution != ContentDistributionDefault && fallbackPosition == ContentPositionAuto)
     
    17801790}
    17811791
    1782 ContentAlignmentData RenderGrid::computeContentPositionAndDistributionOffset(GridTrackSizingDirection direction, LayoutUnit availableFreeSpace, unsigned numberOfGridTracks) const
     1792ContentAlignmentData RenderGrid::computeContentPositionAndDistributionOffset(GridTrackSizingDirection direction, const LayoutUnit& availableFreeSpace, unsigned numberOfGridTracks) const
    17831793{
    17841794    bool isRowAxis = direction == ForColumns;
  • trunk/Source/WebCore/rendering/RenderGrid.h

    r190783 r190784  
    7070    class GridIterator;
    7171    class GridSizingData;
    72     void computeUsedBreadthOfGridTracks(GridTrackSizingDirection, GridSizingData&, LayoutUnit& availableLogicalSpace);
     72    void computeUsedBreadthOfGridTracks(GridTrackSizingDirection, GridSizingData&);
    7373    bool gridElementIsShrinkToFit();
    7474    LayoutUnit computeUsedBreadthOfMinLength(const GridLength&, LayoutUnit maxSize) const;
     
    8989
    9090    void layoutGridItems();
    91     void populateGridPositions(GridSizingData&, LayoutUnit availableSpaceForColumns, LayoutUnit availableSpaceForRows);
     91    void populateGridPositions(GridSizingData&);
    9292    void clearGrid();
    9393
     
    130130    LayoutUnit columnAxisOffsetForChild(const RenderBox&) const;
    131131    LayoutUnit rowAxisOffsetForChild(const RenderBox&) const;
    132     ContentAlignmentData computeContentPositionAndDistributionOffset(GridTrackSizingDirection, LayoutUnit availableFreeSpace, unsigned numberOfGridTracks) const;
     132    ContentAlignmentData computeContentPositionAndDistributionOffset(GridTrackSizingDirection, const LayoutUnit& availableFreeSpace, unsigned numberOfGridTracks) const;
    133133    LayoutPoint findChildLogicalPosition(const RenderBox&) const;
    134134    GridCoordinate cachedGridCoordinate(const RenderBox&) const;
     
    138138    LayoutUnit gridAreaBreadthForChildIncludingAlignmentOffsets(const RenderBox&, GridTrackSizingDirection, const GridSizingData&) const;
    139139
    140     void applyStretchAlignmentToTracksIfNeeded(GridTrackSizingDirection, GridSizingData&, LayoutUnit availableSpace);
     140    void applyStretchAlignmentToTracksIfNeeded(GridTrackSizingDirection, GridSizingData&);
    141141
    142142    virtual void paintChildren(PaintInfo& forSelf, const LayoutPoint& paintOffset, PaintInfo& forChild, bool usePrintRect) override;
Note: See TracChangeset for help on using the changeset viewer.