summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/core/rendering/shapes/ShapeInsideInfo.cpp
diff options
context:
space:
mode:
authorAndras Becsi <andras.becsi@digia.com>2014-03-18 13:16:26 +0100
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2014-03-20 15:55:39 +0100
commit3f0f86b0caed75241fa71c95a5d73bc0164348c5 (patch)
tree92b9fb00f2e9e90b0be2262093876d4f43b6cd13 /chromium/third_party/WebKit/Source/core/rendering/shapes/ShapeInsideInfo.cpp
parente90d7c4b152c56919d963987e2503f9909a666d2 (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.cpp39
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;
+}
+
}