Changeset 252865 in webkit


Ignore:
Timestamp:
Nov 25, 2019 10:33:52 AM (4 years ago)
Author:
Alan Bujtas
Message:

[LFC][IFC] Rename Line to LineBuilder
https://bugs.webkit.org/show_bug.cgi?id=204584
<rdar://problem/57474964>

Reviewed by Antti Koivisto.

It really is a line builder.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthForConstraint const):
(WebCore::Layout::InlineFormattingContext::constraintsForLine):

  • layout/inlineformatting/InlineFormattingContext.h:
  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):
(WebCore::Layout::InlineFormattingContext::Quirks::lineHeightConstraints const):

  • layout/inlineformatting/InlineLineBreaker.cpp:
  • layout/inlineformatting/InlineLineBuilder.cpp: Renamed from Source/WebCore/layout/inlineformatting/InlineLine.cpp.

(WebCore::Layout::InlineItemRun::layoutBox const):
(WebCore::Layout::InlineItemRun::logicalRect const):
(WebCore::Layout::InlineItemRun::textContext const):
(WebCore::Layout::InlineItemRun::isText const):
(WebCore::Layout::InlineItemRun::isBox const):
(WebCore::Layout::InlineItemRun::isContainerStart const):
(WebCore::Layout::InlineItemRun::isContainerEnd const):
(WebCore::Layout::InlineItemRun::isForcedLineBreak const):
(WebCore::Layout::InlineItemRun::type const):
(WebCore::Layout::InlineItemRun::setIsCollapsed):
(WebCore::Layout::InlineItemRun::isCollapsed const):
(WebCore::Layout::InlineItemRun::isCollapsedToZeroAdvanceWidth const):
(WebCore::Layout::InlineItemRun::isCollapsible const):
(WebCore::Layout::InlineItemRun::isWhitespace const):
(WebCore::Layout::InlineItemRun::hasExpansionOpportunity const):
(WebCore::Layout::InlineItemRun::InlineItemRun):
(WebCore::Layout::InlineItemRun::setCollapsesToZeroAdvanceWidth):
(WebCore::Layout::ContinousContent::canBeExpanded):
(WebCore::Layout::ContinousContent::canBeMerged const):
(WebCore::Layout::ContinousContent::ContinousContent):
(WebCore::Layout::ContinousContent::append):
(WebCore::Layout::ContinousContent::close):
(WebCore::Layout::LineBuilder::Run::Run):
(WebCore::Layout::LineBuilder::Run::adjustExpansionBehavior):
(WebCore::Layout::LineBuilder::Run::expansionBehavior const):
(WebCore::Layout::LineBuilder::Run::setComputedHorizontalExpansion):
(WebCore::Layout::LineBuilder::LineBuilder):
(WebCore::Layout::LineBuilder::~LineBuilder):
(WebCore::Layout::LineBuilder::initialize):
(WebCore::Layout::shouldPreserveTrailingContent):
(WebCore::Layout::shouldPreserveLeadingContent):
(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::alignContentVertically):
(WebCore::Layout::LineBuilder::justifyRuns const):
(WebCore::Layout::LineBuilder::alignContentHorizontally const):
(WebCore::Layout::LineBuilder::removeTrailingTrimmableContent):
(WebCore::Layout::LineBuilder::moveLogicalLeft):
(WebCore::Layout::LineBuilder::moveLogicalRight):
(WebCore::Layout::LineBuilder::append):
(WebCore::Layout::LineBuilder::appendNonBreakableSpace):
(WebCore::Layout::LineBuilder::appendInlineContainerStart):
(WebCore::Layout::LineBuilder::appendInlineContainerEnd):
(WebCore::Layout::LineBuilder::appendTextContent):
(WebCore::Layout::LineBuilder::appendNonReplacedInlineBox):
(WebCore::Layout::LineBuilder::appendReplacedInlineBox):
(WebCore::Layout::LineBuilder::appendLineBreak):
(WebCore::Layout::LineBuilder::adjustBaselineAndLineHeight):
(WebCore::Layout::LineBuilder::runContentHeight const):
(WebCore::Layout::LineBuilder::TrimmableContent::append):
(WebCore::Layout::LineBuilder::halfLeadingMetrics):
(WebCore::Layout::LineBuilder::layoutState const):
(WebCore::Layout::LineBuilder::formattingContext const):

  • layout/inlineformatting/InlineLineBuilder.h: Renamed from Source/WebCore/layout/inlineformatting/InlineLine.h.

