Index: Source/core/rendering/RenderFlowThread.cpp |
diff --git a/Source/core/rendering/RenderFlowThread.cpp b/Source/core/rendering/RenderFlowThread.cpp |
index 135898888342c96cc059f9e504071659114b317d..e6722af12e76cee2bc858512659672b7c0e57af4 100644 |
--- a/Source/core/rendering/RenderFlowThread.cpp |
+++ b/Source/core/rendering/RenderFlowThread.cpp |
@@ -220,107 +220,6 @@ LayoutRect RenderFlowThread::fragmentsBoundingBox(const LayoutRect& layerBoundin |
return result; |
} |
-bool RenderFlowThread::cachedOffsetFromLogicalTopOfFirstRegion(const RenderBox* box, LayoutUnit& result) const |
-{ |
- RenderBoxToOffsetMap::const_iterator offsetIterator = m_boxesToOffsetMap.find(box); |
- if (offsetIterator == m_boxesToOffsetMap.end()) |
- return false; |
- |
- result = offsetIterator->value; |
- return true; |
-} |
- |
-void RenderFlowThread::setOffsetFromLogicalTopOfFirstRegion(const RenderBox* box, LayoutUnit offset) |
-{ |
- m_boxesToOffsetMap.set(box, offset); |
-} |
- |
-void RenderFlowThread::clearOffsetFromLogicalTopOfFirstRegion(const RenderBox* box) |
-{ |
- ASSERT(m_boxesToOffsetMap.contains(box)); |
- m_boxesToOffsetMap.remove(box); |
-} |
- |
-const RenderBox* RenderFlowThread::currentStatePusherRenderBox() const |
-{ |
- const RenderObject* currentObject = m_statePusherObjectsStack.isEmpty() ? 0 : m_statePusherObjectsStack.last(); |
- if (currentObject && currentObject->isBox()) |
- return toRenderBox(currentObject); |
- |
- return 0; |
-} |
- |
-void RenderFlowThread::pushFlowThreadLayoutState(const RenderObject& object) |
-{ |
- if (const RenderBox* currentBoxDescendant = currentStatePusherRenderBox()) { |
- LayoutState* layoutState = currentBoxDescendant->view()->layoutState(); |
- if (layoutState && layoutState->isPaginated()) { |
- ASSERT(layoutState->renderer() == currentBoxDescendant); |
- LayoutSize offsetDelta = layoutState->layoutOffset() - layoutState->pageOffset(); |
- setOffsetFromLogicalTopOfFirstRegion(currentBoxDescendant, currentBoxDescendant->isHorizontalWritingMode() ? offsetDelta.height() : offsetDelta.width()); |
- } |
- } |
- |
- ASSERT(!m_statePusherObjectsStack.contains(&object)); |
- m_statePusherObjectsStack.add(&object); |
-} |
- |
-void RenderFlowThread::popFlowThreadLayoutState() |
-{ |
- m_statePusherObjectsStack.removeLast(); |
- |
- if (const RenderBox* currentBoxDescendant = currentStatePusherRenderBox()) { |
- LayoutState* layoutState = currentBoxDescendant->view()->layoutState(); |
- if (layoutState && layoutState->isPaginated()) |
- clearOffsetFromLogicalTopOfFirstRegion(currentBoxDescendant); |
- } |
-} |
- |
-LayoutUnit RenderFlowThread::offsetFromLogicalTopOfFirstRegion(const RenderBlock* currentBlock) const |
-{ |
- // First check if we cached the offset for the block if it's an ancestor containing block of the box |
- // being currently laid out. |
- LayoutUnit offset; |
- if (cachedOffsetFromLogicalTopOfFirstRegion(currentBlock, offset)) |
- return offset; |
- |
- // If it's the current box being laid out, use the layout state. |
- const RenderBox* currentBoxDescendant = currentStatePusherRenderBox(); |
- if (currentBlock == currentBoxDescendant) { |
- LayoutState* layoutState = view()->layoutState(); |
- ASSERT(layoutState->renderer() == currentBlock); |
- ASSERT(layoutState && layoutState->isPaginated()); |
- LayoutSize offsetDelta = layoutState->layoutOffset() - layoutState->pageOffset(); |
- return currentBoxDescendant->isHorizontalWritingMode() ? offsetDelta.height() : offsetDelta.width(); |
- } |
- |
- // As a last resort, take the slow path. |
- LayoutRect blockRect(0, 0, currentBlock->width(), currentBlock->height()); |
- while (currentBlock && !currentBlock->isRenderFlowThread()) { |
- RenderBlock* containerBlock = currentBlock->containingBlock(); |
- ASSERT(containerBlock); |
- if (!containerBlock) |
- return 0; |
- LayoutPoint currentBlockLocation = currentBlock->location(); |
- |
- if (containerBlock->style()->writingMode() != currentBlock->style()->writingMode()) { |
- // We have to put the block rect in container coordinates |
- // and we have to take into account both the container and current block flipping modes |
- if (containerBlock->style()->isFlippedBlocksWritingMode()) { |
- if (containerBlock->isHorizontalWritingMode()) |
- blockRect.setY(currentBlock->height() - blockRect.maxY()); |
- else |
- blockRect.setX(currentBlock->width() - blockRect.maxX()); |
- } |
- currentBlock->flipForWritingMode(blockRect); |
- } |
- blockRect.moveBy(currentBlockLocation); |
- currentBlock = containerBlock; |
- } |
- |
- return currentBlock->isHorizontalWritingMode() ? blockRect.y() : blockRect.x(); |
-} |
- |
void RenderFlowThread::RegionSearchAdapter::collectIfNeeded(const MultiColumnSetInterval& interval) |
{ |
if (m_result) |