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

Changeset 290672 in webkit


Ignore:
Timestamp:
Mar 1, 2022, 1:28:07 PM (5 years ago)
Author:
Alan Bujtas
Message:

[IFC][Integration] Add InlineIterator::Box::visualRect
​https://bugs.webkit.org/show_bug.cgi?id=237309

Reviewed by Antti Koivisto.

This is the final, flipped version of the box rect.

  • layout/integration/InlineIteratorBox.h:

(WebCore::InlineIterator::Box::visualRect const):

  • rendering/InlineBoxPainter.cpp:

(WebCore::InlineBoxPainter::paintMask):
(WebCore::InlineBoxPainter::paintDecorations):

  • rendering/TextBoxPainter.cpp:

(WebCore::TextBoxPainter::computePaintRect):

Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r290671 r290672  
     12022-03-01  Alan Bujtas  <zalan@apple.com>
     2
     3        [IFC][Integration] Add InlineIterator::Box::visualRect
     4        https://bugs.webkit.org/show_bug.cgi?id=237309
     5
     6        Reviewed by Antti Koivisto.
     7
     8        This is the final, flipped version of the box rect.
     9
     10        * layout/integration/InlineIteratorBox.h:
     11        (WebCore::InlineIterator::Box::visualRect const):
     12        * rendering/InlineBoxPainter.cpp:
     13        (WebCore::InlineBoxPainter::paintMask):
     14        (WebCore::InlineBoxPainter::paintDecorations):
     15        * rendering/TextBoxPainter.cpp:
     16        (WebCore::TextBoxPainter::computePaintRect):
     17
    1182022-03-01  Patrick Angle  <pangle@apple.com>
    219
  • trunk/Source/WebCore/layout/integration/InlineIteratorBox.h

    r290649 r290672  
    6161    bool isRootInlineBox() const;
    6262
     63    FloatRect visualRect(float formattingRootSizeInBlockDirection) const;
    6364    FloatRect visualRectIgnoringBlockDirection() const;
    6465
    … …  
    184185}
    185186
     187inline FloatRect Box::visualRect(float formattingRootSizeInBlockDirection) const
     188{
     189    auto visualRect = visualRectIgnoringBlockDirection();
     190    if (!style().isFlippedBlocksWritingMode())
     191        return visualRect;
     192
     193    if (style().isHorizontalWritingMode())
     194        visualRect.setY(formattingRootSizeInBlockDirection - visualRect.maxY());
     195    else
     196        visualRect.setX(formattingRootSizeInBlockDirection - visualRect.maxX());
     197    return visualRect;
     198}
     199
    186200inline FloatRect Box::visualRectIgnoringBlockDirection() const
    187201{
  • trunk/Source/WebCore/rendering/InlineBoxPainter.cpp

    r290649 r290672  
    142142
    143143    // Move x/y to our coordinates.
    144     LayoutRect localRect(m_inlineBox.visualRectIgnoringBlockDirection());
    145     m_inlineBox.line()->containingBlock().flipForWritingMode(localRect);
     144    auto localRect = LayoutRect { m_inlineBox.visualRect(m_inlineBox.line()->containingBlock().logicalHeight()) };
    146145    LayoutPoint adjustedPaintOffset = m_paintOffset + localRect.location();
    147146
    … …  
    219218
    220219    // Move x/y to our coordinates.
    221     LayoutRect localRect(m_inlineBox.visualRectIgnoringBlockDirection());
    222     m_inlineBox.line()->containingBlock().flipForWritingMode(localRect);
    223 
     220    auto localRect = LayoutRect { m_inlineBox.visualRect(m_inlineBox.line()->containingBlock().logicalHeight()) };
    224221    LayoutPoint adjustedPaintoffset = m_paintOffset + localRect.location();
    225222    GraphicsContext& context = m_paintInfo.context();
  • trunk/Source/WebCore/rendering/TextBoxPainter.cpp

    r290649 r290672  
    573573    localPaintOffset.move(0, m_style.isHorizontalWritingMode() ? 0 : -textBox().logicalHeight());
    574574
    575     auto locationIncludingFlipping = [&]() -> FloatPoint {
    576         auto rect = textBox().visualRectIgnoringBlockDirection();
    577         if (!m_style.isFlippedBlocksWritingMode())
    578             return rect.location();
    579         auto& block = textBox().line()->containingBlock();
    580         if (block.style().isHorizontalWritingMode())
    581             return { rect.x(), block.height() - rect.height() - rect.y() };
    582         return { block.width() - rect.width() - rect.x(), rect.y() };
    583     };
    584 
    585     FloatPoint boxOrigin = locationIncludingFlipping();
     575    auto boxOrigin = textBox().visualRect(textBox().line()->containingBlock().logicalHeight()).location();
    586576    boxOrigin.moveBy(localPaintOffset);
    587577    return { boxOrigin, FloatSize(textBox().logicalWidth(), textBox().logicalHeight()) };
Note: See TracChangeset for help on using the changeset viewer.