Changeset 90030 in webkit


Ignore:
Timestamp:
Jun 29, 2011 11:58:23 AM (13 years ago)
Author:
eae@chromium.org
Message:

2011-06-29 Emil A Eklund <eae@chromium.org>

Reviewed by Darin Adler.

Switch hitTestColumns/Contents/Floats to to new layout types
https://bugs.webkit.org/show_bug.cgi?id=63589

Switch location and size methods for RenderBox over to the new layout unit abstraction.

No new tests, no functionality changes.

  • rendering/ColumnInfo.h: (WebCore::ColumnInfo::desiredColumnWidth): (WebCore::ColumnInfo::setDesiredColumnWidth): (WebCore::ColumnInfo::columnHeight): (WebCore::ColumnInfo::setColumnCountAndHeight): (WebCore::ColumnInfo::setColumnHeight): (WebCore::ColumnInfo::updateMinimumColumnHeight): (WebCore::ColumnInfo::minimumColumnHeight):
  • rendering/RenderBlock.cpp: (WebCore::RenderBlock::addOverflowFromChildren): (WebCore::RenderBlock::paintColumnRules): (WebCore::RenderBlock::paintColumnContents): (WebCore::RenderBlock::hitTestFloats): (WebCore::RenderBlock::hitTestColumns): (WebCore::RenderBlock::hitTestContents): (WebCore::RenderBlock::columnRectAt):
  • rendering/RenderBlock.h: (WebCore::RenderBlock::xPositionForFloatIncludingMargin): (WebCore::RenderBlock::yPositionForFloatIncludingMargin):
  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::hitTestContents):
  • rendering/RenderLayer.h:
