Chromium Code Reviews| Index: Source/core/layout/MultiColumnFragmentainerGroup.cpp |
| diff --git a/Source/core/layout/MultiColumnFragmentainerGroup.cpp b/Source/core/layout/MultiColumnFragmentainerGroup.cpp |
| index 12e4cb0f45a5f463fceb12c834dd0cce5e81a944..29863875a209018237279ab72d8e68ed081ad493 100644 |
| --- a/Source/core/layout/MultiColumnFragmentainerGroup.cpp |
| +++ b/Source/core/layout/MultiColumnFragmentainerGroup.cpp |
| @@ -175,6 +175,37 @@ LayoutPoint MultiColumnFragmentainerGroup::visualPointToFlowThreadPoint(const La |
| return LayoutPoint(localPoint.x(), localPoint.y() + logicalTopInFlowThreadAt(columnIndex)); |
| } |
| +LayoutRect MultiColumnFragmentainerGroup::fragmentsBoundingBox(const LayoutRect& boundingBoxInFlowThread) const |
|
leviw_travelin_and_unemployed
2015/08/03 21:32:59
It's difficult for me to be 100% certain of this c
|
| +{ |
| + // Find the start and end column intersected by the bounding box. |
| + LayoutRect flippedBoundingBoxInFlowThread(boundingBoxInFlowThread); |
| + LayoutFlowThread* flowThread = m_columnSet.flowThread(); |
| + flowThread->flipForWritingMode(flippedBoundingBoxInFlowThread); |
| + bool isHorizontalWritingMode = m_columnSet.isHorizontalWritingMode(); |
| + LayoutUnit boundingBoxLogicalTop = isHorizontalWritingMode ? flippedBoundingBoxInFlowThread.y() : flippedBoundingBoxInFlowThread.x(); |
| + LayoutUnit boundingBoxLogicalBottom = (isHorizontalWritingMode ? flippedBoundingBoxInFlowThread.maxY() : flippedBoundingBoxInFlowThread.maxX()); |
|
leviw_travelin_and_unemployed
2015/08/03 21:33:00
Nit: inconsistent parenthesis usage. Perhaps you s
mstensho (USE GERRIT)
2015/08/04 10:48:11
No idea where those extraneous parentheses came fr
|
| + if (boundingBoxLogicalBottom <= logicalTopInFlowThread() || boundingBoxLogicalTop >= logicalBottomInFlowThread()) |
| + return LayoutRect(); // The bounding box doesn't intersect this fragmentainer group. |
| + unsigned startColumn; |
| + unsigned endColumn; |
| + columnIntervalForBlockRangeInFlowThread(boundingBoxLogicalTop, boundingBoxLogicalBottom, startColumn, endColumn); |
| + |
| + LayoutRect startColumnFlowThreadOverflowPortion = flowThreadPortionOverflowRectAt(startColumn); |
| + flowThread->flipForWritingMode(startColumnFlowThreadOverflowPortion); |
| + LayoutRect startColumnRect(boundingBoxInFlowThread); |
| + startColumnRect.intersect(startColumnFlowThreadOverflowPortion); |
| + startColumnRect.move(flowThreadTranslationAtOffset(logicalTopInFlowThreadAt(startColumn))); |
| + if (startColumn == endColumn) |
| + return startColumnRect; // It all takes place in one column. We're done. |
| + |
| + LayoutRect endColumnFlowThreadOverflowPortion = flowThreadPortionOverflowRectAt(endColumn); |
| + flowThread->flipForWritingMode(endColumnFlowThreadOverflowPortion); |
| + LayoutRect endColumnRect(boundingBoxInFlowThread); |
| + endColumnRect.intersect(endColumnFlowThreadOverflowPortion); |
| + endColumnRect.move(flowThreadTranslationAtOffset(logicalTopInFlowThreadAt(endColumn))); |
| + return unionRect(startColumnRect, endColumnRect); |
| +} |
| + |
| void MultiColumnFragmentainerGroup::collectLayerFragments(DeprecatedPaintLayerFragments& fragments, const LayoutRect& layerBoundingBox, const LayoutRect& dirtyRect) const |
| { |
| // |layerBoundingBox| is in the flow thread coordinate space, relative to the top/left edge of |