(WebCore::Layout::LineBuilder::isVisuallyEmpty const):
(WebCore::Layout::LineBuilder::hasIntrusiveFloat const):
(WebCore::Layout::LineBuilder::availableWidth const):
(WebCore::Layout::LineBuilder::trailingTrimmableWidth const):
(WebCore::Layout::LineBuilder::lineBox const):
(WebCore::Layout::LineBuilder::setHasIntrusiveFloat):
(WebCore::Layout::LineBuilder::Run::isText const):
(WebCore::Layout::LineBuilder::Run::isBox const):
(WebCore::Layout::LineBuilder::Run::isForcedLineBreak const):
(WebCore::Layout::LineBuilder::Run::isContainerStart const):
(WebCore::Layout::LineBuilder::Run::isContainerEnd const):
(WebCore::Layout::LineBuilder::Run::layoutBox const):
(WebCore::Layout::LineBuilder::Run::logicalRect const):
(WebCore::Layout::LineBuilder::Run::textContext const):
(WebCore::Layout::LineBuilder::Run::isCollapsedToVisuallyEmpty const):
(WebCore::Layout::LineBuilder::Run::adjustLogicalTop):
(WebCore::Layout::LineBuilder::Run::moveHorizontally):
(WebCore::Layout::LineBuilder::Run::moveVertically):
(WebCore::Layout::LineBuilder::Run::setLogicalHeight):
(WebCore::Layout::LineBuilder::Run::hasExpansionOpportunity const):
(WebCore::Layout::LineBuilder::Run::expansionOpportunityCount const):
(WebCore::Layout::LineBuilder::logicalTop const):
(WebCore::Layout::LineBuilder::logicalBottom const):
(WebCore::Layout::LineBuilder::logicalLeft const):
(WebCore::Layout::LineBuilder::logicalRight const):
(WebCore::Layout::LineBuilder::logicalWidth const):
(WebCore::Layout::LineBuilder::logicalHeight const):
(WebCore::Layout::LineBuilder::contentLogicalWidth const):
(WebCore::Layout::LineBuilder::contentLogicalRight const):
(WebCore::Layout::LineBuilder::baselineOffset const):
(WebCore::Layout::LineBuilder::isTextAlignJustify const):
(WebCore::Layout::LineBuilder::TrimmableContent::width const):
(WebCore::Layout::LineBuilder::TrimmableContent::runs):
(WebCore::Layout::LineBuilder::TrimmableContent::isEmpty const):
(WebCore::Layout::LineBuilder::TrimmableContent::clear):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::layoutLine):
(WebCore::Layout::LineLayoutContext::commitPendingContent):
(WebCore::Layout::LineLayoutContext::close):
(WebCore::Layout::LineLayoutContext::placeInlineItem):
(WebCore::Layout::LineLayoutContext::processUncommittedContent):

  • layout/inlineformatting/LineLayoutContext.h:
