⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 279306 in webkit


Ignore:
Timestamp:
Jun 25, 2021, 7:26:41 PM (5 years ago)
Author:
Alan Bujtas
Message:

[LFC][TFC] Remove redundant struct ResolvedItem
​https://bugs.webkit.org/show_bug.cgi?id=227405

Reviewed by Sam Weinig.

  • layout/formattingContexts/table/TableLayout.cpp:

(WebCore::Layout::distributeAvailableSpace):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r279303 r279306  
     12021-06-25  Alan Bujtas  <zalan@apple.com>
     2
     3        [LFC][TFC] Remove redundant struct ResolvedItem
     4        https://bugs.webkit.org/show_bug.cgi?id=227405
     5
     6        Reviewed by Sam Weinig.
     7
     8        * layout/formattingContexts/table/TableLayout.cpp:
     9        (WebCore::Layout::distributeAvailableSpace):
     10
    1112021-06-25  Myles C. Maxfield  <mmaxfield@apple.com>
    212
  • trunk/Source/WebCore/layout/formattingContexts/table/TableLayout.cpp

    r278825 r279306  
    114114static Vector<LayoutUnit> distributeAvailableSpace(const TableGrid& grid, LayoutUnit availableSpace, const WTF::Function<GridSpace(const TableGrid::Slot&, size_t)>& slotSpace)
    115115{
    116     struct ResolvedItem {
    117         GridSpace slotSpace;
    118     };
    119 
    120116    auto& columns = grid.columns();
    121117    auto& rows = grid.rows();
    122118    // 1. Collect the non-spanning spaces first. They are used for the final distribution as well as for distributing the spanning space.
    123     Vector<std::optional<ResolvedItem>> resolvedItems(SpanType::size(grid));
     119    Vector<std::optional<GridSpace>> resolvedItems(SpanType::size(grid));
    124120    for (size_t columnIndex = 0; columnIndex < columns.size(); ++columnIndex) {
    125121        for (size_t rowIndex = 0; rowIndex < rows.size(); ++rowIndex) {
    … …  
    129125            auto index = SpanType::index(columnIndex, rowIndex);
    130126            if (!resolvedItems[index])
    131                 resolvedItems[index] = ResolvedItem { };
    132             resolvedItems[index]->slotSpace = max(resolvedItems[index]->slotSpace, slotSpace(slot, index));
     127                resolvedItems[index] = GridSpace { };
     128            resolvedItems[index] = max(*resolvedItems[index], slotSpace(slot, index));
    133129        }
    134130    }
    … …  
    175171                ASSERT(unresolvedColumnCount);
    176172                --unresolvedColumnCount;
    177                 unresolvedSpanningSpace -= resolvedItems[spanIndex]->slotSpace;
     173                unresolvedSpanningSpace -= *resolvedItems[spanIndex];
    178174            }
    179175            ASSERT(unresolvedColumnCount);
    … …  
    182178                if (resolvedItems[spanIndex])
    183179                    continue;
    184                 resolvedItems[spanIndex] = ResolvedItem { equalSpaceForSpannedColumns };
     180                resolvedItems[spanIndex] = equalSpaceForSpannedColumns;
    185181            }
    186182        } else {
    … …  
    191187            auto resolvedSpanningSpace = GridSpace { };
    192188            for (auto spanIndex = SpanType::startSpan(cell); spanIndex < SpanType::endSpan(cell); ++spanIndex)
    193                 resolvedSpanningSpace += resolvedItems[spanIndex]->slotSpace;
     189                resolvedSpanningSpace += *resolvedItems[spanIndex];
    194190            if (resolvedSpanningSpace.preferredSpace >= unresolvedSpanningSpace.preferredSpace) {
    195191                // The spanning cell fits the spanned columns/rows just fine. Nothing to distribute.
    … …  
    201197                auto columnsFlexBase = spaceToDistribute.flexBase / resolvedSpanningSpace.flexBase;
    202198                for (auto spanIndex = SpanType::startSpan(cell); spanIndex < SpanType::endSpan(cell); ++spanIndex)
    203                     resolvedItems[spanIndex]->slotSpace += GridSpace { resolvedItems[spanIndex]->slotSpace.preferredSpace * columnsFlexBase, resolvedItems[spanIndex]->slotSpace.flexBase * columnsFlexBase};
     199                    *resolvedItems[spanIndex] += GridSpace { resolvedItems[spanIndex]->preferredSpace * columnsFlexBase, resolvedItems[spanIndex]->flexBase * columnsFlexBase};
    204200            }
    205201        }
    … …  
    214210    auto adjustabledSpace = GridSpace { };
    215211    for (auto& resolvedItem : resolvedItems)
    216         adjustabledSpace += resolvedItem->slotSpace;
     212        adjustabledSpace += *resolvedItem;
    217213
    218214    Vector<LayoutUnit> distributedSpaces(resolvedItems.size());
    … …  
    225221    auto columnsFlexBase = adjustabledSpace.flexBase ? spaceToDistribute / adjustabledSpace.flexBase : 0.f;
    226222    for (size_t index = 0; index < resolvedItems.size(); ++index) {
    227         auto columnExtraSpace = columnsFlexBase * resolvedItems[index]->slotSpace.flexBase;
    228         distributedSpaces[index] = LayoutUnit { resolvedItems[index]->slotSpace.preferredSpace + columnExtraSpace };
     223        auto columnExtraSpace = columnsFlexBase * resolvedItems[index]->flexBase;
     224        distributedSpaces[index] = LayoutUnit { resolvedItems[index]->preferredSpace + columnExtraSpace };
    229225    }
    230226    return distributedSpaces;
Note: See TracChangeset for help on using the changeset viewer.