Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1324)

Unified Diff: Source/core/rendering/RenderLayer.cpp

Issue 669803002: Optimize for horizontal writing mode (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: w compile fix Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/rendering/RenderLayer.cpp
diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp
index 99e2c5dddab1c8fa92c297fa344fa40f9dda6a6a..0be34254a2b9fd8e737e4074ea634245589b50ba 100644
--- a/Source/core/rendering/RenderLayer.cpp
+++ b/Source/core/rendering/RenderLayer.cpp
@@ -2049,7 +2049,7 @@ RenderLayer* RenderLayer::hitTestChildLayerColumns(RenderLayer* childLayer, Rend
for (i = 0; i < colCount; i++) {
LayoutRect colRect = columnBlock->columnRectAt(colInfo, i);
LayoutUnit blockDelta = (isHorizontal ? colRect.height() : colRect.width());
- if (columnBlock->style()->isFlippedBlocksWritingMode())
+ if (columnBlock->style()->slowIsFlippedBlocksWritingMode())
currLogicalTopOffset += blockDelta;
else
currLogicalTopOffset -= blockDelta;
@@ -2060,7 +2060,7 @@ RenderLayer* RenderLayer::hitTestChildLayerColumns(RenderLayer* childLayer, Rend
columnBlock->flipForWritingMode(colRect);
LayoutUnit currLogicalLeftOffset = (isHorizontal ? colRect.x() : colRect.y()) - logicalLeft;
LayoutUnit blockDelta = (isHorizontal ? colRect.height() : colRect.width());
- if (columnBlock->style()->isFlippedBlocksWritingMode())
+ if (columnBlock->style()->slowIsFlippedBlocksWritingMode())
currLogicalTopOffset -= blockDelta;
else
currLogicalTopOffset += blockDelta;
@@ -2249,19 +2249,22 @@ LayoutRect RenderLayer::logicalBoundingBox() const
return result;
}
-LayoutRect RenderLayer::flippedLogicalBoundingBox() const
+static inline LayoutRect flippedLogicalBoundingBox(LayoutRect boundingBox, RenderObject* renderer)
{
- LayoutRect result = logicalBoundingBox();
- if (m_renderer->isBox())
- renderBox()->flipForWritingMode(result);
+ if (!UNLIKELY(renderer->document().containsAnyRareWritingMode()))
+ return boundingBox;
+
+ LayoutRect result = boundingBox;
+ if (renderer->isBox())
+ toRenderBox(renderer)->flipForWritingMode(result);
else
- m_renderer->containingBlock()->flipForWritingMode(result);
+ renderer->containingBlock()->flipForWritingMode(result);
return result;
}
LayoutRect RenderLayer::physicalBoundingBox(const RenderLayer* ancestorLayer, const LayoutPoint* offsetFromRoot) const
{
- LayoutRect result = flippedLogicalBoundingBox();
+ LayoutRect result = flippedLogicalBoundingBox(logicalBoundingBox(), renderer());
if (offsetFromRoot)
result.moveBy(*offsetFromRoot);
else
@@ -2274,11 +2277,16 @@ LayoutRect RenderLayer::fragmentsBoundingBox(const RenderLayer* ancestorLayer) c
if (!enclosingPaginationLayer())
return physicalBoundingBox(ancestorLayer);
- LayoutRect result = flippedLogicalBoundingBox();
+ LayoutRect result = flippedLogicalBoundingBox(logicalBoundingBox(), renderer());
convertFromFlowThreadToVisualBoundingBoxInAncestor(this, ancestorLayer, result);
return result;
}
+LayoutRect RenderLayer::boundingBoxForCompositingOverlapTest() const
+{
+ return overlapBoundsIncludeChildren() ? boundingBoxForCompositing() : flippedLogicalBoundingBox(logicalBoundingBox(), renderer());
+}
+
static void expandRectForReflectionAndStackingChildren(const RenderLayer* ancestorLayer, RenderLayer::CalculateBoundsOptions options, LayoutRect& result)
{
if (ancestorLayer->reflectionInfo() && !ancestorLayer->reflectionInfo()->reflectionLayer()->hasCompositedLayerMapping())

Powered by Google App Engine
This is Rietveld 408576698