diff options
Diffstat (limited to 'Source/WebCore/rendering/RootInlineBox.cpp')
| -rw-r--r-- | Source/WebCore/rendering/RootInlineBox.cpp | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/Source/WebCore/rendering/RootInlineBox.cpp b/Source/WebCore/rendering/RootInlineBox.cpp index aa87683..8617252 100644 --- a/Source/WebCore/rendering/RootInlineBox.cpp +++ b/Source/WebCore/rendering/RootInlineBox.cpp @@ -85,7 +85,7 @@ void RootInlineBox::clearTruncation() } } -bool RootInlineBox::canAccommodateEllipsis(bool ltr, int blockEdge, int lineBoxEdge, int ellipsisWidth) +bool RootInlineBox::lineCanAccommodateEllipsis(bool ltr, int blockEdge, int lineBoxEdge, int ellipsisWidth) { // First sanity-check the unoverflowed width of the whole line to see if there is sufficient room. int delta = ltr ? lineBoxEdge - blockEdge : blockEdge - lineBoxEdge; @@ -97,7 +97,7 @@ bool RootInlineBox::canAccommodateEllipsis(bool ltr, int blockEdge, int lineBoxE return InlineFlowBox::canAccommodateEllipsis(ltr, blockEdge, ellipsisWidth); } -void RootInlineBox::placeEllipsis(const AtomicString& ellipsisStr, bool ltr, int blockLeftEdge, int blockRightEdge, int ellipsisWidth, +void RootInlineBox::placeEllipsis(const AtomicString& ellipsisStr, bool ltr, float blockLeftEdge, float blockRightEdge, float ellipsisWidth, InlineBox* markupBox) { // Create an ellipsis box. @@ -123,9 +123,9 @@ void RootInlineBox::placeEllipsis(const AtomicString& ellipsisStr, bool ltr, in ellipsisBox->m_x = placeEllipsisBox(ltr, blockLeftEdge, blockRightEdge, ellipsisWidth, foundBox); } -int RootInlineBox::placeEllipsisBox(bool ltr, int blockLeftEdge, int blockRightEdge, int ellipsisWidth, bool& foundBox) +float RootInlineBox::placeEllipsisBox(bool ltr, float blockLeftEdge, float blockRightEdge, float ellipsisWidth, bool& foundBox) { - int result = InlineFlowBox::placeEllipsisBox(ltr, blockLeftEdge, blockRightEdge, ellipsisWidth, foundBox); + float result = InlineFlowBox::placeEllipsisBox(ltr, blockLeftEdge, blockRightEdge, ellipsisWidth, foundBox); if (result == -1) result = ltr ? blockRightEdge - ellipsisWidth : blockLeftEdge; return result; @@ -198,10 +198,10 @@ bool RootInlineBox::nodeAtPoint(const HitTestRequest& request, HitTestResult& re return InlineFlowBox::nodeAtPoint(request, result, x, y, tx, ty); } -void RootInlineBox::adjustPosition(int dx, int dy) +void RootInlineBox::adjustPosition(float dx, float dy) { InlineFlowBox::adjustPosition(dx, dy); - int blockDirectionDelta = isHorizontal() ? dy : dx; + int blockDirectionDelta = isHorizontal() ? dy : dx; // The block direction delta will always be integral. m_lineTop += blockDirectionDelta; m_lineBottom += blockDirectionDelta; m_blockLogicalHeight += blockDirectionDelta; @@ -268,10 +268,6 @@ int RootInlineBox::alignBoxesInBlockDirection(int heightOfBlock, GlyphOverflowAn maxHeight = max(0, maxHeight); - // Detect integer overflow. - if (heightOfBlock > numeric_limits<int>::max() - maxHeight) - return numeric_limits<int>::max(); - return heightOfBlock + maxHeight; } @@ -289,7 +285,7 @@ int RootInlineBox::beforeAnnotationsAdjustment() const // Annotations over this line may push us further down. int highestAllowedPosition = prevRootBox() ? min(prevRootBox()->lineBottom(), lineTop()) + result : block()->borderBefore(); - result = computeOverAnnotationAdjustment(highestAllowedPosition); + result = computeOverAnnotationAdjustment(highestAllowedPosition); } else { // Annotations under this line may push us up. if (hasAnnotationsBefore()) @@ -544,14 +540,14 @@ IntRect RootInlineBox::paddedLayoutOverflowRect(int endPadding) const if (isHorizontal()) { if (isLeftToRightDirection()) - lineLayoutOverflow.shiftMaxXEdgeTo(max(lineLayoutOverflow.maxX(), logicalRight() + endPadding)); + lineLayoutOverflow.shiftMaxXEdgeTo(max(lineLayoutOverflow.maxX(), pixelSnappedLogicalRight() + endPadding)); else - lineLayoutOverflow.shiftXEdgeTo(min(lineLayoutOverflow.x(), logicalLeft() - endPadding)); + lineLayoutOverflow.shiftXEdgeTo(min(lineLayoutOverflow.x(), pixelSnappedLogicalLeft() - endPadding)); } else { if (isLeftToRightDirection()) - lineLayoutOverflow.shiftMaxYEdgeTo(max(lineLayoutOverflow.maxY(), logicalRight() + endPadding)); + lineLayoutOverflow.shiftMaxYEdgeTo(max(lineLayoutOverflow.maxY(), pixelSnappedLogicalRight() + endPadding)); else - lineLayoutOverflow.shiftYEdgeTo(min(lineLayoutOverflow.y(), logicalRight() - endPadding)); + lineLayoutOverflow.shiftYEdgeTo(min(lineLayoutOverflow.y(), pixelSnappedLogicalLeft() - endPadding)); } return lineLayoutOverflow; |
