Chromium Code Reviews| Index: Source/core/rendering/RenderBox.h |
| diff --git a/Source/core/rendering/RenderBox.h b/Source/core/rendering/RenderBox.h |
| index e5c27b5c00352c53248ea91cad45f12cbfa47e74..9895795e1c674e99015f106a6a9e3587e1d0542c 100644 |
| --- a/Source/core/rendering/RenderBox.h |
| +++ b/Source/core/rendering/RenderBox.h |
| @@ -537,13 +537,50 @@ public: |
| virtual LayoutUnit offsetTop() const override; |
| LayoutPoint flipForWritingModeForChild(const RenderBox* child, const LayoutPoint&) const; |
| - LayoutUnit flipForWritingMode(LayoutUnit position) const; // The offset is in the block direction (y for horizontal writing modes, x for vertical writing modes). |
| - LayoutPoint flipForWritingMode(const LayoutPoint&) const; |
| + LayoutUnit flipForWritingMode(LayoutUnit position) const |
|
leviw_travelin_and_unemployed
2014/10/21 23:30:00
I'm curious how much of this win is simply due to
|
| + { |
| + // The offset is in the block direction (y for horizontal writing modes, x for vertical writing modes). |
| + if (!UNLIKELY(hasFlippedBlocksWritingMode())) |
| + return position; |
| + return logicalHeight() - position; |
| + } |
| + LayoutPoint flipForWritingMode(const LayoutPoint& position) const |
| + { |
| + if (!UNLIKELY(hasFlippedBlocksWritingMode())) |
| + return position; |
| + return isHorizontalWritingMode() ? LayoutPoint(position.x(), height() - position.y()) : LayoutPoint(width() - position.x(), position.y()); |
| + } |
| LayoutPoint flipForWritingModeIncludingColumns(const LayoutPoint&) const; |
| - LayoutSize flipForWritingMode(const LayoutSize&) const; |
| - void flipForWritingMode(LayoutRect&) const; |
| - FloatPoint flipForWritingMode(const FloatPoint&) const; |
| - void flipForWritingMode(FloatRect&) const; |
| + LayoutSize flipForWritingMode(const LayoutSize& offset) const |
| + { |
| + if (!UNLIKELY(hasFlippedBlocksWritingMode())) |
| + return offset; |
| + return isHorizontalWritingMode() ? LayoutSize(offset.width(), height() - offset.height()) : LayoutSize(width() - offset.width(), offset.height()); |
| + } |
| + void flipForWritingMode(LayoutRect& rect) const |
| + { |
| + if (!UNLIKELY(hasFlippedBlocksWritingMode())) |
| + return; |
| + if (isHorizontalWritingMode()) |
| + rect.setY(height() - rect.maxY()); |
| + else |
| + rect.setX(width() - rect.maxX()); |
| + } |
| + FloatPoint flipForWritingMode(const FloatPoint& position) const |
| + { |
| + if (!UNLIKELY(hasFlippedBlocksWritingMode())) |
| + return position; |
| + return isHorizontalWritingMode() ? FloatPoint(position.x(), height() - position.y()) : FloatPoint(width() - position.x(), position.y()); |
| + } |
| + void flipForWritingMode(FloatRect& rect) const |
| + { |
| + if (!UNLIKELY(hasFlippedBlocksWritingMode())) |
| + return; |
| + if (isHorizontalWritingMode()) |
| + rect.setY(height() - rect.maxY()); |
| + else |
| + rect.setX(width() - rect.maxX()); |
| + } |
| // These represent your location relative to your container as a physical offset. |
| // In layout related methods you almost always want the logical location (e.g. x() and y()). |
| LayoutPoint topLeftLocation() const; |