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

Changeset 287047 in webkit


Ignore:
Timestamp:
Dec 14, 2021, 2:10:59 PM (5 years ago)
Author:
Alan Bujtas
Message:

[LFC] Let BoxGeometry have logical values only
https://bugs.webkit.org/show_bug.cgi?id=234304

Reviewed by Antti Koivisto.

This helps when converting logical (layout) values to physical (display) values.

  • display/css/DisplayFillLayerImageGeometry.cpp:

(WebCore::Display::geometryForLayer):

  • layout/formattingContexts/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::validateGeometryConstraintsAfterLayout const):

  • layout/formattingContexts/FormattingGeometry.cpp:

(WebCore::Layout::FormattingGeometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingGeometry::outOfFlowNonReplacedHorizontalGeometry const):
(WebCore::Layout::FormattingGeometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingGeometry::outOfFlowReplacedHorizontalGeometry const):
(WebCore::Layout::FormattingGeometry::computedPadding const):

  • layout/formattingContexts/FormattingQuirks.cpp:

(WebCore::Layout::FormattingQuirks::heightValueOfNearestContainingBlockWithFixedHeight const):

  • layout/formattingContexts/block/BlockFormattingGeometry.cpp:

(WebCore::Layout::BlockFormattingGeometry::inFlowNonReplacedContentHeightAndMargin const):
(WebCore::Layout::BlockFormattingGeometry::inFlowNonReplacedContentWidthAndMargin const):

  • layout/formattingContexts/inline/InlineLine.cpp:

(WebCore::Layout::Line::initialize):
(WebCore::Layout::Line::addBorderAndPaddingEndForInlineBoxDecorationClone):

  • layout/formattingContexts/inline/InlineLineBox.cpp:

(WebCore::Layout::LineBox::logicalBorderBoxForInlineBox const):

  • layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:

(WebCore::Layout::LineBoxBuilder::constructAndAlignInlineLevelBoxes):

  • layout/formattingContexts/inline/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::inlineItemWidth const):

  • layout/formattingContexts/table/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::setUsedGeometryForCells):

  • layout/layouttree/LayoutBoxGeometry.cpp:

(WebCore::Layout::BoxGeometry::paddingBox const):

  • layout/layouttree/LayoutBoxGeometry.h:

(WebCore::Layout::BoxGeometry::verticalBorder const):
(WebCore::Layout::BoxGeometry::horizontalBorder const):
(WebCore::Layout::BoxGeometry::borderAndPaddingStart const):
(WebCore::Layout::BoxGeometry::borderAndPaddingEnd const):
(WebCore::Layout::BoxGeometry::contentBoxTop const):
(WebCore::Layout::BoxGeometry::contentBoxLeft const):
(WebCore::Layout::BoxGeometry::paddingBoxTop const):
(WebCore::Layout::BoxGeometry::paddingBoxLeft const):
(WebCore::Layout::BoxGeometry::paddingBoxHeight const):
(WebCore::Layout::BoxGeometry::paddingBoxWidth const):
(WebCore::Layout::BoxGeometry::borderBoxHeight const):
(WebCore::Layout::BoxGeometry::borderBoxWidth const):
(WebCore::Layout::BoxGeometry::paddingBefore const):
(WebCore::Layout::BoxGeometry::paddingStart const):
(WebCore::Layout::BoxGeometry::paddingAfter const):
(WebCore::Layout::BoxGeometry::paddingEnd const):
(WebCore::Layout::BoxGeometry::verticalPadding const):
(WebCore::Layout::BoxGeometry::horizontalPadding const):
(WebCore::Layout::BoxGeometry::borderBefore const):
(WebCore::Layout::BoxGeometry::borderStart const):
(WebCore::Layout::BoxGeometry::borderAfter const):
(WebCore::Layout::BoxGeometry::borderEnd const):
(WebCore::Layout::BoxGeometry::paddingTop const): Deleted.
(WebCore::Layout::BoxGeometry::paddingLeft const): Deleted.
(WebCore::Layout::BoxGeometry::paddingBottom const): Deleted.
(WebCore::Layout::BoxGeometry::paddingRight const): Deleted.
(WebCore::Layout::BoxGeometry::borderTop const): Deleted.
(WebCore::Layout::BoxGeometry::borderLeft const): Deleted.
(WebCore::Layout::BoxGeometry::borderBottom const): Deleted.
(WebCore::Layout::BoxGeometry::borderRight const): Deleted.

