Title: [161381] trunk/Source/WebCore
Revision
161381
Author
[email protected]
Date
2014-01-06 15:50:43 -0800 (Mon, 06 Jan 2014)

Log Message

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.

Modified Paths

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;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to