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

Unified Diff: Source/core/rendering/RenderBox.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
« no previous file with comments | « Source/core/rendering/RenderBox.h ('k') | Source/core/rendering/RenderFlexibleBox.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/rendering/RenderBox.cpp
diff --git a/Source/core/rendering/RenderBox.cpp b/Source/core/rendering/RenderBox.cpp
index 356f8d868f1f483623db8d66f6b639b43fb3d2ac..a70a75e403ddf77bdf9cfd77b34795285488ece1 100644
--- a/Source/core/rendering/RenderBox.cpp
+++ b/Source/core/rendering/RenderBox.cpp
@@ -1763,7 +1763,7 @@ void RenderBox::mapRectToPaintInvalidationBacking(const RenderLayerModelObject*
}
if (paintInvalidationContainer == this) {
- if (paintInvalidationContainer->style()->isFlippedBlocksWritingMode())
+ if (paintInvalidationContainer->style()->slowIsFlippedBlocksWritingMode())
flipForWritingMode(rect);
return;
}
@@ -2918,7 +2918,7 @@ static void computeLogicalLeftPositionedOffset(LayoutUnit& logicalLeftPos, const
{
// Deal with differing writing modes here. Our offset needs to be in the containing block's coordinate space. If the containing block is flipped
// along this axis, then we need to flip the coordinate. This can only happen if the containing block is both a flipped mode and perpendicular to us.
- if (containerBlock->isHorizontalWritingMode() != child->isHorizontalWritingMode() && containerBlock->style()->isFlippedBlocksWritingMode()) {
+ if (containerBlock->isHorizontalWritingMode() != child->isHorizontalWritingMode() && containerBlock->style()->slowIsFlippedBlocksWritingMode()) {
logicalLeftPos = containerLogicalWidth - logicalWidthValue - logicalLeftPos;
logicalLeftPos += (child->isHorizontalWritingMode() ? containerBlock->borderRight() : containerBlock->borderBottom());
} else {
@@ -3229,12 +3229,12 @@ static void computeLogicalTopPositionedOffset(LayoutUnit& logicalTopPos, const R
{
// Deal with differing writing modes here. Our offset needs to be in the containing block's coordinate space. If the containing block is flipped
// along this axis, then we need to flip the coordinate. This can only happen if the containing block is both a flipped mode and perpendicular to us.
- if ((child->style()->isFlippedBlocksWritingMode() && child->isHorizontalWritingMode() != containerBlock->isHorizontalWritingMode())
- || (child->style()->isFlippedBlocksWritingMode() != containerBlock->style()->isFlippedBlocksWritingMode() && child->isHorizontalWritingMode() == containerBlock->isHorizontalWritingMode()))
+ if ((child->style()->slowIsFlippedBlocksWritingMode() && child->isHorizontalWritingMode() != containerBlock->isHorizontalWritingMode())
+ || (child->style()->slowIsFlippedBlocksWritingMode() != containerBlock->style()->slowIsFlippedBlocksWritingMode() && child->isHorizontalWritingMode() == containerBlock->isHorizontalWritingMode()))
logicalTopPos = containerLogicalHeight - logicalHeightValue - logicalTopPos;
// Our offset is from the logical bottom edge in a flipped environment, e.g., right for vertical-rl and bottom for horizontal-bt.
- if (containerBlock->style()->isFlippedBlocksWritingMode() && child->isHorizontalWritingMode() == containerBlock->isHorizontalWritingMode()) {
+ if (containerBlock->style()->slowIsFlippedBlocksWritingMode() && child->isHorizontalWritingMode() == containerBlock->isHorizontalWritingMode()) {
chrishtr 2014/10/28 18:18:21 Are cases like this ones that didn't make the metr
if (child->isHorizontalWritingMode())
logicalTopPos += containerBlock->borderBottom();
else
@@ -4339,7 +4339,9 @@ LayoutUnit RenderBox::offsetTop() const
LayoutPoint RenderBox::flipForWritingModeForChild(const RenderBox* child, const LayoutPoint& point) const
{
- if (!style()->isFlippedBlocksWritingMode())
+ if (!UNLIKELY(document().containsAnyRareWritingMode()))
+ return point;
+ if (!style()->slowIsFlippedBlocksWritingMode())
return point;
// The child is going to add in its x() and y(), so we have to make sure it ends up in
@@ -4349,63 +4351,15 @@ LayoutPoint RenderBox::flipForWritingModeForChild(const RenderBox* child, const
return LayoutPoint(point.x() + width() - child->width() - (2 * child->x()), point.y());
}
-void RenderBox::flipForWritingMode(LayoutRect& rect) const
-{
- if (!style()->isFlippedBlocksWritingMode())
- return;
-
- if (isHorizontalWritingMode())
- rect.setY(height() - rect.maxY());
- else
- rect.setX(width() - rect.maxX());
-}
-
-LayoutUnit RenderBox::flipForWritingMode(LayoutUnit position) const
-{
- if (!style()->isFlippedBlocksWritingMode())
- return position;
- return logicalHeight() - position;
-}
-
-LayoutPoint RenderBox::flipForWritingMode(const LayoutPoint& position) const
-{
- if (!style()->isFlippedBlocksWritingMode())
- return position;
- return isHorizontalWritingMode() ? LayoutPoint(position.x(), height() - position.y()) : LayoutPoint(width() - position.x(), position.y());
-}
-
LayoutPoint RenderBox::flipForWritingModeIncludingColumns(const LayoutPoint& point) const
{
- if (!hasColumns() || !style()->isFlippedBlocksWritingMode())
+ if (!UNLIKELY(document().containsAnyRareWritingMode()))
+ return point;
+ if (!hasColumns() || !style()->slowIsFlippedBlocksWritingMode())
return flipForWritingMode(point);
return toRenderBlock(this)->flipForWritingModeIncludingColumns(point);
}
-LayoutSize RenderBox::flipForWritingMode(const LayoutSize& offset) const
-{
- if (!style()->isFlippedBlocksWritingMode())
- return offset;
- return isHorizontalWritingMode() ? LayoutSize(offset.width(), height() - offset.height()) : LayoutSize(width() - offset.width(), offset.height());
-}
-
-FloatPoint RenderBox::flipForWritingMode(const FloatPoint& position) const
-{
- if (!style()->isFlippedBlocksWritingMode())
- return position;
- return isHorizontalWritingMode() ? FloatPoint(position.x(), height() - position.y()) : FloatPoint(width() - position.x(), position.y());
-}
-
-void RenderBox::flipForWritingMode(FloatRect& rect) const
-{
- if (!style()->isFlippedBlocksWritingMode())
- return;
-
- if (isHorizontalWritingMode())
- rect.setY(height() - rect.maxY());
- else
- rect.setX(width() - rect.maxX());
-}
-
LayoutPoint RenderBox::topLeftLocation() const
{
RenderBlock* containerBlock = containingBlock();
« no previous file with comments | « Source/core/rendering/RenderBox.h ('k') | Source/core/rendering/RenderFlexibleBox.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698