Diff
Modified: trunk/Source/WebCore/ChangeLog (161380 => 161381)
--- trunk/Source/WebCore/ChangeLog 2014-01-06 23:35:52 UTC (rev 161380)
+++ trunk/Source/WebCore/ChangeLog 2014-01-06 23:50:43 UTC (rev 161381)
@@ -1,3 +1,36 @@
+2014-01-06 Tim Horton <[email protected]>
+
+ Add {IntRect, FloatRect}::infiniteRect() and ::isInfinite()
+ https://bugs.webkit.org/show_bug.cgi?id=126537
+
+ Reviewed by Simon Fraser.
+
+ * platform/graphics/FloatRect.h:
+ (WebCore::FloatRect::infiniteRect):
+ (WebCore::FloatRect::isInfinite):
+ * platform/graphics/IntRect.h:
+ (WebCore::IntRect::infiniteRect):
+ (WebCore::IntRect::isInfinite):
+ Add infiniteRect() and isInfinite() to FloatRect and IntRect.
+
+ * platform/graphics/ca/GraphicsLayerCA.cpp:
+ (WebCore::GraphicsLayerCA::setNeedsDisplay):
+ * rendering/PaintInfo.h:
+ (WebCore::PaintInfo::applyTransform):
+ * rendering/RenderFlowThread.cpp:
+ (WebCore::RenderFlowThread::fragmentsBoundingBox):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::collectFragments):
+ (WebCore::RenderLayer::calculateClipRects):
+ * rendering/RenderLayerBacking.cpp:
+ (WebCore::clipBox):
+ (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::clippedByAncestor):
+ * rendering/svg/SVGRenderingContext.cpp:
+ (WebCore::SVGRenderingContext::renderSubtreeToImageBuffer):
+ Adopt the new functions.
+
2014-01-06 Seokju Kwon <[email protected]>
Web Inspector: Get rid of DOM.setFileInputFiles from Protocol
Modified: trunk/Source/WebCore/platform/graphics/FloatRect.h (161380 => 161381)
--- trunk/Source/WebCore/platform/graphics/FloatRect.h 2014-01-06 23:35:52 UTC (rev 161380)
+++ trunk/Source/WebCore/platform/graphics/FloatRect.h 2014-01-06 23:50:43 UTC (rev 161381)
@@ -193,6 +193,9 @@
void dump(PrintStream& out) const;
+ static FloatRect infiniteRect();
+ bool isInfinite() const;
+
private:
FloatPoint m_location;
FloatSize m_size;
@@ -246,6 +249,17 @@
return a.location() != b.location() || a.size() != b.size();
}
+inline FloatRect FloatRect::infiniteRect()
+{
+ static FloatRect infiniteRect(-std::numeric_limits<float>::max() / 2, -std::numeric_limits<float>::max() / 2, std::numeric_limits<float>::max(), std::numeric_limits<float>::max());
+ return infiniteRect;
+}
+
+inline bool FloatRect::isInfinite() const
+{
+ return *this == infiniteRect();
+}
+
IntRect enclosingIntRect(const FloatRect&);
// Returns a valid IntRect contained within the given FloatRect.
Modified: trunk/Source/WebCore/platform/graphics/IntRect.h (161380 => 161381)
--- trunk/Source/WebCore/platform/graphics/IntRect.h 2014-01-06 23:35:52 UTC (rev 161380)
+++ trunk/Source/WebCore/platform/graphics/IntRect.h 2014-01-06 23:50:43 UTC (rev 161381)
@@ -203,6 +203,9 @@
void dump(PrintStream& out) const;
+ static IntRect infiniteRect();
+ bool isInfinite() const;
+
private:
IntPoint m_location;
IntSize m_size;
@@ -234,6 +237,17 @@
return a.location() != b.location() || a.size() != b.size();
}
+inline IntRect IntRect::infiniteRect()
+{
+ static IntRect infiniteRect(-std::numeric_limits<int>::max() / 2, -std::numeric_limits<int>::max() / 2, std::numeric_limits<int>::max(), std::numeric_limits<int>::max());
+ return infiniteRect;
+}
+
+inline bool IntRect::isInfinite() const
+{
+ return *this == infiniteRect();
+}
+
#if USE(CG)
IntRect enclosingIntRect(const CGRect&);
#endif
Modified: trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp (161380 => 161381)
--- trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp 2014-01-06 23:35:52 UTC (rev 161380)
+++ trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp 2014-01-06 23:50:43 UTC (rev 161381)
@@ -705,10 +705,7 @@
void GraphicsLayerCA::setNeedsDisplay()
{
- FloatRect hugeRect(-std::numeric_limits<float>::max() / 2, -std::numeric_limits<float>::max() / 2,
- std::numeric_limits<float>::max(), std::numeric_limits<float>::max());
-
- setNeedsDisplayInRect(hugeRect);
+ setNeedsDisplayInRect(FloatRect::infiniteRect());
}
void GraphicsLayerCA::setNeedsDisplayInRect(const FloatRect& r)
Modified: trunk/Source/WebCore/rendering/PaintInfo.h (161380 => 161381)
--- trunk/Source/WebCore/rendering/PaintInfo.h 2014-01-06 23:35:52 UTC (rev 161380)
+++ trunk/Source/WebCore/rendering/PaintInfo.h 2014-01-06 23:50:43 UTC (rev 161381)
@@ -98,15 +98,13 @@
context->concatCTM(localToAncestorTransform);
- if (rect == infiniteRect())
+ if (rect.isInfinite())
return;
rect = localToAncestorTransform.inverse().mapRect(rect);
}
#endif
- static IntRect infiniteRect() { return IntRect(LayoutRect::infiniteRect()); }
-
GraphicsContext* context;
IntRect rect;
PaintPhase phase;
Modified: trunk/Source/WebCore/rendering/RenderFlowThread.cpp (161380 => 161381)
--- trunk/Source/WebCore/rendering/RenderFlowThread.cpp 2014-01-06 23:35:52 UTC (rev 161380)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.cpp 2014-01-06 23:50:43 UTC (rev 161381)
@@ -1089,7 +1089,7 @@
for (auto iter = m_regionList.begin(), end = m_regionList.end(); iter != end; ++iter) {
RenderRegion* region = *iter;
LayerFragments fragments;
- region->collectLayerFragments(fragments, layerBoundingBox, PaintInfo::infiniteRect());
+ region->collectLayerFragments(fragments, layerBoundingBox, IntRect::infiniteRect());
for (size_t i = 0; i < fragments.size(); ++i) {
const LayerFragment& fragment = fragments.at(i);
LayoutRect fragmentRect(layerBoundingBox);
Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (161380 => 161381)
--- trunk/Source/WebCore/rendering/RenderLayer.cpp 2014-01-06 23:35:52 UTC (rev 161380)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp 2014-01-06 23:50:43 UTC (rev 161381)
@@ -4280,7 +4280,7 @@
ClipRect backgroundRectInFlowThread;
ClipRect foregroundRectInFlowThread;
ClipRect outlineRectInFlowThread;
- calculateRects(paginationClipRectsContext, PaintInfo::infiniteRect(), layerBoundsInFlowThread, backgroundRectInFlowThread, foregroundRectInFlowThread,
+ calculateRects(paginationClipRectsContext, IntRect::infiniteRect(), layerBoundsInFlowThread, backgroundRectInFlowThread, foregroundRectInFlowThread,
outlineRectInFlowThread, &offsetWithinPaginatedLayer);
// Take our bounding box within the flow thread and clip it.
@@ -5346,7 +5346,7 @@
{
if (!parent()) {
// The root layer's clip rect is always infinite.
- clipRects.reset(PaintInfo::infiniteRect());
+ clipRects.reset(IntRect::infiniteRect());
return;
}
@@ -5372,7 +5372,7 @@
parentLayer->calculateClipRects(parentContext, clipRects);
}
} else
- clipRects.reset(PaintInfo::infiniteRect());
+ clipRects.reset(IntRect::infiniteRect());
// A fixed object is essentially the root of its containing block hierarchy, so when
// we encounter such an object, we reset our clip rects to the fixedClipRect.
@@ -5465,7 +5465,7 @@
RenderView& view = renderer().view();
// Note: infinite clipRects should not be scrolled here, otherwise they will accidentally no longer be considered infinite.
- if (parentRects.fixed() && &clipRectsContext.rootLayer->renderer() == &view && backgroundClipRect != PaintInfo::infiniteRect())
+ if (parentRects.fixed() && &clipRectsContext.rootLayer->renderer() == &view && backgroundClipRect != IntRect::infiniteRect())
backgroundClipRect.move(view.frameView().scrollOffsetForFixedPosition());
return backgroundClipRect;
@@ -5596,10 +5596,10 @@
LayoutRect layerBounds;
ClipRect backgroundRect, foregroundRect, outlineRect;
ClipRectsContext clipRectsContext(clippingRootLayer, 0, PaintingClipRects);
- calculateRects(clipRectsContext, PaintInfo::infiniteRect(), layerBounds, backgroundRect, foregroundRect, outlineRect);
+ calculateRects(clipRectsContext, IntRect::infiniteRect(), layerBounds, backgroundRect, foregroundRect, outlineRect);
LayoutRect clipRect = backgroundRect.rect();
- if (clipRect == PaintInfo::infiniteRect())
+ if (clipRect == IntRect::infiniteRect())
return clipRect;
LayoutPoint clippingRootOffset;
@@ -5792,7 +5792,7 @@
if (flags & UseLocalClipRectIfPossible) {
LayoutRect localClipRect = this->localClipRect();
- if (localClipRect != PaintInfo::infiniteRect()) {
+ if (localClipRect != IntRect::infiniteRect()) {
if ((flags & IncludeSelfTransform) && paintsWithTransform(PaintBehaviorNormal))
localClipRect = transform()->mapRect(localClipRect);
@@ -6955,12 +6955,12 @@
}
// Optimize clipping for the single fragment case.
- if (!regionClipRect.isEmpty() && regionClipRect != PaintInfo::infiniteRect())
+ if (!regionClipRect.isEmpty() && regionClipRect != IntRect::infiniteRect())
clipToRect(paintingInfo.rootLayer, context, paintingInfo.paintDirtyRect, regionClipRect);
flowThreadLayer->paintNamedFlowThreadInsideRegion(context, region, paintingInfo.paintDirtyRect, paintOffset, paintingInfo.paintBehavior, paintFlags);
- if (!regionClipRect.isEmpty() && regionClipRect != PaintInfo::infiniteRect())
+ if (!regionClipRect.isEmpty() && regionClipRect != IntRect::infiniteRect())
restoreClip(context, paintingInfo.paintDirtyRect, regionClipRect);
}
Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (161380 => 161381)
--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp 2014-01-06 23:35:52 UTC (rev 161380)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp 2014-01-06 23:50:43 UTC (rev 161381)
@@ -646,7 +646,7 @@
static IntRect clipBox(RenderBox& renderer)
{
- LayoutRect result = PaintInfo::infiniteRect();
+ LayoutRect result = IntRect::infiniteRect();
if (renderer.hasOverflowClip())
result = renderer.overflowClipRect(LayoutPoint(), 0); // FIXME: Incorrect for CSS regions.
@@ -753,7 +753,7 @@
// for a compositing layer, rootLayer is the layer itself.
RenderLayer::ClipRectsContext clipRectsContext(compAncestor, 0, TemporaryClipRects, IgnoreOverlayScrollbarSize, IgnoreOverflowClip);
IntRect parentClipRect = pixelSnappedIntRect(m_owningLayer.backgroundClipRect(clipRectsContext).rect()); // FIXME: Incorrect for CSS regions.
- ASSERT(parentClipRect != PaintInfo::infiniteRect());
+ ASSERT(parentClipRect != IntRect::infiniteRect());
m_ancestorClippingLayer->setPosition(FloatPoint(parentClipRect.location() - graphicsLayerParentLocation));
m_ancestorClippingLayer->setSize(parentClipRect.size());
Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (161380 => 161381)
--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2014-01-06 23:35:52 UTC (rev 161380)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2014-01-06 23:50:43 UTC (rev 161381)
@@ -2195,7 +2195,7 @@
if (!computeClipRoot || computeClipRoot == &layer)
return false;
- return layer.backgroundClipRect(RenderLayer::ClipRectsContext(computeClipRoot, 0, TemporaryClipRects)).rect() != PaintInfo::infiniteRect(); // FIXME: Incorrect for CSS regions.
+ return layer.backgroundClipRect(RenderLayer::ClipRectsContext(computeClipRoot, 0, TemporaryClipRects)).rect() != IntRect::infiniteRect(); // FIXME: Incorrect for CSS regions.
}
// Return true if the given layer is a stacking context and has compositing child
Modified: trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp (161380 => 161381)
--- trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp 2014-01-06 23:35:52 UTC (rev 161380)
+++ trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp 2014-01-06 23:50:43 UTC (rev 161381)
@@ -275,7 +275,7 @@
ASSERT(image);
ASSERT(image->context());
- PaintInfo info(image->context(), PaintInfo::infiniteRect(), PaintPhaseForeground, PaintBehaviorNormal);
+ PaintInfo info(image->context(), IntRect::infiniteRect(), PaintPhaseForeground, PaintBehaviorNormal);
AffineTransform& contentTransformation = currentContentTransformation();
AffineTransform savedContentTransformation = contentTransformation;