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

Changeset 291548 in webkit


Ignore:
Timestamp:
Mar 20, 2022, 5:59:06 PM (5 years ago)
Author:
Alan Bujtas
Message:

[IFC][Integration] Rename InlineIterator::Line to LineBox
​https://bugs.webkit.org/show_bug.cgi?id=238128

Reviewed by Antti Koivisto.

  • dom/Position.cpp:

(WebCore::Position::upstream const):
(WebCore::Position::downstream const):
(WebCore::Position::rendersInDifferentPosition const):

  • editing/RenderedPosition.h:

(WebCore::RenderedPosition::lineBox const):
(WebCore::RenderedPosition::line const): Deleted.

  • editing/VisiblePosition.cpp:

(WebCore::VisiblePosition::leftVisuallyDistinctCandidate const):
(WebCore::VisiblePosition::rightVisuallyDistinctCandidate const):
(WebCore::VisiblePosition::absoluteSelectionBoundsForLine const):

  • editing/VisibleUnits.cpp:

(WebCore::startTextOrLineBreakBox):
(WebCore::endTextOrLineBreakBox):
(WebCore::logicallyPreviousBox):
(WebCore::logicallyNextBox):
(WebCore::startPositionForLine):
(WebCore::endPositionForLine):
(WebCore::absoluteLineDirectionPointToLocalPointInBlock):
(WebCore::previousLinePosition):
(WebCore::nextLinePosition):

  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::valueWithHardLineBreaks const):

  • layout/integration/InlineIteratorBox.cpp:

(WebCore::InlineIterator::Box::lineBox const):
(WebCore::InlineIterator::Box::style const):
(WebCore::InlineIterator::Box::line const): Deleted.

  • layout/integration/InlineIteratorBox.h:
  • layout/integration/InlineIteratorLine.cpp:

(WebCore::InlineIterator::LineBoxIterator::LineBoxIterator):
(WebCore::InlineIterator::LineBoxIterator::atEnd const):
(WebCore::InlineIterator::LineBoxIterator::traverseNext):
(WebCore::InlineIterator::LineBoxIterator::traversePrevious):
(WebCore::InlineIterator::LineBoxIterator::operator== const):
(WebCore::InlineIterator::firstLineBoxFor):
(WebCore::InlineIterator::lastLineBoxFor):
(WebCore::InlineIterator::LineBox::next const):
(WebCore::InlineIterator::LineBox::previous const):
(WebCore::InlineIterator::LineBox::firstLeafBox const):
(WebCore::InlineIterator::LineBox::lastLeafBox const):
(WebCore::InlineIterator::closestBoxForHorizontalPosition):
(WebCore::InlineIterator::LineIterator::LineIterator): Deleted.
(WebCore::InlineIterator::LineIterator::atEnd const): Deleted.
(WebCore::InlineIterator::LineIterator::traverseNext): Deleted.
(WebCore::InlineIterator::LineIterator::traversePrevious): Deleted.
(WebCore::InlineIterator::LineIterator::operator== const): Deleted.
(WebCore::InlineIterator::firstLineFor): Deleted.
(WebCore::InlineIterator::lastLineFor): Deleted.
(WebCore::InlineIterator::Line::next const): Deleted.
(WebCore::InlineIterator::Line::previous const): Deleted.
(WebCore::InlineIterator::Line::firstLeafBox const): Deleted.
(WebCore::InlineIterator::Line::lastLeafBox const): Deleted.

  • layout/integration/InlineIteratorLine.h:

(WebCore::InlineIterator::LineBox::height const):
(WebCore::InlineIterator::LineBoxIterator::LineBoxIterator):
(WebCore::InlineIterator::LineBoxIterator::operator++):
(WebCore::InlineIterator::LineBoxIterator::operator!= const):
(WebCore::InlineIterator::LineBoxIterator::operator== const):
(WebCore::InlineIterator::LineBoxIterator::operator* const):
(WebCore::InlineIterator::LineBoxIterator::operator-> const):
(WebCore::InlineIterator::previousLineBoxContentBottomOrBorderAndPadding):
(WebCore::InlineIterator::contentStartInBlockDirection):
(WebCore::InlineIterator::LineBox::LineBox):
(WebCore::InlineIterator::LineBox::contentLogicalTop const):
(WebCore::InlineIterator::LineBox::contentLogicalBottom const):
(WebCore::InlineIterator::LineBox::contentLogicalTopAdjustedForPrecedingLineBox const):
(WebCore::InlineIterator::LineBox::contentLogicalBottomAdjustedForFollowingLineBox const):
(WebCore::InlineIterator::LineBox::top const):
(WebCore::InlineIterator::LineBox::bottom const):
(WebCore::InlineIterator::LineBox::contentLogicalLeft const):
(WebCore::InlineIterator::LineBox::contentLogicalRight const):
(WebCore::InlineIterator::LineBox::contentLogicalWidth const):
(WebCore::InlineIterator::LineBox::isHorizontal const):
(WebCore::InlineIterator::LineBox::baselineType const):
(WebCore::InlineIterator::LineBox::containingBlock const):
(WebCore::InlineIterator::LineBox::containingFragment const):
(WebCore::InlineIterator::LineBox::isFirstAfterPageBreak const):
(WebCore::InlineIterator::LineBox::isFirst const):
(WebCore::InlineIterator::Line::lineBoxHeight const): Deleted.
(WebCore::InlineIterator::LineIterator::LineIterator): Deleted.
(WebCore::InlineIterator::LineIterator::operator++): Deleted.
(WebCore::InlineIterator::LineIterator::operator bool const): Deleted.
(WebCore::InlineIterator::LineIterator::operator!= const): Deleted.
(WebCore::InlineIterator::LineIterator::operator== const): Deleted.
(WebCore::InlineIterator::LineIterator::operator* const): Deleted.
(WebCore::InlineIterator::LineIterator::operator-> const): Deleted.
(WebCore::InlineIterator::previousLineContentBottomOrBorderAndPadding): Deleted.
(WebCore::InlineIterator::Line::Line): Deleted.
(WebCore::InlineIterator::Line::contentLogicalTop const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalBottom const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalTopAdjustedForPrecedingLine const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalBottomAdjustedForFollowingLine const): Deleted.
(WebCore::InlineIterator::Line::lineBoxTop const): Deleted.
(WebCore::InlineIterator::Line::lineBoxBottom const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalLeft const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalRight const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalWidth const): Deleted.
(WebCore::InlineIterator::Line::isHorizontal const): Deleted.
(WebCore::InlineIterator::Line::baselineType const): Deleted.
(WebCore::InlineIterator::Line::containingBlock const): Deleted.
(WebCore::InlineIterator::Line::containingFragment const): Deleted.
(WebCore::InlineIterator::Line::isFirstAfterPageBreak const): Deleted.
(WebCore::InlineIterator::Line::isFirst const): Deleted.

  • layout/integration/InlineIteratorLineLegacyPath.h:

(WebCore::InlineIterator::LineBoxIteratorLegacyPath::LineBoxIteratorLegacyPath):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::contentLogicalTopAdjustedForPrecedingLineBox const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::contentLogicalBottomAdjustedForFollowingLineBox const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::top const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::bottom const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::operator== const):
(WebCore::InlineIterator::LineIteratorLegacyPath::LineIteratorLegacyPath): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalTop const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalBottom const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalTopAdjustedForPrecedingLine const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalBottomAdjustedForFollowingLine const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::lineBoxTop const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::lineBoxBottom const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalLeft const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalRight const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::isHorizontal const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::baselineType const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::containingBlock const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::containingFragment const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::isFirstAfterPageBreak const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::traverseNext): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::traversePrevious): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::operator== const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::atEnd const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::firstLeafBox const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::lastLeafBox const): Deleted.

  • layout/integration/InlineIteratorLineModernPath.h:

(WebCore::InlineIterator::LineBoxIteratorModernPath::LineBoxIteratorModernPath):
(WebCore::InlineIterator::LineBoxIteratorModernPath::top const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::bottom const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::contentLogicalTopAdjustedForPrecedingLineBox const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::contentLogicalBottomAdjustedForFollowingLineBox const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::operator== const):
(WebCore::InlineIterator::LineIteratorModernPath::LineIteratorModernPath): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTop const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalBottom const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::lineBoxTop const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::lineBoxBottom const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTopAdjustedForPrecedingLine const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalBottomAdjustedForFollowingLine const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalLeft const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalRight const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::isHorizontal const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::baselineType const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::containingBlock const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::containingFragment const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::isFirstAfterPageBreak const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::traverseNext): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::traversePrevious): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::operator== const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::atEnd const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::firstLeafBox const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::lastLeafBox const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::setAtEnd): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::lines const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::line const): Deleted.

  • layout/integration/InlineIteratorLogicalOrderTraversal.cpp:

(WebCore::InlineIterator::makeLineLogicalOrderCache):
(WebCore::InlineIterator::updateLineLogicalOrderCacheIfNeeded):
(WebCore::InlineIterator::firstLeafOnLineInLogicalOrder):
(WebCore::InlineIterator::lastLeafOnLineInLogicalOrder):
(WebCore::InlineIterator::firstLeafOnLineInLogicalOrderWithNode):
(WebCore::InlineIterator::lastLeafOnLineInLogicalOrderWithNode):

  • layout/integration/InlineIteratorLogicalOrderTraversal.h:

(WebCore::InlineIterator::leafBoxesInLogicalOrder):

  • layout/integration/InlineIteratorTextBox.cpp:

(WebCore::InlineIterator::TextBox::selectionRect const):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::firstLineBox const):
(WebCore::LayoutIntegration::LineLayout::lastLineBox const):
(WebCore::LayoutIntegration::LineLayout::firstLine const): Deleted.
(WebCore::LayoutIntegration::LineLayout::lastLine const): Deleted.

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/integration/LineSelection.h:

(WebCore::LineSelection::logicalTop):
(WebCore::LineSelection::logicalBottom):
(WebCore::LineSelection::logicalRect):
(WebCore::LineSelection::physicalRect):
(WebCore::LineSelection::logicalTopAdjustedForPrecedingBlock):
(WebCore::LineSelection::selectionState):

  • rendering/CaretRectComputation.cpp:

(WebCore::computeCaretRectForLinePosition):
(WebCore::computeCaretRectForText):
(WebCore::computeCaretRectForLineBreak):
(WebCore::computeCaretRectForBox):

  • rendering/InlineBoxPainter.cpp:

(WebCore::InlineBoxPainter::InlineBoxPainter):
(WebCore::InlineBoxPainter::paintMask):
(WebCore::InlineBoxPainter::paintDecorations):
(WebCore::InlineBoxPainter::style const):

  • rendering/InlineBoxPainter.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::adjustEnclosingTopForPrecedingBlock const):
(WebCore::RenderBlockFlow::inlineSelectionGaps):
(WebCore::RenderBlockFlow::containsNonZeroBidiLevel const):
(WebCore::RenderBlockFlow::findClosestTextAtAbsolutePoint):
(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):
(WebCore::RenderBlockFlow::addFocusRingRectsForInlineChildren):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::getLeadingCorner const):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::paintOutline):

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::positionForPoint):

  • rendering/RenderText.cpp:

(WebCore::RenderText::positionForPoint):

  • rendering/TextBoxPainter.cpp:

(WebCore::TextBoxPainter::TextBoxPainter):
(WebCore::TextBoxPainter::paintBackground):
(WebCore::textPosition):
(WebCore::TextBoxPainter::computePaintRect):

  • rendering/svg/SVGRootInlineBox.cpp:

(WebCore::SVGRootInlineBox::reorderValueListsToLogicalOrder):

  • style/InlineTextBoxStyle.cpp:

(WebCore::minLogicalTopForTextDecorationLine):
(WebCore::maxLogicalBottomForTextDecorationLine):
(WebCore::computeUnderlineOffset):

