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

Unified Diff: Source/core/rendering/RenderBox.h

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/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
+ {
+ // 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;

Powered by Google App Engine
This is Rietveld 408576698