Changeset 246062 in webkit


Ignore:
Timestamp:
Jun 4, 2019 7:54:52 AM (5 years ago)
Author:
Alan Bujtas
Message:

[LFC][IFC] Remove redundant InlineItem::width() calls.
https://bugs.webkit.org/show_bug.cgi?id=198489
<rdar://problem/51360390>

Reviewed by Antti Koivisto.

This is in preparation for removing InlineItem::width().

  • layout/inlineformatting/InlineFormattingContextLineLayout.cpp:

(WebCore::Layout::InlineFormattingContext::LineLayout::handleFloat const):
(WebCore::Layout::InlineFormattingContext::LineLayout::commitInlineItemToLine const):

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendInlineContainerStart):
(WebCore::Layout::Line::appendInlineContainerEnd):

  • layout/inlineformatting/InlineLine.h:
Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r246061 r246062  
     12019-06-04  Zalan Bujtas  <zalan@apple.com>
     2
     3        [LFC][IFC] Remove redundant InlineItem::width() calls.
     4        https://bugs.webkit.org/show_bug.cgi?id=198489
     5        <rdar://problem/51360390>
     6
     7        Reviewed by Antti Koivisto.
     8
     9        This is in preparation for removing InlineItem::width().
     10
     11        * layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
     12        (WebCore::Layout::InlineFormattingContext::LineLayout::handleFloat const):
     13        (WebCore::Layout::InlineFormattingContext::LineLayout::commitInlineItemToLine const):
     14        * layout/inlineformatting/InlineLine.cpp:
     15        (WebCore::Layout::Line::appendNonBreakableSpace):
     16        (WebCore::Layout::Line::appendInlineContainerStart):
     17        (WebCore::Layout::Line::appendInlineContainerEnd):
     18        * layout/inlineformatting/InlineLine.h:
     19
    1202019-06-04  Antoine Quint  <graouts@apple.com>
    221
  • trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContextLineLayout.cpp

    r245970 r246062  
    341341    m_floatingState.append(floatBox);
    342342    // Shrink availble space for current line and move existing inline runs.
    343     auto floatBoxWidth = floatItem.width();
     343    auto floatBoxWidth = displayBox.marginBoxWidth();
    344344    floatBox.isLeftFloatingPositioned() ? line.moveLogicalLeft(floatBoxWidth) : line.moveLogicalRight(floatBoxWidth);
    345345}
     
    347347void InlineFormattingContext::LineLayout::commitInlineItemToLine(Line& line, const InlineItem& inlineItem) const
    348348{
    349     if (inlineItem.isContainerStart())
    350         return line.appendInlineContainerStart(inlineItem);
    351 
    352     if (inlineItem.isContainerEnd())
    353         return line.appendInlineContainerEnd(inlineItem);
    354 
    355349    if (inlineItem.isHardLineBreak())
    356350        return line.appendHardLineBreak(inlineItem);
    357351
    358352    auto width = inlineItem.width();
     353    auto& fontMetrics = inlineItem.style().fontMetrics();
    359354    if (is<InlineTextItem>(inlineItem))
    360         return line.appendTextContent(downcast<InlineTextItem>(inlineItem), { width, inlineItem.style().fontMetrics().height() });
     355        return line.appendTextContent(downcast<InlineTextItem>(inlineItem), { width, fontMetrics.height() });
    361356
    362357    auto& layoutBox = inlineItem.layoutBox();
    363358    auto& displayBox = layoutState().displayBoxForLayoutBox(layoutBox);
     359
     360    if (inlineItem.isContainerStart()) {
     361        auto containerHeight = fontMetrics.height() + displayBox.verticalBorder() + displayBox.verticalPadding().valueOr(0);
     362        return line.appendInlineContainerStart(inlineItem, { width, containerHeight });
     363    }
     364
     365    if (inlineItem.isContainerEnd())
     366        return line.appendInlineContainerEnd(inlineItem, { width, 0 });
     367
    364368    if (layoutBox.isReplaced())
    365369        return line.appendReplacedInlineBox(inlineItem, { width, displayBox.height() });
  • trunk/Source/WebCore/layout/inlineformatting/InlineLine.cpp

    r245962 r246062  
    117117{
    118118    m_content->runs().append(std::make_unique<Content::Run>(Display::Run { logicalRect }, inlineItem, false, false));
    119     m_contentLogicalWidth += inlineItem.width();
    120 }
    121 
    122 void Line::appendInlineContainerStart(const InlineItem& inlineItem)
     119    m_contentLogicalWidth += logicalRect.width();
     120}
     121
     122void Line::appendInlineContainerStart(const InlineItem& inlineItem, LayoutSize runSize)
    123123{
    124124    auto& layoutBox = inlineItem.layoutBox();
     
    138138    alignAndAdjustLineHeight();
    139139    auto& displayBox = m_layoutState.displayBoxForLayoutBox(layoutBox);
    140     auto containerHeight = fontMetrics.height() + displayBox.verticalBorder() + displayBox.verticalPadding().valueOr(0);
    141140    auto logicalTop = -fontMetrics.ascent() - displayBox.borderTop() - displayBox.paddingTop().valueOr(0);
    142     auto logicalRect = Display::Rect { logicalTop, contentLogicalRight(), inlineItem.width(), containerHeight };
     141    auto logicalRect = Display::Rect { logicalTop, contentLogicalRight(), runSize.width(), runSize.height() };
    143142    appendNonBreakableSpace(inlineItem, logicalRect);
    144143}
    145144
    146 void Line::appendInlineContainerEnd(const InlineItem& inlineItem)
     145void Line::appendInlineContainerEnd(const InlineItem& inlineItem, LayoutSize runSize)
    147146{
    148147    // This is really just a placeholder to mark the end of the inline level container.
    149     auto logicalRect = Display::Rect { 0, contentLogicalRight(), inlineItem.width(), 0 };
     148    auto logicalRect = Display::Rect { 0, contentLogicalRight(), runSize.width(), runSize.height() };
    150149    appendNonBreakableSpace(inlineItem, logicalRect);
    151150}
  • trunk/Source/WebCore/layout/inlineformatting/InlineLine.h

    r245962 r246062  
    7979    void appendNonReplacedInlineBox(const InlineItem&, LayoutSize);
    8080    void appendReplacedInlineBox(const InlineItem&, LayoutSize);
    81     void appendInlineContainerStart(const InlineItem&);
    82     void appendInlineContainerEnd(const InlineItem&);
     81    void appendInlineContainerStart(const InlineItem&, LayoutSize);
     82    void appendInlineContainerEnd(const InlineItem&, LayoutSize);
    8383    void appendHardLineBreak(const InlineItem&);
    8484
Note: See TracChangeset for help on using the changeset viewer.