Index: Source/core/rendering/shapes/ShapeOutsideInfo.h |
diff --git a/Source/core/rendering/shapes/ShapeOutsideInfo.h b/Source/core/rendering/shapes/ShapeOutsideInfo.h |
index b51fda1b6cc547d6e9ad121c246fef3bc2ad6436..9596e528af4f6b77fc326e50a67bd43565a805c7 100644 |
--- a/Source/core/rendering/shapes/ShapeOutsideInfo.h |
+++ b/Source/core/rendering/shapes/ShapeOutsideInfo.h |
@@ -43,6 +43,43 @@ class RenderBlockFlow; |
class RenderBox; |
class FloatingObject; |
+class ShapeOutsideDeltas FINAL { |
+public: |
+ ShapeOutsideDeltas() |
+ : m_lineOverlapsShape(false) |
+ , m_isValid(false) |
+ { |
+ } |
+ |
+ ShapeOutsideDeltas(LayoutUnit leftMarginBoxDelta, LayoutUnit rightMarginBoxDelta, bool lineOverlapsShape, LayoutUnit borderBoxLineTop, LayoutUnit lineHeight) |
+ : m_leftMarginBoxDelta(leftMarginBoxDelta) |
+ , m_rightMarginBoxDelta(rightMarginBoxDelta) |
+ , m_borderBoxLineTop(borderBoxLineTop) |
+ , m_lineHeight(lineHeight) |
+ , m_lineOverlapsShape(lineOverlapsShape) |
+ , m_isValid(true) |
+ { |
+ } |
+ |
+ bool isForLine(LayoutUnit borderBoxLineTop, LayoutUnit lineHeight) |
+ { |
+ return m_isValid && m_borderBoxLineTop == borderBoxLineTop && m_lineHeight == lineHeight; |
+ } |
+ |
+ bool isValid() { return m_isValid; } |
+ LayoutUnit leftMarginBoxDelta() { ASSERT(m_isValid); return m_leftMarginBoxDelta; } |
+ LayoutUnit rightMarginBoxDelta() { ASSERT(m_isValid); return m_rightMarginBoxDelta; } |
+ bool lineOverlapsShape() { ASSERT(m_isValid); return m_lineOverlapsShape; } |
+ |
+private: |
+ LayoutUnit m_leftMarginBoxDelta; |
+ LayoutUnit m_rightMarginBoxDelta; |
+ LayoutUnit m_borderBoxLineTop; |
+ LayoutUnit m_lineHeight; |
+ bool m_lineOverlapsShape : 1; |
+ bool m_isValid : 1; |
+}; |
+ |
class ShapeOutsideInfo FINAL { |
WTF_MAKE_FAST_ALLOCATED; |
public: |
@@ -55,21 +92,10 @@ public: |
LayoutUnit shapeLogicalWidth() const { return computedShape().shapeMarginLogicalBoundingBox().width(); } |
LayoutUnit shapeLogicalHeight() const { return computedShape().shapeMarginLogicalBoundingBox().height(); } |
- LayoutUnit logicalLineTop() const { return m_referenceBoxLineTop + logicalTopOffset(); } |
- LayoutUnit logicalLineBottom() const { return m_referenceBoxLineTop + m_lineHeight + logicalTopOffset(); } |
- |
- LayoutUnit leftMarginBoxDelta() const { return m_leftMarginBoxDelta; } |
- LayoutUnit rightMarginBoxDelta() const { return m_rightMarginBoxDelta; } |
- bool lineOverlapsShape() const { return m_lineOverlapsShape; } |
- |
static PassOwnPtr<ShapeOutsideInfo> createInfo(const RenderBox& renderer) { return adoptPtr(new ShapeOutsideInfo(renderer)); } |
static bool isEnabledFor(const RenderBox&); |
- void updateDeltasForContainingBlockLine(const RenderBlockFlow&, const FloatingObject&, LayoutUnit lineTop, LayoutUnit lineHeight); |
- bool lineOverlapsShapeBounds() const |
- { |
- return computedShape().lineOverlapsShapeMarginBounds(m_referenceBoxLineTop, m_lineHeight); |
- } |
+ ShapeOutsideDeltas computeDeltasForContainingBlockLine(const RenderBlockFlow&, const FloatingObject&, LayoutUnit lineTop, LayoutUnit lineHeight); |
static ShapeOutsideInfo& ensureInfo(const RenderBox& key) |
{ |
@@ -94,7 +120,6 @@ public: |
protected: |
ShapeOutsideInfo(const RenderBox& renderer) |
: m_renderer(renderer) |
- , m_lineOverlapsShape(false) |
{ } |
private: |
@@ -110,16 +135,10 @@ private: |
return staticInfoMap; |
} |
- LayoutUnit m_referenceBoxLineTop; |
- LayoutUnit m_lineHeight; |
- |
const RenderBox& m_renderer; |
mutable OwnPtr<Shape> m_shape; |
LayoutSize m_referenceBoxLogicalSize; |
- LayoutUnit m_leftMarginBoxDelta; |
- LayoutUnit m_rightMarginBoxDelta; |
- LayoutUnit m_borderBoxLineTop; |
- bool m_lineOverlapsShape; |
+ ShapeOutsideDeltas m_shapeOutsideDeltas; |
}; |
} |