Location:
trunk/Source/WebCore
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r287046 r287047  
     12021-12-14  Alan Bujtas  <zalan@apple.com>
     2
     3        [LFC] Let BoxGeometry have logical values only
     4        https://bugs.webkit.org/show_bug.cgi?id=234304
     5
     6        Reviewed by Antti Koivisto.
     7
     8        This helps when converting logical (layout) values to physical (display) values.
     9
     10        * display/css/DisplayFillLayerImageGeometry.cpp:
     11        (WebCore::Display::geometryForLayer):
     12        * layout/formattingContexts/FormattingContext.cpp:
     13        (WebCore::Layout::FormattingContext::validateGeometryConstraintsAfterLayout const):
     14        * layout/formattingContexts/FormattingGeometry.cpp:
     15        (WebCore::Layout::FormattingGeometry::outOfFlowNonReplacedVerticalGeometry const):
     16        (WebCore::Layout::FormattingGeometry::outOfFlowNonReplacedHorizontalGeometry const):
     17        (WebCore::Layout::FormattingGeometry::outOfFlowReplacedVerticalGeometry const):
     18        (WebCore::Layout::FormattingGeometry::outOfFlowReplacedHorizontalGeometry const):
     19        (WebCore::Layout::FormattingGeometry::computedPadding const):
     20        * layout/formattingContexts/FormattingQuirks.cpp:
     21        (WebCore::Layout::FormattingQuirks::heightValueOfNearestContainingBlockWithFixedHeight const):
     22        * layout/formattingContexts/block/BlockFormattingGeometry.cpp:
     23        (WebCore::Layout::BlockFormattingGeometry::inFlowNonReplacedContentHeightAndMargin const):
     24        (WebCore::Layout::BlockFormattingGeometry::inFlowNonReplacedContentWidthAndMargin const):
     25        * layout/formattingContexts/inline/InlineLine.cpp:
     26        (WebCore::Layout::Line::initialize):
     27        (WebCore::Layout::Line::addBorderAndPaddingEndForInlineBoxDecorationClone):
     28        * layout/formattingContexts/inline/InlineLineBox.cpp:
     29        (WebCore::Layout::LineBox::logicalBorderBoxForInlineBox const):
     30        * layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:
     31        (WebCore::Layout::LineBoxBuilder::constructAndAlignInlineLevelBoxes):
     32        * layout/formattingContexts/inline/InlineLineBuilder.cpp:
     33        (WebCore::Layout::LineBuilder::inlineItemWidth const):
     34        * layout/formattingContexts/table/TableFormattingContext.cpp:
     35        (WebCore::Layout::TableFormattingContext::setUsedGeometryForCells):
     36        * layout/layouttree/LayoutBoxGeometry.cpp:
     37        (WebCore::Layout::BoxGeometry::paddingBox const):
     38        * layout/layouttree/LayoutBoxGeometry.h:
     39        (WebCore::Layout::BoxGeometry::verticalBorder const):
     40        (WebCore::Layout::BoxGeometry::horizontalBorder const):
     41        (WebCore::Layout::BoxGeometry::borderAndPaddingStart const):
     42        (WebCore::Layout::BoxGeometry::borderAndPaddingEnd const):
     43        (WebCore::Layout::BoxGeometry::contentBoxTop const):
     44        (WebCore::Layout::BoxGeometry::contentBoxLeft const):
     45        (WebCore::Layout::BoxGeometry::paddingBoxTop const):
     46        (WebCore::Layout::BoxGeometry::paddingBoxLeft const):
     47        (WebCore::Layout::BoxGeometry::paddingBoxHeight const):
     48        (WebCore::Layout::BoxGeometry::paddingBoxWidth const):
     49        (WebCore::Layout::BoxGeometry::borderBoxHeight const):
     50        (WebCore::Layout::BoxGeometry::borderBoxWidth const):
     51        (WebCore::Layout::BoxGeometry::paddingBefore const):
     52        (WebCore::Layout::BoxGeometry::paddingStart const):
     53        (WebCore::Layout::BoxGeometry::paddingAfter const):
     54        (WebCore::Layout::BoxGeometry::paddingEnd const):
     55        (WebCore::Layout::BoxGeometry::verticalPadding const):
     56        (WebCore::Layout::BoxGeometry::horizontalPadding const):
     57        (WebCore::Layout::BoxGeometry::borderBefore const):
     58        (WebCore::Layout::BoxGeometry::borderStart const):
     59        (WebCore::Layout::BoxGeometry::borderAfter const):
     60        (WebCore::Layout::BoxGeometry::borderEnd const):
     61        (WebCore::Layout::BoxGeometry::paddingTop const): Deleted.
     62        (WebCore::Layout::BoxGeometry::paddingLeft const): Deleted.
     63        (WebCore::Layout::BoxGeometry::paddingBottom const): Deleted.
     64        (WebCore::Layout::BoxGeometry::paddingRight const): Deleted.
     65        (WebCore::Layout::BoxGeometry::borderTop const): Deleted.
     66        (WebCore::Layout::BoxGeometry::borderLeft const): Deleted.
     67        (WebCore::Layout::BoxGeometry::borderBottom const): Deleted.
     68        (WebCore::Layout::BoxGeometry::borderRight const): Deleted.
     69
    1702021-12-14  Patrick Angle  <pangle@apple.com>
    271
  • trunk/Source/WebCore/display/css/DisplayFillLayerImageGeometry.cpp

    r278185 r287047  
    264264        LayoutUnit bottom;
    265265        if (fillLayer.origin() != FillBox::Border) {
    266             left = geometry.borderLeft();
    267             right = geometry.borderRight();
    268             top = geometry.borderTop();
    269             bottom = geometry.borderBottom();
     266            left = geometry.borderStart();
     267            right = geometry.borderEnd();
     268            top = geometry.borderBefore();
     269            bottom = geometry.borderAfter();
    270270            if (fillLayer.origin() == FillBox::Content) {
    271                 left += geometry.paddingLeft().value_or(0);
    272                 right += geometry.paddingRight().value_or(0);
    273                 top += geometry.paddingTop().value_or(0);
    274                 bottom += geometry.paddingBottom().value_or(0);
     271                left += geometry.paddingStart().value_or(0);
     272                right += geometry.paddingEnd().value_or(0);
     273                top += geometry.paddingBefore().value_or(0);
     274                bottom += geometry.paddingAfter().value_or(0);
    275275            }
    276276        }
  • trunk/Source/WebCore/layout/formattingContexts/FormattingContext.cpp

    r283158 r287047  
    292292            // top + margin-top + border-top-width + padding-top + height + padding-bottom + border-bottom-width + margin-bottom + bottom = height of containing block
    293293            auto containingBlockHeight = containingBlockGeometry.contentBoxHeight();
    294             ASSERT(BoxGeometry::borderBoxTop(boxGeometry) + boxGeometry.marginBefore() + boxGeometry.borderTop() + boxGeometry.paddingTop().value_or(0) + boxGeometry.contentBoxHeight()
    295                 + boxGeometry.paddingBottom().value_or(0) + boxGeometry.borderBottom() + boxGeometry.marginAfter() == containingBlockHeight);
    296         }
    297     }
    298 }
    299 #endif
    300 
    301 }
    302 }
    303 #endif
     294            ASSERT(BoxGeometry::borderBoxTop(boxGeometry) + boxGeometry.marginBefore() + boxGeometry.borderBefore() + boxGeometry.paddingBefore().value_or(0) + boxGeometry.contentBoxHeight()
     295                + boxGeometry.paddingAfter().value_or(0) + boxGeometry.borderAfter() + boxGeometry.marginAfter() == containingBlockHeight);
     296        }
     297    }
     298}
     299#endif
     300
     301}
     302}
     303#endif
  • trunk/Source/WebCore/layout/formattingContexts/FormattingGeometry.cpp

    r282350 r287047  
    361361    auto computedVerticalMargin = FormattingGeometry::computedVerticalMargin(layoutBox, horizontalConstraints);
    362362    UsedVerticalMargin::NonCollapsedValues usedVerticalMargin;
    363     auto paddingTop = boxGeometry.paddingTop().value_or(0);
    364     auto paddingBottom = boxGeometry.paddingBottom().value_or(0);
    365     auto borderTop = boxGeometry.borderTop();
    366     auto borderBottom = boxGeometry.borderBottom();
     363    auto paddingTop = boxGeometry.paddingBefore().value_or(0);
     364    auto paddingBottom = boxGeometry.paddingAfter().value_or(0);
     365    auto borderTop = boxGeometry.borderBefore();
     366    auto borderBottom = boxGeometry.borderAfter();
    367367
    368368    if (!top && !height && !bottom)
     
    481481    auto computedHorizontalMargin = FormattingGeometry::computedHorizontalMargin(layoutBox, horizontalConstraints);
    482482    UsedHorizontalMargin usedHorizontalMargin;
    483     auto paddingLeft = boxGeometry.paddingLeft().value_or(0);
    484     auto paddingRight = boxGeometry.paddingRight().value_or(0);
    485     auto borderLeft = boxGeometry.borderLeft();
    486     auto borderRight = boxGeometry.borderRight();
     483    auto paddingLeft = boxGeometry.paddingStart().value_or(0);
     484    auto paddingRight = boxGeometry.paddingEnd().value_or(0);
     485    auto borderLeft = boxGeometry.borderStart();
     486    auto borderRight = boxGeometry.borderEnd();
    487487    if (!left && !width && !right) {
    488488        // If all three of 'left', 'width', and 'right' are 'auto': First set any 'auto' values for 'margin-left' and 'margin-right' to 0.
     
    609609    std::optional<LayoutUnit> usedMarginBefore = computedVerticalMargin.before;
    610610    std::optional<LayoutUnit> usedMarginAfter = computedVerticalMargin.after;
    611     auto paddingTop = boxGeometry.paddingTop().value_or(0);
    612     auto paddingBottom = boxGeometry.paddingBottom().value_or(0);
    613     auto borderTop = boxGeometry.borderTop();
    614     auto borderBottom = boxGeometry.borderBottom();
     611    auto paddingTop = boxGeometry.paddingBefore().value_or(0);
     612    auto paddingBottom = boxGeometry.paddingAfter().value_or(0);
     613    auto borderTop = boxGeometry.borderBefore();
     614    auto borderBottom = boxGeometry.borderAfter();
    615615
    616616    if (!top && !bottom) {
     
    694694    std::optional<LayoutUnit> usedMarginEnd = computedHorizontalMargin.end;
    695695    auto width = inlineReplacedContentWidthAndMargin(replacedBox, horizontalConstraints, verticalConstraints, overriddenHorizontalValues).contentWidth;
    696     auto paddingLeft = boxGeometry.paddingLeft().value_or(0);
    697     auto paddingRight = boxGeometry.paddingRight().value_or(0);
    698     auto borderLeft = boxGeometry.borderLeft();
    699     auto borderRight = boxGeometry.borderRight();
     696    auto paddingLeft = boxGeometry.paddingStart().value_or(0);
     697    auto paddingRight = boxGeometry.paddingEnd().value_or(0);
     698    auto borderLeft = boxGeometry.borderStart();
     699    auto borderRight = boxGeometry.borderEnd();
    700700
    701701    if (!left && !right) {
     
    11101110    LOG_WITH_STREAM(FormattingContextLayout, stream << "[Padding] -> layoutBox: " << &layoutBox);
    11111111    return Edges {
    1112         { valueForLength(style.paddingLeft(), containingBlockWidth), valueForLength(style.paddingRight(), containingBlockWidth) },
    1113         { valueForLength(style.paddingTop(), containingBlockWidth), valueForLength(style.paddingBottom(), containingBlockWidth) }
     1112        { valueForLength(style.paddingStart(), containingBlockWidth), valueForLength(style.paddingEnd(), containingBlockWidth) },
     1113        { valueForLength(style.paddingBefore(), containingBlockWidth), valueForLength(style.paddingAfter(), containingBlockWidth) }
    11141114    };
    11151115}
  • trunk/Source/WebCore/layout/formattingContexts/FormattingQuirks.cpp

    r282430 r287047  
    6464
    6565            auto& boxGeometry = formattingContext.geometryForBox(*containingBlock, FormattingContext::EscapeReason::FindFixedHeightAncestorQuirk);
    66             auto verticalPadding = boxGeometry.paddingTop().value_or(0) + boxGeometry.paddingBottom().value_or(0);
    67             auto verticalBorder = boxGeometry.borderTop() + boxGeometry.borderBottom();
     66            auto verticalPadding = boxGeometry.paddingBefore().value_or(0) + boxGeometry.paddingAfter().value_or(0);
     67            auto verticalBorder = boxGeometry.borderBefore() + boxGeometry.borderAfter();
    6868            bodyAndDocumentVerticalMarginPaddingAndBorder += verticalMargin.before.value_or(0) + verticalMargin.after.value_or(0) + verticalPadding + verticalBorder;
    6969        }
  • trunk/Source/WebCore/layout/formattingContexts/block/BlockFormattingGeometry.cpp

    r282350 r287047  
    7272        auto computedVerticalMargin = FormattingGeometry::computedVerticalMargin(layoutBox, horizontalConstraints);
    7373        auto nonCollapsedMargin = UsedVerticalMargin::NonCollapsedValues { computedVerticalMargin.before.value_or(0), computedVerticalMargin.after.value_or(0) };
    74         auto borderAndPaddingTop = boxGeometry.borderTop() + boxGeometry.paddingTop().value_or(0);
     74        auto borderAndPaddingTop = boxGeometry.borderBefore() + boxGeometry.paddingBefore().value_or(0);
    7575        auto height = overriddenVerticalValues.height ? overriddenVerticalValues.height.value() : computedHeight(layoutBox);
    7676
     
    154154        auto computedHorizontalMargin = FormattingGeometry::computedHorizontalMargin(layoutBox, horizontalConstraints);
    155155        UsedHorizontalMargin usedHorizontalMargin;
    156         auto borderLeft = boxGeometry.borderLeft();
    157         auto borderRight = boxGeometry.borderRight();
    158         auto paddingLeft = boxGeometry.paddingLeft().value_or(0);
    159         auto paddingRight = boxGeometry.paddingRight().value_or(0);
     156        auto borderLeft = boxGeometry.borderStart();
     157        auto borderRight = boxGeometry.borderEnd();
     158        auto paddingLeft = boxGeometry.paddingStart().value_or(0);
     159        auto paddingRight = boxGeometry.paddingEnd().value_or(0);
    160160
    161161        // #1
  • trunk/Source/WebCore/layout/formattingContexts/inline/InlineLine.cpp

    r285948 r287047  
    6868                // clone: Each box fragment is independently wrapped with the border, padding, and margin.
    6969                auto& inlineBoxGeometry = formattingContext().geometryForBox(inlineBoxStartItem.layoutBox());
    70                 auto marginBorderAndPaddingStart = inlineBoxGeometry.marginStart() + inlineBoxGeometry.borderLeft() + inlineBoxGeometry.paddingLeft().value_or(0_lu);
     70                auto marginBorderAndPaddingStart = inlineBoxGeometry.marginStart() + inlineBoxGeometry.borderStart() + inlineBoxGeometry.paddingStart().value_or(0_lu);
    7171                auto runLogicalLeft = lastRunLogicalRight();
    7272                m_runs.append({ inlineBoxStartItem, runLogicalLeft, marginBorderAndPaddingStart });
     
    435435    // https://drafts.csswg.org/css-break/#break-decoration
    436436    auto& inlineBoxGeometry = formattingContext().geometryForBox(inlineBoxStartItem.layoutBox());
    437     auto borderAndPaddingEnd = inlineBoxGeometry.borderRight() + inlineBoxGeometry.paddingRight().value_or(0_lu);
     437    auto borderAndPaddingEnd = inlineBoxGeometry.borderEnd() + inlineBoxGeometry.paddingEnd().value_or(0_lu);
    438438    m_inlineBoxListWithClonedDecorationEnd.add(&inlineBoxStartItem.layoutBox(), borderAndPaddingEnd);
    439439    m_clonedEndDecorationWidthForInlineBoxRuns += borderAndPaddingEnd;
  • trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBox.cpp

    r287028 r287047  
    115115    auto verticalBorderAndPadding = boxGeometry.verticalBorder() + boxGeometry.verticalPadding().value_or(0_lu);
    116116    logicalRect.expandVertically(verticalBorderAndPadding);
    117     logicalRect.moveVertically(-(boxGeometry.borderTop() + boxGeometry.paddingTop().value_or(0_lu)));
     117    logicalRect.moveVertically(-(boxGeometry.borderBefore() + boxGeometry.paddingBefore().value_or(0_lu)));
    118118    return logicalRect;
    119119}
  • trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp

    r287036 r287047  
    276276            // Even negative horizontal margin makes the line "contentful".
    277277            if (run.isInlineBoxStart())
    278                 return inlineBoxGeometry.marginStart() || inlineBoxGeometry.borderLeft() || inlineBoxGeometry.paddingLeft().value_or(0_lu);
     278                return inlineBoxGeometry.marginStart() || inlineBoxGeometry.borderStart() || inlineBoxGeometry.paddingStart().value_or(0_lu);
    279279            if (run.isInlineBoxEnd())
    280                 return inlineBoxGeometry.marginEnd() || inlineBoxGeometry.borderRight() || inlineBoxGeometry.paddingRight().value_or(0_lu);
     280                return inlineBoxGeometry.marginEnd() || inlineBoxGeometry.borderEnd() || inlineBoxGeometry.paddingEnd().value_or(0_lu);
    281281            ASSERT_NOT_REACHED();
    282282            return true;
     
    302302                    auto& lastLine = formattingState.lines().last();
    303303                    auto inlineBlockBaseline = lastLine.lineBoxLogicalRect().top() + lastLine.baseline();
    304                     ascent = inlineLevelBoxGeometry.marginBefore() + inlineLevelBoxGeometry.borderTop() + inlineLevelBoxGeometry.paddingTop().value_or(0) + inlineBlockBaseline;
     304                    ascent = inlineLevelBoxGeometry.marginBefore() + inlineLevelBoxGeometry.borderBefore() + inlineLevelBoxGeometry.paddingBefore().value_or(0) + inlineBlockBaseline;
    305305                }
    306306            } else if (layoutBox.isReplacedBox())
  • trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp

    r286801 r287047  
    254254
    255255    if (inlineItem.isInlineBoxStart()) {
    256         auto logicalWidth = boxGeometry.marginStart() + boxGeometry.borderLeft() + boxGeometry.paddingLeft().value_or(0);
     256        auto logicalWidth = boxGeometry.marginStart() + boxGeometry.borderStart() + boxGeometry.paddingStart().value_or(0);
    257257#if ENABLE(CSS_BOX_DECORATION_BREAK)
    258258        auto& style = m_isFirstLine ? inlineItem.firstLineStyle() : inlineItem.style();
    259259        if (style.boxDecorationBreak() == BoxDecorationBreak::Clone)
    260             logicalWidth += boxGeometry.borderRight() + boxGeometry.paddingRight().value_or(0_lu);
     260            logicalWidth += boxGeometry.borderEnd() + boxGeometry.paddingEnd().value_or(0_lu);
    261261#endif
    262262        return logicalWidth;
     
    264264
    265265    if (inlineItem.isInlineBoxEnd())
    266         return boxGeometry.marginEnd() + boxGeometry.borderRight() + boxGeometry.paddingRight().value_or(0);
     266        return boxGeometry.marginEnd() + boxGeometry.borderEnd() + boxGeometry.paddingEnd().value_or(0);
    267267
    268268    // Non-replaced inline box (e.g. inline-block)
  • trunk/Source/WebCore/layout/formattingContexts/table/TableFormattingContext.cpp

    r282961 r287047  
    124124            // FIXME: Find out if it is ok to use the regular padding here to align the content box inside a tall cell or we need to
    125125            // use some kind of intrinsic padding similar to RenderTableCell.
    126             auto paddingTop = cellBoxGeometry.paddingTop().value_or(LayoutUnit { });
    127             auto paddingBottom = cellBoxGeometry.paddingBottom().value_or(LayoutUnit { });
     126            auto paddingTop = cellBoxGeometry.paddingBefore().value_or(LayoutUnit { });
     127            auto paddingBottom = cellBoxGeometry.paddingAfter().value_or(LayoutUnit { });
    128128            auto intrinsicPaddingTop = LayoutUnit { };
    129129            auto intrinsicPaddingBottom = LayoutUnit { };
     
    139139                auto rowBaseline = LayoutUnit { rowList[cell->startRow()].baseline() };
    140140                auto cellBaseline = LayoutUnit { cell->baseline() };
    141                 intrinsicPaddingTop = std::max(0_lu, rowBaseline - cellBaseline - cellBoxGeometry.borderTop());
     141                intrinsicPaddingTop = std::max(0_lu, rowBaseline - cellBaseline - cellBoxGeometry.borderBefore());
    142142                intrinsicPaddingBottom = std::max(0_lu, cellLogicalHeight - cellBoxGeometry.verticalMarginBorderAndPadding() - intrinsicPaddingTop - cellBoxGeometry.contentBoxHeight());
    143143                break;
  • trunk/Source/WebCore/layout/layouttree/LayoutBoxGeometry.cpp

    r270109 r287047  
    8989
    9090    Rect paddingBox;
    91     paddingBox.setTop(borderBox.top() + borderTop());
    92     paddingBox.setLeft(borderBox.left() + borderLeft());
    93     paddingBox.setHeight(borderBox.bottom() - verticalSpaceForScrollbar() - borderBottom() - borderTop());
    94     paddingBox.setWidth(borderBox.width() - borderRight() - horizontalSpaceForScrollbar() - borderLeft());
     91    paddingBox.setTop(borderBox.top() + borderBefore());
     92    paddingBox.setLeft(borderBox.left() + borderStart());
     93    paddingBox.setHeight(borderBox.bottom() - verticalSpaceForScrollbar() - borderAfter() - borderBefore());
     94    paddingBox.setWidth(borderBox.width() - borderEnd() - horizontalSpaceForScrollbar() - borderStart());
    9595    return paddingBox;
    9696}
  • trunk/Source/WebCore/layout/layouttree/LayoutBoxGeometry.h

    r286518 r287047  
    6464    LayoutUnit marginEnd() const;
    6565
    66     LayoutUnit borderTop() const;
    67     LayoutUnit borderLeft() const;
    68     LayoutUnit borderBottom() const;
    69     LayoutUnit borderRight() const;
    70     LayoutUnit verticalBorder() const { return borderTop() + borderBottom(); }
    71     LayoutUnit horizontalBorder() const { return borderLeft() + borderRight(); }
    72 
    73     std::optional<LayoutUnit> paddingTop() const;
    74     std::optional<LayoutUnit> paddingLeft() const;
    75     std::optional<LayoutUnit> paddingBottom() const;
    76     std::optional<LayoutUnit> paddingRight() const;
     66    LayoutUnit borderBefore() const;
     67    LayoutUnit borderAfter() const;
     68    LayoutUnit borderStart() const;
     69    LayoutUnit borderEnd() const;
     70    LayoutUnit verticalBorder() const { return borderBefore() + borderAfter(); }
     71    LayoutUnit horizontalBorder() const { return borderStart() + borderEnd(); }
     72
     73    std::optional<LayoutUnit> paddingBefore() const;
     74    std::optional<LayoutUnit> paddingAfter() const;
     75    std::optional<LayoutUnit> paddingStart() const;
     76    std::optional<LayoutUnit> paddingEnd() const;
    7777    std::optional<LayoutUnit> verticalPadding() const;
    7878    std::optional<LayoutUnit> horizontalPadding() const;
    7979
    80     LayoutUnit borderAndPaddingStart() const { return borderLeft() + paddingLeft().value_or(0); }
    81     LayoutUnit borderAndPaddingEnd() const { return borderRight() + paddingRight().value_or(0); }
    82 
    83     LayoutUnit contentBoxTop() const { return paddingBoxTop() + paddingTop().value_or(0); }
    84     LayoutUnit contentBoxLeft() const { return paddingBoxLeft() + paddingLeft().value_or(0); }
     80    LayoutUnit borderAndPaddingStart() const { return borderStart() + paddingStart().value_or(0); }
     81    LayoutUnit borderAndPaddingEnd() const { return borderEnd() + paddingEnd().value_or(0); }
     82
     83    LayoutUnit contentBoxTop() const { return paddingBoxTop() + paddingBefore().value_or(0); }
     84    LayoutUnit contentBoxLeft() const { return paddingBoxLeft() + paddingStart().value_or(0); }
    8585    LayoutUnit contentBoxBottom() const { return contentBoxTop() + contentBoxHeight(); }
    8686    LayoutUnit contentBoxRight() const { return contentBoxLeft() + contentBoxWidth(); }
     
    8888    LayoutUnit contentBoxWidth() const;
    8989
    90     LayoutUnit paddingBoxTop() const { return borderTop(); }
    91     LayoutUnit paddingBoxLeft() const { return borderLeft(); }
     90    LayoutUnit paddingBoxTop() const { return borderBefore(); }
     91    LayoutUnit paddingBoxLeft() const { return borderStart(); }
    9292    LayoutUnit paddingBoxBottom() const { return paddingBoxTop() + paddingBoxHeight(); }
    9393    LayoutUnit paddingBoxRight() const { return paddingBoxLeft() + paddingBoxWidth(); }
    94     LayoutUnit paddingBoxHeight() const { return paddingTop().value_or(0) + contentBoxHeight() + paddingBottom().value_or(0); }
    95     LayoutUnit paddingBoxWidth() const { return paddingLeft().value_or(0) + contentBoxWidth() + paddingRight().value_or(0); }
    96 
    97     LayoutUnit borderBoxHeight() const { return borderTop() + paddingBoxHeight() + verticalSpaceForScrollbar() + borderBottom(); }
    98     LayoutUnit borderBoxWidth() const { return borderLeft() + paddingBoxWidth() + horizontalSpaceForScrollbar() + borderRight(); }
     94    LayoutUnit paddingBoxHeight() const { return paddingBefore().value_or(0) + contentBoxHeight() + paddingAfter().value_or(0); }
     95    LayoutUnit paddingBoxWidth() const { return paddingStart().value_or(0) + contentBoxWidth() + paddingEnd().value_or(0); }
     96
     97    LayoutUnit borderBoxHeight() const { return borderBefore() + paddingBoxHeight() + verticalSpaceForScrollbar() + borderAfter(); }
     98    LayoutUnit borderBoxWidth() const { return borderStart() + paddingBoxWidth() + horizontalSpaceForScrollbar() + borderEnd(); }
    9999    LayoutUnit marginBoxHeight() const { return marginBefore() + borderBoxHeight() + marginAfter(); }
    100100    LayoutUnit marginBoxWidth() const { return marginStart() + borderBoxWidth() + marginEnd(); }
     
    343343}
    344344
    345 inline std::optional<LayoutUnit> BoxGeometry::paddingTop() const
     345inline std::optional<LayoutUnit> BoxGeometry::paddingBefore() const
    346346{
    347347    ASSERT(m_hasValidPadding);
     
    351351}
    352352
    353 inline std::optional<LayoutUnit> BoxGeometry::paddingLeft() const
     353inline std::optional<LayoutUnit> BoxGeometry::paddingStart() const
    354354{
    355355    ASSERT(m_hasValidPadding);
     
    359359}
    360360
    361 inline std::optional<LayoutUnit> BoxGeometry::paddingBottom() const
     361inline std::optional<LayoutUnit> BoxGeometry::paddingAfter() const
    362362{
    363363    ASSERT(m_hasValidPadding);
     
    367367}
    368368
    369 inline std::optional<LayoutUnit> BoxGeometry::paddingRight() const
     369inline std::optional<LayoutUnit> BoxGeometry::paddingEnd() const
    370370{
    371371    ASSERT(m_hasValidPadding);
     
    377377inline std::optional<LayoutUnit> BoxGeometry::verticalPadding() const
    378378{
    379     auto paddingTop = this->paddingTop();
    380     auto paddingBottom = this->paddingBottom();
     379    auto paddingTop = this->paddingBefore();
     380    auto paddingBottom = this->paddingAfter();
    381381    if (!paddingTop && !paddingBottom)
    382382        return { };
     
    386386inline std::optional<LayoutUnit> BoxGeometry::horizontalPadding() const
    387387{
    388     auto paddingLeft = this->paddingLeft();
    389     auto paddingRight = this->paddingRight();
     388    auto paddingLeft = this->paddingStart();
     389    auto paddingRight = this->paddingEnd();
    390390    if (!paddingLeft && !paddingRight)
    391391        return { };
     
    393393}
    394394
    395 inline LayoutUnit BoxGeometry::borderTop() const
     395inline LayoutUnit BoxGeometry::borderBefore() const
    396396{
    397397    ASSERT(m_hasValidBorder);
     
    399399}
    400400
    401 inline LayoutUnit BoxGeometry::borderLeft() const
     401inline LayoutUnit BoxGeometry::borderStart() const
    402402{
    403403    ASSERT(m_hasValidBorder);
     
    405405}
    406406
    407 inline LayoutUnit BoxGeometry::borderBottom() const
     407inline LayoutUnit BoxGeometry::borderAfter() const
    408408{
    409409    ASSERT(m_hasValidBorder);
     
    411411}
    412412
    413 inline LayoutUnit BoxGeometry::borderRight() const
     413inline LayoutUnit BoxGeometry::borderEnd() const
    414414{
    415415    ASSERT(m_hasValidBorder);
Note: See TracChangeset for help on using the changeset viewer.