Location:
trunk/Source/WebCore
Files:
9 edited
2 moved

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r252864 r252865  
     12019-11-25  Zalan Bujtas  <zalan@apple.com>
     2
     3        [LFC][IFC] Rename Line to LineBuilder
     4        https://bugs.webkit.org/show_bug.cgi?id=204584
     5        <rdar://problem/57474964>
     6
     7        Reviewed by Antti Koivisto.
     8
     9        It really is a line builder.
     10
     11        * Sources.txt:
     12        * WebCore.xcodeproj/project.pbxproj:
     13        * layout/inlineformatting/InlineFormattingContext.cpp:
     14        (WebCore::Layout::InlineFormattingContext::lineLayout):
     15        (WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthForConstraint const):
     16        (WebCore::Layout::InlineFormattingContext::constraintsForLine):
     17        * layout/inlineformatting/InlineFormattingContext.h:
     18        * layout/inlineformatting/InlineFormattingContextQuirks.cpp:
     19        (WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):
     20        (WebCore::Layout::InlineFormattingContext::Quirks::lineHeightConstraints const):
     21        * layout/inlineformatting/InlineLineBreaker.cpp:
     22        * layout/inlineformatting/InlineLineBuilder.cpp: Renamed from Source/WebCore/layout/inlineformatting/InlineLine.cpp.
     23        (WebCore::Layout::InlineItemRun::layoutBox const):
     24        (WebCore::Layout::InlineItemRun::logicalRect const):
     25        (WebCore::Layout::InlineItemRun::textContext const):
     26        (WebCore::Layout::InlineItemRun::isText const):
     27        (WebCore::Layout::InlineItemRun::isBox const):
     28        (WebCore::Layout::InlineItemRun::isContainerStart const):
     29        (WebCore::Layout::InlineItemRun::isContainerEnd const):
     30        (WebCore::Layout::InlineItemRun::isForcedLineBreak const):
     31        (WebCore::Layout::InlineItemRun::type const):
     32        (WebCore::Layout::InlineItemRun::setIsCollapsed):
     33        (WebCore::Layout::InlineItemRun::isCollapsed const):
     34        (WebCore::Layout::InlineItemRun::isCollapsedToZeroAdvanceWidth const):
     35        (WebCore::Layout::InlineItemRun::isCollapsible const):
     36        (WebCore::Layout::InlineItemRun::isWhitespace const):
     37        (WebCore::Layout::InlineItemRun::hasExpansionOpportunity const):
     38        (WebCore::Layout::InlineItemRun::InlineItemRun):
     39        (WebCore::Layout::InlineItemRun::setCollapsesToZeroAdvanceWidth):
     40        (WebCore::Layout::ContinousContent::canBeExpanded):
     41        (WebCore::Layout::ContinousContent::canBeMerged const):
     42        (WebCore::Layout::ContinousContent::ContinousContent):
     43        (WebCore::Layout::ContinousContent::append):
     44        (WebCore::Layout::ContinousContent::close):
     45        (WebCore::Layout::LineBuilder::Run::Run):
     46        (WebCore::Layout::LineBuilder::Run::adjustExpansionBehavior):
     47        (WebCore::Layout::LineBuilder::Run::expansionBehavior const):
     48        (WebCore::Layout::LineBuilder::Run::setComputedHorizontalExpansion):
     49        (WebCore::Layout::LineBuilder::LineBuilder):
     50        (WebCore::Layout::LineBuilder::~LineBuilder):
     51        (WebCore::Layout::LineBuilder::initialize):
     52        (WebCore::Layout::shouldPreserveTrailingContent):
     53        (WebCore::Layout::shouldPreserveLeadingContent):
     54        (WebCore::Layout::LineBuilder::close):
     55        (WebCore::Layout::LineBuilder::alignContentVertically):
     56        (WebCore::Layout::LineBuilder::justifyRuns const):
     57        (WebCore::Layout::LineBuilder::alignContentHorizontally const):
     58        (WebCore::Layout::LineBuilder::removeTrailingTrimmableContent):
     59        (WebCore::Layout::LineBuilder::moveLogicalLeft):
     60        (WebCore::Layout::LineBuilder::moveLogicalRight):
     61        (WebCore::Layout::LineBuilder::append):
     62        (WebCore::Layout::LineBuilder::appendNonBreakableSpace):
     63        (WebCore::Layout::LineBuilder::appendInlineContainerStart):
     64        (WebCore::Layout::LineBuilder::appendInlineContainerEnd):
     65        (WebCore::Layout::LineBuilder::appendTextContent):
     66        (WebCore::Layout::LineBuilder::appendNonReplacedInlineBox):
     67        (WebCore::Layout::LineBuilder::appendReplacedInlineBox):
     68        (WebCore::Layout::LineBuilder::appendLineBreak):
     69        (WebCore::Layout::LineBuilder::adjustBaselineAndLineHeight):
     70        (WebCore::Layout::LineBuilder::runContentHeight const):
     71        (WebCore::Layout::LineBuilder::TrimmableContent::append):
     72        (WebCore::Layout::LineBuilder::halfLeadingMetrics):
     73        (WebCore::Layout::LineBuilder::layoutState const):
     74        (WebCore::Layout::LineBuilder::formattingContext const):
     75        * layout/inlineformatting/InlineLineBuilder.h: Renamed from Source/WebCore/layout/inlineformatting/InlineLine.h.
     76        (WebCore::Layout::LineBuilder::isVisuallyEmpty const):
     77        (WebCore::Layout::LineBuilder::hasIntrusiveFloat const):
     78        (WebCore::Layout::LineBuilder::availableWidth const):
     79        (WebCore::Layout::LineBuilder::trailingTrimmableWidth const):
     80        (WebCore::Layout::LineBuilder::lineBox const):
     81        (WebCore::Layout::LineBuilder::setHasIntrusiveFloat):
     82        (WebCore::Layout::LineBuilder::Run::isText const):
     83        (WebCore::Layout::LineBuilder::Run::isBox const):
     84        (WebCore::Layout::LineBuilder::Run::isForcedLineBreak const):
     85        (WebCore::Layout::LineBuilder::Run::isContainerStart const):
     86        (WebCore::Layout::LineBuilder::Run::isContainerEnd const):
     87        (WebCore::Layout::LineBuilder::Run::layoutBox const):
     88        (WebCore::Layout::LineBuilder::Run::logicalRect const):
     89        (WebCore::Layout::LineBuilder::Run::textContext const):
     90        (WebCore::Layout::LineBuilder::Run::isCollapsedToVisuallyEmpty const):
     91        (WebCore::Layout::LineBuilder::Run::adjustLogicalTop):
     92        (WebCore::Layout::LineBuilder::Run::moveHorizontally):
     93        (WebCore::Layout::LineBuilder::Run::moveVertically):
     94        (WebCore::Layout::LineBuilder::Run::setLogicalHeight):
     95        (WebCore::Layout::LineBuilder::Run::hasExpansionOpportunity const):
     96        (WebCore::Layout::LineBuilder::Run::expansionOpportunityCount const):
     97        (WebCore::Layout::LineBuilder::logicalTop const):
     98        (WebCore::Layout::LineBuilder::logicalBottom const):
     99        (WebCore::Layout::LineBuilder::logicalLeft const):
     100        (WebCore::Layout::LineBuilder::logicalRight const):
     101        (WebCore::Layout::LineBuilder::logicalWidth const):
     102        (WebCore::Layout::LineBuilder::logicalHeight const):
     103        (WebCore::Layout::LineBuilder::contentLogicalWidth const):
     104        (WebCore::Layout::LineBuilder::contentLogicalRight const):
     105        (WebCore::Layout::LineBuilder::baselineOffset const):
     106        (WebCore::Layout::LineBuilder::isTextAlignJustify const):
     107        (WebCore::Layout::LineBuilder::TrimmableContent::width const):
     108        (WebCore::Layout::LineBuilder::TrimmableContent::runs):
     109        (WebCore::Layout::LineBuilder::TrimmableContent::isEmpty const):
     110        (WebCore::Layout::LineBuilder::TrimmableContent::clear):
     111        * layout/inlineformatting/LineLayoutContext.cpp:
     112        (WebCore::Layout::LineLayoutContext::layoutLine):
     113        (WebCore::Layout::LineLayoutContext::commitPendingContent):
     114        (WebCore::Layout::LineLayoutContext::close):
     115        (WebCore::Layout::LineLayoutContext::placeInlineItem):
     116        (WebCore::Layout::LineLayoutContext::processUncommittedContent):
     117        * layout/inlineformatting/LineLayoutContext.h:
     118
    11192019-11-25  Zan Dobersek  <zdobersek@igalia.com>
    2120
  • trunk/Source/WebCore/Sources.txt

    r252863 r252865  
    14391439layout/inlineformatting/InlineFormattingState.cpp
    14401440layout/inlineformatting/InlineItem.cpp
    1441 layout/inlineformatting/InlineLine.cpp
    14421441layout/inlineformatting/InlineLineBreaker.cpp
     1442layout/inlineformatting/InlineLineBuilder.cpp
    14431443layout/inlineformatting/InlineTextItem.cpp
    14441444layout/inlineformatting/LineLayoutContext.cpp
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r252863 r252865  
    20212021                6ED8C37A183BFF8C009E53BD /* BoxShape.h in Headers */ = {isa = PBXBuildFile; fileRef = 6ED8C378183BFF8C009E53BD /* BoxShape.h */; settings = {ATTRIBUTES = (Private, ); }; };
    20222022                6EE8A77310F803F3005A4A24 /* JSWebGLContextAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EE8A77110F803F3005A4A24 /* JSWebGLContextAttributes.h */; };
    2023                 6F0CD695229ED32700C5994E /* InlineLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F0CD694229ED32700C5994E /* InlineLine.h */; };
     2023                6F0CD695229ED32700C5994E /* InlineLineBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F0CD694229ED32700C5994E /* InlineLineBuilder.h */; };
    20242024                6F1CC1DE225F8B4900720AD2 /* InlineTextItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F1CC1DD225F8B4200720AD2 /* InlineTextItem.h */; settings = {ATTRIBUTES = (Private, ); }; };
    20252025                6F26BB6C23343E6F002F2BEA /* LayoutContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F26BB6B23343E5B002F2BEA /* LayoutContext.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    92469246                6EE8A77110F803F3005A4A24 /* JSWebGLContextAttributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGLContextAttributes.h; sourceTree = "<group>"; };
    92479247                6F0830DF20B46951008A945B /* BlockFormattingContextGeometry.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = BlockFormattingContextGeometry.cpp; sourceTree = "<group>"; };
    9248                 6F0CD692229ED31900C5994E /* InlineLine.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InlineLine.cpp; sourceTree = "<group>"; };
    9249                 6F0CD694229ED32700C5994E /* InlineLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InlineLine.h; sourceTree = "<group>"; };
     9248                6F0CD692229ED31900C5994E /* InlineLineBuilder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InlineLineBuilder.cpp; sourceTree = "<group>"; };
     9249                6F0CD694229ED32700C5994E /* InlineLineBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InlineLineBuilder.h; sourceTree = "<group>"; };
    92509250                6F10B08622B8568D0090E69C /* InlineFormattingContextQuirks.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InlineFormattingContextQuirks.cpp; sourceTree = "<group>"; };
    92519251                6F1CC1DC225F8B4100720AD2 /* InlineTextItem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = InlineTextItem.cpp; sourceTree = "<group>"; };
     
    1668716687                                6F7B8CEC23626E6600C9FF15 /* InlineItem.cpp */,
    1668816688                                6FE7CFA02177EEF1005B1573 /* InlineItem.h */,
    16689                                 6F0CD692229ED31900C5994E /* InlineLine.cpp */,
    16690                                 6F0CD694229ED32700C5994E /* InlineLine.h */,
    1669116689                                6FB47E612277425A00C7BCB0 /* InlineLineBox.h */,
    1669216690                                6FE198132178397B00446F08 /* InlineLineBreaker.cpp */,
    1669316691                                6FE198152178397C00446F08 /* InlineLineBreaker.h */,
     16692                                6F0CD692229ED31900C5994E /* InlineLineBuilder.cpp */,
     16693                                6F0CD694229ED32700C5994E /* InlineLineBuilder.h */,
    1669416694                                6F1CC1DC225F8B4100720AD2 /* InlineTextItem.cpp */,
    1669516695                                6F1CC1DD225F8B4200720AD2 /* InlineTextItem.h */,
     
    3017430174                                6FE7CFA22177EEF2005B1573 /* InlineItem.h in Headers */,
    3017530175                                BCE789161120D6080060ECE5 /* InlineIterator.h in Headers */,
    30176                                 6F0CD695229ED32700C5994E /* InlineLine.h in Headers */,
    3017730176                                6FB47E632277425A00C7BCB0 /* InlineLineBox.h in Headers */,
    3017830177                                6FE198172178397C00446F08 /* InlineLineBreaker.h in Headers */,
     30178                                6F0CD695229ED32700C5994E /* InlineLineBuilder.h in Headers */,
    3017930179                                AA4C3A770B2B1679002334A2 /* InlineStyleSheetOwner.h in Headers */,
    3018030180                                BCEA485A097D93020094C9E4 /* InlineTextBox.h in Headers */,
  • trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp

    r252863 r252865  
    9696    unsigned leadingInlineItemIndex = 0;
    9797    Optional<LineLayoutContext::PartialContent> leadingPartialContent;
    98     auto line = Line { *this, root().style().textAlign(), Line::SkipAlignment::No };
     98    auto lineBuilder = LineBuilder { *this, root().style().textAlign(), LineBuilder::SkipAlignment::No };
    9999    auto lineLayoutContext = LineLayoutContext { *this, inlineItems };
    100100
    101101    while (leadingInlineItemIndex < inlineItems.size()) {
    102         line.initialize(constraintsForLine(usedHorizontalValues, lineLogicalTop));
    103         auto lineContent = lineLayoutContext.layoutLine(line, leadingInlineItemIndex, leadingPartialContent);
     102        lineBuilder.initialize(constraintsForLine(usedHorizontalValues, lineLogicalTop));
     103        auto lineContent = lineLayoutContext.layoutLine(lineBuilder, leadingInlineItemIndex, leadingPartialContent);
    104104        setDisplayBoxesForLine(lineContent, usedHorizontalValues);
    105105
     
    117117        } else {
    118118            // Floats prevented us placing any content on the line.
    119             ASSERT(line.hasIntrusiveFloat());
     119            ASSERT(lineBuilder.hasIntrusiveFloat());
    120120            // Move the next line below the intrusive float.
    121121            auto floatingContext = FloatingContext { root(), *this, formattingState().floatingState() };
     
    234234    LayoutUnit maximumLineWidth;
    235235    unsigned leadingInlineItemIndex = 0;
    236     auto line = Line { *this, root().style().textAlign(), Line::SkipAlignment::Yes };
     236    auto lineBuilder = LineBuilder { *this, root().style().textAlign(), LineBuilder::SkipAlignment::Yes };
    237237    auto lineLayoutContext = LineLayoutContext { *this, inlineItems };
    238238    while (leadingInlineItemIndex < inlineItems.size()) {
    239239        // Only the horiztonal available width is constrained when computing intrinsic width.
    240         line.initialize(Line::Constraints { { }, usedHorizontalValues.constraints.width, false, { } });
    241         auto lineContent = lineLayoutContext.layoutLine(line, leadingInlineItemIndex, { });
     240        lineBuilder.initialize(LineBuilder::Constraints { { }, usedHorizontalValues.constraints.width, false, { } });
     241        auto lineContent = lineLayoutContext.layoutLine(lineBuilder, leadingInlineItemIndex, { });
    242242
    243243        leadingInlineItemIndex = *lineContent.trailingInlineItemIndex + 1;
     
    372372}
    373373
    374 Line::Constraints InlineFormattingContext::constraintsForLine(const UsedHorizontalValues& usedHorizontalValues, const LayoutUnit lineLogicalTop)
     374LineBuilder::Constraints InlineFormattingContext::constraintsForLine(const UsedHorizontalValues& usedHorizontalValues, const LayoutUnit lineLogicalTop)
    375375{
    376376    auto lineLogicalLeft = geometryForBox(root()).contentBoxLeft();
     
    405405        }
    406406    }
    407     return Line::Constraints { { lineLogicalLeft, lineLogicalTop }, availableWidth, lineIsConstrainedByFloat, quirks().lineHeightConstraints(root()) };
     407    return LineBuilder::Constraints { { lineLogicalLeft, lineLogicalTop }, availableWidth, lineIsConstrainedByFloat, quirks().lineHeightConstraints(root()) };
    408408}
    409409
  • trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.h

    r252863 r252865  
    5151    class Quirks : public FormattingContext::Quirks {
    5252    public:
    53         bool lineDescentNeedsCollapsing(const Line::RunList&) const;
    54         Line::Constraints::HeightAndBaseline lineHeightConstraints(const Box& formattingRoot) const;
     53        bool lineDescentNeedsCollapsing(const LineBuilder::RunList&) const;
     54        LineBuilder::Constraints::HeightAndBaseline lineHeightConstraints(const Box& formattingRoot) const;
    5555
    5656    private:
     
    9090
    9191    void collectInlineContentIfNeeded();
    92     Line::Constraints constraintsForLine(const UsedHorizontalValues&, const LayoutUnit lineLogicalTop);
     92    LineBuilder::Constraints constraintsForLine(const UsedHorizontalValues&, const LayoutUnit lineLogicalTop);
    9393    void setDisplayBoxesForLine(const LineLayoutContext::LineContent&, const UsedHorizontalValues&);
    9494    void invalidateFormattingState(const InvalidationState&);
     
    9797    InlineFormattingState& formattingState() { return downcast<InlineFormattingState>(FormattingContext::formattingState()); }
    9898    // FIXME: Come up with a structure that requires no friending.
    99     friend class Line;
     99    friend class LineBuilder;
    100100};
    101101
  • trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContextQuirks.cpp

    r252859 r252865  
    2929#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
    3030
    31 #include "InlineLine.h"
     31#include "InlineLineBuilder.h"
    3232#include "LayoutState.h"
    3333
     
    3535namespace Layout {
    3636
    37 bool InlineFormattingContext::Quirks::lineDescentNeedsCollapsing(const Line::RunList& runList) const
     37bool InlineFormattingContext::Quirks::lineDescentNeedsCollapsing(const LineBuilder::RunList& runList) const
    3838{
    3939    // Collapse line descent in limited and full quirk mode when there's no baseline aligned content or
     
    7676}
    7777
    78 Line::Constraints::HeightAndBaseline InlineFormattingContext::Quirks::lineHeightConstraints(const Box& formattingRoot) const
     78LineBuilder::Constraints::HeightAndBaseline InlineFormattingContext::Quirks::lineHeightConstraints(const Box& formattingRoot) const
    7979{
    8080    // computedLineHeight takes font-size into account when line-height is not set.
    8181    // Strut is the imaginary box that we put on every line. It sets the initial vertical constraints for each new line.
    8282    auto strutHeight = formattingRoot.style().computedLineHeight();
    83     auto strutBaselineOffset = Line::halfLeadingMetrics(formattingRoot.style().fontMetrics(), strutHeight).ascent();
     83    auto strutBaselineOffset = LineBuilder::halfLeadingMetrics(formattingRoot.style().fontMetrics(), strutHeight).ascent();
    8484    if (layoutState().inNoQuirksMode())
    8585        return { strutHeight, strutBaselineOffset, { } };
     
    8787    auto lineHeight = formattingRoot.style().lineHeight();
    8888    if (lineHeight.isPercentOrCalculated()) {
    89         auto initialBaselineOffset = Line::halfLeadingMetrics(formattingRoot.style().fontMetrics(), { }).ascent();
     89        auto initialBaselineOffset = LineBuilder::halfLeadingMetrics(formattingRoot.style().fontMetrics(), { }).ascent();
    9090        return { initialBaselineOffset, initialBaselineOffset, LineBox::Baseline { strutBaselineOffset, strutHeight - strutBaselineOffset } };
    9191    }
    9292    // FIXME: The only reason why we use intValue() here is to match current inline tree (integral)behavior.
    9393    auto initialLineHeight = LayoutUnit { lineHeight.intValue() };
    94     auto initialBaselineOffset = Line::halfLeadingMetrics(formattingRoot.style().fontMetrics(), initialLineHeight).ascent();
     94    auto initialBaselineOffset = LineBuilder::halfLeadingMetrics(formattingRoot.style().fontMetrics(), initialLineHeight).ascent();
    9595    return { initialLineHeight, initialBaselineOffset, LineBox::Baseline { strutBaselineOffset, strutHeight - strutBaselineOffset } };
    9696}
  • trunk/Source/WebCore/layout/inlineformatting/InlineLineBreaker.cpp

    r252863 r252865  
    3232#include "InlineItem.h"
    3333#include "InlineTextItem.h"
     34#include "TextUtil.h"
    3435
    3536namespace WebCore {
  • trunk/Source/WebCore/layout/inlineformatting/InlineLineBuilder.cpp

    r252864 r252865  
    2525
    2626#include "config.h"
    27 #include "InlineLine.h"
     27#include "InlineLineBuilder.h"
    2828
    2929#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
     
    3535namespace WebCore {
    3636namespace Layout {
    37 
    38 WTF_MAKE_ISO_ALLOCATED_IMPL(Line);
    3937
    4038class InlineItemRun {
     
    9189
    9290    bool append(const InlineItemRun&);
    93     Line::Run close();
     91    LineBuilder::Run close();
    9492
    9593private:
     
    135133}
    136134
    137 Line::Run ContinousContent::close()
     135LineBuilder::Run ContinousContent::close()
    138136{
    139137    if (!m_expandedLength)
     
    158156}
    159157
    160 Line::Run::Run(const InlineItemRun& inlineItemRun)
     158LineBuilder::Run::Run(const InlineItemRun& inlineItemRun)
    161159    : m_layoutBox(&inlineItemRun.layoutBox())
    162160    , m_type(inlineItemRun.type())
     
    172170}
    173171
    174 Line::Run::Run(const InlineItemRun& inlineItemRun, const Display::Rect& logicalRect, const Display::Run::TextContext& textContext, unsigned expansionOpportunityCount)
     172LineBuilder::Run::Run(const InlineItemRun& inlineItemRun, const Display::Rect& logicalRect, const Display::Run::TextContext& textContext, unsigned expansionOpportunityCount)
    175173    : m_layoutBox(&inlineItemRun.layoutBox())
    176174    , m_type(inlineItemRun.type())
     
    182180}
    183181
    184 void Line::Run::adjustExpansionBehavior(ExpansionBehavior expansionBehavior)
     182void LineBuilder::Run::adjustExpansionBehavior(ExpansionBehavior expansionBehavior)
    185183{
    186184    ASSERT(isText());
     
    189187}
    190188
    191 inline Optional<ExpansionBehavior> Line::Run::expansionBehavior() const
     189inline Optional<ExpansionBehavior> LineBuilder::Run::expansionBehavior() const
    192190{
    193191    ASSERT(isText());
     
    197195}
    198196
    199 void Line::Run::setComputedHorizontalExpansion(LayoutUnit logicalExpansion)
     197void LineBuilder::Run::setComputedHorizontalExpansion(LayoutUnit logicalExpansion)
    200198{
    201199    ASSERT(isText());
     
    205203}
    206204
    207 Line::Line(const InlineFormattingContext& inlineFormattingContext, Optional<TextAlignMode> horizontalAlignment, SkipAlignment skipAlignment)
     205LineBuilder::LineBuilder(const InlineFormattingContext& inlineFormattingContext, Optional<TextAlignMode> horizontalAlignment, SkipAlignment skipAlignment)
    208206    : m_inlineFormattingContext(inlineFormattingContext)
    209207    , m_horizontalAlignment(horizontalAlignment)
     
    212210}
    213211
    214 Line::~Line()
    215 {
    216 }
    217 
    218 void Line::initialize(const Constraints& constraints)
     212LineBuilder::~LineBuilder()
     213{
     214}
     215
     216void LineBuilder::initialize(const Constraints& constraints)
    219217{
    220218    ASSERT(m_skipAlignment || constraints.heightAndBaseline);
     
    255253}
    256254
    257 Line::RunList Line::close(IsLastLineWithInlineContent isLastLineWithInlineContent)
     255LineBuilder::RunList LineBuilder::close(IsLastLineWithInlineContent isLastLineWithInlineContent)
    258256{
    259257    // 1. Remove trimmable trailing content.
     
    289287}
    290288
    291 void Line::alignContentVertically(RunList& runList)
     289void LineBuilder::alignContentVertically(RunList& runList)
    292290{
    293291    ASSERT(!m_skipAlignment);
     
    352350}
    353351
    354 void Line::justifyRuns(RunList& runList) const
     352void LineBuilder::justifyRuns(RunList& runList) const
    355353{
    356354    ASSERT(!runList.isEmpty());
     
    384382}
    385383
    386 void Line::alignContentHorizontally(RunList& runList, IsLastLineWithInlineContent lastLine) const
     384void LineBuilder::alignContentHorizontally(RunList& runList, IsLastLineWithInlineContent lastLine) const
    387385{
    388386    ASSERT(!m_skipAlignment);
     
    426424}
    427425
    428 void Line::removeTrailingTrimmableContent()
     426void LineBuilder::removeTrailingTrimmableContent()
    429427{
    430428    if (m_trimmableContent.isEmpty() || m_inlineItemRuns.isEmpty())
     
    441439}
    442440
    443 void Line::moveLogicalLeft(LayoutUnit delta)
     441void LineBuilder::moveLogicalLeft(LayoutUnit delta)
    444442{
    445443    if (!delta)
     
    450448}
    451449
    452 void Line::moveLogicalRight(LayoutUnit delta)
     450void LineBuilder::moveLogicalRight(LayoutUnit delta)
    453451{
    454452    ASSERT(delta > 0);
     
    456454}
    457455
    458 void Line::append(const InlineItem& inlineItem, LayoutUnit logicalWidth)
     456void LineBuilder::append(const InlineItem& inlineItem, LayoutUnit logicalWidth)
    459457{
    460458    if (inlineItem.isText())
     
    471469}
    472470
    473 void Line::appendNonBreakableSpace(const InlineItem& inlineItem, const Display::Rect& logicalRect)
     471void LineBuilder::appendNonBreakableSpace(const InlineItem& inlineItem, const Display::Rect& logicalRect)
    474472{
    475473    m_inlineItemRuns.append(makeUnique<InlineItemRun>(inlineItem, logicalRect));
     
    479477}
    480478
    481 void Line::appendInlineContainerStart(const InlineItem& inlineItem, LayoutUnit logicalWidth)
     479void LineBuilder::appendInlineContainerStart(const InlineItem& inlineItem, LayoutUnit logicalWidth)
    482480{
    483481    // This is really just a placeholder to mark the start of the inline level container <span>.
     
    485483}
    486484
    487 void Line::appendInlineContainerEnd(const InlineItem& inlineItem, LayoutUnit logicalWidth)
     485void LineBuilder::appendInlineContainerEnd(const InlineItem& inlineItem, LayoutUnit logicalWidth)
    488486{
    489487    // This is really just a placeholder to mark the end of the inline level container </span>.
     
    491489}
    492490
    493 void Line::appendTextContent(const InlineTextItem& inlineItem, LayoutUnit logicalWidth)
     491void LineBuilder::appendTextContent(const InlineTextItem& inlineItem, LayoutUnit logicalWidth)
    494492{
    495493    auto isTrimmable = !shouldPreserveTrailingContent(inlineItem);
     
    547545}
    548546
    549 void Line::appendNonReplacedInlineBox(const InlineItem& inlineItem, LayoutUnit logicalWidth)
     547void LineBuilder::appendNonReplacedInlineBox(const InlineItem& inlineItem, LayoutUnit logicalWidth)
    550548{
    551549    auto& layoutBox = inlineItem.layoutBox();
     
    560558}
    561559
    562 void Line::appendReplacedInlineBox(const InlineItem& inlineItem, LayoutUnit logicalWidth)
     560void LineBuilder::appendReplacedInlineBox(const InlineItem& inlineItem, LayoutUnit logicalWidth)
    563561{
    564562    ASSERT(inlineItem.layoutBox().isReplaced());
     
    568566}
    569567
    570 void Line::appendLineBreak(const InlineItem& inlineItem)
     568void LineBuilder::appendLineBreak(const InlineItem& inlineItem)
    571569{
    572570    m_lineBox.setIsConsideredNonEmpty();
     
    574572}
    575573
    576 void Line::adjustBaselineAndLineHeight(const Run& run)
     574void LineBuilder::adjustBaselineAndLineHeight(const Run& run)
    577575{
    578576    auto& baseline = m_lineBox.baseline();
     
    662660}
    663661
    664 LayoutUnit Line::runContentHeight(const Run& run) const
     662LayoutUnit LineBuilder::runContentHeight(const Run& run) const
    665663{
    666664    ASSERT(!m_skipAlignment);
     
    681679}
    682680
    683 void Line::TrimmableContent::append(InlineItemRun& inlineItemRun)
     681void LineBuilder::TrimmableContent::append(InlineItemRun& inlineItemRun)
    684682{
    685683    ASSERT(inlineItemRun.logicalRect().width() >= 0);
     
    688686}
    689687
    690 LineBox::Baseline Line::halfLeadingMetrics(const FontMetrics& fontMetrics, LayoutUnit lineLogicalHeight)
     688LineBox::Baseline LineBuilder::halfLeadingMetrics(const FontMetrics& fontMetrics, LayoutUnit lineLogicalHeight)
    691689{
    692690    auto ascent = fontMetrics.ascent();
     
    700698}
    701699
    702 LayoutState& Line::layoutState() const
     700LayoutState& LineBuilder::layoutState() const
    703701{
    704702    return formattingContext().layoutState();
    705703}
    706704
    707 const InlineFormattingContext& Line::formattingContext() const
     705const InlineFormattingContext& LineBuilder::formattingContext() const
    708706{
    709707    return m_inlineFormattingContext;
  • trunk/Source/WebCore/layout/inlineformatting/InlineLineBuilder.h

    r252864 r252865  
    3232#include "InlineLineBox.h"
    3333#include "InlineTextItem.h"
    34 #include <wtf/IsoMalloc.h>
    3534
    3635namespace WebCore {
     
    4140class InlineItemRun;
    4241
    43 class Line {
    44     WTF_MAKE_ISO_ALLOCATED(Line);
     42class LineBuilder {
    4543public:
    4644    struct Constraints {
     
    5654    };
    5755    enum class SkipAlignment { No, Yes };
    58     Line(const InlineFormattingContext&, Optional<TextAlignMode>, SkipAlignment);
    59     ~Line();
     56    LineBuilder(const InlineFormattingContext&, Optional<TextAlignMode>, SkipAlignment);
     57    ~LineBuilder();
    6058
    6159    void initialize(const Constraints&);
     
    9088
    9189    private:
    92         friend class Line;
     90        friend class LineBuilder;
    9391
    9492        void adjustLogicalTop(LayoutUnit logicalTop) { m_logicalRect.setTop(logicalTop); }
     
    175173};
    176174
    177 inline void Line::TrimmableContent::clear()
     175inline void LineBuilder::TrimmableContent::clear()
    178176{
    179177    m_inlineItemRuns.clear();
  • trunk/Source/WebCore/layout/inlineformatting/LineLayoutContext.cpp

    r252863 r252865  
    8686}
    8787
    88 LineLayoutContext::LineContent LineLayoutContext::layoutLine(Line& line, unsigned leadingInlineItemIndex, Optional<PartialContent> leadingPartialContent)
     88LineLayoutContext::LineContent LineLayoutContext::layoutLine(LineBuilder& line, unsigned leadingInlineItemIndex, Optional<PartialContent> leadingPartialContent)
    8989{
    9090    auto initialize = [&] {
     
    122122}
    123123
    124 void LineLayoutContext::commitPendingContent(Line& line)
     124void LineLayoutContext::commitPendingContent(LineBuilder& line)
    125125{
    126126    if (m_uncommittedContent.isEmpty())
     
    132132}
    133133
    134 LineLayoutContext::LineContent LineLayoutContext::close(Line& line, unsigned leadingInlineItemIndex)
     134LineLayoutContext::LineContent LineLayoutContext::close(LineBuilder& line, unsigned leadingInlineItemIndex)
    135135{
    136136    ASSERT(m_committedInlineItemCount || line.hasIntrusiveFloat());
     
    146146    auto isLastLineWithInlineContent = [&] {
    147147        if (overflowContent)
    148             return Line::IsLastLineWithInlineContent::No;
     148            return LineBuilder::IsLastLineWithInlineContent::No;
    149149        // Skip floats backwards to see if this is going to be the last line with inline content.
    150150        for (auto i = m_inlineItems.size(); i--;) {
    151151            if (!m_inlineItems[i]->isFloat())
    152                 return i == trailingInlineItemIndex ? Line::IsLastLineWithInlineContent::Yes : Line::IsLastLineWithInlineContent::No;
     152                return i == trailingInlineItemIndex ? LineBuilder::IsLastLineWithInlineContent::Yes : LineBuilder::IsLastLineWithInlineContent::No;
    153153        }
    154154        // There has to be at least one non-float item.
    155155        ASSERT_NOT_REACHED();
    156         return Line::IsLastLineWithInlineContent::No;
     156        return LineBuilder::IsLastLineWithInlineContent::No;
    157157    };
    158158
     
    160160}
    161161
    162 LineLayoutContext::IsEndOfLine LineLayoutContext::placeInlineItem(Line& line, const InlineItem& inlineItem)
     162LineLayoutContext::IsEndOfLine LineLayoutContext::placeInlineItem(LineBuilder& line, const InlineItem& inlineItem)
    163163{
    164164    auto currentLogicalRight = line.lineBox().logicalRight();
     
    208208}
    209209
    210 LineLayoutContext::IsEndOfLine LineLayoutContext::processUncommittedContent(Line& line)
     210LineLayoutContext::IsEndOfLine LineLayoutContext::processUncommittedContent(LineBuilder& line)
    211211{
    212212    // Check if the pending content fits.
  • trunk/Source/WebCore/layout/inlineformatting/LineLayoutContext.h

    r252863 r252865  
    2828#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
    2929
    30 #include "InlineLine.h"
     30#include "InlineLineBuilder.h"
    3131
    3232namespace WebCore {
     
    4545        Optional<PartialContent> trailingPartialContent;
    4646        Vector<WeakPtr<InlineItem>> floats;
    47         const Line::RunList runList;
     47        const LineBuilder::RunList runList;
    4848        const LineBox lineBox;
    4949    };
    50     LineContent layoutLine(Line&, unsigned leadingInlineItemIndex, Optional<PartialContent> leadingPartialContent);
     50    LineContent layoutLine(LineBuilder&, unsigned leadingInlineItemIndex, Optional<PartialContent> leadingPartialContent);
    5151
    5252    struct Run {
     
    6060    const InlineFormattingContext& formattingContext() const { return m_inlineFormattingContext; }
    6161    enum class IsEndOfLine { No, Yes };
    62     IsEndOfLine placeInlineItem(Line&, const InlineItem&);
    63     void commitPendingContent(Line&);
    64     LineContent close(Line&, unsigned leadingInlineItemIndex);
     62    IsEndOfLine placeInlineItem(LineBuilder&, const InlineItem&);
     63    void commitPendingContent(LineBuilder&);
     64    LineContent close(LineBuilder&, unsigned leadingInlineItemIndex);
    6565    bool shouldProcessUncommittedContent(const InlineItem&) const;
    66     IsEndOfLine processUncommittedContent(Line&);
     66    IsEndOfLine processUncommittedContent(LineBuilder&);
    6767   
    6868    struct UncommittedContent {
Note: See TracChangeset for help on using the changeset viewer.