diff options
author | Andras Becsi <andras.becsi@digia.com> | 2014-03-18 13:16:26 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-03-20 15:55:39 +0100 |
commit | 3f0f86b0caed75241fa71c95a5d73bc0164348c5 (patch) | |
tree | 92b9fb00f2e9e90b0be2262093876d4f43b6cd13 /chromium/third_party/WebKit/Source/core/rendering/shapes/ShapeInsideInfo.cpp | |
parent | e90d7c4b152c56919d963987e2503f9909a666d2 (diff) |
Update to new stable branch 1750
This also includes an updated ninja and chromium dependencies
needed on Windows.
Change-Id: Icd597d80ed3fa4425933c9f1334c3c2e31291c42
Reviewed-by: Zoltan Arvai <zarvai@inf.u-szeged.hu>
Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/rendering/shapes/ShapeInsideInfo.cpp')
-rw-r--r-- | chromium/third_party/WebKit/Source/core/rendering/shapes/ShapeInsideInfo.cpp | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/chromium/third_party/WebKit/Source/core/rendering/shapes/ShapeInsideInfo.cpp b/chromium/third_party/WebKit/Source/core/rendering/shapes/ShapeInsideInfo.cpp index c6e004d649c..301200b19e7 100644 --- a/chromium/third_party/WebKit/Source/core/rendering/shapes/ShapeInsideInfo.cpp +++ b/chromium/third_party/WebKit/Source/core/rendering/shapes/ShapeInsideInfo.cpp @@ -51,7 +51,8 @@ bool ShapeInsideInfo::isEnabledFor(const RenderBlock* renderer) case ShapeValue::Shape: return shapeValue->shape() && shapeValue->shape()->type() != BasicShape::BasicShapeInsetRectangleType; case ShapeValue::Image: - return shapeValue->isImageValid(); + return shapeValue->isImageValid() && checkShapeImageOrigin(renderer->document(), *(shapeValue->image()->cachedImage())); + case ShapeValue::Box: case ShapeValue::Outside: return false; } @@ -59,6 +60,30 @@ bool ShapeInsideInfo::isEnabledFor(const RenderBlock* renderer) return false; } +bool ShapeInsideInfo::updateSegmentsForLine(LayoutSize lineOffset, LayoutUnit lineHeight) +{ + bool result = updateSegmentsForLine(lineOffset.height(), lineHeight); + for (size_t i = 0; i < m_segments.size(); i++) { + m_segments[i].logicalLeft -= lineOffset.width(); + m_segments[i].logicalRight -= lineOffset.width(); + } + return result; +} + +bool ShapeInsideInfo::updateSegmentsForLine(LayoutUnit lineTop, LayoutUnit lineHeight) +{ + ASSERT(lineHeight >= 0); + m_shapeLineTop = lineTop - logicalTopOffset(); + m_lineHeight = lineHeight; + m_segments.clear(); + m_segmentRanges.clear(); + + if (lineOverlapsShapeBounds()) + m_segments = computeSegmentsForLine(lineTop, lineHeight); + + return m_segments.size(); +} + bool ShapeInsideInfo::adjustLogicalLineTop(float minSegmentWidth) { const Shape* shape = computedShape(); @@ -81,4 +106,16 @@ ShapeValue* ShapeInsideInfo::shapeValue() const return m_renderer->style()->resolvedShapeInside(); } +LayoutUnit ShapeInsideInfo::computeFirstFitPositionForFloat(const LayoutSize floatSize) const +{ + if (!computedShape() || !floatSize.width() || shapeLogicalBottom() < logicalLineTop()) + return 0; + + LayoutUnit firstFitPosition = 0; + if (computedShape()->firstIncludedIntervalLogicalTop(m_shapeLineTop, floatSize, firstFitPosition) && (m_shapeLineTop <= firstFitPosition)) + return firstFitPosition; + + return 0; +} + } |