Changeset 201379 in webkit


Ignore:
Timestamp:
May 25, 2016 4:32:30 AM (8 years ago)
Author:
svillar@igalia.com
Message:

[css-grid] Refactor populateGridPositions()
https://bugs.webkit.org/show_bug.cgi?id=158065

Reviewed by Carlos Garcia Campos.

RenderGrid::populateGridPositions() was doing exactly the same thing for columns and rows
but using different data structures. That lead to a lot of duplicated code. It's easy to
refactor it in a new function that properly select the data structures to operate on based
on the direction.

No new tests as there is no change in behaviour.

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::layoutGridItems):
(WebCore::RenderGrid::populateGridPositionsForDirection): Refactored from
populateGridPositions().
(WebCore::RenderGrid::populateGridPositions): Deleted.

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

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r201378 r201379  
     12016-05-25  Sergio Villar Senin  <svillar@igalia.com>
     2
     3        [css-grid] Refactor populateGridPositions()
     4        https://bugs.webkit.org/show_bug.cgi?id=158065
     5
     6        Reviewed by Carlos Garcia Campos.
     7
     8        RenderGrid::populateGridPositions() was doing exactly the same thing for columns and rows
     9        but using different data structures. That lead to a lot of duplicated code. It's easy to
     10        refactor it in a new function that properly select the data structures to operate on based
     11        on the direction.
     12
     13        No new tests as there is no change in behaviour.
     14
     15        * rendering/RenderGrid.cpp:
     16        (WebCore::RenderGrid::layoutGridItems):
     17        (WebCore::RenderGrid::populateGridPositionsForDirection): Refactored from
     18        populateGridPositions().
     19        (WebCore::RenderGrid::populateGridPositions): Deleted.
     20        * rendering/RenderGrid.h:
     21
    1222016-05-25  Commit Queue  <commit-queue@webkit.org>
    223
  • trunk/Source/WebCore/rendering/RenderGrid.cpp

    r201325 r201379  
    15501550void RenderGrid::layoutGridItems(GridSizingData& sizingData)
    15511551{
    1552     populateGridPositions(sizingData);
     1552    populateGridPositionsForDirection(sizingData, ForColumns);
     1553    populateGridPositionsForDirection(sizingData, ForRows);
    15531554
    15541555    for (RenderBox* child = firstChildBox(); child; child = child->nextSiblingBox()) {
     
    17521753}
    17531754
    1754 void RenderGrid::populateGridPositions(GridSizingData& sizingData)
     1755void RenderGrid::populateGridPositionsForDirection(GridSizingData& sizingData, GridTrackSizingDirection direction)
    17551756{
    17561757    // Since we add alignment offsets and track gutters, grid lines are not always adjacent. Hence we will have to
     
    17611762    // inline-axis flow direction. However, column lines positions are 'direction' unaware. This simplification
    17621763    // allows us to use the same indexes to identify the columns independently on the inline-axis direction.
    1763     unsigned numberOfTracks = sizingData.columnTracks.size();
     1764    bool isRowAxis = direction == ForColumns;
     1765    auto& tracks = isRowAxis ? sizingData.columnTracks : sizingData.rowTracks;
     1766    unsigned numberOfTracks = tracks.size();
    17641767    unsigned numberOfLines = numberOfTracks + 1;
    17651768    unsigned lastLine = numberOfLines - 1;
    17661769    unsigned nextToLastLine = numberOfLines - 2;
    1767     ContentAlignmentData offset = computeContentPositionAndDistributionOffset(ForColumns, sizingData.freeSpaceForDirection(ForColumns).value(), numberOfTracks);
    1768     LayoutUnit trackGap = guttersSize(ForColumns, 2);
    1769     m_columnPositions.resize(numberOfLines);
    1770     m_columnPositions[0] = borderAndPaddingLogicalLeft() + offset.positionOffset;
     1770    ContentAlignmentData offset = computeContentPositionAndDistributionOffset(direction, sizingData.freeSpaceForDirection(direction).value(), numberOfTracks);
     1771    LayoutUnit trackGap = guttersSize(direction, 2);
     1772    auto& positions = isRowAxis ? m_columnPositions : m_rowPositions;
     1773    positions.resize(numberOfLines);
     1774    auto borderAndPadding = isRowAxis ? borderAndPaddingLogicalLeft() : borderAndPaddingBefore();
     1775    positions[0] = borderAndPadding + offset.positionOffset;
    17711776    for (unsigned i = 0; i < nextToLastLine; ++i)
    1772         m_columnPositions[i + 1] = m_columnPositions[i] + offset.distributionOffset + sizingData.columnTracks[i].baseSize() + trackGap;
    1773     m_columnPositions[lastLine] = m_columnPositions[nextToLastLine] + sizingData.columnTracks[nextToLastLine].baseSize();
    1774     m_offsetBetweenColumns = offset.distributionOffset;
    1775 
    1776     numberOfTracks = sizingData.rowTracks.size();
    1777     numberOfLines = numberOfTracks + 1;
    1778     lastLine = numberOfLines - 1;
    1779     nextToLastLine = numberOfLines - 2;
    1780     offset = computeContentPositionAndDistributionOffset(ForRows, sizingData.freeSpaceForDirection(ForRows).value(), numberOfTracks);
    1781     trackGap = guttersSize(ForRows, 2);
    1782     m_rowPositions.resize(numberOfLines);
    1783     m_rowPositions[0] = borderAndPaddingBefore() + offset.positionOffset;
    1784     for (unsigned i = 0; i < nextToLastLine; ++i)
    1785         m_rowPositions[i + 1] = m_rowPositions[i] + offset.distributionOffset + sizingData.rowTracks[i].baseSize() + trackGap;
    1786     m_rowPositions[lastLine] = m_rowPositions[nextToLastLine] + sizingData.rowTracks[nextToLastLine].baseSize();
    1787     m_offsetBetweenRows = offset.distributionOffset;
     1777        positions[i + 1] = positions[i] + offset.distributionOffset + tracks[i].baseSize() + trackGap;
     1778    positions[lastLine] = positions[nextToLastLine] + tracks[nextToLastLine].baseSize();
     1779    auto& offsetBetweenTracks = isRowAxis ? m_offsetBetweenColumns : m_offsetBetweenRows;
     1780    offsetBetweenTracks = offset.distributionOffset;
    17881781}
    17891782
  • trunk/Source/WebCore/rendering/RenderGrid.h

    r200618 r201379  
    104104
    105105    void layoutGridItems(GridSizingData&);
    106     void populateGridPositions(GridSizingData&);
     106    void populateGridPositionsForDirection(GridSizingData&, GridTrackSizingDirection);
    107107    void clearGrid();
    108108
Note: See TracChangeset for help on using the changeset viewer.