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

Unified Diff: Source/core/layout/line/InlineBox.cpp

Issue 988903002: [S.P.] Fix cull rects for InlineTextBox to account for vertical text. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 9 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/layout/line/InlineBox.h ('k') | Source/core/paint/InlineTextBoxPainter.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/layout/line/InlineBox.cpp
diff --git a/Source/core/layout/line/InlineBox.cpp b/Source/core/layout/line/InlineBox.cpp
index 2bde2572778d3b82723a00be7ef45ad36cf0e120..fc22b510276a78170137e85782091048f8d54d46 100644
--- a/Source/core/layout/line/InlineBox.cpp
+++ b/Source/core/layout/line/InlineBox.cpp
@@ -310,14 +310,29 @@ void InlineBox::clearKnownToHaveNoOverflow()
FloatPointWillBeLayoutPoint InlineBox::locationIncludingFlipping()
{
+ return logicalPointToPhysicalPoint(m_topLeft.toFloatPoint());
+}
+
+FloatPointWillBeLayoutPoint InlineBox::logicalPointToPhysicalPoint(const FloatPoint& point)
+{
if (!UNLIKELY(layoutObject().hasFlippedBlocksWritingMode()))
- return FloatPointWillBeLayoutPoint(x(), y());
+ return FloatPointWillBeLayoutPoint(point.x(), point.y());
LayoutBlockFlow& block = root().block();
if (block.style()->isHorizontalWritingMode())
- return FloatPointWillBeLayoutPoint(x(), block.size().height() - size().height() - y());
+ return FloatPointWillBeLayoutPoint(point.x(), block.size().height() - size().height() - point.y());
- return FloatPointWillBeLayoutPoint(block.size().width() - size().width() - x(), y());
+ return FloatPointWillBeLayoutPoint(block.size().width() - size().width() - point.x(), point.y());
+}
+
+LayoutRect InlineBox::logicalRectToPhysicalRect(const LayoutRect& current)
+{
+ LayoutRect retval = current;
+ if (!isHorizontal()) {
+ retval = retval.transposedRect();
+ }
+ retval.setLocation(logicalPointToPhysicalPoint(FloatPoint(retval.location())).toLayoutPoint());
+ return retval;
}
void InlineBox::flipForWritingMode(FloatRect& rect)
« no previous file with comments | « Source/core/layout/line/InlineBox.h ('k') | Source/core/paint/InlineTextBoxPainter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698