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

Unified Diff: third_party/WebKit/Source/core/layout/line/LineWidth.cpp

Issue 2003173002: Represent lines using LayoutUnit in LineWidth (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2743
Patch Set: Created 4 years, 7 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 | « third_party/WebKit/Source/core/layout/line/LineWidth.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/layout/line/LineWidth.cpp
diff --git a/third_party/WebKit/Source/core/layout/line/LineWidth.cpp b/third_party/WebKit/Source/core/layout/line/LineWidth.cpp
index 5982992c4121e0255afa6296535605126df303ec..572f25e4fbd7bd8b233ca3f9c19c04a718f01b06 100644
--- a/third_party/WebKit/Source/core/layout/line/LineWidth.cpp
+++ b/third_party/WebKit/Source/core/layout/line/LineWidth.cpp
@@ -40,9 +40,6 @@ LineWidth::LineWidth(LineLayoutBlockFlow block, bool isFirstLine, IndentTextOrNo
, m_committedWidth(0)
, m_overhangWidth(0)
, m_trailingWhitespaceWidth(0)
- , m_left(0)
- , m_right(0)
- , m_availableWidth(0)
, m_isFirstLine(isFirstLine)
, m_indentText(indentText)
{
@@ -53,8 +50,8 @@ void LineWidth::updateAvailableWidth(LayoutUnit replacedHeight)
{
LayoutUnit height = m_block.logicalHeight();
LayoutUnit logicalHeight = m_block.minLineHeightForReplacedObject(m_isFirstLine, replacedHeight);
- m_left = m_block.logicalLeftOffsetForLine(height, indentText(), logicalHeight).toFloat();
- m_right = m_block.logicalRightOffsetForLine(height, indentText(), logicalHeight).toFloat();
+ m_left = m_block.logicalLeftOffsetForLine(height, indentText(), logicalHeight);
+ m_right = m_block.logicalRightOffsetForLine(height, indentText(), logicalHeight);
computeAvailableWidthFromLeftAndRight();
}
@@ -72,7 +69,7 @@ void LineWidth::shrinkAvailableWidthForNewFloatIfNeeded(const FloatingObject& ne
}
if (newFloat.getType() == FloatingObject::FloatLeft) {
- float newLeft = m_block.logicalRightForFloat(newFloat).toFloat();
+ LayoutUnit newLeft = m_block.logicalRightForFloat(newFloat);
if (shapeDeltas.isValid()) {
if (shapeDeltas.lineOverlapsShape())
newLeft += shapeDeltas.rightMarginBoxDelta();
@@ -81,9 +78,9 @@ void LineWidth::shrinkAvailableWidthForNewFloatIfNeeded(const FloatingObject& ne
}
if (indentText() == IndentText && m_block.style()->isLeftToRightDirection())
newLeft += floorToInt(m_block.textIndentOffset());
- m_left = std::max<float>(m_left, newLeft);
+ m_left = std::max(m_left, newLeft);
} else {
- float newRight = m_block.logicalLeftForFloat(newFloat).toFloat();
+ LayoutUnit newRight = m_block.logicalLeftForFloat(newFloat);
if (shapeDeltas.isValid()) {
if (shapeDeltas.lineOverlapsShape())
newRight += shapeDeltas.leftMarginBoxDelta();
@@ -92,7 +89,7 @@ void LineWidth::shrinkAvailableWidthForNewFloatIfNeeded(const FloatingObject& ne
}
if (indentText() == IndentText && !m_block.style()->isLeftToRightDirection())
newRight -= floorToInt(m_block.textIndentOffset());
- m_right = std::min<float>(m_right, newRight);
+ m_right = std::min(m_right, newRight);
}
computeAvailableWidthFromLeftAndRight();
@@ -118,21 +115,22 @@ void LineWidth::applyOverhang(LineLayoutRubyRun rubyRun, LineLayoutItem startLay
m_overhangWidth += startOverhang + endOverhang;
}
-inline static float availableWidthAtOffset(LineLayoutBlockFlow block, const LayoutUnit& offset, IndentTextOrNot indentText, float& newLineLeft,
- float& newLineRight, const LayoutUnit& lineHeight = LayoutUnit())
+inline static LayoutUnit availableWidthAtOffset(LineLayoutBlockFlow block,
+ const LayoutUnit& offset, IndentTextOrNot indentText, LayoutUnit& newLineLeft,
+ LayoutUnit& newLineRight, const LayoutUnit& lineHeight = LayoutUnit())
{
- newLineLeft = block.logicalLeftOffsetForLine(offset, indentText, lineHeight).toFloat();
- newLineRight = block.logicalRightOffsetForLine(offset, indentText, lineHeight).toFloat();
- return std::max(0.0f, newLineRight - newLineLeft);
+ newLineLeft = block.logicalLeftOffsetForLine(offset, indentText, lineHeight);
+ newLineRight = block.logicalRightOffsetForLine(offset, indentText, lineHeight);
+ return (newLineRight - newLineLeft).clampNegativeToZero();
}
-void LineWidth::updateLineDimension(LayoutUnit newLineTop, LayoutUnit newLineWidth, const float& newLineLeft, const float& newLineRight)
+void LineWidth::updateLineDimension(LayoutUnit newLineTop, LayoutUnit newLineWidth, const LayoutUnit& newLineLeft, const LayoutUnit& newLineRight)
{
if (newLineWidth <= m_availableWidth)
return;
m_block.setLogicalHeight(newLineTop);
- m_availableWidth = newLineWidth + m_overhangWidth;
+ m_availableWidth = newLineWidth + LayoutUnit::fromFloatCeil(m_overhangWidth);
m_left = newLineLeft;
m_right = newLineRight;
}
@@ -144,9 +142,9 @@ void LineWidth::wrapNextToShapeOutside(bool isFirstLine)
LayoutUnit newLineTop = lineLogicalTop;
LayoutUnit floatLogicalBottom = m_block.nextFloatLogicalBottomBelow(lineLogicalTop);
- float newLineWidth;
- float newLineLeft = m_left;
- float newLineRight = m_right;
+ LayoutUnit newLineWidth;
+ LayoutUnit newLineLeft = m_left;
+ LayoutUnit newLineRight = m_right;
while (true) {
newLineWidth = availableWidthAtOffset(m_block, newLineTop, indentText(), newLineLeft, newLineRight, lineHeight);
if (newLineWidth >= m_uncommittedWidth)
@@ -168,9 +166,9 @@ void LineWidth::fitBelowFloats(bool isFirstLine)
LayoutUnit floatLogicalBottom;
LayoutUnit lastFloatLogicalBottom = m_block.logicalHeight();
- float newLineWidth = m_availableWidth;
- float newLineLeft = m_left;
- float newLineRight = m_right;
+ LayoutUnit newLineWidth = m_availableWidth;
+ LayoutUnit newLineLeft = m_left;
+ LayoutUnit newLineRight = m_right;
FloatingObject* lastFloatFromPreviousLine = m_block.lastFloatFromPreviousLine();
if (lastFloatFromPreviousLine && lastFloatFromPreviousLine->layoutObject()->shapeOutsideInfo())
@@ -192,7 +190,7 @@ void LineWidth::fitBelowFloats(bool isFirstLine)
void LineWidth::computeAvailableWidthFromLeftAndRight()
{
- m_availableWidth = max(0.0f, m_right - m_left) + m_overhangWidth;
+ m_availableWidth = (m_right - m_left).clampNegativeToZero() + LayoutUnit::fromFloatCeil(m_overhangWidth);
}
} // namespace blink
« no previous file with comments | « third_party/WebKit/Source/core/layout/line/LineWidth.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698