Changeset 279306 in webkit
- Timestamp:
- Jun 25, 2021, 7:26:41 PM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
-
ChangeLog (modified) (1 diff)
-
layout/formattingContexts/table/TableLayout.cpp (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r279303 r279306 1 2021-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 1 11 2021-06-25 Myles C. Maxfield <mmaxfield@apple.com> 2 12 -
trunk/Source/WebCore/layout/formattingContexts/table/TableLayout.cpp
r278825 r279306 114 114 static Vector<LayoutUnit> distributeAvailableSpace(const TableGrid& grid, LayoutUnit availableSpace, const WTF::Function<GridSpace(const TableGrid::Slot&, size_t)>& slotSpace) 115 115 { 116 struct ResolvedItem {117 GridSpace slotSpace;118 };119 120 116 auto& columns = grid.columns(); 121 117 auto& rows = grid.rows(); 122 118 // 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)); 124 120 for (size_t columnIndex = 0; columnIndex < columns.size(); ++columnIndex) { 125 121 for (size_t rowIndex = 0; rowIndex < rows.size(); ++rowIndex) { … … 129 125 auto index = SpanType::index(columnIndex, rowIndex); 130 126 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)); 133 129 } 134 130 } … … 175 171 ASSERT(unresolvedColumnCount); 176 172 --unresolvedColumnCount; 177 unresolvedSpanningSpace -= resolvedItems[spanIndex]->slotSpace;173 unresolvedSpanningSpace -= *resolvedItems[spanIndex]; 178 174 } 179 175 ASSERT(unresolvedColumnCount); … … 182 178 if (resolvedItems[spanIndex]) 183 179 continue; 184 resolvedItems[spanIndex] = ResolvedItem { equalSpaceForSpannedColumns };180 resolvedItems[spanIndex] = equalSpaceForSpannedColumns; 185 181 } 186 182 } else { … … 191 187 auto resolvedSpanningSpace = GridSpace { }; 192 188 for (auto spanIndex = SpanType::startSpan(cell); spanIndex < SpanType::endSpan(cell); ++spanIndex) 193 resolvedSpanningSpace += resolvedItems[spanIndex]->slotSpace;189 resolvedSpanningSpace += *resolvedItems[spanIndex]; 194 190 if (resolvedSpanningSpace.preferredSpace >= unresolvedSpanningSpace.preferredSpace) { 195 191 // The spanning cell fits the spanned columns/rows just fine. Nothing to distribute. … … 201 197 auto columnsFlexBase = spaceToDistribute.flexBase / resolvedSpanningSpace.flexBase; 202 198 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}; 204 200 } 205 201 } … … 214 210 auto adjustabledSpace = GridSpace { }; 215 211 for (auto& resolvedItem : resolvedItems) 216 adjustabledSpace += resolvedItem->slotSpace;212 adjustabledSpace += *resolvedItem; 217 213 218 214 Vector<LayoutUnit> distributedSpaces(resolvedItems.size()); … … 225 221 auto columnsFlexBase = adjustabledSpace.flexBase ? spaceToDistribute / adjustabledSpace.flexBase : 0.f; 226 222 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 }; 229 225 } 230 226 return distributedSpaces;
Note:
See TracChangeset
for help on using the changeset viewer.