Location:
trunk/Source/WebCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r90029 r90030  
     12011-06-29  Emil A Eklund  <eae@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        Switch hitTestColumns/Contents/Floats to to new layout types
     6        https://bugs.webkit.org/show_bug.cgi?id=63589
     7
     8        Switch location and size methods for RenderBox over to the new layout unit abstraction.
     9
     10        No new tests, no functionality changes.
     11
     12        * rendering/ColumnInfo.h:
     13        (WebCore::ColumnInfo::desiredColumnWidth):
     14        (WebCore::ColumnInfo::setDesiredColumnWidth):
     15        (WebCore::ColumnInfo::columnHeight):
     16        (WebCore::ColumnInfo::setColumnCountAndHeight):
     17        (WebCore::ColumnInfo::setColumnHeight):
     18        (WebCore::ColumnInfo::updateMinimumColumnHeight):
     19        (WebCore::ColumnInfo::minimumColumnHeight):
     20        * rendering/RenderBlock.cpp:
     21        (WebCore::RenderBlock::addOverflowFromChildren):
     22        (WebCore::RenderBlock::paintColumnRules):
     23        (WebCore::RenderBlock::paintColumnContents):
     24        (WebCore::RenderBlock::hitTestFloats):
     25        (WebCore::RenderBlock::hitTestColumns):
     26        (WebCore::RenderBlock::hitTestContents):
     27        (WebCore::RenderBlock::columnRectAt):
     28        * rendering/RenderBlock.h:
     29        (WebCore::RenderBlock::xPositionForFloatIncludingMargin):
     30        (WebCore::RenderBlock::yPositionForFloatIncludingMargin):
     31        * rendering/RenderLayer.cpp:
     32        (WebCore::RenderLayer::hitTestContents):
     33        * rendering/RenderLayer.h:
     34
    1352011-06-29  Adrienne Walker  <enne@google.com>
    236
  • trunk/Source/WebCore/rendering/ColumnInfo.h

    r76248 r90030  
    2727#define ColumnInfo_h
    2828
     29#include "LayoutTypes.h"
    2930#include <wtf/Vector.h>
    30 #include "IntRect.h"
    3131
    3232namespace WebCore {
     
    4646        { }
    4747   
    48     int desiredColumnWidth() const { return m_desiredColumnWidth; }
    49     void setDesiredColumnWidth(int width) { m_desiredColumnWidth = width; }
     48    LayoutUnit desiredColumnWidth() const { return m_desiredColumnWidth; }
     49    void setDesiredColumnWidth(LayoutUnit width) { m_desiredColumnWidth = width; }
    5050   
    5151    unsigned desiredColumnCount() const { return m_desiredColumnCount; }
     
    5353
    5454    unsigned columnCount() const { return m_columnCount; }
    55     int columnHeight() const { return m_columnHeight; }
     55    LayoutUnit columnHeight() const { return m_columnHeight; }
    5656
    5757    // Set our count and height.  This is enough info for a RenderBlock to compute page rects
    5858    // dynamically.
    59     void setColumnCountAndHeight(int count, int height)
     59    void setColumnCountAndHeight(int count, LayoutUnit height)
    6060    {
    6161        m_columnCount = count;
    6262        m_columnHeight = height;
    6363    }
    64     void setColumnHeight(int height) { m_columnHeight = height; }
     64    void setColumnHeight(LayoutUnit height) { m_columnHeight = height; }
    6565
    66     void updateMinimumColumnHeight(int height) { m_minimumColumnHeight = std::max(height, m_minimumColumnHeight); }
    67     int minimumColumnHeight() const { return m_minimumColumnHeight; }
     66    void updateMinimumColumnHeight(LayoutUnit height) { m_minimumColumnHeight = std::max(height, m_minimumColumnHeight); }
     67    LayoutUnit minimumColumnHeight() const { return m_minimumColumnHeight; }
    6868
    6969    int forcedBreaks() const { return m_forcedBreaks; }
     
    8888
    8989private:
    90     int m_desiredColumnWidth;
     90    LayoutUnit m_desiredColumnWidth;
    9191    unsigned m_desiredColumnCount;
    9292   
    9393    unsigned m_columnCount;
    94     int m_columnHeight;
    95     int m_minimumColumnHeight;
     94    LayoutUnit m_columnHeight;
     95    LayoutUnit m_minimumColumnHeight;
    9696    int m_forcedBreaks; // FIXME: We will ultimately need to cache more information to balance around forced breaks properly.
    9797    int m_maximumDistanceBetweenForcedBreaks;
  • trunk/Source/WebCore/rendering/RenderBlock.cpp

    r89983 r90030  
    13621362        ColumnInfo* colInfo = columnInfo();
    13631363        if (columnCount(colInfo)) {
    1364             IntRect lastRect = columnRectAt(colInfo, columnCount(colInfo) - 1);
     1364            LayoutRect lastRect = columnRectAt(colInfo, columnCount(colInfo) - 1);
    13651365            if (isHorizontalWritingMode()) {
    13661366                int overflowLeft = !style()->isLeftToRightDirection() ? min(0, lastRect.x()) : 0;
     
    13711371                    addVisualOverflow(IntRect(overflowLeft, 0, overflowRight - overflowLeft, overflowHeight));
    13721372            } else {
    1373                 IntRect lastRect = columnRectAt(colInfo, columnCount(colInfo) - 1);
     1373                LayoutRect lastRect = columnRectAt(colInfo, columnCount(colInfo) - 1);
    13741374                int overflowTop = !style()->isLeftToRightDirection() ? min(0, lastRect.y()) : 0;
    13751375                int overflowBottom = style()->isLeftToRightDirection() ? max(height(), lastRect.maxY()) : 0;
     
    23182318
    23192319    for (unsigned i = 0; i < colCount; i++) {
    2320         IntRect colRect = columnRectAt(colInfo, i);
     2320        LayoutRect colRect = columnRectAt(colInfo, i);
    23212321
    23222322        int inlineDirectionSize = isHorizontalWritingMode() ? colRect.width() : colRect.height();
     
    23562356    for (unsigned i = 0; i < colCount; i++) {
    23572357        // For each rect, we clip to the rect, and then we adjust our coords.
    2358         IntRect colRect = columnRectAt(colInfo, i);
     2358        LayoutRect colRect = columnRectAt(colInfo, i);
    23592359        flipForWritingMode(colRect);
    23602360        int logicalLeftOffset = (isHorizontalWritingMode() ? colRect.x() : colRect.y()) - logicalLeftOffsetForContent();
     
    39923992}
    39933993
    3994 bool RenderBlock::hitTestFloats(const HitTestRequest& request, HitTestResult& result, const IntPoint& pointInContainer, const IntPoint& accumulatedOffset)
     3994bool RenderBlock::hitTestFloats(const HitTestRequest& request, HitTestResult& result, const LayoutPoint& pointInContainer, const LayoutPoint& accumulatedOffset)
    39953995{
    39963996    if (!m_floatingObjects)
    39973997        return false;
    39983998
    3999     IntPoint adjustedLocation = accumulatedOffset;
     3999    LayoutPoint adjustedLocation = accumulatedOffset;
    40004000    if (isRenderView()) {
    40014001        adjustedLocation += toSize(toRenderView(this)->frameView()->scrollPosition());
     
    40084008        FloatingObject* floatingObject = *it;
    40094009        if (floatingObject->m_shouldPaint && !floatingObject->m_renderer->hasSelfPaintingLayer()) {
    4010             int xOffset = xPositionForFloatIncludingMargin(floatingObject) - floatingObject->m_renderer->x();
    4011             int yOffset = yPositionForFloatIncludingMargin(floatingObject) - floatingObject->m_renderer->y();
    4012             IntPoint childPoint = flipFloatForWritingMode(floatingObject, adjustedLocation + IntSize(xOffset, yOffset));
     4010            LayoutUnit xOffset = xPositionForFloatIncludingMargin(floatingObject) - floatingObject->m_renderer->x();
     4011            LayoutUnit yOffset = yPositionForFloatIncludingMargin(floatingObject) - floatingObject->m_renderer->y();
     4012            LayoutPoint childPoint = flipFloatForWritingMode(floatingObject, adjustedLocation + LayoutSize(xOffset, yOffset));
    40134013            if (floatingObject->m_renderer->hitTest(request, result, pointInContainer, childPoint)) {
    40144014                updateHitTestResult(result, pointInContainer - toSize(childPoint));
     
    40214021}
    40224022
    4023 bool RenderBlock::hitTestColumns(const HitTestRequest& request, HitTestResult& result, const IntPoint& pointInContainer, const IntPoint& accumulatedOffset, HitTestAction hitTestAction)
     4023bool RenderBlock::hitTestColumns(const HitTestRequest& request, HitTestResult& result, const LayoutPoint& pointInContainer, const LayoutPoint& accumulatedOffset, HitTestAction hitTestAction)
    40244024{
    40254025    // We need to do multiple passes, breaking up our hit testing into strips.
     
    40284028    if (!colCount)
    40294029        return false;
    4030     int logicalLeft = logicalLeftOffsetForContent();
    4031     int currLogicalTopOffset = 0;
     4030    LayoutUnit logicalLeft = logicalLeftOffsetForContent();
     4031    LayoutUnit currLogicalTopOffset = 0;
    40324032    int i;
    40334033    bool isHorizontal = isHorizontalWritingMode();
    40344034    for (i = 0; i < colCount; i++) {
    4035         IntRect colRect = columnRectAt(colInfo, i);
    4036         int blockDelta =  (isHorizontal ? colRect.height() : colRect.width());
     4035        LayoutRect colRect = columnRectAt(colInfo, i);
     4036        LayoutUnit blockDelta =  (isHorizontal ? colRect.height() : colRect.width());
    40374037        if (style()->isFlippedBlocksWritingMode())
    40384038            currLogicalTopOffset += blockDelta;
     
    40414041    }
    40424042    for (i = colCount - 1; i >= 0; i--) {
    4043         IntRect colRect = columnRectAt(colInfo, i);
     4043        LayoutRect colRect = columnRectAt(colInfo, i);
    40444044        flipForWritingMode(colRect);
    4045         int currLogicalLeftOffset = (isHorizontal ? colRect.x() : colRect.y()) - logicalLeft;
    4046         int blockDelta =  (isHorizontal ? colRect.height() : colRect.width());
     4045        LayoutUnit currLogicalLeftOffset = (isHorizontal ? colRect.x() : colRect.y()) - logicalLeft;
     4046        LayoutUnit blockDelta =  (isHorizontal ? colRect.height() : colRect.width());
    40474047        if (style()->isFlippedBlocksWritingMode())
    40484048            currLogicalTopOffset -= blockDelta;
     
    40554055            // Adjust accumulatedOffset to change where we hit test.
    40564056       
    4057             IntSize offset = isHorizontal ? IntSize(currLogicalLeftOffset, currLogicalTopOffset) : IntSize(currLogicalTopOffset, currLogicalLeftOffset);
    4058             IntPoint finalLocation = accumulatedOffset + offset;
     4057            LayoutSize offset = isHorizontal ? IntSize(currLogicalLeftOffset, currLogicalTopOffset) : LayoutSize(currLogicalTopOffset, currLogicalLeftOffset);
     4058            LayoutPoint finalLocation = accumulatedOffset + offset;
    40594059            if (result.isRectBasedTest() && !colRect.contains(result.rectForPoint(pointInContainer)))
    40604060                hitTestContents(request, result, pointInContainer, finalLocation, hitTestAction);
     
    40674067}
    40684068
    4069 bool RenderBlock::hitTestContents(const HitTestRequest& request, HitTestResult& result, const IntPoint& pointInContainer, const IntPoint& accumulatedOffset, HitTestAction hitTestAction)
     4069bool RenderBlock::hitTestContents(const HitTestRequest& request, HitTestResult& result, const LayoutPoint& pointInContainer, const LayoutPoint& accumulatedOffset, HitTestAction hitTestAction)
    40704070{
    40714071    if (childrenInline() && !isTable()) {
     
    40794079            childHitTest = HitTestChildBlockBackground;
    40804080        for (RenderBox* child = lastChildBox(); child; child = child->previousSiblingBox()) {
    4081             IntPoint childPoint = flipForWritingMode(child, accumulatedOffset, ParentToChildFlippingAdjustment);
     4081            LayoutPoint childPoint = flipForWritingMode(child, accumulatedOffset, ParentToChildFlippingAdjustment);
    40824082            if (!child->hasSelfPaintingLayer() && !child->isFloating() && child->nodeAtPoint(request, result, pointInContainer, childPoint, childHitTest))
    40834083                return true;
     
    43524352}
    43534353
    4354 IntRect RenderBlock::columnRectAt(ColumnInfo* colInfo, unsigned index) const
     4354LayoutRect RenderBlock::columnRectAt(ColumnInfo* colInfo, unsigned index) const
    43554355{
    43564356    ASSERT(hasColumns() && gColumnInfoMap->get(this) == colInfo);
    43574357
    43584358    // Compute the appropriate rect based off our information.
    4359     int colLogicalWidth = colInfo->desiredColumnWidth();
    4360     int colLogicalHeight = colInfo->columnHeight();
    4361     int colLogicalTop = borderBefore() + paddingBefore();
     4359    LayoutUnit colLogicalWidth = colInfo->desiredColumnWidth();
     4360    LayoutUnit colLogicalHeight = colInfo->columnHeight();
     4361    LayoutUnit colLogicalTop = borderBefore() + paddingBefore();
    43624362    int colGap = columnGap();
    4363     int colLogicalLeft = style()->isLeftToRightDirection() ?
    4364                           logicalLeftOffsetForContent() + (index * (colLogicalWidth + colGap))
    4365                         : logicalLeftOffsetForContent() + contentLogicalWidth() - colLogicalWidth - (index * (colLogicalWidth + colGap));
    4366     IntRect rect(colLogicalLeft, colLogicalTop, colLogicalWidth, colLogicalHeight);
     4363    LayoutUnit colLogicalLeft = style()->isLeftToRightDirection() ?
     4364                                 logicalLeftOffsetForContent() + (index * (colLogicalWidth + colGap))
     4365                               : logicalLeftOffsetForContent() + contentLogicalWidth() - colLogicalWidth - (index * (colLogicalWidth + colGap));
     4366
    43674367    if (isHorizontalWritingMode())
    4368         return IntRect(colLogicalLeft, colLogicalTop, colLogicalWidth, colLogicalHeight);
    4369     return IntRect(colLogicalTop, colLogicalLeft, colLogicalHeight, colLogicalWidth);
     4368        return LayoutRect(colLogicalLeft, colLogicalTop, colLogicalWidth, colLogicalHeight);
     4369    return LayoutRect(colLogicalTop, colLogicalLeft, colLogicalHeight, colLogicalWidth);
    43704370}
    43714371
  • trunk/Source/WebCore/rendering/RenderBlock.h

    r89983 r90030  
    182182    // These two functions take the ColumnInfo* to avoid repeated lookups of the info in the global HashMap.
    183183    unsigned columnCount(ColumnInfo*) const;
    184     IntRect columnRectAt(ColumnInfo*, unsigned) const;
     184    LayoutRect columnRectAt(ColumnInfo*, unsigned) const;
    185185
    186186    int paginationStrut() const { return m_rareData ? m_rareData->m_paginationStrut : 0; }
     
    495495    }
    496496
    497     int xPositionForFloatIncludingMargin(const FloatingObject* child) const
     497    LayoutUnit xPositionForFloatIncludingMargin(const FloatingObject* child) const
    498498    {
    499499        if (isHorizontalWritingMode())
     
    503503    }
    504504       
    505     int yPositionForFloatIncludingMargin(const FloatingObject* child) const
     505    LayoutUnit yPositionForFloatIncludingMargin(const FloatingObject* child) const
    506506    {
    507507        if (isHorizontalWritingMode())
     
    590590    int nextFloatLogicalBottomBelow(int) const;
    591591   
    592     virtual bool hitTestColumns(const HitTestRequest&, HitTestResult&, const IntPoint& pointInContainer, const IntPoint& accumulatedOffset, HitTestAction);
    593     virtual bool hitTestContents(const HitTestRequest&, HitTestResult&, const IntPoint& pointInContainer, const IntPoint& accumulatedOffset, HitTestAction);
    594     bool hitTestFloats(const HitTestRequest&, HitTestResult&, const IntPoint& pointInContainer, const IntPoint& accumulatedOffset);
     592    virtual bool hitTestColumns(const HitTestRequest&, HitTestResult&, const LayoutPoint& pointInContainer, const LayoutPoint& accumulatedOffset, HitTestAction);
     593    virtual bool hitTestContents(const HitTestRequest&, HitTestResult&, const LayoutPoint& pointInContainer, const LayoutPoint& accumulatedOffset, HitTestAction);
     594    bool hitTestFloats(const HitTestRequest&, HitTestResult&, const LayoutPoint& pointInContainer, const LayoutPoint& accumulatedOffset);
    595595
    596596    virtual bool isPointInOverflowControl(HitTestResult&, const IntPoint& pointInContainer, const IntPoint& accumulatedOffset);
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r89984 r90030  
    31423142}
    31433143
    3144 bool RenderLayer::hitTestContents(const HitTestRequest& request, HitTestResult& result, const IntRect& layerBounds, const IntPoint& hitTestPoint, HitTestFilter hitTestFilter) const
     3144bool RenderLayer::hitTestContents(const HitTestRequest& request, HitTestResult& result, const LayoutRect& layerBounds, const LayoutPoint& hitTestPoint, HitTestFilter hitTestFilter) const
    31453145{
    31463146    if (!renderer()->hitTest(request, result, hitTestPoint,
  • trunk/Source/WebCore/rendering/RenderLayer.h

    r89984 r90030  
    517517                            const HitTestingTransformState* containerTransformState) const;
    518518   
    519     bool hitTestContents(const HitTestRequest&, HitTestResult&, const IntRect& layerBounds, const IntPoint& hitTestPoint, HitTestFilter) const;
     519    bool hitTestContents(const HitTestRequest&, HitTestResult&, const LayoutRect& layerBounds, const LayoutPoint& hitTestPoint, HitTestFilter) const;
    520520   
    521521    void computeScrollDimensions(bool* needHBar = 0, bool* needVBar = 0);
Note: See TracChangeset for help on using the changeset viewer.