Changeset 161381 in webkit


Ignore:
Timestamp:
Jan 6, 2014, 3:50:43 PM (12 years ago)
Author:
timothy_horton@apple.com
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.

Location:
trunk/Source/WebCore
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r161380 r161381  
     12014-01-06  Tim Horton  <timothy_horton@apple.com>
     2
     3        Add {IntRect, FloatRect}::infiniteRect() and ::isInfinite()
     4        https://bugs.webkit.org/show_bug.cgi?id=126537
     5
     6        Reviewed by Simon Fraser.
     7
     8        * platform/graphics/FloatRect.h:
     9        (WebCore::FloatRect::infiniteRect):
     10        (WebCore::FloatRect::isInfinite):
     11        * platform/graphics/IntRect.h:
     12        (WebCore::IntRect::infiniteRect):
     13        (WebCore::IntRect::isInfinite):
     14        Add infiniteRect() and isInfinite() to FloatRect and IntRect.
     15
     16        * platform/graphics/ca/GraphicsLayerCA.cpp:
     17        (WebCore::GraphicsLayerCA::setNeedsDisplay):
     18        * rendering/PaintInfo.h:
     19        (WebCore::PaintInfo::applyTransform):
     20        * rendering/RenderFlowThread.cpp:
     21        (WebCore::RenderFlowThread::fragmentsBoundingBox):
     22        * rendering/RenderLayer.cpp:
     23        (WebCore::RenderLayer::collectFragments):
     24        (WebCore::RenderLayer::calculateClipRects):
     25        * rendering/RenderLayerBacking.cpp:
     26        (WebCore::clipBox):
     27        (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
     28        * rendering/RenderLayerCompositor.cpp:
     29        (WebCore::RenderLayerCompositor::clippedByAncestor):
     30        * rendering/svg/SVGRenderingContext.cpp:
     31        (WebCore::SVGRenderingContext::renderSubtreeToImageBuffer):
     32        Adopt the new functions.
     33
    1342014-01-06  Seokju Kwon  <seokju@webkit.org>
    235
  • trunk/Source/WebCore/platform/graphics/FloatRect.h

    r156795 r161381  
    194194    void dump(PrintStream& out) const;
    195195
     196    static FloatRect infiniteRect();
     197    bool isInfinite() const;
     198
    196199private:
    197200    FloatPoint m_location;
     
    247250}
    248251
     252inline FloatRect FloatRect::infiniteRect()
     253{
     254    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());
     255    return infiniteRect;
     256}
     257
     258inline bool FloatRect::isInfinite() const
     259{
     260    return *this == infiniteRect();
     261}
     262
    249263IntRect enclosingIntRect(const FloatRect&);
    250264
  • trunk/Source/WebCore/platform/graphics/IntRect.h

    r156795 r161381  
    204204    void dump(PrintStream& out) const;
    205205
     206    static IntRect infiniteRect();
     207    bool isInfinite() const;
     208
    206209private:
    207210    IntPoint m_location;
     
    235238}
    236239
     240inline IntRect IntRect::infiniteRect()
     241{
     242    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());
     243    return infiniteRect;
     244}
     245
     246inline bool IntRect::isInfinite() const
     247{
     248    return *this == infiniteRect();
     249}
     250
    237251#if USE(CG)
    238252IntRect enclosingIntRect(const CGRect&);
  • trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp

    r161293 r161381  
    706706void GraphicsLayerCA::setNeedsDisplay()
    707707{
    708     FloatRect hugeRect(-std::numeric_limits<float>::max() / 2, -std::numeric_limits<float>::max() / 2,
    709                        std::numeric_limits<float>::max(), std::numeric_limits<float>::max());
    710 
    711     setNeedsDisplayInRect(hugeRect);
     708    setNeedsDisplayInRect(FloatRect::infiniteRect());
    712709}
    713710
  • trunk/Source/WebCore/rendering/PaintInfo.h

    r157011 r161381  
    9999        context->concatCTM(localToAncestorTransform);
    100100
    101         if (rect == infiniteRect())
     101        if (rect.isInfinite())
    102102            return;
    103103
     
    105105    }
    106106#endif
    107 
    108     static IntRect infiniteRect() { return IntRect(LayoutRect::infiniteRect()); }
    109107
    110108    GraphicsContext* context;
  • trunk/Source/WebCore/rendering/RenderFlowThread.cpp

    r160721 r161381  
    10901090        RenderRegion* region = *iter;
    10911091        LayerFragments fragments;
    1092         region->collectLayerFragments(fragments, layerBoundingBox, PaintInfo::infiniteRect());
     1092        region->collectLayerFragments(fragments, layerBoundingBox, IntRect::infiniteRect());
    10931093        for (size_t i = 0; i < fragments.size(); ++i) {
    10941094            const LayerFragment& fragment = fragments.at(i);
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r161209 r161381  
    42814281    ClipRect foregroundRectInFlowThread;
    42824282    ClipRect outlineRectInFlowThread;
    4283     calculateRects(paginationClipRectsContext, PaintInfo::infiniteRect(), layerBoundsInFlowThread, backgroundRectInFlowThread, foregroundRectInFlowThread,
     4283    calculateRects(paginationClipRectsContext, IntRect::infiniteRect(), layerBoundsInFlowThread, backgroundRectInFlowThread, foregroundRectInFlowThread,
    42844284        outlineRectInFlowThread, &offsetWithinPaginatedLayer);
    42854285   
     
    53475347    if (!parent()) {
    53485348        // The root layer's clip rect is always infinite.
    5349         clipRects.reset(PaintInfo::infiniteRect());
     5349        clipRects.reset(IntRect::infiniteRect());
    53505350        return;
    53515351    }
     
    53735373        }
    53745374    } else
    5375         clipRects.reset(PaintInfo::infiniteRect());
     5375        clipRects.reset(IntRect::infiniteRect());
    53765376
    53775377    // A fixed object is essentially the root of its containing block hierarchy, so when
     
    54665466
    54675467    // Note: infinite clipRects should not be scrolled here, otherwise they will accidentally no longer be considered infinite.
    5468     if (parentRects.fixed() && &clipRectsContext.rootLayer->renderer() == &view && backgroundClipRect != PaintInfo::infiniteRect())
     5468    if (parentRects.fixed() && &clipRectsContext.rootLayer->renderer() == &view && backgroundClipRect != IntRect::infiniteRect())
    54695469        backgroundClipRect.move(view.frameView().scrollOffsetForFixedPosition());
    54705470
     
    55975597    ClipRect backgroundRect, foregroundRect, outlineRect;
    55985598    ClipRectsContext clipRectsContext(clippingRootLayer, 0, PaintingClipRects);
    5599     calculateRects(clipRectsContext, PaintInfo::infiniteRect(), layerBounds, backgroundRect, foregroundRect, outlineRect);
     5599    calculateRects(clipRectsContext, IntRect::infiniteRect(), layerBounds, backgroundRect, foregroundRect, outlineRect);
    56005600
    56015601    LayoutRect clipRect = backgroundRect.rect();
    5602     if (clipRect == PaintInfo::infiniteRect())
     5602    if (clipRect == IntRect::infiniteRect())
    56035603        return clipRect;
    56045604
     
    57935793    if (flags & UseLocalClipRectIfPossible) {
    57945794        LayoutRect localClipRect = this->localClipRect();
    5795         if (localClipRect != PaintInfo::infiniteRect()) {
     5795        if (localClipRect != IntRect::infiniteRect()) {
    57965796            if ((flags & IncludeSelfTransform) && paintsWithTransform(PaintBehaviorNormal))
    57975797                localClipRect = transform()->mapRect(localClipRect);
     
    69566956
    69576957    // Optimize clipping for the single fragment case.
    6958     if (!regionClipRect.isEmpty() && regionClipRect != PaintInfo::infiniteRect())
     6958    if (!regionClipRect.isEmpty() && regionClipRect != IntRect::infiniteRect())
    69596959        clipToRect(paintingInfo.rootLayer, context, paintingInfo.paintDirtyRect, regionClipRect);
    69606960
    69616961    flowThreadLayer->paintNamedFlowThreadInsideRegion(context, region, paintingInfo.paintDirtyRect, paintOffset, paintingInfo.paintBehavior, paintFlags);
    69626962
    6963     if (!regionClipRect.isEmpty() && regionClipRect != PaintInfo::infiniteRect())
     6963    if (!regionClipRect.isEmpty() && regionClipRect != IntRect::infiniteRect())
    69646964        restoreClip(context, paintingInfo.paintDirtyRect, regionClipRect);
    69656965}
  • trunk/Source/WebCore/rendering/RenderLayerBacking.cpp

    r161088 r161381  
    647647static IntRect clipBox(RenderBox& renderer)
    648648{
    649     LayoutRect result = PaintInfo::infiniteRect();
     649    LayoutRect result = IntRect::infiniteRect();
    650650    if (renderer.hasOverflowClip())
    651651        result = renderer.overflowClipRect(LayoutPoint(), 0); // FIXME: Incorrect for CSS regions.
     
    754754        RenderLayer::ClipRectsContext clipRectsContext(compAncestor, 0, TemporaryClipRects, IgnoreOverlayScrollbarSize, IgnoreOverflowClip);
    755755        IntRect parentClipRect = pixelSnappedIntRect(m_owningLayer.backgroundClipRect(clipRectsContext).rect()); // FIXME: Incorrect for CSS regions.
    756         ASSERT(parentClipRect != PaintInfo::infiniteRect());
     756        ASSERT(parentClipRect != IntRect::infiniteRect());
    757757        m_ancestorClippingLayer->setPosition(FloatPoint(parentClipRect.location() - graphicsLayerParentLocation));
    758758        m_ancestorClippingLayer->setSize(parentClipRect.size());
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp

    r161028 r161381  
    21962196        return false;
    21972197
    2198     return layer.backgroundClipRect(RenderLayer::ClipRectsContext(computeClipRoot, 0, TemporaryClipRects)).rect() != PaintInfo::infiniteRect(); // FIXME: Incorrect for CSS regions.
     2198    return layer.backgroundClipRect(RenderLayer::ClipRectsContext(computeClipRoot, 0, TemporaryClipRects)).rect() != IntRect::infiniteRect(); // FIXME: Incorrect for CSS regions.
    21992199}
    22002200
  • trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp

    r161209 r161381  
    276276    ASSERT(image->context());
    277277
    278     PaintInfo info(image->context(), PaintInfo::infiniteRect(), PaintPhaseForeground, PaintBehaviorNormal);
     278    PaintInfo info(image->context(), IntRect::infiniteRect(), PaintPhaseForeground, PaintBehaviorNormal);
    279279
    280280    AffineTransform& contentTransformation = currentContentTransformation();
Note: See TracChangeset for help on using the changeset viewer.