Index: Source/core/rendering/FloatingObjects.cpp |
diff --git a/Source/core/rendering/FloatingObjects.cpp b/Source/core/rendering/FloatingObjects.cpp |
index e05422a08befa119f97da06c1761aef0ec3e33ef..20c39aeba44d0f3cabb90610f718a6997fc181e2 100644 |
--- a/Source/core/rendering/FloatingObjects.cpp |
+++ b/Source/core/rendering/FloatingObjects.cpp |
@@ -120,7 +120,7 @@ public: |
LayoutUnit offset() const { return m_offset; } |
protected: |
- virtual bool updateOffsetIfNeeded(const FloatingObject*) = 0; |
+ virtual bool updateOffsetIfNeeded(const FloatingObject&) = 0; |
const RenderBlockFlow* m_renderer; |
int m_lineTop; |
@@ -142,7 +142,7 @@ public: |
LayoutUnit heightRemaining() const; |
protected: |
- virtual bool updateOffsetIfNeeded(const FloatingObject*) OVERRIDE FINAL; |
+ virtual bool updateOffsetIfNeeded(const FloatingObject&) OVERRIDE FINAL; |
}; |
template <FloatingObject::Type FloatTypeValue> |
@@ -156,7 +156,7 @@ public: |
virtual ~ComputeFloatOffsetForLineLayoutAdapter() { } |
protected: |
- virtual bool updateOffsetIfNeeded(const FloatingObject*) OVERRIDE FINAL; |
+ virtual bool updateOffsetIfNeeded(const FloatingObject&) OVERRIDE FINAL; |
}; |
@@ -436,9 +436,9 @@ inline static bool rangesIntersect(int floatTop, int floatBottom, int objectTop, |
} |
template<> |
-inline bool ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded(const FloatingObject* floatingObject) |
+inline bool ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded(const FloatingObject& floatingObject) |
{ |
- LayoutUnit logicalRight = m_renderer->logicalRightForFloat(floatingObject); |
+ LayoutUnit logicalRight = m_renderer->logicalRightForFloat(&floatingObject); |
if (logicalRight > m_offset) { |
m_offset = logicalRight; |
return true; |
@@ -447,9 +447,9 @@ inline bool ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::FloatLeft>:: |
} |
template<> |
-inline bool ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::FloatRight>::updateOffsetIfNeeded(const FloatingObject* floatingObject) |
+inline bool ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::FloatRight>::updateOffsetIfNeeded(const FloatingObject& floatingObject) |
{ |
- LayoutUnit logicalLeft = m_renderer->logicalLeftForFloat(floatingObject); |
+ LayoutUnit logicalLeft = m_renderer->logicalLeftForFloat(&floatingObject); |
if (logicalLeft < m_offset) { |
m_offset = logicalLeft; |
return true; |
@@ -475,31 +475,21 @@ inline void ComputeFloatOffsetAdapter<FloatTypeValue>::collectIfNeeded(const Int |
ASSERT(interval.low() == m_renderer->pixelSnappedLogicalTopForFloat(floatingObject)); |
ASSERT(interval.high() == m_renderer->pixelSnappedLogicalBottomForFloat(floatingObject)); |
- bool floatIsNewExtreme = updateOffsetIfNeeded(floatingObject); |
+ bool floatIsNewExtreme = updateOffsetIfNeeded(*floatingObject); |
if (floatIsNewExtreme) |
m_outermostFloat = floatingObject; |
} |
-static inline ShapeOutsideInfo* shapeInfoForFloat(const FloatingObject& floatingObject, const RenderBlockFlow& containingBlock, LayoutUnit lineTop, LayoutUnit lineBottom) |
-{ |
- if (ShapeOutsideInfo* shapeOutside = floatingObject.renderer()->shapeOutsideInfo()) { |
- shapeOutside->updateDeltasForContainingBlockLine(containingBlock, floatingObject, lineTop, lineBottom - lineTop); |
- return shapeOutside; |
- } |
- |
- return 0; |
-} |
- |
template<> |
-inline bool ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded(const FloatingObject* floatingObject) |
+inline bool ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded(const FloatingObject& floatingObject) |
{ |
- ASSERT(floatingObject); |
- LayoutUnit logicalRight = m_renderer->logicalRightForFloat(floatingObject); |
- if (ShapeOutsideInfo* shapeOutside = shapeInfoForFloat(*floatingObject, *m_renderer, m_lineTop, m_lineBottom)) { |
- if (!shapeOutside->lineOverlapsShape()) |
+ LayoutUnit logicalRight = m_renderer->logicalRightForFloat(&floatingObject); |
+ if (ShapeOutsideInfo* shapeOutside = floatingObject.renderer()->shapeOutsideInfo()) { |
+ ShapeOutsideDeltas shapeDeltas = shapeOutside->computeDeltasForContainingBlockLine(*m_renderer, floatingObject, m_lineTop, m_lineBottom - m_lineTop); |
+ if (!shapeDeltas.lineOverlapsShape()) |
return false; |
- logicalRight += shapeOutside->rightMarginBoxDelta(); |
+ logicalRight += shapeDeltas.rightMarginBoxDelta(); |
} |
if (logicalRight > m_offset) { |
m_offset = logicalRight; |
@@ -510,15 +500,15 @@ inline bool ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatLeft>::u |
} |
template<> |
-inline bool ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatRight>::updateOffsetIfNeeded(const FloatingObject* floatingObject) |
+inline bool ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatRight>::updateOffsetIfNeeded(const FloatingObject& floatingObject) |
{ |
- ASSERT(floatingObject); |
- LayoutUnit logicalLeft = m_renderer->logicalLeftForFloat(floatingObject); |
- if (ShapeOutsideInfo* shapeOutside = shapeInfoForFloat(*floatingObject, *m_renderer, m_lineTop, m_lineBottom)) { |
- if (!shapeOutside->lineOverlapsShape()) |
+ LayoutUnit logicalLeft = m_renderer->logicalLeftForFloat(&floatingObject); |
+ if (ShapeOutsideInfo* shapeOutside = floatingObject.renderer()->shapeOutsideInfo()) { |
+ ShapeOutsideDeltas shapeDeltas = shapeOutside->computeDeltasForContainingBlockLine(*m_renderer, floatingObject, m_lineTop, m_lineBottom - m_lineTop); |
+ if (!shapeDeltas.lineOverlapsShape()) |
return false; |
- logicalLeft += shapeOutside->leftMarginBoxDelta(); |
+ logicalLeft += shapeDeltas.leftMarginBoxDelta(); |
} |
if (logicalLeft < m_offset) { |
m_offset = logicalLeft; |