Location:
trunk/Source/WebCore
Files:
31 edited
3 moved

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r291546 r291548  
     12022-03-20  Alan Bujtas  <zalan@apple.com>
     2
     3        [IFC][Integration] Rename InlineIterator::Line to LineBox
     4        https://bugs.webkit.org/show_bug.cgi?id=238128
     5
     6        Reviewed by Antti Koivisto.
     7
     8        * dom/Position.cpp:
     9        (WebCore::Position::upstream const):
     10        (WebCore::Position::downstream const):
     11        (WebCore::Position::rendersInDifferentPosition const):
     12        * editing/RenderedPosition.h:
     13        (WebCore::RenderedPosition::lineBox const):
     14        (WebCore::RenderedPosition::line const): Deleted.
     15        * editing/VisiblePosition.cpp:
     16        (WebCore::VisiblePosition::leftVisuallyDistinctCandidate const):
     17        (WebCore::VisiblePosition::rightVisuallyDistinctCandidate const):
     18        (WebCore::VisiblePosition::absoluteSelectionBoundsForLine const):
     19        * editing/VisibleUnits.cpp:
     20        (WebCore::startTextOrLineBreakBox):
     21        (WebCore::endTextOrLineBreakBox):
     22        (WebCore::logicallyPreviousBox):
     23        (WebCore::logicallyNextBox):
     24        (WebCore::startPositionForLine):
     25        (WebCore::endPositionForLine):
     26        (WebCore::absoluteLineDirectionPointToLocalPointInBlock):
     27        (WebCore::previousLinePosition):
     28        (WebCore::nextLinePosition):
     29        * html/HTMLTextFormControlElement.cpp:
     30        (WebCore::HTMLTextFormControlElement::valueWithHardLineBreaks const):
     31        * layout/integration/InlineIteratorBox.cpp:
     32        (WebCore::InlineIterator::Box::lineBox const):
     33        (WebCore::InlineIterator::Box::style const):
     34        (WebCore::InlineIterator::Box::line const): Deleted.
     35        * layout/integration/InlineIteratorBox.h:
     36        * layout/integration/InlineIteratorLine.cpp:
     37        (WebCore::InlineIterator::LineBoxIterator::LineBoxIterator):
     38        (WebCore::InlineIterator::LineBoxIterator::atEnd const):
     39        (WebCore::InlineIterator::LineBoxIterator::traverseNext):
     40        (WebCore::InlineIterator::LineBoxIterator::traversePrevious):
     41        (WebCore::InlineIterator::LineBoxIterator::operator== const):
     42        (WebCore::InlineIterator::firstLineBoxFor):
     43        (WebCore::InlineIterator::lastLineBoxFor):
     44        (WebCore::InlineIterator::LineBox::next const):
     45        (WebCore::InlineIterator::LineBox::previous const):
     46        (WebCore::InlineIterator::LineBox::firstLeafBox const):
     47        (WebCore::InlineIterator::LineBox::lastLeafBox const):
     48        (WebCore::InlineIterator::closestBoxForHorizontalPosition):
     49        (WebCore::InlineIterator::LineIterator::LineIterator): Deleted.
     50        (WebCore::InlineIterator::LineIterator::atEnd const): Deleted.
     51        (WebCore::InlineIterator::LineIterator::traverseNext): Deleted.
     52        (WebCore::InlineIterator::LineIterator::traversePrevious): Deleted.
     53        (WebCore::InlineIterator::LineIterator::operator== const): Deleted.
     54        (WebCore::InlineIterator::firstLineFor): Deleted.
     55        (WebCore::InlineIterator::lastLineFor): Deleted.
     56        (WebCore::InlineIterator::Line::next const): Deleted.
     57        (WebCore::InlineIterator::Line::previous const): Deleted.
     58        (WebCore::InlineIterator::Line::firstLeafBox const): Deleted.
     59        (WebCore::InlineIterator::Line::lastLeafBox const): Deleted.
     60        * layout/integration/InlineIteratorLine.h:
     61        (WebCore::InlineIterator::LineBox::height const):
     62        (WebCore::InlineIterator::LineBoxIterator::LineBoxIterator):
     63        (WebCore::InlineIterator::LineBoxIterator::operator++):
     64        (WebCore::InlineIterator::LineBoxIterator::operator!= const):
     65        (WebCore::InlineIterator::LineBoxIterator::operator== const):
     66        (WebCore::InlineIterator::LineBoxIterator::operator* const):
     67        (WebCore::InlineIterator::LineBoxIterator::operator-> const):
     68        (WebCore::InlineIterator::previousLineBoxContentBottomOrBorderAndPadding):
     69        (WebCore::InlineIterator::contentStartInBlockDirection):
     70        (WebCore::InlineIterator::LineBox::LineBox):
     71        (WebCore::InlineIterator::LineBox::contentLogicalTop const):
     72        (WebCore::InlineIterator::LineBox::contentLogicalBottom const):
     73        (WebCore::InlineIterator::LineBox::contentLogicalTopAdjustedForPrecedingLineBox const):
     74        (WebCore::InlineIterator::LineBox::contentLogicalBottomAdjustedForFollowingLineBox const):
     75        (WebCore::InlineIterator::LineBox::top const):
     76        (WebCore::InlineIterator::LineBox::bottom const):
     77        (WebCore::InlineIterator::LineBox::contentLogicalLeft const):
     78        (WebCore::InlineIterator::LineBox::contentLogicalRight const):
     79        (WebCore::InlineIterator::LineBox::contentLogicalWidth const):
     80        (WebCore::InlineIterator::LineBox::isHorizontal const):
     81        (WebCore::InlineIterator::LineBox::baselineType const):
     82        (WebCore::InlineIterator::LineBox::containingBlock const):
     83        (WebCore::InlineIterator::LineBox::containingFragment const):
     84        (WebCore::InlineIterator::LineBox::isFirstAfterPageBreak const):
     85        (WebCore::InlineIterator::LineBox::isFirst const):
     86        (WebCore::InlineIterator::Line::lineBoxHeight const): Deleted.
     87        (WebCore::InlineIterator::LineIterator::LineIterator): Deleted.
     88        (WebCore::InlineIterator::LineIterator::operator++): Deleted.
     89        (WebCore::InlineIterator::LineIterator::operator bool const): Deleted.
     90        (WebCore::InlineIterator::LineIterator::operator!= const): Deleted.
     91        (WebCore::InlineIterator::LineIterator::operator== const): Deleted.
     92        (WebCore::InlineIterator::LineIterator::operator* const): Deleted.
     93        (WebCore::InlineIterator::LineIterator::operator-> const): Deleted.
     94        (WebCore::InlineIterator::previousLineContentBottomOrBorderAndPadding): Deleted.
     95        (WebCore::InlineIterator::Line::Line): Deleted.
     96        (WebCore::InlineIterator::Line::contentLogicalTop const): Deleted.
     97        (WebCore::InlineIterator::Line::contentLogicalBottom const): Deleted.
     98        (WebCore::InlineIterator::Line::contentLogicalTopAdjustedForPrecedingLine const): Deleted.
     99        (WebCore::InlineIterator::Line::contentLogicalBottomAdjustedForFollowingLine const): Deleted.
     100        (WebCore::InlineIterator::Line::lineBoxTop const): Deleted.
     101        (WebCore::InlineIterator::Line::lineBoxBottom const): Deleted.
     102        (WebCore::InlineIterator::Line::contentLogicalLeft const): Deleted.
     103        (WebCore::InlineIterator::Line::contentLogicalRight const): Deleted.
     104        (WebCore::InlineIterator::Line::contentLogicalWidth const): Deleted.
     105        (WebCore::InlineIterator::Line::isHorizontal const): Deleted.
     106        (WebCore::InlineIterator::Line::baselineType const): Deleted.
     107        (WebCore::InlineIterator::Line::containingBlock const): Deleted.
     108        (WebCore::InlineIterator::Line::containingFragment const): Deleted.
     109        (WebCore::InlineIterator::Line::isFirstAfterPageBreak const): Deleted.
     110        (WebCore::InlineIterator::Line::isFirst const): Deleted.
     111        * layout/integration/InlineIteratorLineLegacyPath.h:
     112        (WebCore::InlineIterator::LineBoxIteratorLegacyPath::LineBoxIteratorLegacyPath):
     113        (WebCore::InlineIterator::LineBoxIteratorLegacyPath::contentLogicalTopAdjustedForPrecedingLineBox const):
     114        (WebCore::InlineIterator::LineBoxIteratorLegacyPath::contentLogicalBottomAdjustedForFollowingLineBox const):
     115        (WebCore::InlineIterator::LineBoxIteratorLegacyPath::top const):
     116        (WebCore::InlineIterator::LineBoxIteratorLegacyPath::bottom const):
     117        (WebCore::InlineIterator::LineBoxIteratorLegacyPath::operator== const):
     118        (WebCore::InlineIterator::LineIteratorLegacyPath::LineIteratorLegacyPath): Deleted.
     119        (WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalTop const): Deleted.
     120        (WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalBottom const): Deleted.
     121        (WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalTopAdjustedForPrecedingLine const): Deleted.
     122        (WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalBottomAdjustedForFollowingLine const): Deleted.
     123        (WebCore::InlineIterator::LineIteratorLegacyPath::lineBoxTop const): Deleted.
     124        (WebCore::InlineIterator::LineIteratorLegacyPath::lineBoxBottom const): Deleted.
     125        (WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalLeft const): Deleted.
     126        (WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalRight const): Deleted.
     127        (WebCore::InlineIterator::LineIteratorLegacyPath::isHorizontal const): Deleted.
     128        (WebCore::InlineIterator::LineIteratorLegacyPath::baselineType const): Deleted.
     129        (WebCore::InlineIterator::LineIteratorLegacyPath::containingBlock const): Deleted.
     130        (WebCore::InlineIterator::LineIteratorLegacyPath::containingFragment const): Deleted.
     131        (WebCore::InlineIterator::LineIteratorLegacyPath::isFirstAfterPageBreak const): Deleted.
     132        (WebCore::InlineIterator::LineIteratorLegacyPath::traverseNext): Deleted.
     133        (WebCore::InlineIterator::LineIteratorLegacyPath::traversePrevious): Deleted.
     134        (WebCore::InlineIterator::LineIteratorLegacyPath::operator== const): Deleted.
     135        (WebCore::InlineIterator::LineIteratorLegacyPath::atEnd const): Deleted.
     136        (WebCore::InlineIterator::LineIteratorLegacyPath::firstLeafBox const): Deleted.
     137        (WebCore::InlineIterator::LineIteratorLegacyPath::lastLeafBox const): Deleted.
     138        * layout/integration/InlineIteratorLineModernPath.h:
     139        (WebCore::InlineIterator::LineBoxIteratorModernPath::LineBoxIteratorModernPath):
     140        (WebCore::InlineIterator::LineBoxIteratorModernPath::top const):
     141        (WebCore::InlineIterator::LineBoxIteratorModernPath::bottom const):
     142        (WebCore::InlineIterator::LineBoxIteratorModernPath::contentLogicalTopAdjustedForPrecedingLineBox const):
     143        (WebCore::InlineIterator::LineBoxIteratorModernPath::contentLogicalBottomAdjustedForFollowingLineBox const):
     144        (WebCore::InlineIterator::LineBoxIteratorModernPath::operator== const):
     145        (WebCore::InlineIterator::LineIteratorModernPath::LineIteratorModernPath): Deleted.
     146        (WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTop const): Deleted.
     147        (WebCore::InlineIterator::LineIteratorModernPath::contentLogicalBottom const): Deleted.
     148        (WebCore::InlineIterator::LineIteratorModernPath::lineBoxTop const): Deleted.
     149        (WebCore::InlineIterator::LineIteratorModernPath::lineBoxBottom const): Deleted.
     150        (WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTopAdjustedForPrecedingLine const): Deleted.
     151        (WebCore::InlineIterator::LineIteratorModernPath::contentLogicalBottomAdjustedForFollowingLine const): Deleted.
     152        (WebCore::InlineIterator::LineIteratorModernPath::contentLogicalLeft const): Deleted.
     153        (WebCore::InlineIterator::LineIteratorModernPath::contentLogicalRight const): Deleted.
     154        (WebCore::InlineIterator::LineIteratorModernPath::isHorizontal const): Deleted.
     155        (WebCore::InlineIterator::LineIteratorModernPath::baselineType const): Deleted.
     156        (WebCore::InlineIterator::LineIteratorModernPath::containingBlock const): Deleted.
     157        (WebCore::InlineIterator::LineIteratorModernPath::containingFragment const): Deleted.
     158        (WebCore::InlineIterator::LineIteratorModernPath::isFirstAfterPageBreak const): Deleted.
     159        (WebCore::InlineIterator::LineIteratorModernPath::traverseNext): Deleted.
     160        (WebCore::InlineIterator::LineIteratorModernPath::traversePrevious): Deleted.
     161        (WebCore::InlineIterator::LineIteratorModernPath::operator== const): Deleted.
     162        (WebCore::InlineIterator::LineIteratorModernPath::atEnd const): Deleted.
     163        (WebCore::InlineIterator::LineIteratorModernPath::firstLeafBox const): Deleted.
     164        (WebCore::InlineIterator::LineIteratorModernPath::lastLeafBox const): Deleted.
     165        (WebCore::InlineIterator::LineIteratorModernPath::setAtEnd): Deleted.
     166        (WebCore::InlineIterator::LineIteratorModernPath::lines const): Deleted.
     167        (WebCore::InlineIterator::LineIteratorModernPath::line const): Deleted.
     168        * layout/integration/InlineIteratorLogicalOrderTraversal.cpp:
     169        (WebCore::InlineIterator::makeLineLogicalOrderCache):
     170        (WebCore::InlineIterator::updateLineLogicalOrderCacheIfNeeded):
     171        (WebCore::InlineIterator::firstLeafOnLineInLogicalOrder):
     172        (WebCore::InlineIterator::lastLeafOnLineInLogicalOrder):
     173        (WebCore::InlineIterator::firstLeafOnLineInLogicalOrderWithNode):
     174        (WebCore::InlineIterator::lastLeafOnLineInLogicalOrderWithNode):
     175        * layout/integration/InlineIteratorLogicalOrderTraversal.h:
     176        (WebCore::InlineIterator::leafBoxesInLogicalOrder):
     177        * layout/integration/InlineIteratorTextBox.cpp:
     178        (WebCore::InlineIterator::TextBox::selectionRect const):
     179        * layout/integration/LayoutIntegrationLineLayout.cpp:
     180        (WebCore::LayoutIntegration::LineLayout::firstLineBox const):
     181        (WebCore::LayoutIntegration::LineLayout::lastLineBox const):
     182        (WebCore::LayoutIntegration::LineLayout::firstLine const): Deleted.
     183        (WebCore::LayoutIntegration::LineLayout::lastLine const): Deleted.
     184        * layout/integration/LayoutIntegrationLineLayout.h:
     185        * layout/integration/LineSelection.h:
     186        (WebCore::LineSelection::logicalTop):
     187        (WebCore::LineSelection::logicalBottom):
     188        (WebCore::LineSelection::logicalRect):
     189        (WebCore::LineSelection::physicalRect):
     190        (WebCore::LineSelection::logicalTopAdjustedForPrecedingBlock):
     191        (WebCore::LineSelection::selectionState):
     192        * rendering/CaretRectComputation.cpp:
     193        (WebCore::computeCaretRectForLinePosition):
     194        (WebCore::computeCaretRectForText):
     195        (WebCore::computeCaretRectForLineBreak):
     196        (WebCore::computeCaretRectForBox):
     197        * rendering/InlineBoxPainter.cpp:
     198        (WebCore::InlineBoxPainter::InlineBoxPainter):
     199        (WebCore::InlineBoxPainter::paintMask):
     200        (WebCore::InlineBoxPainter::paintDecorations):
     201        (WebCore::InlineBoxPainter::style const):
     202        * rendering/InlineBoxPainter.h:
     203        * rendering/RenderBlockFlow.cpp:
     204        (WebCore::RenderBlockFlow::adjustEnclosingTopForPrecedingBlock const):
     205        (WebCore::RenderBlockFlow::inlineSelectionGaps):
     206        (WebCore::RenderBlockFlow::containsNonZeroBidiLevel const):
     207        (WebCore::RenderBlockFlow::findClosestTextAtAbsolutePoint):
     208        (WebCore::RenderBlockFlow::positionForPointWithInlineChildren):
     209        (WebCore::RenderBlockFlow::addFocusRingRectsForInlineChildren):
     210        * rendering/RenderElement.cpp:
     211        (WebCore::RenderElement::getLeadingCorner const):
     212        * rendering/RenderInline.cpp:
     213        (WebCore::RenderInline::paintOutline):
     214        * rendering/RenderReplaced.cpp:
     215        (WebCore::RenderReplaced::positionForPoint):
     216        * rendering/RenderText.cpp:
     217        (WebCore::RenderText::positionForPoint):
     218        * rendering/TextBoxPainter.cpp:
     219        (WebCore::TextBoxPainter::TextBoxPainter):
     220        (WebCore::TextBoxPainter::paintBackground):
     221        (WebCore::textPosition):
     222        (WebCore::TextBoxPainter::computePaintRect):
     223        * rendering/svg/SVGRootInlineBox.cpp:
     224        (WebCore::SVGRootInlineBox::reorderValueListsToLogicalOrder):
     225        * style/InlineTextBoxStyle.cpp:
     226        (WebCore::minLogicalTopForTextDecorationLine):
     227        (WebCore::maxLogicalBottomForTextDecorationLine):
     228        (WebCore::computeUnderlineOffset):
     229
    12302022-03-20  Oriol Brufau  <obrufau@igalia.com>
    2231
  • trunk/Source/WebCore/Headers.cmake

    r291364 r291548  
    977977    layout/integration/InlineIteratorBoxLegacyPath.h
    978978    layout/integration/InlineIteratorBoxModernPath.h
    979     layout/integration/InlineIteratorLine.h
    980     layout/integration/InlineIteratorLineLegacyPath.h
    981     layout/integration/InlineIteratorLineModernPath.h
     979    layout/integration/InlineIteratorLineBox.h
     980    layout/integration/InlineIteratorLineBoxLegacyPath.h
     981    layout/integration/InlineIteratorLineBoxModernPath.h
    982982    layout/integration/InlineIteratorLogicalOrderTraversal.h
    983983    layout/integration/InlineIteratorTextBox.h
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r291499 r291548  
    54315431                E4C91A16180999F100A17F6D /* RenderTextLineBoxes.h in Headers */ = {isa = PBXBuildFile; fileRef = E4C91A15180999F100A17F6D /* RenderTextLineBoxes.h */; settings = {ATTRIBUTES = (Private, ); }; };
    54325432                E4D33F3B252AEECD00837D05 /* InlineRunAndOffset.h in Headers */ = {isa = PBXBuildFile; fileRef = E4D33F39252AEECC00837D05 /* InlineRunAndOffset.h */; };
    5433                 E4D33F41252C4B8300837D05 /* InlineIteratorLine.h in Headers */ = {isa = PBXBuildFile; fileRef = E4D33F3F252C4B8200837D05 /* InlineIteratorLine.h */; settings = {ATTRIBUTES = (Private, ); }; };
    5434                 E4D33F44252C50E200837D05 /* InlineIteratorLineLegacyPath.h in Headers */ = {isa = PBXBuildFile; fileRef = E4D33F43252C50E200837D05 /* InlineIteratorLineLegacyPath.h */; settings = {ATTRIBUTES = (Private, ); }; };
    5435                 E4D33F46252C50FC00837D05 /* InlineIteratorLineModernPath.h in Headers */ = {isa = PBXBuildFile; fileRef = E4D33F45252C50FB00837D05 /* InlineIteratorLineModernPath.h */; settings = {ATTRIBUTES = (Private, ); }; };
     5433                E4D33F41252C4B8300837D05 /* InlineIteratorLineBox.h in Headers */ = {isa = PBXBuildFile; fileRef = E4D33F3F252C4B8200837D05 /* InlineIteratorLineBox.h */; settings = {ATTRIBUTES = (Private, ); }; };
     5434                E4D33F44252C50E200837D05 /* InlineIteratorLineBoxLegacyPath.h in Headers */ = {isa = PBXBuildFile; fileRef = E4D33F43252C50E200837D05 /* InlineIteratorLineBoxLegacyPath.h */; settings = {ATTRIBUTES = (Private, ); }; };
     5435                E4D33F46252C50FC00837D05 /* InlineIteratorLineBoxModernPath.h in Headers */ = {isa = PBXBuildFile; fileRef = E4D33F45252C50FB00837D05 /* InlineIteratorLineBoxModernPath.h */; settings = {ATTRIBUTES = (Private, ); }; };
    54365436                E4D58EB517B4DBDC00CBDCA8 /* StyleResolveForDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = E4D58EB317B4DBDC00CBDCA8 /* StyleResolveForDocument.h */; };
    54375437                E4D58EB917B4ED8900CBDCA8 /* StyleFontSizeFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = E4D58EB717B4ED8900CBDCA8 /* StyleFontSizeFunctions.h */; };
    … …  
    1761417614                E4C91A17180999FB00A17F6D /* RenderTextLineBoxes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTextLineBoxes.cpp; sourceTree = "<group>"; };
    1761517615                E4D33F39252AEECC00837D05 /* InlineRunAndOffset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InlineRunAndOffset.h; sourceTree = "<group>"; };
    17616                 E4D33F3F252C4B8200837D05 /* InlineIteratorLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InlineIteratorLine.h; sourceTree = "<group>"; };
     17616                E4D33F3F252C4B8200837D05 /* InlineIteratorLineBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InlineIteratorLineBox.h; sourceTree = "<group>"; };
    1761717617                E4D33F42252C50A800837D05 /* InlineIteratorLine.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InlineIteratorLine.cpp; sourceTree = "<group>"; };
    17618                 E4D33F43252C50E200837D05 /* InlineIteratorLineLegacyPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InlineIteratorLineLegacyPath.h; sourceTree = "<group>"; };
    17619                 E4D33F45252C50FB00837D05 /* InlineIteratorLineModernPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InlineIteratorLineModernPath.h; sourceTree = "<group>"; };
     17618                E4D33F43252C50E200837D05 /* InlineIteratorLineBoxLegacyPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InlineIteratorLineBoxLegacyPath.h; sourceTree = "<group>"; };
     17619                E4D33F45252C50FB00837D05 /* InlineIteratorLineBoxModernPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InlineIteratorLineBoxModernPath.h; sourceTree = "<group>"; };
    1762017620                E4D58EB217B4DBDC00CBDCA8 /* StyleResolveForDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleResolveForDocument.cpp; sourceTree = "<group>"; };
    1762117621                E4D58EB317B4DBDC00CBDCA8 /* StyleResolveForDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleResolveForDocument.h; sourceTree = "<group>"; };
    … …  
    3152731527                                E415EB11270C351200E8DA1B /* InlineIteratorInlineBox.h */,
    3152831528                                E4D33F42252C50A800837D05 /* InlineIteratorLine.cpp */,
    31529                                 E4D33F3F252C4B8200837D05 /* InlineIteratorLine.h */,
    31530                                 E4D33F43252C50E200837D05 /* InlineIteratorLineLegacyPath.h */,
    31531                                 E4D33F45252C50FB00837D05 /* InlineIteratorLineModernPath.h */,
     31529                                E4D33F3F252C4B8200837D05 /* InlineIteratorLineBox.h */,
     31530                                E4D33F43252C50E200837D05 /* InlineIteratorLineBoxLegacyPath.h */,
     31531                                E4D33F45252C50FB00837D05 /* InlineIteratorLineBoxModernPath.h */,
    3153231532                                E41ACC12271733F3003E9157 /* InlineIteratorLogicalOrderTraversal.cpp */,
    3153331533                                E41ACC1527173402003E9157 /* InlineIteratorLogicalOrderTraversal.h */,
    … …  
    3512335123                                E4A664CE2521D4C9007081DC /* InlineIteratorBoxModernPath.h in Headers */,
    3512435124                                E415EB13270C351300E8DA1B /* InlineIteratorInlineBox.h in Headers */,
    35125                                 E4D33F41252C4B8300837D05 /* InlineIteratorLine.h in Headers */,
    35126                                 E4D33F44252C50E200837D05 /* InlineIteratorLineLegacyPath.h in Headers */,
    35127                                 E4D33F46252C50FC00837D05 /* InlineIteratorLineModernPath.h in Headers */,
     35125                                E4D33F41252C4B8300837D05 /* InlineIteratorLineBox.h in Headers */,
     35126                                E4D33F44252C50E200837D05 /* InlineIteratorLineBoxLegacyPath.h in Headers */,
     35127                                E4D33F46252C50FC00837D05 /* InlineIteratorLineBoxModernPath.h in Headers */,
    3512835128                                E41ACC1627173402003E9157 /* InlineIteratorLogicalOrderTraversal.h in Headers */,
    3512935129                                E47CEBE12709916D00B8D8F5 /* InlineIteratorTextBox.h in Headers */,
  • trunk/Source/WebCore/dom/Position.cpp

    r291481 r291548  
    3737#include "HTMLParserIdioms.h"
    3838#include "HTMLTableElement.h"
    39 #include "InlineIteratorLine.h"
     39#include "InlineIteratorLineBox.h"
    4040#include "InlineIteratorLogicalOrderTraversal.h"
    4141#include "InlineIteratorTextBox.h"
    … …  
    761761
    762762                auto nextBox = InlineIterator::nextTextBoxInLogicalOrder(box, orderCache);
    763                 if (textOffset == box->end() + 1 && nextBox && box->line() != nextBox->line())
     763                if (textOffset == box->end() + 1 && nextBox && box->lineBox() != nextBox->lineBox())
    764764                    return currentPosition;
    765765
    … …  
    867867
    868868                auto nextBox = InlineIterator::nextTextBoxInLogicalOrder(box, orderCache);
    869                 if (textOffset == box->end() && nextBox && box->line() != nextBox->line())
     869                if (textOffset == box->end() && nextBox && box->lineBox() != nextBox->lineBox())
    870870                    return currentPosition;
    871871
    … …  
    10961096        return false;
    10971097
    1098     if (box1->line() != box2->line())
     1098    if (box1->lineBox() != box2->lineBox())
    10991099        return true;
    11001100
  • trunk/Source/WebCore/editing/RenderedPosition.h

    r291481 r291548  
    3333#include "CaretRectComputation.h"
    3434#include "InlineIteratorBox.h"
    35 #include "InlineIteratorLine.h"
     35#include "InlineIteratorLineBox.h"
    3636#include "TextAffinity.h"
    3737
    … …  
    5151
    5252    bool isNull() const { return !m_renderer; }
    53     InlineIterator::LineIterator line() const { return m_box ? m_box->line() : InlineIterator::LineIterator(); }
     53    InlineIterator::LineBoxIterator lineBox() const { return m_box ? m_box->lineBox() : InlineIterator::LineBoxIterator(); }
    5454
    5555    unsigned char bidiLevelOnLeft() const;
  • trunk/Source/WebCore/editing/VisiblePosition.cpp

    r291481 r291548  
    3737#include "HTMLNames.h"
    3838#include "InlineIteratorBox.h"
    39 #include "InlineIteratorLine.h"
     39#include "InlineIteratorLineBox.h"
    4040#include "InlineRunAndOffset.h"
    4141#include "LineSelection.h"
    … …  
    161161                    Position positionOnLeft = primaryDirection == TextDirection::LTR ? previousVisuallyDistinctCandidate(m_deepPosition) : nextVisuallyDistinctCandidate(m_deepPosition);
    162162                    auto boxOnLeft = positionOnLeft.inlineBoxAndOffset(m_affinity, primaryDirection).box;
    163                     if (boxOnLeft && boxOnLeft->line() == box->line())
     163                    if (boxOnLeft && boxOnLeft->lineBox() == box->lineBox())
    164164                        return Position();
    165165                    return positionOnLeft;
    … …  
    179179                if (!previousBox) {
    180180                    auto logicalStart = primaryDirection == TextDirection::LTR
    181                         ? InlineIterator::firstLeafOnLineInLogicalOrderWithNode(box->line(), orderCache)
    182                         : InlineIterator::lastLeafOnLineInLogicalOrderWithNode(box->line(), orderCache);
     181                        ? InlineIterator::firstLeafOnLineInLogicalOrderWithNode(box->lineBox(), orderCache)
     182                        : InlineIterator::lastLeafOnLineInLogicalOrderWithNode(box->lineBox(), orderCache);
    183183                    if (logicalStart) {
    184184                        box = logicalStart;
    … …  
    327327                    Position positionOnRight = primaryDirection == TextDirection::LTR ? nextVisuallyDistinctCandidate(m_deepPosition) : previousVisuallyDistinctCandidate(m_deepPosition);
    328328                    auto boxOnRight = positionOnRight.inlineBoxAndOffset(m_affinity, primaryDirection).box;
    329                     if (boxOnRight && boxOnRight->line() == box->line())
     329                    if (boxOnRight && boxOnRight->lineBox() == box->lineBox())
    330330                        return Position();
    331331                    return positionOnRight;
    … …  
    345345                if (!nextBox) {
    346346                    auto logicalEnd = primaryDirection == TextDirection::LTR
    347                         ? InlineIterator::lastLeafOnLineInLogicalOrderWithNode(box->line(), orderCache)
    348                         : InlineIterator::firstLeafOnLineInLogicalOrderWithNode(box->line(), orderCache);
     347                        ? InlineIterator::lastLeafOnLineInLogicalOrderWithNode(box->lineBox(), orderCache)
     348                        : InlineIterator::firstLeafOnLineInLogicalOrderWithNode(box->lineBox(), orderCache);
    349349
    350350                    if (logicalEnd) {
    … …  
    670670        return { };
    671671
    672     auto line = box->line();
     672    auto line = box->lineBox();
    673673    return line->containingBlock().localToAbsoluteQuad(FloatRect { LineSelection::physicalRect(*line) }).boundingBox();
    674674}
  • trunk/Source/WebCore/editing/VisibleUnits.cpp

    r291533 r291548  
    3333#include "HTMLNames.h"
    3434#include "InlineIteratorBox.h"
    35 #include "InlineIteratorLine.h"
     35#include "InlineIteratorLineBox.h"
    3636#include "InlineIteratorLogicalOrderTraversal.h"
    3737#include "InlineRunAndOffset.h"
    … …  
    151151}
    152152
    153 static InlineIterator::LeafBoxIterator startTextOrLineBreakBox(InlineIterator::LineIterator line, InlineIterator::LineLogicalOrderCache& orderCache)
    154 {
    155     auto box = InlineIterator::firstLeafOnLineInLogicalOrder(line, orderCache);
     153static InlineIterator::LeafBoxIterator startTextOrLineBreakBox(InlineIterator::LineBoxIterator lineBox, InlineIterator::LineLogicalOrderCache& orderCache)
     154{
     155    auto box = InlineIterator::firstLeafOnLineInLogicalOrder(lineBox, orderCache);
    156156    if (isTextOrLineBreakBox(box))
    157157        return box;
    … …  
    159159}
    160160
    161 static InlineIterator::LeafBoxIterator endTextOrLineBreakBox(InlineIterator::LineIterator line, InlineIterator::LineLogicalOrderCache& orderCache)
    162 {
    163     auto box = InlineIterator::lastLeafOnLineInLogicalOrder(line, orderCache);
     161static InlineIterator::LeafBoxIterator endTextOrLineBreakBox(InlineIterator::LineBoxIterator lineBox, InlineIterator::LineLogicalOrderCache& orderCache)
     162{
     163    auto box = InlineIterator::lastLeafOnLineInLogicalOrder(lineBox, orderCache);
    164164    if (isTextOrLineBreakBox(box))
    165165        return box;
    … …  
    172172        return previousBox;
    173173
    174     if (auto previousLine = startBox->line()->previous()) {
     174    if (auto previousLineBox = startBox->lineBox()->previous()) {
    175175        // FIXME: Why isn't previousBoxInDifferentLine set here?
    176         if (auto previousBox = endTextOrLineBreakBox(previousLine, orderCache))
     176        if (auto previousBox = endTextOrLineBreakBox(previousLineBox, orderCache))
    177177            return previousBox;
    178178    }
    … …  
    188188
    189189        RenderedPosition renderedPosition(position, Affinity::Downstream);
    190         auto previousLine = renderedPosition.line();
    191         if (!previousLine)
    192             break;
    193 
    194         if (previousLine != startBox->line()) {
    195             if (auto previousBox = endTextOrLineBreakBox(previousLine, orderCache)) {
     190        auto previousLineBox = renderedPosition.lineBox();
     191        if (!previousLineBox)
     192            break;
     193
     194        if (previousLineBox != startBox->lineBox()) {
     195            if (auto previousBox = endTextOrLineBreakBox(previousLineBox, orderCache)) {
    196196                previousBoxInDifferentLine = true;
    197197                return previousBox;
    … …  
    199199        }
    200200
    201         startBox = InlineIterator::firstLeafOnLineInLogicalOrder(previousLine, orderCache);
     201        startBox = InlineIterator::firstLeafOnLineInLogicalOrder(previousLineBox, orderCache);
    202202    }
    203203    return { };
    … …  
    210210        return nextBox;
    211211
    212     if (auto nextLine = startBox->line()->next()) {
     212    if (auto nextLineBox = startBox->lineBox()->next()) {
    213213        // FIXME: Why isn't previousBoxInDifferentLine set here?
    214         if (auto nextBox = startTextOrLineBreakBox(nextLine, orderCache))
     214        if (auto nextBox = startTextOrLineBreakBox(nextLineBox, orderCache))
    215215            return nextBox;
    216216    }
    … …  
    226226
    227227        RenderedPosition renderedPosition(position, Affinity::Downstream);
    228         auto nextLine = renderedPosition.line();
    229         if (!nextLine)
    230             break;
    231 
    232         if (nextLine != startBox->line()) {
    233             if (auto nextBox = startTextOrLineBreakBox(nextLine, orderCache)) {
     228        auto nextLineBox = renderedPosition.lineBox();
     229        if (!nextLineBox)
     230            break;
     231
     232        if (nextLineBox != startBox->lineBox()) {
     233            if (auto nextBox = startTextOrLineBreakBox(nextLineBox, orderCache)) {
    234234                nextBoxInDifferentLine = true;
    235235                return nextBox;
    … …  
    237237        }
    238238
    239         startBox = InlineIterator::lastLeafOnLineInLogicalOrderWithNode(nextLine, orderCache);
     239        startBox = InlineIterator::lastLeafOnLineInLogicalOrderWithNode(nextLineBox, orderCache);
    240240    }
    241241    return { };
    … …  
    739739        return VisiblePosition();
    740740
    741     auto line = RenderedPosition(c).line();
    742     if (!line) {
     741    auto lineBox = RenderedPosition(c).lineBox();
     742    if (!lineBox) {
    743743        // There are VisiblePositions at offset 0 in blocks without
    744744        // RootInlineBoxes, like empty editable blocks and bordered blocks.
    … …  
    753753
    754754    Node* startNode = nullptr;
    755     auto startBox = mode == UseLogicalOrdering ? InlineIterator::firstLeafOnLineInLogicalOrderWithNode(line, orderCache) : line->firstLeafBox();
     755    auto startBox = mode == UseLogicalOrdering ? InlineIterator::firstLeafOnLineInLogicalOrderWithNode(lineBox, orderCache) : lineBox->firstLeafBox();
    756756    // Generated content (e.g. list markers and CSS :before and :after pseudoelements) have no corresponding DOM element,
    757757    // and so cannot be represented by a VisiblePosition. Use whatever follows instead.
    … …  
    812812        return VisiblePosition();
    813813
    814     auto line = RenderedPosition(c).line();
    815     if (!line) {
     814    auto lineBox = RenderedPosition(c).lineBox();
     815    if (!lineBox) {
    816816        // There are VisiblePositions at offset 0 in blocks without
    817817        // RootInlineBoxes, like empty editable blocks and bordered blocks.
    … …  
    825825
    826826    Node* endNode = nullptr;
    827     auto endBox = mode == UseLogicalOrdering ? InlineIterator::lastLeafOnLineInLogicalOrder(line, orderCache) : line->lastLeafBox();
     827    auto endBox = mode == UseLogicalOrdering ? InlineIterator::lastLeafOnLineInLogicalOrder(lineBox, orderCache) : lineBox->lastLeafBox();
    828828    // Generated content (e.g. list markers and CSS :before and :after pseudoelements) have no corresponding DOM element,
    829829    // and so cannot be represented by a VisiblePosition. Use whatever precedes instead.
    … …  
    937937}
    938938
    939 static inline IntPoint absoluteLineDirectionPointToLocalPointInBlock(InlineIterator::LineIterator& line, int lineDirectionPoint)
    940 {
    941     auto& containingBlock = line->containingBlock();
     939static inline IntPoint absoluteLineDirectionPointToLocalPointInBlock(InlineIterator::LineBoxIterator& lineBox, int lineDirectionPoint)
     940{
     941    auto& containingBlock = lineBox->containingBlock();
    942942    FloatPoint absoluteBlockPoint = containingBlock.localToAbsolute(FloatPoint()) - toFloatSize(containingBlock.scrollPosition());
    943943
    944944    if (containingBlock.isHorizontalWritingMode())
    945         return IntPoint(lineDirectionPoint - absoluteBlockPoint.x(), contentStartInBlockDirection(*line));
    946 
    947     return IntPoint(contentStartInBlockDirection(*line), lineDirectionPoint - absoluteBlockPoint.y());
     945        return IntPoint(lineDirectionPoint - absoluteBlockPoint.x(), contentStartInBlockDirection(*lineBox));
     946
     947    return IntPoint(contentStartInBlockDirection(*lineBox), lineDirectionPoint - absoluteBlockPoint.y());
    948948}
    949949
    … …  
    969969        return VisiblePosition();
    970970
    971     InlineIterator::LineIterator line;
     971    InlineIterator::LineBoxIterator lineBox;
    972972    if (auto box = visiblePosition.inlineBoxAndOffset().box) {
    973         line = box->line()->previous();
     973        lineBox = box->lineBox()->previous();
    974974        // We want to skip zero height boxes.
    975975        // This could happen in case it is a LegacyRootInlineBox with trailing floats.
    976         if (!line || !line->lineBoxHeight() || !line->firstLeafBox())
    977             line = { };
    978     }
    979 
    980     if (!line) {
     976        if (!lineBox || !lineBox->height() || !lineBox->firstLeafBox())
     977            lineBox = { };
     978    }
     979
     980    if (!lineBox) {
    981981        Position position = previousLineCandidatePosition(node, visiblePosition, editableType);
    982982        if (position.isNotNull()) {
    983983            RenderedPosition renderedPosition(position);
    984             line = renderedPosition.line();
    985             if (!line)
     984            lineBox = renderedPosition.lineBox();
     985            if (!lineBox)
    986986                return position;
    987987        }
    988988    }
    989989   
    990     if (line) {
     990    if (lineBox) {
    991991        // FIXME: Can be wrong for multi-column layout and with transforms.
    992         auto pointInLine = absoluteLineDirectionPointToLocalPointInBlock(line, lineDirectionPoint);
    993         auto box = closestBoxForHorizontalPosition(*line, line->isHorizontal() ? pointInLine.x() : pointInLine.y(), isEditablePosition(p));
     992        auto pointInLine = absoluteLineDirectionPointToLocalPointInBlock(lineBox, lineDirectionPoint);
     993        auto box = closestBoxForHorizontalPosition(*lineBox, lineBox->isHorizontal() ? pointInLine.x() : pointInLine.y(), isEditablePosition(p));
    994994        if (!box)
    995995            return VisiblePosition();
    … …  
    10221022        return VisiblePosition();
    10231023
    1024     InlineIterator::LineIterator line;
     1024    InlineIterator::LineBoxIterator lineBox;
    10251025    if (auto box = visiblePosition.inlineBoxAndOffset().box) {
    1026         line = box->line()->next();
     1026        lineBox = box->lineBox()->next();
    10271027        // We want to skip zero height boxes.
    10281028        // This could happen in case it is a LegacyRootInlineBox with trailing floats.
    1029         if (!line || !line->lineBoxHeight() || !line->firstLeafBox())
    1030             line = { };
    1031     }
    1032 
    1033     if (!line) {
     1029        if (!lineBox || !lineBox->height() || !lineBox->firstLeafBox())
     1030            lineBox = { };
     1031    }
     1032
     1033    if (!lineBox) {
    10341034        // FIXME: We need do the same in previousLinePosition.
    10351035        Node* child = node->traverseToChildAt(p.deprecatedEditingOffset());
    … …  
    10381038        if (position.isNotNull()) {
    10391039            RenderedPosition renderedPosition(position);
    1040             line = renderedPosition.line();
    1041             if (!line)
     1040            lineBox = renderedPosition.lineBox();
     1041            if (!lineBox)
    10421042                return position;
    10431043        }
    10441044    }
    10451045   
    1046     if (line) {
     1046    if (lineBox) {
    10471047        // FIXME: Can be wrong for multi-column layout and with transforms.
    1048         auto pointInLine = absoluteLineDirectionPointToLocalPointInBlock(line, lineDirectionPoint);
    1049         auto box = closestBoxForHorizontalPosition(*line, line->isHorizontal() ? pointInLine.x() : pointInLine.y(), isEditablePosition(p));
     1048        auto pointInLine = absoluteLineDirectionPointToLocalPointInBlock(lineBox, lineDirectionPoint);
     1049        auto box = closestBoxForHorizontalPosition(*lineBox, lineBox->isHorizontal() ? pointInLine.x() : pointInLine.y(), isEditablePosition(p));
    10501050        if (!box)
    10511051            return VisiblePosition();
  • trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp

    r291408 r291548  
    4343#include "HTMLParserIdioms.h"
    4444#include "InlineIteratorBox.h"
    45 #include "InlineIteratorLine.h"
     45#include "InlineIteratorLineBox.h"
    4646#include "LayoutDisallowedScope.h"
    4747#include "Logging.h"
    … …  
    728728    Node* softLineBreakNode = nullptr;
    729729    unsigned softLineBreakOffset = 0;
    730     auto currentLine = InlineIterator::firstLineFor(*renderer);
    731     if (!currentLine)
     730    auto currentLineBox = InlineIterator::firstLineBoxFor(*renderer);
     731    if (!currentLineBox)
    732732        return value();
    733733
    734734    auto skipToNextSoftLineBreakPosition = [&] {
    735         for (; currentLine; currentLine.traverseNext()) {
    736             auto lastRun = currentLine->lastLeafBox();
     735        for (; currentLineBox; currentLineBox.traverseNext()) {
     736            auto lastRun = currentLineBox->lastLeafBox();
    737737            ASSERT(lastRun);
    738738            auto& renderer = lastRun->renderer();
    … …  
    741741                softLineBreakNode = renderer.node();
    742742                softLineBreakOffset = lastRun->maximumCaretOffset();
    743                 currentLine.traverseNext();
     743                currentLineBox.traverseNext();
    744744                return;
    745745            }
  • trunk/Source/WebCore/layout/integration/InlineIteratorBox.cpp

    r284665 r291548  
    2727#include "InlineIteratorBox.h"
    2828
    29 #include "InlineIteratorLine.h"
     29#include "InlineIteratorLineBox.h"
    3030#include "InlineIteratorTextBox.h"
    3131#include "LayoutIntegrationLineLayout.h"
    … …  
    8282}
    8383
    84 LineIterator Box::line() const
     84LineBoxIterator Box::lineBox() const
    8585{
    8686    return WTF::switchOn(m_pathVariant, [](const BoxLegacyPath& path) {
    87         return LineIterator(LineIteratorLegacyPath(&path.rootInlineBox()));
     87        return LineBoxIterator(LineBoxIteratorLegacyPath(&path.rootInlineBox()));
    8888    }
    8989#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
    9090    , [](const BoxModernPath& path) {
    91         return LineIterator(LineIteratorModernPath(path.inlineContent(), path.box().lineIndex()));
     91        return LineBoxIterator(LineBoxIteratorModernPath(path.inlineContent(), path.box().lineIndex()));
    9292    }
    9393#endif
    … …  
    9797const RenderStyle& Box::style() const
    9898{
    99     return line()->isFirst() ? renderer().firstLineStyle() : renderer().style();
     99    return lineBox()->isFirst() ? renderer().firstLineStyle() : renderer().style();
    100100}
    101101
  • trunk/Source/WebCore/layout/integration/InlineIteratorBox.h

    r290672 r291548  
    3939namespace InlineIterator {
    4040
    41 class LineIterator;
     41class LineBoxIterator;
    4242class BoxIterator;
    4343class LeafBoxIterator;
    … …  
    9999    LeafBoxIterator previousOnLineIgnoringLineBreak() const;
    100100
    101     LineIterator line() const;
     101    LineBoxIterator lineBox() const;
    102102
    103103protected:
  • trunk/Source/WebCore/layout/integration/InlineIteratorLine.cpp

    r291533 r291548  
    2525
    2626#include "config.h"
    27 #include "InlineIteratorLine.h"
     27#include "InlineIteratorLineBox.h"
    2828
    2929#include "InlineIteratorBox.h"
    … …  
    3434namespace InlineIterator {
    3535
    36 LineIterator::LineIterator(Line::PathVariant&& pathVariant)
    37     : m_line(WTFMove(pathVariant))
     36LineBoxIterator::LineBoxIterator(LineBox::PathVariant&& pathVariant)
     37    : m_lineBox(WTFMove(pathVariant))
    3838{
    3939}
    4040
    41 LineIterator::LineIterator(const Line& line)
    42     : m_line(line)
     41LineBoxIterator::LineBoxIterator(const LineBox& lineBox)
     42    : m_lineBox(lineBox)
    4343{
    4444}
    4545
    46 bool LineIterator::atEnd() const
     46bool LineBoxIterator::atEnd() const
    4747{
    48     return WTF::switchOn(m_line.m_pathVariant, [](auto& path) {
     48    return WTF::switchOn(m_lineBox.m_pathVariant, [](auto& path) {
    4949        return path.atEnd();
    5050    });
    5151}
    5252
    53 LineIterator& LineIterator::traverseNext()
     53LineBoxIterator& LineBoxIterator::traverseNext()
    5454{
    55     WTF::switchOn(m_line.m_pathVariant, [](auto& path) {
     55    WTF::switchOn(m_lineBox.m_pathVariant, [](auto& path) {
    5656        return path.traverseNext();
    5757    });
    … …  
    5959}
    6060
    61 LineIterator& LineIterator::traversePrevious()
     61LineBoxIterator& LineBoxIterator::traversePrevious()
    6262{
    63     WTF::switchOn(m_line.m_pathVariant, [](auto& path) {
     63    WTF::switchOn(m_lineBox.m_pathVariant, [](auto& path) {
    6464        return path.traversePrevious();
    6565    });
    … …  
    6767}
    6868
    69 bool LineIterator::operator==(const LineIterator& other) const
     69bool LineBoxIterator::operator==(const LineBoxIterator& other) const
    7070{
    71     return m_line.m_pathVariant == other.m_line.m_pathVariant;
     71    return m_lineBox.m_pathVariant == other.m_lineBox.m_pathVariant;
    7272}
    7373
    74 LineIterator firstLineFor(const RenderBlockFlow& flow)
     74LineBoxIterator firstLineBoxFor(const RenderBlockFlow& flow)
    7575{
    7676#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
    7777    if (auto* lineLayout = flow.modernLineLayout())
    78         return lineLayout->firstLine();
     78        return lineLayout->firstLineBox();
    7979#endif
    8080
    81     return { LineIteratorLegacyPath { flow.firstRootBox() } };
     81    return { LineBoxIteratorLegacyPath { flow.firstRootBox() } };
    8282}
    8383
    84 LineIterator lastLineFor(const RenderBlockFlow& flow)
     84LineBoxIterator lastLineBoxFor(const RenderBlockFlow& flow)
    8585{
    8686#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
    8787    if (auto* lineLayout = flow.modernLineLayout())
    88         return lineLayout->lastLine();
     88        return lineLayout->lastLineBox();
    8989#endif
    9090
    91     return { LineIteratorLegacyPath { flow.lastRootBox() } };
     91    return { LineBoxIteratorLegacyPath { flow.lastRootBox() } };
    9292}
    9393
    94 LineIterator Line::next() const
     94LineBoxIterator LineBox::next() const
    9595{
    96     return LineIterator(*this).traverseNext();
     96    return LineBoxIterator(*this).traverseNext();
    9797}
    9898
    99 LineIterator Line::previous() const
     99LineBoxIterator LineBox::previous() const
    100100{
    101     return LineIterator(*this).traversePrevious();
     101    return LineBoxIterator(*this).traversePrevious();
    102102}
    103103
    104 LeafBoxIterator Line::firstLeafBox() const
     104LeafBoxIterator LineBox::firstLeafBox() const
    105105{
    106106    return WTF::switchOn(m_pathVariant, [](auto& path) -> LeafBoxIterator {
    … …  
    109109}
    110110
    111 LeafBoxIterator Line::lastLeafBox() const
     111LeafBoxIterator LineBox::lastLeafBox() const
    112112{
    113113    return WTF::switchOn(m_pathVariant, [](auto& path) -> LeafBoxIterator {
    … …  
    116116}
    117117
    118 LeafBoxIterator closestBoxForHorizontalPosition(const Line& line, float horizontalPosition, bool editableOnly)
     118LeafBoxIterator closestBoxForHorizontalPosition(const LineBox& lineBox, float horizontalPosition, bool editableOnly)
    119119{
    120120    auto isEditable = [&](auto box) {
    … …  
    122122    };
    123123
    124     auto firstBox = line.firstLeafBox();
    125     auto lastBox = line.lastLeafBox();
     124    auto firstBox = lineBox.firstLeafBox();
     125    auto lastBox = lineBox.lastLeafBox();
    126126
    127127    if (firstBox != lastBox) {
  • trunk/Source/WebCore/layout/integration/InlineIteratorLineBox.h

    r291547 r291548  
    2727
    2828#include "FontBaseline.h"
    29 #include "InlineIteratorLineLegacyPath.h"
    30 #include "InlineIteratorLineModernPath.h"
     29#include "InlineIteratorLineBoxLegacyPath.h"
     30#include "InlineIteratorLineBoxModernPath.h"
    3131#include "RenderBlockFlow.h"
    3232#include <variant>
    … …  
    3838namespace InlineIterator {
    3939
    40 class LineIterator;
     40class LineBoxIterator;
    4141class PathIterator;
    4242class LeafBoxIterator;
    4343
    44 struct EndLineIterator { };
    45 
    46 class Line {
     44struct EndLineBoxIterator { };
     45
     46class LineBox {
    4747public:
    4848    using PathVariant = std::variant<
    4949#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
    50         LineIteratorModernPath,
     50        LineBoxIteratorModernPath,
    5151#endif
    52         LineIteratorLegacyPath
     52        LineBoxIteratorLegacyPath
    5353    >;
    5454
    55     Line(PathVariant&&);
    56 
    57     float lineBoxTop() const;
    58     float lineBoxBottom() const;
    59     float lineBoxHeight() const { return lineBoxBottom() - lineBoxTop(); }
     55    LineBox(PathVariant&&);
     56
     57    float top() const;
     58    float bottom() const;
     59    float height() const { return bottom() - top(); }
    6060
    6161    float contentLogicalTop() const;
    … …  
    6565    float contentLogicalWidth() const;
    6666
    67     float contentLogicalTopAdjustedForPrecedingLine() const;
    68     float contentLogicalBottomAdjustedForFollowingLine() const;
     67    float contentLogicalTopAdjustedForPrecedingLineBox() const;
     68    float contentLogicalBottomAdjustedForFollowingLineBox() const;
    6969
    7070    const RenderBlockFlow& containingBlock() const;
    … …  
    8080    LeafBoxIterator lastLeafBox() const;
    8181
    82     LineIterator next() const;
    83     LineIterator previous() const;
     82    LineBoxIterator next() const;
     83    LineBoxIterator previous() const;
    8484
    8585private:
    86     friend class LineIterator;
     86    friend class LineBoxIterator;
    8787
    8888    PathVariant m_pathVariant;
    8989};
    9090
    91 class LineIterator {
     91class LineBoxIterator {
    9292public:
    93     LineIterator() : m_line(LineIteratorLegacyPath { nullptr }) { };
    94     LineIterator(const LegacyRootInlineBox* rootInlineBox) : m_line(LineIteratorLegacyPath { rootInlineBox }) { };
    95     LineIterator(Line::PathVariant&&);
    96     LineIterator(const Line&);
    97 
    98     LineIterator& operator++() { return traverseNext(); }
    99     LineIterator& traverseNext();
    100     LineIterator& traversePrevious();
     93    LineBoxIterator() : m_lineBox(LineBoxIteratorLegacyPath { nullptr }) { };
     94    LineBoxIterator(const LegacyRootInlineBox* rootInlineBox) : m_lineBox(LineBoxIteratorLegacyPath { rootInlineBox }) { };
     95    LineBoxIterator(LineBox::PathVariant&&);
     96    LineBoxIterator(const LineBox&);
     97
     98    LineBoxIterator& operator++() { return traverseNext(); }
     99    LineBoxIterator& traverseNext();
     100    LineBoxIterator& traversePrevious();
    101101
    102102    explicit operator bool() const { return !atEnd(); }
    103103
    104     bool operator==(const LineIterator&) const;
    105     bool operator!=(const LineIterator& other) const { return !(*this == other); }
    106 
    107     bool operator==(EndLineIterator) const { return atEnd(); }
    108     bool operator!=(EndLineIterator) const { return !atEnd(); }
    109 
    110     const Line& operator*() const { return m_line; }
    111     const Line* operator->() const { return &m_line; }
     104    bool operator==(const LineBoxIterator&) const;
     105    bool operator!=(const LineBoxIterator& other) const { return !(*this == other); }
     106
     107    bool operator==(EndLineBoxIterator) const { return atEnd(); }
     108    bool operator!=(EndLineBoxIterator) const { return !atEnd(); }
     109
     110    const LineBox& operator*() const { return m_lineBox; }
     111    const LineBox* operator->() const { return &m_lineBox; }
    112112
    113113    bool atEnd() const;
    114114
    115115private:
    116     Line m_line;
     116    LineBox m_lineBox;
    117117};
    118118
    119 LineIterator firstLineFor(const RenderBlockFlow&);
    120 LineIterator lastLineFor(const RenderBlockFlow&);
    121 LeafBoxIterator closestBoxForHorizontalPosition(const Line&, float horizontalPosition, bool editableOnly = false);
     119LineBoxIterator firstLineBoxFor(const RenderBlockFlow&);
     120LineBoxIterator lastLineBoxFor(const RenderBlockFlow&);
     121LeafBoxIterator closestBoxForHorizontalPosition(const LineBox&, float horizontalPosition, bool editableOnly = false);
    122122
    123123// -----------------------------------------------
    124 inline float previousLineContentBottomOrBorderAndPadding(const Line& line)
    125 {
    126     return line.isFirst() ? line.containingBlock().borderAndPaddingBefore().toFloat() : line.contentLogicalTopAdjustedForPrecedingLine();
    127 }
    128 
    129 inline float contentStartInBlockDirection(const Line& line)
    130 {
    131     if (!line.containingBlock().style().isFlippedBlocksWritingMode())
    132         return std::max(line.contentLogicalTop(), previousLineContentBottomOrBorderAndPadding(line));
    133     return std::min(line.contentLogicalBottom(), line.contentLogicalBottomAdjustedForFollowingLine());
    134 }
    135 
    136 inline Line::Line(PathVariant&& path)
     124inline float previousLineBoxContentBottomOrBorderAndPadding(const LineBox& lineBox)
     125{
     126    return lineBox.isFirst() ? lineBox.containingBlock().borderAndPaddingBefore().toFloat() : lineBox.contentLogicalTopAdjustedForPrecedingLineBox();
     127}
     128
     129inline float contentStartInBlockDirection(const LineBox& lineBox)
     130{
     131    if (!lineBox.containingBlock().style().isFlippedBlocksWritingMode())
     132        return std::max(lineBox.contentLogicalTop(), previousLineBoxContentBottomOrBorderAndPadding(lineBox));
     133    return std::min(lineBox.contentLogicalBottom(), lineBox.contentLogicalBottomAdjustedForFollowingLineBox());
     134}
     135
     136inline LineBox::LineBox(PathVariant&& path)
    137137    : m_pathVariant(WTFMove(path))
    138138{
    139139}
    140140
    141 inline float Line::contentLogicalTop() const
     141inline float LineBox::contentLogicalTop() const
    142142{
    143143    return WTF::switchOn(m_pathVariant, [](const auto& path) {
    … …  
    146146}
    147147
    148 inline float Line::contentLogicalBottom() const
     148inline float LineBox::contentLogicalBottom() const
    149149{
    150150    return WTF::switchOn(m_pathVariant, [](const auto& path) {
    … …  
    153153}
    154154
    155 inline float Line::contentLogicalTopAdjustedForPrecedingLine() const
    156 {
    157     return WTF::switchOn(m_pathVariant, [](const auto& path) {
    158         return path.contentLogicalTopAdjustedForPrecedingLine();
    159     });
    160 }
    161 
    162 inline float Line::contentLogicalBottomAdjustedForFollowingLine() const
    163 {
    164     return WTF::switchOn(m_pathVariant, [](const auto& path) {
    165         return path.contentLogicalBottomAdjustedForFollowingLine();
    166     });
    167 }
    168 
    169 inline float Line::lineBoxTop() const
    170 {
    171     return WTF::switchOn(m_pathVariant, [](const auto& path) {
    172         return path.lineBoxTop();
    173     });
    174 }
    175 
    176 inline float Line::lineBoxBottom() const
    177 {
    178     return WTF::switchOn(m_pathVariant, [](const auto& path) {
    179         return path.lineBoxBottom();
    180     });
    181 }
    182 
    183 inline float Line::contentLogicalLeft() const
     155inline float LineBox::contentLogicalTopAdjustedForPrecedingLineBox() const
     156{
     157    return WTF::switchOn(m_pathVariant, [](const auto& path) {
     158        return path.contentLogicalTopAdjustedForPrecedingLineBox();
     159    });
     160}
     161
     162inline float LineBox::contentLogicalBottomAdjustedForFollowingLineBox() const
     163{
     164    return WTF::switchOn(m_pathVariant, [](const auto& path) {
     165        return path.contentLogicalBottomAdjustedForFollowingLineBox();
     166    });
     167}
     168
     169inline float LineBox::top() const
     170{
     171    return WTF::switchOn(m_pathVariant, [](const auto& path) {
     172        return path.top();
     173    });
     174}
     175
     176inline float LineBox::bottom() const
     177{
     178    return WTF::switchOn(m_pathVariant, [](const auto& path) {
     179        return path.bottom();
     180    });
     181}
     182
     183inline float LineBox::contentLogicalLeft() const
    184184{
    185185    return WTF::switchOn(m_pathVariant, [](const auto& path) {
    … …  
    188188}
    189189
    190 inline float Line::contentLogicalRight() const
     190inline float LineBox::contentLogicalRight() const
    191191{
    192192    return WTF::switchOn(m_pathVariant, [](const auto& path) {
    … …  
    195195}
    196196
    197 inline float Line::contentLogicalWidth() const
     197inline float LineBox::contentLogicalWidth() const
    198198{
    199199    return contentLogicalRight() - contentLogicalLeft();
    200200}
    201201
    202 inline bool Line::isHorizontal() const
     202inline bool LineBox::isHorizontal() const
    203203{
    204204    return WTF::switchOn(m_pathVariant, [](const auto& path) {
    … …  
    207207}
    208208
    209 inline FontBaseline Line::baselineType() const
     209inline FontBaseline LineBox::baselineType() const
    210210{
    211211    return WTF::switchOn(m_pathVariant, [](const auto& path) {
    … …  
    214214}
    215215
    216 inline const RenderBlockFlow& Line::containingBlock() const
     216inline const RenderBlockFlow& LineBox::containingBlock() const
    217217{
    218218    return WTF::switchOn(m_pathVariant, [](const auto& path) -> const RenderBlockFlow& {
    … …  
    221221}
    222222
    223 inline RenderFragmentContainer* Line::containingFragment() const
     223inline RenderFragmentContainer* LineBox::containingFragment() const
    224224{
    225225    return WTF::switchOn(m_pathVariant, [](const auto& path) {
    … …  
    228228}
    229229
    230 inline bool Line::isFirstAfterPageBreak() const
     230inline bool LineBox::isFirstAfterPageBreak() const
    231231{
    232232    return WTF::switchOn(m_pathVariant, [](const auto& path) {
    … …  
    235235}
    236236
    237 inline bool Line::isFirst() const
     237inline bool LineBox::isFirst() const
    238238{
    239239    return !previous();
  • trunk/Source/WebCore/layout/integration/InlineIteratorLineBoxLegacyPath.h

    r291547 r291548  
    3333namespace InlineIterator {
    3434
    35 class LineIteratorLegacyPath {
     35class LineBoxIteratorLegacyPath {
    3636public:
    37     LineIteratorLegacyPath(const LegacyRootInlineBox* rootInlineBox)
     37    LineBoxIteratorLegacyPath(const LegacyRootInlineBox* rootInlineBox)
    3838        : m_rootInlineBox(rootInlineBox)
    3939    {
    4040    }
    41     LineIteratorLegacyPath(LineIteratorLegacyPath&&) = default;
    42     LineIteratorLegacyPath(const LineIteratorLegacyPath&) = default;
    43     LineIteratorLegacyPath& operator=(const LineIteratorLegacyPath&) = default;
    44     LineIteratorLegacyPath& operator=(LineIteratorLegacyPath&&) = default;
     41    LineBoxIteratorLegacyPath(LineBoxIteratorLegacyPath&&) = default;
     42    LineBoxIteratorLegacyPath(const LineBoxIteratorLegacyPath&) = default;
     43    LineBoxIteratorLegacyPath& operator=(const LineBoxIteratorLegacyPath&) = default;
     44    LineBoxIteratorLegacyPath& operator=(LineBoxIteratorLegacyPath&&) = default;
    4545
    4646    float contentLogicalTop() const { return m_rootInlineBox->lineTop().toFloat(); }
    4747    float contentLogicalBottom() const { return m_rootInlineBox->lineBottom().toFloat(); }
    48     float contentLogicalTopAdjustedForPrecedingLine() const { return m_rootInlineBox->selectionTop().toFloat(); }
    49     float contentLogicalBottomAdjustedForFollowingLine() const { return m_rootInlineBox->selectionBottom().toFloat(); }
    50     float lineBoxTop() const { return m_rootInlineBox->lineBoxTop().toFloat(); }
    51     float lineBoxBottom() const { return m_rootInlineBox->lineBoxBottom().toFloat(); }
     48    float contentLogicalTopAdjustedForPrecedingLineBox() const { return m_rootInlineBox->selectionTop().toFloat(); }
     49    float contentLogicalBottomAdjustedForFollowingLineBox() const { return m_rootInlineBox->selectionBottom().toFloat(); }
     50    float top() const { return m_rootInlineBox->lineBoxTop().toFloat(); }
     51    float bottom() const { return m_rootInlineBox->lineBoxBottom().toFloat(); }
    5252
    5353    float contentLogicalLeft() const { return m_rootInlineBox->logicalLeft(); }
    … …  
    7171    }
    7272
    73     bool operator==(const LineIteratorLegacyPath& other) const { return m_rootInlineBox == other.m_rootInlineBox; }
     73    bool operator==(const LineBoxIteratorLegacyPath& other) const { return m_rootInlineBox == other.m_rootInlineBox; }
    7474
    7575    bool atEnd() const { return !m_rootInlineBox; }
  • trunk/Source/WebCore/layout/integration/InlineIteratorLineBoxModernPath.h

    r291547 r291548  
    3737class BoxModernPath;
    3838
    39 class LineIteratorModernPath {
     39class LineBoxIteratorModernPath {
    4040public:
    41     LineIteratorModernPath(const LayoutIntegration::InlineContent& inlineContent, size_t lineIndex)
     41    LineBoxIteratorModernPath(const LayoutIntegration::InlineContent& inlineContent, size_t lineIndex)
    4242        : m_inlineContent(&inlineContent)
    4343        , m_lineIndex(lineIndex)
    … …  
    4545        ASSERT(lineIndex <= lines().size());
    4646    }
    47     LineIteratorModernPath(LineIteratorModernPath&&) = default;
    48     LineIteratorModernPath(const LineIteratorModernPath&) = default;
    49     LineIteratorModernPath& operator=(const LineIteratorModernPath&) = default;
    50     LineIteratorModernPath& operator=(LineIteratorModernPath&&) = default;
     47    LineBoxIteratorModernPath(LineBoxIteratorModernPath&&) = default;
     48    LineBoxIteratorModernPath(const LineBoxIteratorModernPath&) = default;
     49    LineBoxIteratorModernPath& operator=(const LineBoxIteratorModernPath&) = default;
     50    LineBoxIteratorModernPath& operator=(LineBoxIteratorModernPath&&) = default;
    5151
    5252    float contentLogicalTop() const { return line().enclosingContentTop(); }
    5353    float contentLogicalBottom() const { return line().enclosingContentBottom(); }
    54     float lineBoxTop() const { return line().lineBoxTop(); }
    55     float lineBoxBottom() const { return line().lineBoxBottom(); }
     54    float top() const { return line().lineBoxTop(); }
     55    float bottom() const { return line().lineBoxBottom(); }
    5656
    57     float contentLogicalTopAdjustedForPrecedingLine() const { return !m_lineIndex ? contentLogicalTop() : LineIteratorModernPath(*m_inlineContent, m_lineIndex - 1).contentLogicalBottomAdjustedForFollowingLine(); }
     57    float contentLogicalTopAdjustedForPrecedingLineBox() const { return !m_lineIndex ? contentLogicalTop() : LineBoxIteratorModernPath(*m_inlineContent, m_lineIndex - 1).contentLogicalBottomAdjustedForFollowingLineBox(); }
    5858    // FIXME: Implement.
    59     float contentLogicalBottomAdjustedForFollowingLine() const { return contentLogicalBottom(); }
     59    float contentLogicalBottomAdjustedForFollowingLineBox() const { return contentLogicalBottom(); }
    6060
    6161    float contentLogicalLeft() const { return line().lineBoxLeft() + line().contentLogicalOffset(); }
    … …  
    8888    }
    8989
    90     bool operator==(const LineIteratorModernPath& other) const { return m_inlineContent == other.m_inlineContent && m_lineIndex == other.m_lineIndex; }
     90    bool operator==(const LineBoxIteratorModernPath& other) const { return m_inlineContent == other.m_inlineContent && m_lineIndex == other.m_lineIndex; }
    9191
    9292    bool atEnd() const { return m_lineIndex == lines().size(); }
  • trunk/Source/WebCore/layout/integration/InlineIteratorLogicalOrderTraversal.cpp

    r287444 r291548  
    2727#include "InlineIteratorLogicalOrderTraversal.h"
    2828
    29 #include "InlineIteratorLine.h"
     29#include "InlineIteratorLineBox.h"
    3030
    3131namespace WebCore {
    … …  
    9090}
    9191
    92 static LineLogicalOrderCache makeLineLogicalOrderCache(const LineIterator& line)
     92static LineLogicalOrderCache makeLineLogicalOrderCache(const LineBoxIterator& lineBox)
    9393{
    9494    auto cache = makeUnique<LineLogicalOrderCacheData>();
    9595
    96     cache->line = line;
    97     cache->boxes = leafBoxesInLogicalOrder(line, [](auto first, auto last) {
     96    cache->lineBox = lineBox;
     97    cache->boxes = leafBoxesInLogicalOrder(lineBox, [](auto first, auto last) {
    9898        std::reverse(first, last);
    9999    });
    … …  
    104104static void updateLineLogicalOrderCacheIfNeeded(const LeafBoxIterator& box, LineLogicalOrderCache& cache)
    105105{
    106     auto line = box->line();
    107     if (!cache || cache->line != line)
    108         cache = makeLineLogicalOrderCache(line);
     106    auto lineBox = box->lineBox();
     107    if (!cache || cache->lineBox != lineBox)
     108        cache = makeLineLogicalOrderCache(lineBox);
    109109
    110110    if (cache->index < cache->boxes.size() && cache->boxes[cache->index] == box)
    … …  
    116116}
    117117
    118 LeafBoxIterator firstLeafOnLineInLogicalOrder(const LineIterator& line, LineLogicalOrderCache& cache)
     118LeafBoxIterator firstLeafOnLineInLogicalOrder(const LineBoxIterator& lineBox, LineLogicalOrderCache& cache)
    119119{
    120     cache = makeLineLogicalOrderCache(line);
     120    cache = makeLineLogicalOrderCache(lineBox);
    121121
    122122    if (cache->boxes.isEmpty())
    … …  
    127127}
    128128
    129 LeafBoxIterator lastLeafOnLineInLogicalOrder(const LineIterator& line, LineLogicalOrderCache& cache)
     129LeafBoxIterator lastLeafOnLineInLogicalOrder(const LineBoxIterator& lineBox, LineLogicalOrderCache& cache)
    130130{
    131     cache = makeLineLogicalOrderCache(line);
     131    cache = makeLineLogicalOrderCache(lineBox);
    132132
    133133    if (cache->boxes.isEmpty())
    … …  
    162162}
    163163
    164 LeafBoxIterator firstLeafOnLineInLogicalOrderWithNode(const LineIterator& line, LineLogicalOrderCache& cache)
     164LeafBoxIterator firstLeafOnLineInLogicalOrderWithNode(const LineBoxIterator& lineBox, LineLogicalOrderCache& cache)
    165165{
    166     auto box = firstLeafOnLineInLogicalOrder(line, cache);
     166    auto box = firstLeafOnLineInLogicalOrder(lineBox, cache);
    167167    while (box && !box->renderer().node())
    168168        box = nextLeafOnLineInLogicalOrder(box, cache);
    … …  
    170170}
    171171
    172 LeafBoxIterator lastLeafOnLineInLogicalOrderWithNode(const LineIterator& line, LineLogicalOrderCache& cache)
     172LeafBoxIterator lastLeafOnLineInLogicalOrderWithNode(const LineBoxIterator& lineBox, LineLogicalOrderCache& cache)
    173173{
    174     auto box = lastLeafOnLineInLogicalOrder(line, cache);
     174    auto box = lastLeafOnLineInLogicalOrder(lineBox, cache);
    175175    while (box && !box->renderer().node())
    176176        box = previousLeafOnLineInLogicalOrder(box, cache);
  • trunk/Source/WebCore/layout/integration/InlineIteratorLogicalOrderTraversal.h

    r287520 r291548  
    2626#pragma once
    2727
    28 #include "InlineIteratorLine.h"
     28#include "InlineIteratorLineBox.h"
    2929#include "InlineIteratorTextBox.h"
    3030#include "RenderBlockFlow.h"
    … …  
    4747    WTF_MAKE_STRUCT_FAST_ALLOCATED;
    4848
    49     LineIterator line;
     49    LineBoxIterator lineBox;
    5050    Vector<LeafBoxIterator> boxes;
    5151    size_t index { 0 };
    … …  
    5353using LineLogicalOrderCache = std::unique_ptr<LineLogicalOrderCacheData>;
    5454
    55 LeafBoxIterator firstLeafOnLineInLogicalOrder(const LineIterator&, LineLogicalOrderCache&);
    56 LeafBoxIterator lastLeafOnLineInLogicalOrder(const LineIterator&, LineLogicalOrderCache&);
     55LeafBoxIterator firstLeafOnLineInLogicalOrder(const LineBoxIterator&, LineLogicalOrderCache&);
     56LeafBoxIterator lastLeafOnLineInLogicalOrder(const LineBoxIterator&, LineLogicalOrderCache&);
    5757LeafBoxIterator nextLeafOnLineInLogicalOrder(const LeafBoxIterator&, LineLogicalOrderCache&);
    5858LeafBoxIterator previousLeafOnLineInLogicalOrder(const LeafBoxIterator&, LineLogicalOrderCache&);
    5959
    60 LeafBoxIterator firstLeafOnLineInLogicalOrderWithNode(const LineIterator&, LineLogicalOrderCache&);
    61 LeafBoxIterator lastLeafOnLineInLogicalOrderWithNode(const LineIterator&, LineLogicalOrderCache&);
     60LeafBoxIterator firstLeafOnLineInLogicalOrderWithNode(const LineBoxIterator&, LineLogicalOrderCache&);
     61LeafBoxIterator lastLeafOnLineInLogicalOrderWithNode(const LineBoxIterator&, LineLogicalOrderCache&);
    6262
    6363template<typename ReverseFunction>
    64 Vector<LeafBoxIterator> leafBoxesInLogicalOrder(const LineIterator& line, ReverseFunction&& reverseFunction)
     64Vector<LeafBoxIterator> leafBoxesInLogicalOrder(const LineBoxIterator& lineBox, ReverseFunction&& reverseFunction)
    6565{
    6666    Vector<LeafBoxIterator> boxes;
    … …  
    6969    unsigned char maxLevel = 0;
    7070
    71     for (auto box = line->firstLeafBox(); box; box = box.traverseNextOnLine()) {
     71    for (auto box = lineBox->firstLeafBox(); box; box = box.traverseNextOnLine()) {
    7272        minLevel = std::min(minLevel, box->bidiLevel());
    7373        maxLevel = std::max(maxLevel, box->bidiLevel());
    … …  
    7575    }
    7676
    77     if (line->containingBlock().style().rtlOrdering() == Order::Visual)
     77    if (lineBox->containingBlock().style().rtlOrdering() == Order::Visual)
    7878        return boxes;
    7979
  • trunk/Source/WebCore/layout/integration/InlineIteratorTextBox.cpp

    r291463 r291548  
    2727#include "InlineIteratorTextBox.h"
    2828
    29 #include "InlineIteratorLine.h"
     29#include "InlineIteratorLineBox.h"
    3030#include "LayoutIntegrationLineLayout.h"
    3131#include "LineSelection.h"
    … …  
    4747        return { };
    4848
    49     auto lineSelectionRect = LineSelection::logicalRect(*line());
     49    auto lineSelectionRect = LineSelection::logicalRect(*lineBox());
    5050    auto selectionRect = LayoutRect { logicalLeft(), lineSelectionRect.y(), logicalWidth(), lineSelectionRect.height() };
    5151
  • trunk/Source/WebCore/layout/integration/LayoutIntegrationLineLayout.cpp

    r291169 r291548  
    621621}
    622622
    623 InlineIterator::LineIterator LineLayout::firstLine() const
    624 {
    625     if (!m_inlineContent)
    626         return { };
    627 
    628     return { InlineIterator::LineIteratorModernPath(*m_inlineContent, 0) };
    629 }
    630 
    631 InlineIterator::LineIterator LineLayout::lastLine() const
    632 {
    633     if (!m_inlineContent)
    634         return { };
    635 
    636     return { InlineIterator::LineIteratorModernPath(*m_inlineContent, m_inlineContent->lines.isEmpty() ? 0 : m_inlineContent->lines.size() - 1) };
     623InlineIterator::LineBoxIterator LineLayout::firstLineBox() const
     624{
     625    if (!m_inlineContent)
     626        return { };
     627
     628    return { InlineIterator::LineBoxIteratorModernPath(*m_inlineContent, 0) };
     629}
     630
     631InlineIterator::LineBoxIterator LineLayout::lastLineBox() const
     632{
     633    if (!m_inlineContent)
     634        return { };
     635
     636    return { InlineIterator::LineBoxIteratorModernPath(*m_inlineContent, m_inlineContent->lines.isEmpty() ? 0 : m_inlineContent->lines.size() - 1) };
    637637}
    638638
  • trunk/Source/WebCore/layout/integration/LayoutIntegrationLineLayout.h

    r291169 r291548  
    3030#include "FloatRect.h"
    3131#include "InlineIteratorInlineBox.h"
    32 #include "InlineIteratorLine.h"
     32#include "InlineIteratorLineBox.h"
    3333#include "InlineIteratorTextBox.h"
    3434#include "LayoutIntegrationBoxTree.h"
    … …  
    112112    InlineIterator::InlineBoxIterator firstInlineBoxFor(const RenderInline&) const;
    113113    InlineIterator::InlineBoxIterator firstRootInlineBox() const;
    114     InlineIterator::LineIterator firstLine() const;
    115     InlineIterator::LineIterator lastLine() const;
     114    InlineIterator::LineBoxIterator firstLineBox() const;
     115    InlineIterator::LineBoxIterator lastLineBox() const;
    116116
    117117    LayoutRect firstInlineBoxRect(const RenderInline&) const;
  • trunk/Source/WebCore/layout/integration/LineSelection.h

    r291535 r291548  
    2626#pragma once
    2727
    28 #include "InlineIteratorLine.h"
     28#include "InlineIteratorLineBox.h"
    2929#include "RenderBlockFlow.h"
    3030
    … …  
    3333class LineSelection {
    3434public:
    35     static float logicalTop(const InlineIterator::Line& line) { return line.contentLogicalTopAdjustedForPrecedingLine(); }
    36     static float logicalBottom(const InlineIterator::Line& line) { return line.contentLogicalBottomAdjustedForFollowingLine(); }
     35    static float logicalTop(const InlineIterator::LineBox& lineBox) { return lineBox.contentLogicalTopAdjustedForPrecedingLineBox(); }
     36    static float logicalBottom(const InlineIterator::LineBox& lineBox) { return lineBox.contentLogicalBottomAdjustedForFollowingLineBox(); }
    3737
    38     static FloatRect logicalRect(const InlineIterator::Line& line)
     38    static FloatRect logicalRect(const InlineIterator::LineBox& lineBox)
    3939    {
    40         return { FloatPoint { line.contentLogicalLeft(), line.contentLogicalTopAdjustedForPrecedingLine() }, FloatPoint { line.contentLogicalRight(), line.contentLogicalBottomAdjustedForFollowingLine() } };
     40        return { FloatPoint { lineBox.contentLogicalLeft(), lineBox.contentLogicalTopAdjustedForPrecedingLineBox() }, FloatPoint { lineBox.contentLogicalRight(), lineBox.contentLogicalBottomAdjustedForFollowingLineBox() } };
    4141    }
    4242
    43     static FloatRect physicalRect(const InlineIterator::Line& line)
     43    static FloatRect physicalRect(const InlineIterator::LineBox& lineBox)
    4444    {
    45         auto physicalRect = logicalRect(line);
    46         if (!line.isHorizontal())
     45        auto physicalRect = logicalRect(lineBox);
     46        if (!lineBox.isHorizontal())
    4747            physicalRect = physicalRect.transposedRect();
    48         line.containingBlock().flipForWritingMode(physicalRect);
     48        lineBox.containingBlock().flipForWritingMode(physicalRect);
    4949        return physicalRect;
    5050    }
    5151
    52     static float logicalTopAdjustedForPrecedingBlock(const InlineIterator::Line& line)
     52    static float logicalTopAdjustedForPrecedingBlock(const InlineIterator::LineBox& lineBox)
    5353    {
    5454        // FIXME: Move adjustEnclosingTopForPrecedingBlock from RenderBlockFlow to here.
    55         return line.containingBlock().adjustEnclosingTopForPrecedingBlock(LayoutUnit { line.contentLogicalTopAdjustedForPrecedingLine() });
     55        return lineBox.containingBlock().adjustEnclosingTopForPrecedingBlock(LayoutUnit { lineBox.contentLogicalTopAdjustedForPrecedingLineBox() });
    5656    }
    5757
    58     static RenderObject::HighlightState selectionState(const InlineIterator::Line& line)
     58    static RenderObject::HighlightState selectionState(const InlineIterator::LineBox& lineBox)
    5959    {
    60         auto& block = line.containingBlock();
     60        auto& block = lineBox.containingBlock();
    6161        if (block.selectionState() == RenderObject::HighlightState::None)
    6262            return RenderObject::HighlightState::None;
    6363
    6464        auto lineState = RenderObject::HighlightState::None;
    65         for (auto box = line.firstLeafBox(); box; box.traverseNextOnLine()) {
     65        for (auto box = lineBox.firstLeafBox(); box; box.traverseNextOnLine()) {
    6666            auto boxState = box->selectionState();
    6767            if (lineState == RenderObject::HighlightState::None)
  • trunk/Source/WebCore/rendering/CaretRectComputation.cpp

    r291530 r291548  
    2828
    2929#include "Editing.h"
    30 #include "InlineIteratorLine.h"
     30#include "InlineIteratorLineBox.h"
    3131#include "InlineIteratorTextBox.h"
    3232#include "LineSelection.h"
    … …  
    111111}
    112112
    113 static LayoutRect computeCaretRectForLinePosition(const InlineIterator::LineIterator& line, float logicalLeftPosition, CaretRectMode caretRectMode)
    114 {
    115     auto& containingBlock = line->containingBlock();
    116     auto lineSelectionRect = LineSelection::logicalRect(*line);
     113static LayoutRect computeCaretRectForLinePosition(const InlineIterator::LineBoxIterator& lineBox, float logicalLeftPosition, CaretRectMode caretRectMode)
     114{
     115    auto& containingBlock = lineBox->containingBlock();
     116    auto lineSelectionRect = LineSelection::logicalRect(*lineBox);
    117117
    118118    int height = lineSelectionRect.height();
    … …  
    174174
    175175    auto& textBox = downcast<InlineIterator::TextBoxIterator>(boxAndOffset.box);
    176     auto line = textBox->line();
     176    auto lineBox = textBox->lineBox();
    177177
    178178    float position = textBox->positionForOffset(boxAndOffset.offset);
    179     return computeCaretRectForLinePosition(line, position, caretRectMode);
     179    return computeCaretRectForLinePosition(lineBox, position, caretRectMode);
    180180}
    181181
    … …  
    187187        return { };
    188188
    189     auto line = boxAndOffset.box->line();
    190     return computeCaretRectForLinePosition(line, line->contentLogicalLeft(), caretRectMode);
     189    auto lineBox = boxAndOffset.box->lineBox();
     190    return computeCaretRectForLinePosition(lineBox, lineBox->contentLogicalLeft(), caretRectMode);
    191191}
    192192
    … …  
    229229
    230230    if (boxAndOffset.box) {
    231         auto line = boxAndOffset.box->line();
    232         auto top = line->contentLogicalTop();
     231        auto lineBox = boxAndOffset.box->lineBox();
     232        auto top = lineBox->contentLogicalTop();
    233233        rect.setY(top);
    234         rect.setHeight(line->contentLogicalBottom() - top);
     234        rect.setHeight(lineBox->contentLogicalBottom() - top);
    235235    }
    236236
  • trunk/Source/WebCore/rendering/InlineBoxPainter.cpp

    r290672 r291548  
    2727
    2828#include "GraphicsContext.h"
    29 #include "InlineIteratorLine.h"
     29#include "InlineIteratorLineBox.h"
    3030#include "LegacyInlineFlowBox.h"
    3131#include "PaintInfo.h"
    … …  
    5454    , m_paintOffset(paintOffset)
    5555    , m_renderer(m_inlineBox.renderer())
    56     , m_isFirstLine(m_inlineBox.line()->isFirst())
     56    , m_isFirstLineBox(m_inlineBox.lineBox()->isFirst())
    5757    , m_isRootInlineBox(m_inlineBox.isRootInlineBox())
    5858    , m_isHorizontal(m_inlineBox.isHorizontal())
    … …  
    142142
    143143    // Move x/y to our coordinates.
    144     auto localRect = LayoutRect { m_inlineBox.visualRect(m_inlineBox.line()->containingBlock().logicalHeight()) };
     144    auto localRect = LayoutRect { m_inlineBox.visualRect(m_inlineBox.lineBox()->containingBlock().logicalHeight()) };
    145145    LayoutPoint adjustedPaintOffset = m_paintOffset + localRect.location();
    146146
    … …  
    214214    // You can use p::first-line to specify a background. If so, the root inline boxes for
    215215    // a line may actually have to paint a background.
    216     if (m_isRootInlineBox && (!m_isFirstLine || &style == &renderer().style()))
     216    if (m_isRootInlineBox && (!m_isFirstLineBox || &style == &renderer().style()))
    217217        return;
    218218
    219219    // Move x/y to our coordinates.
    220     auto localRect = LayoutRect { m_inlineBox.visualRect(m_inlineBox.line()->containingBlock().logicalHeight()) };
     220    auto localRect = LayoutRect { m_inlineBox.visualRect(m_inlineBox.lineBox()->containingBlock().logicalHeight()) };
    221221    LayoutPoint adjustedPaintoffset = m_paintOffset + localRect.location();
    222222    GraphicsContext& context = m_paintInfo.context();
    … …  
    358358const RenderStyle& InlineBoxPainter::style() const
    359359{
    360     return m_isFirstLine ? renderer().firstLineStyle() : renderer().style();
    361 }
    362 
    363 }
     360    return m_isFirstLineBox ? renderer().firstLineStyle() : renderer().style();
     361}
     362
     363}
  • trunk/Source/WebCore/rendering/InlineBoxPainter.h

    r283981 r291548  
    6868    const LayoutPoint m_paintOffset;
    6969    const RenderBoxModelObject& m_renderer;
    70     const bool m_isFirstLine;
     70    const bool m_isFirstLineBox;
    7171    const bool m_isRootInlineBox;
    7272    const bool m_isHorizontal;
  • trunk/Source/WebCore/rendering/RenderBlockFlow.cpp

    r291545 r291548  
    3737#include "InlineIteratorBox.h"
    3838#include "InlineIteratorInlineBox.h"
    39 #include "InlineIteratorLine.h"
     39#include "InlineIteratorLineBox.h"
    4040#include "InlineIteratorLogicalOrderTraversal.h"
    4141#include "InlineIteratorTextBox.h"
    … …  
    30623062        return top;
    30633063
    3064     if (auto lastLine = InlineIterator::lastLineFor(*blockBefore)) {
    3065         auto lastLineSelectionState = LineSelection::selectionState(*lastLine);
     3064    if (auto lastLineBox = InlineIterator::lastLineBoxFor(*blockBefore)) {
     3065        auto lastLineSelectionState = LineSelection::selectionState(*lastLineBox);
    30663066        if (lastLineSelectionState != RenderObject::HighlightState::Inside && lastLineSelectionState != RenderObject::HighlightState::Start)
    30673067            return top;
    30683068
    3069         auto lastLineSelectionBottom = LineSelection::logicalBottom(*lastLine) + offsetToBlockBefore.height();
     3069        auto lastLineSelectionBottom = LineSelection::logicalBottom(*lastLineBox) + offsetToBlockBefore.height();
    30703070        top = std::max(top, LayoutUnit { lastLineSelectionBottom });
    30713071    }
    … …  
    30883088    }
    30893089
    3090     auto hasSelectedChildren = [&](const InlineIterator::LineIterator& line) {
    3091         return LineSelection::selectionState(*line) != RenderObject::HighlightState::None;
     3090    auto hasSelectedChildren = [&](const InlineIterator::LineBoxIterator& lineBox) {
     3091        return LineSelection::selectionState(*lineBox) != RenderObject::HighlightState::None;
    30923092    };
    30933093
    3094     auto lineSelectionGap = [&](const InlineIterator::LineIterator& line, LayoutUnit selTop, LayoutUnit selHeight) -> GapRects {
    3095         auto lineState = LineSelection::selectionState(*line);
     3094    auto lineSelectionGap = [&](const InlineIterator::LineBoxIterator& lineBox, LayoutUnit selTop, LayoutUnit selHeight) -> GapRects {
     3095        auto lineState = LineSelection::selectionState(*lineBox);
    30963096
    30973097        bool leftGap, rightGap;
    … …  
    31013101
    31023102        auto firstSelectedBox = [&]() -> InlineIterator::LeafBoxIterator {
    3103             for (auto box = line->firstLeafBox(); box; box.traverseNextOnLine()) {
     3103            for (auto box = lineBox->firstLeafBox(); box; box.traverseNextOnLine()) {
    31043104                if (box->selectionState() != RenderObject::HighlightState::None)
    31053105                    return box;
    … …  
    31093109
    31103110        auto lastSelectedBox = [&]() -> InlineIterator::LeafBoxIterator {
    3111             for (auto box = line->lastLeafBox(); box; box.traversePreviousOnLine()) {
     3111            for (auto box = lineBox->lastLeafBox(); box; box.traversePreviousOnLine()) {
    31123112                if (box->selectionState() != RenderObject::HighlightState::None)
    31133113                    return box;
    … …  
    31583158    };
    31593159
    3160     InlineIterator::LineIterator lastSelectedLine;
    3161     InlineIterator::LineIterator line = InlineIterator::firstLineFor(*this);
    3162     for (; line && !hasSelectedChildren(line); line.traverseNext()) { }
     3160    InlineIterator::LineBoxIterator lastSelectedLineBox;
     3161    auto lineBox = InlineIterator::firstLineBoxFor(*this);
     3162    for (; lineBox && !hasSelectedChildren(lineBox); lineBox.traverseNext()) { }
    31633163
    31643164    GapRects result;
    31653165
    31663166    // Now paint the gaps for the lines.
    3167     for (; line && hasSelectedChildren(line); line.traverseNext()) {
    3168         auto selectionTop =  LayoutUnit { LineSelection::logicalTopAdjustedForPrecedingBlock(*line) };
    3169         auto selectionHeight = LayoutUnit { std::max(0.f, LineSelection::logicalBottom(*line) - selectionTop) };
    3170 
    3171         if (!containsStart && !lastSelectedLine &&
    3172             selectionState() != HighlightState::Start && selectionState() != HighlightState::Both && !isRubyBase())
     3167    for (; lineBox && hasSelectedChildren(lineBox); lineBox.traverseNext()) {
     3168        auto selectionTop =  LayoutUnit { LineSelection::logicalTopAdjustedForPrecedingBlock(*lineBox) };
     3169        auto selectionHeight = LayoutUnit { std::max(0.f, LineSelection::logicalBottom(*lineBox) - selectionTop) };
     3170
     3171        if (!containsStart && !lastSelectedLineBox
     3172            && selectionState() != HighlightState::Start
     3173            && selectionState() != HighlightState::Both && !isRubyBase())
    31733174            result.uniteCenter(blockSelectionGap(rootBlock, rootBlockPhysicalPosition, offsetFromRootBlock, lastLogicalTop, lastLogicalLeft, lastLogicalRight, selectionTop, cache, paintInfo));
    31743175
    3175         LayoutRect logicalRect { LayoutUnit(line->contentLogicalLeft()), selectionTop, LayoutUnit(line->contentLogicalWidth()), selectionTop + selectionHeight };
     3176        LayoutRect logicalRect { LayoutUnit(lineBox->contentLogicalLeft()), selectionTop, LayoutUnit(lineBox->contentLogicalWidth()), selectionTop + selectionHeight };
    31763177        logicalRect.move(isHorizontalWritingMode() ? offsetFromRootBlock : offsetFromRootBlock.transposedSize());
    31773178        LayoutRect physicalRect = rootBlock.logicalRectToPhysicalRect(rootBlockPhysicalPosition, logicalRect);
    31783179        if (!paintInfo || (isHorizontalWritingMode() && physicalRect.y() < paintInfo->rect.maxY() && physicalRect.maxY() > paintInfo->rect.y())
    31793180            || (!isHorizontalWritingMode() && physicalRect.x() < paintInfo->rect.maxX() && physicalRect.maxX() > paintInfo->rect.x()))
    3180             result.unite(lineSelectionGap(line, selectionTop, selectionHeight));
    3181 
    3182         lastSelectedLine = line;
    3183     }
    3184 
    3185     if (containsStart && !lastSelectedLine)
     3181            result.unite(lineSelectionGap(lineBox, selectionTop, selectionHeight));
     3182
     3183        lastSelectedLineBox = lineBox;
     3184    }
     3185
     3186    if (containsStart && !lastSelectedLineBox) {
    31863187        // VisibleSelection must start just after our last line.
    3187         lastSelectedLine = InlineIterator::lastLineFor(*this);
    3188 
    3189     if (lastSelectedLine && selectionState() != HighlightState::End && selectionState() != HighlightState::Both) {
     3188        lastSelectedLineBox = InlineIterator::lastLineBoxFor(*this);
     3189    }
     3190
     3191    if (lastSelectedLineBox && selectionState() != HighlightState::End && selectionState() != HighlightState::Both) {
    31903192        // Update our lastY to be the bottom of the last selected line.
    3191         auto lastLineSelectionBottom = LayoutUnit { LineSelection::logicalBottom(*lastSelectedLine) };
     3193        auto lastLineSelectionBottom = LayoutUnit { LineSelection::logicalBottom(*lastSelectedLineBox) };
    31923194        lastLogicalTop = blockDirectionOffset(rootBlock, offsetFromRootBlock) + lastLineSelectionBottom;
    31933195        lastLogicalLeft = logicalLeftSelectionOffset(rootBlock, lastLineSelectionBottom, cache);
    … …  
    32743276bool RenderBlockFlow::containsNonZeroBidiLevel() const
    32753277{
    3276     for (auto line = InlineIterator::firstLineFor(*this); line; line.traverseNext()) {
    3277         for (auto box = line->firstLeafBox(); box; box = box.traverseNextOnLine()) {
     3278    for (auto lineBox = InlineIterator::firstLineBoxFor(*this); lineBox; lineBox.traverseNext()) {
     3279        for (auto box = lineBox->firstLeafBox(); box; box = box.traverseNextOnLine()) {
    32783280            if (box->bidiLevel())
    32793281                return true;
    … …  
    33543356
    33553357            if (localPoint.y() > *previousRootInlineBoxBottom && localPoint.y() < box->logicalTop()) {
    3356                 auto closestBox = closestBoxForHorizontalPosition(*box->line(), localPoint.x());
     3358                auto closestBox = closestBoxForHorizontalPosition(*box->lineBox(), localPoint.x());
    33573359                if (closestBox && is<RenderText>(closestBox->renderer()))
    33583360                    return const_cast<RenderText*>(&downcast<RenderText>(closestBox->renderer()));
    … …  
    33683370    ASSERT(childrenInline());
    33693371
    3370     auto firstLine = InlineIterator::firstLineFor(*this);
    3371 
    3372     if (!firstLine)
     3372    auto firstLineBox = InlineIterator::firstLineBoxFor(*this);
     3373
     3374    if (!firstLineBox)
    33733375        return createVisiblePosition(0, Affinity::Downstream);
    33743376
    … …  
    33783380    // look for the closest line box in the root box which is at the passed-in y coordinate
    33793381    InlineIterator::LeafBoxIterator closestBox;
    3380     InlineIterator::LineIterator firstLineWithChildren;
    3381     InlineIterator::LineIterator lastLineWithChildren;
    3382     for (auto line = firstLine; line; line.traverseNext()) {
    3383         if (fragment && line->containingFragment() != fragment)
     3382    InlineIterator::LineBoxIterator firstLineBoxWithChildren;
     3383    InlineIterator::LineBoxIterator lastLineBoxWithChildren;
     3384    for (auto lineBox = firstLineBox; lineBox; lineBox.traverseNext()) {
     3385        if (fragment && lineBox->containingFragment() != fragment)
    33843386            continue;
    33853387
    3386         if (!line->firstLeafBox())
     3388        if (!lineBox->firstLeafBox())
    33873389            continue;
    3388         if (!firstLineWithChildren)
    3389             firstLineWithChildren = line;
    3390 
    3391         if (!linesAreFlipped && line->isFirstAfterPageBreak()
    3392             && (pointInLogicalContents.y() < line->lineBoxTop() || (blocksAreFlipped && pointInLogicalContents.y() == line->lineBoxTop())))
     3390        if (!firstLineBoxWithChildren)
     3391            firstLineBoxWithChildren = lineBox;
     3392
     3393        if (!linesAreFlipped && lineBox->isFirstAfterPageBreak()
     3394            && (pointInLogicalContents.y() < lineBox->top() || (blocksAreFlipped && pointInLogicalContents.y() == lineBox->top())))
    33933395            break;
    33943396
    3395         lastLineWithChildren = line;
     3397        lastLineBoxWithChildren = lineBox;
    33963398
    33973399        // check if this root line box is located at this y coordinate
    3398         auto selectionBottom = LineSelection::logicalBottom(*line);
     3400        auto selectionBottom = LineSelection::logicalBottom(*lineBox);
    33993401        if (pointInLogicalContents.y() < selectionBottom || (blocksAreFlipped && pointInLogicalContents.y() == selectionBottom)) {
    34003402            if (linesAreFlipped) {
    3401                 auto nextLineWithChildren = line->next();
    3402                 while (nextLineWithChildren && !nextLineWithChildren->firstLeafBox())
    3403                     nextLineWithChildren.traverseNext();
    3404 
    3405                 if (nextLineWithChildren && nextLineWithChildren->isFirstAfterPageBreak()
    3406                     && (pointInLogicalContents.y() > nextLineWithChildren->lineBoxTop() || (!blocksAreFlipped && pointInLogicalContents.y() == nextLineWithChildren->lineBoxTop())))
     3403                auto nextLineBoxWithChildren = lineBox->next();
     3404                while (nextLineBoxWithChildren && !nextLineBoxWithChildren->firstLeafBox())
     3405                    nextLineBoxWithChildren.traverseNext();
     3406
     3407                if (nextLineBoxWithChildren && nextLineBoxWithChildren->isFirstAfterPageBreak()
     3408                    && (pointInLogicalContents.y() > nextLineBoxWithChildren->top() || (!blocksAreFlipped && pointInLogicalContents.y() == nextLineBoxWithChildren->top())))
    34073409                    continue;
    34083410            }
    3409             closestBox = closestBoxForHorizontalPosition(*line, pointInLogicalContents.x());
     3411            closestBox = closestBoxForHorizontalPosition(*lineBox, pointInLogicalContents.x());
    34103412            if (closestBox)
    34113413                break;
    … …  
    34153417    bool moveCaretToBoundary = frame().editor().behavior().shouldMoveCaretToHorizontalBoundaryWhenPastTopOrBottom();
    34163418
    3417     if (!moveCaretToBoundary && !closestBox && lastLineWithChildren) {
     3419    if (!moveCaretToBoundary && !closestBox && lastLineBoxWithChildren) {
    34183420        // y coordinate is below last root line box, pretend we hit it
    3419         closestBox = closestBoxForHorizontalPosition(*lastLineWithChildren, pointInLogicalContents.x());
     3421        closestBox = closestBoxForHorizontalPosition(*lastLineBoxWithChildren, pointInLogicalContents.x());
    34203422    }
    34213423
    34223424    if (closestBox) {
    34233425        if (moveCaretToBoundary) {
    3424             auto firstLineWithChildrenTop = LayoutUnit { std::min(previousLineContentBottomOrBorderAndPadding(*firstLineWithChildren), firstLineWithChildren->contentLogicalTop()) };
     3426            auto firstLineWithChildrenTop = LayoutUnit { std::min(previousLineBoxContentBottomOrBorderAndPadding(*firstLineBoxWithChildren), firstLineBoxWithChildren->contentLogicalTop()) };
    34253427            if (pointInLogicalContents.y() < firstLineWithChildrenTop
    34263428                || (blocksAreFlipped && pointInLogicalContents.y() == firstLineWithChildrenTop)) {
    3427                 auto box = firstLineWithChildren->firstLeafBox();
     3429                auto box = firstLineBoxWithChildren->firstLeafBox();
    34283430                if (box->isLineBreak()) {
    34293431                    if (auto next = box->nextOnLineIgnoringLineBreak())
    … …  
    34363438
    34373439        // pass the box a top position that is inside it
    3438         auto point = LayoutPoint { pointInLogicalContents.x(), contentStartInBlockDirection(*closestBox->line()) };
     3440        auto point = LayoutPoint { pointInLogicalContents.x(), contentStartInBlockDirection(*closestBox->lineBox()) };
    34393441        if (!isHorizontalWritingMode())
    34403442            point = point.transposedPoint();
    … …  
    34443446    }
    34453447
    3446     if (lastLineWithChildren) {
     3448    if (lastLineBoxWithChildren) {
    34473449        // We hit this case for Mac behavior when the Y coordinate is below the last box.
    34483450        ASSERT(moveCaretToBoundary);
    34493451        InlineIterator::LineLogicalOrderCache orderCache;
    3450         if (auto logicallyLastBox = InlineIterator::lastLeafOnLineInLogicalOrderWithNode(lastLineWithChildren, orderCache))
     3452        if (auto logicallyLastBox = InlineIterator::lastLeafOnLineInLogicalOrderWithNode(lastLineBoxWithChildren, orderCache))
    34513453            return positionForRun(*this, logicallyLastBox, false);
    34523454    }
    … …  
    34723474    ASSERT(childrenInline());
    34733475    for (auto box = InlineIterator::firstRootInlineBoxFor(*this); box; box.traverseNextInlineBox()) {
    3474         auto line = box->line();
     3476        auto lineBox = box->lineBox();
    34753477        // FIXME: This is mixing physical and logical coordinates.
    34763478        auto unflippedVisualRect = box->visualRectIgnoringBlockDirection();
    3477         auto top = std::max(line->contentLogicalTop(), unflippedVisualRect.y());
    3478         auto bottom = std::min(line->contentLogicalBottom(), unflippedVisualRect.maxY());
     3479        auto top = std::max(lineBox->contentLogicalTop(), unflippedVisualRect.y());
     3480        auto bottom = std::min(lineBox->contentLogicalBottom(), unflippedVisualRect.maxY());
    34793481        auto rect = LayoutRect { LayoutUnit { additionalOffset.x() + unflippedVisualRect.x() }
    34803482            , additionalOffset.y() + top
  • trunk/Source/WebCore/rendering/RenderBox.cpp

    r291464 r291548  
    4848#include "HitTestResult.h"
    4949#include "InlineIteratorInlineBox.h"
    50 #include "InlineIteratorLine.h"
     50#include "InlineIteratorLineBox.h"
    5151#include "InlineRunAndOffset.h"
    5252#include "LayoutIntegrationLineLayout.h"
  • trunk/Source/WebCore/rendering/RenderElement.cpp

    r291530 r291548  
    4141#include "HTMLImageElement.h"
    4242#include "HTMLNames.h"
    43 #include "InlineIteratorLine.h"
     43#include "InlineIteratorLineBox.h"
    4444#include "InlineIteratorTextBox.h"
    4545#include "LengthFunctions.h"
    … …  
    15921592                auto& textRenderer = downcast<RenderText>(*o);
    15931593                if (auto run = InlineIterator::firstTextBoxFor(textRenderer))
    1594                     point.move(textRenderer.linesBoundingBox().x(), run->line()->contentLogicalTop());
     1594                    point.move(textRenderer.linesBoundingBox().x(), run->lineBox()->contentLogicalTop());
    15951595            } else if (is<RenderBox>(*o))
    15961596                point.moveBy(downcast<RenderBox>(*o).location());
  • trunk/Source/WebCore/rendering/RenderImage.cpp

    r291535 r291548  
    4848#include "ImageOverlay.h"
    4949#include "InlineIteratorInlineBox.h"
    50 #include "InlineIteratorLine.h"
     50#include "InlineIteratorLineBox.h"
    5151#include "LineSelection.h"
    5252#include "Page.h"
    … …  
    111111        }
    112112    } else {
    113         auto selectionLogicalRect = LineSelection::logicalRect(*run->line());
     113        auto selectionLogicalRect = LineSelection::logicalRect(*run->lineBox());
    114114        int selectionTop = !containingBlock->style().isFlippedBlocksWritingMode() ? selectionLogicalRect.y() - logicalTop() : logicalBottom() - selectionLogicalRect.maxY();
    115115        int selectionHeight = selectionLogicalRect.height();
  • trunk/Source/WebCore/rendering/RenderInline.cpp

    r291535 r291548  
    3030#include "HitTestResult.h"
    3131#include "InlineIteratorInlineBox.h"
    32 #include "InlineIteratorLine.h"
     32#include "InlineIteratorLineBox.h"
    3333#include "LayoutIntegrationLineLayout.h"
    3434#include "LegacyInlineElementBox.h"
    … …  
    974974
    975975    for (auto box = InlineIterator::firstInlineBoxFor(*this); box; box.traverseNextInlineBox()) {
    976         auto line = box->line();
    977         auto top = LayoutUnit { std::max(line->contentLogicalTop(), box->logicalTop()) };
    978         auto bottom = LayoutUnit { std::min(line->contentLogicalBottom(), box->logicalBottom()) };
     976        auto lineBox = box->lineBox();
     977        auto top = LayoutUnit { std::max(lineBox->contentLogicalTop(), box->logicalTop()) };
     978        auto bottom = LayoutUnit { std::min(lineBox->contentLogicalBottom(), box->logicalBottom()) };
    979979        // FIXME: This is mixing physical and logical coordinates.
    980980        rects.append({ LayoutUnit(box->visualRectIgnoringBlockDirection().x()), top, LayoutUnit(box->logicalWidth()), bottom - top });
  • trunk/Source/WebCore/rendering/RenderLineBreak.cpp

    r291463 r291548  
    2828#include "HTMLWBRElement.h"
    2929#include "InlineIteratorBox.h"
    30 #include "InlineIteratorLine.h"
     30#include "InlineIteratorLineBox.h"
    3131#include "InlineRunAndOffset.h"
    3232#include "LegacyInlineElementBox.h"
    … …  
    187187    if (!run)
    188188        return;
    189     auto line = run->line();
    190 
    191     auto lineSelectionRect = LineSelection::logicalRect(*line);
     189    auto lineBox = run->lineBox();
     190
     191    auto lineSelectionRect = LineSelection::logicalRect(*lineBox);
    192192    LayoutRect rect = IntRect(run->logicalLeft(), lineSelectionRect.y(), 0, lineSelectionRect.height());
    193     if (!line->isHorizontal())
     193    if (!lineBox->isHorizontal())
    194194        rect = rect.transposedRect();
    195195
    196     if (line->isFirstAfterPageBreak()) {
     196    if (lineBox->isFirstAfterPageBreak()) {
    197197        if (run->isHorizontal())
    198             rect.shiftYEdgeTo(line->lineBoxTop());
     198            rect.shiftYEdgeTo(lineBox->top());
    199199        else
    200             rect.shiftXEdgeTo(line->lineBoxTop());
     200            rect.shiftXEdgeTo(lineBox->top());
    201201    }
    202202
  • trunk/Source/WebCore/rendering/RenderReplaced.cpp

    r291545 r291548  
    3636#include "HighlightRegister.h"
    3737#include "InlineIteratorBox.h"
    38 #include "InlineIteratorLine.h"
     38#include "InlineIteratorLineBox.h"
    3939#include "LayoutRepainter.h"
    4040#include "LineSelection.h"
    … …  
    722722    auto [top, bottom] = [&]() -> std::pair<float, float> {
    723723        if (auto run = InlineIterator::boxFor(*this)) {
    724             auto line = run->line();
    725             auto lineContentTop = LayoutUnit { std::min(previousLineContentBottomOrBorderAndPadding(*line), line->contentLogicalTop()) };
    726             return std::make_pair(lineContentTop, LineSelection::logicalBottom(*line));
     724            auto lineBox = run->lineBox();
     725            auto lineContentTop = LayoutUnit { std::min(previousLineBoxContentBottomOrBorderAndPadding(*lineBox), lineBox->contentLogicalTop()) };
     726            return std::make_pair(lineContentTop, LineSelection::logicalBottom(*lineBox));
    727727        }
    728728        return std::make_pair(logicalTop(), logicalBottom());
  • trunk/Source/WebCore/rendering/RenderText.cpp

    r291545 r291548  
    3737#include "HTMLParserIdioms.h"
    3838#include "Hyphenation.h"
    39 #include "InlineIteratorLine.h"
     39#include "InlineIteratorLineBox.h"
    4040#include "InlineIteratorLogicalOrderTraversal.h"
    4141#include "InlineIteratorTextBox.h"
    … …  
    343343        }
    344344
    345         if (run->line()->isFirstAfterPageBreak()) {
     345        if (run->lineBox()->isFirstAfterPageBreak()) {
    346346            if (run->isHorizontal())
    347                 rect.shiftYEdgeTo(run->line()->lineBoxTop());
     347                rect.shiftYEdgeTo(run->lineBox()->top());
    348348            else
    349                 rect.shiftXEdgeTo(run->line()->lineBoxTop());
     349                rect.shiftXEdgeTo(run->lineBox()->top());
    350350        }
    351351
    … …  
    674674            run.traverseNextTextBox();
    675675
    676         auto line = run->line();
    677         auto top = LayoutUnit { std::min(previousLineContentBottomOrBorderAndPadding(*line), line->contentLogicalTop()) };
     676        auto lineBox = run->lineBox();
     677        auto top = LayoutUnit { std::min(previousLineBoxContentBottomOrBorderAndPadding(*lineBox), lineBox->contentLogicalTop()) };
    678678        if (pointBlockDirection > top || (!blocksAreFlipped && pointBlockDirection == top)) {
    679             auto bottom = LineSelection::logicalBottom(*line);
    680             if (auto nextLine = line->next())
    681                 bottom = std::min(bottom, nextLine->contentLogicalTop());
     679            auto bottom = LineSelection::logicalBottom(*lineBox);
     680            if (auto nextLineBox = lineBox->next())
     681                bottom = std::min(bottom, nextLineBox->contentLogicalTop());
    682682
    683683            if (pointBlockDirection < bottom || (blocksAreFlipped && pointBlockDirection == bottom)) {
  • trunk/Source/WebCore/rendering/TextBoxPainter.cpp

    r291535 r291548  
    3030#include "EventRegion.h"
    3131#include "GraphicsContext.h"
    32 #include "InlineIteratorLine.h"
     32#include "InlineIteratorLineBox.h"
    3333#include "LegacyInlineTextBox.h"
    3434#include "LineSelection.h"
    … …  
    6767    , m_selectableRange(m_textBox->selectableRange())
    6868    , m_paintRect(computePaintRect(paintOffset))
    69     , m_isFirstLine(m_textBox->line()->isFirst())
     69    , m_isFirstLine(m_textBox->lineBox()->isFirst())
    7070    , m_isPrinting(m_document.printing())
    7171    , m_haveSelection(computeHaveSelection())
    … …  
    290290    // Note that if the text is truncated, we let the thing being painted in the truncation
    291291    // draw its own highlight.
    292     auto line = textBox().line();
    293     auto selectionBottom = LineSelection::logicalBottom(*line);
    294     auto selectionTop = LineSelection::logicalTopAdjustedForPrecedingBlock(*line);
     292    auto lineBox = textBox().lineBox();
     293    auto selectionBottom = LineSelection::logicalBottom(*lineBox);
     294    auto selectionTop = LineSelection::logicalTopAdjustedForPrecedingBlock(*lineBox);
    295295    // Use same y positioning and height as for selection, so that when the selection and this subrange are on
    296296    // the same word there are no pieces sticking out.
    … …  
    447447    if (!textBox->logicalLeft())
    448448        return 0;
    449     return textBox->logicalLeft() - textBox->line()->contentLogicalLeft();
     449    return textBox->logicalLeft() - textBox->lineBox()->contentLogicalLeft();
    450450}
    451451
    … …  
    571571    localPaintOffset.move(0, m_style.isHorizontalWritingMode() ? 0 : -textBox().logicalHeight());
    572572
    573     auto boxOrigin = textBox().visualRect(textBox().line()->containingBlock().logicalHeight()).location();
     573    auto boxOrigin = textBox().visualRect(textBox().lineBox()->containingBlock().logicalHeight()).location();
    574574    boxOrigin.moveBy(localPaintOffset);
    575575    return { boxOrigin, FloatSize(textBox().logicalWidth(), textBox().logicalHeight()) };
  • trunk/Source/WebCore/rendering/svg/SVGRootInlineBox.cpp

    r285195 r291548  
    312312void SVGRootInlineBox::reorderValueListsToLogicalOrder(Vector<SVGTextLayoutAttributes*>& attributes)
    313313{
    314     auto line = InlineIterator::LineIterator(this);
    315 
    316     InlineIterator::leafBoxesInLogicalOrder(line, [&](auto first, auto last) {
     314    auto lineBox = InlineIterator::LineBoxIterator(this);
     315
     316    InlineIterator::leafBoxesInLogicalOrder(lineBox, [&](auto first, auto last) {
    317317        reverseInlineBoxRangeAndValueListsIfNeeded(attributes, first, last);
    318318    });
  • trunk/Source/WebCore/style/InlineTextBoxStyle.cpp

    r291257 r291548  
    3030#include "HTMLAnchorElement.h"
    3131#include "HTMLNames.h"
    32 #include "InlineIteratorLine.h"
     32#include "InlineIteratorLineBox.h"
    3333#include "InlineIteratorTextBox.h"
    3434#include "LegacyInlineTextBox.h"
    … …  
    5050}
    5151
    52 static void minLogicalTopForTextDecorationLine(const InlineIterator::LineIterator& line, float& minLogicalTop, const RenderElement* decorationRenderer, OptionSet<TextDecorationLine> textDecorationLine)
    53 {
    54     for (auto run = line->firstLeafBox(); run; run.traverseNextOnLine()) {
     52static void minLogicalTopForTextDecorationLine(const InlineIterator::LineBoxIterator& lineBox, float& minLogicalTop, const RenderElement* decorationRenderer, OptionSet<TextDecorationLine> textDecorationLine)
     53{
     54    for (auto run = lineBox->firstLeafBox(); run; run.traverseNextOnLine()) {
    5555        if (run->renderer().isOutOfFlowPositioned())
    5656            continue; // Positioned placeholders don't affect calculations.
    … …  
    6767}
    6868
    69 static void maxLogicalBottomForTextDecorationLine(const InlineIterator::LineIterator& line, float& maxLogicalBottom, const RenderElement* decorationRenderer, OptionSet<TextDecorationLine> textDecorationLine)
    70 {
    71     for (auto run = line->firstLeafBox(); run; run.traverseNextOnLine()) {
     69static void maxLogicalBottomForTextDecorationLine(const InlineIterator::LineBoxIterator& lineBox, float& maxLogicalBottom, const RenderElement* decorationRenderer, OptionSet<TextDecorationLine> textDecorationLine)
     70{
     71    for (auto run = lineBox->firstLeafBox(); run; run.traverseNextOnLine()) {
    7272        if (run->renderer().isOutOfFlowPositioned())
    7373            continue; // Positioned placeholders don't affect calculations.
    … …  
    120120    if (resolvedUnderlinePosition == TextUnderlinePosition::Auto && underlineOffset.isAuto()) {
    121121        if (textRun)
    122             resolvedUnderlinePosition = textRun->line()->baselineType() == IdeographicBaseline ? TextUnderlinePosition::Under : TextUnderlinePosition::Auto;
     122            resolvedUnderlinePosition = textRun->lineBox()->baselineType() == IdeographicBaseline ? TextUnderlinePosition::Under : TextUnderlinePosition::Auto;
    123123        else
    124124            resolvedUnderlinePosition = TextUnderlinePosition::Auto;
    … …  
    135135        ASSERT(textRun);
    136136        // Position underline relative to the bottom edge of the lowest element's content box.
    137         auto line = textRun->line();
    138         auto* decorationRenderer = enclosingRendererWithTextDecoration(textRun->renderer(), TextDecorationLine::Underline, line->isFirst());
     137        auto lineBox = textRun->lineBox();
     138        auto* decorationRenderer = enclosingRendererWithTextDecoration(textRun->renderer(), TextDecorationLine::Underline, lineBox->isFirst());
    139139       
    140140        float offset;
    141141        if (textRun->renderer().style().isFlippedLinesWritingMode()) {
    142142            offset = textRun->logicalTop();
    143             minLogicalTopForTextDecorationLine(line, offset, decorationRenderer, TextDecorationLine::Underline);
     143            minLogicalTopForTextDecorationLine(lineBox, offset, decorationRenderer, TextDecorationLine::Underline);
    144144            offset = textRun->logicalTop() - offset;
    145145        } else {
    146146            offset = textRun->logicalBottom();
    147             maxLogicalBottomForTextDecorationLine(line, offset, decorationRenderer, TextDecorationLine::Underline);
     147            maxLogicalBottomForTextDecorationLine(lineBox, offset, decorationRenderer, TextDecorationLine::Underline);
    148148            offset -= textRun->logicalBottom();
    149149        }
Note: See TracChangeset for help on using the changeset viewer.