Changeset 237122 in webkit


Ignore:
Timestamp:
Oct 15, 2018 10:25:45 AM (6 years ago)
Author:
Simon Fraser
Message:

Make a helper function to check for reflection layers
https://bugs.webkit.org/show_bug.cgi?id=190584

Reviewed by Zalan Bujtas.

Add RenderLayer::isReflectionLayer() which returns true if the passed layer
is the layer of this layer's reflection. It's used in z-order list building.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::updateNormalFlowList):
(WebCore::RenderLayer::rebuildZOrderLists):
(WebCore::RenderLayer::collectLayers):
(WebCore::expandClipRectForDescendantsAndReflection):
(WebCore::RenderLayer::calculateClipRects const):

  • rendering/RenderLayer.h:
Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r237121 r237122  
     12018-10-15  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Make a helper function to check for reflection layers
     4        https://bugs.webkit.org/show_bug.cgi?id=190584
     5
     6        Reviewed by Zalan Bujtas.
     7
     8        Add RenderLayer::isReflectionLayer() which returns true if the passed layer
     9        is the layer of this layer's reflection. It's used in z-order list building.
     10
     11        * rendering/RenderLayer.cpp:
     12        (WebCore::RenderLayer::updateNormalFlowList):
     13        (WebCore::RenderLayer::rebuildZOrderLists):
     14        (WebCore::RenderLayer::collectLayers):
     15        (WebCore::expandClipRectForDescendantsAndReflection):
     16        (WebCore::RenderLayer::calculateClipRects const):
     17        * rendering/RenderLayer.h:
     18
    1192018-10-15  Simon Fraser  <simon.fraser@apple.com>
    220
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r237121 r237122  
    644644    for (RenderLayer* child = firstChild(); child; child = child->nextSibling()) {
    645645        // Ignore non-overflow layers and reflections.
    646         if (child->isNormalFlowOnly() && (!m_reflection || reflectionLayer() != child)) {
     646        if (child->isNormalFlowOnly() && !isReflectionLayer(*child)) {
    647647            if (!m_normalFlowList)
    648648                m_normalFlowList = std::make_unique<Vector<RenderLayer*>>();
     
    666666    bool includeHiddenLayers = compositor().inCompositingMode();
    667667    for (RenderLayer* child = firstChild(); child; child = child->nextSibling()) {
    668         if (!m_reflection || reflectionLayer() != child)
     668        if (!isReflectionLayer(*child))
    669669            child->collectLayers(includeHiddenLayers, posZOrderList, negZOrderList);
    670670    }
     
    701701        for (RenderLayer* child = firstChild(); child; child = child->nextSibling()) {
    702702            // Ignore reflections.
    703             if (!m_reflection || reflectionLayer() != child)
     703            if (!isReflectionLayer(*child))
    704704                child->collectLayers(includeHiddenLayers, positiveZOrderList, negativeZOrderList);
    705705        }
     
    18511851        // a stacking container. This means we can just walk the layer tree directly.
    18521852        for (RenderLayer* curr = layer.firstChild(); curr; curr = curr->nextSibling()) {
    1853             if (!layer.reflection() || layer.reflectionLayer() != curr)
     1853            if (!layer.isReflectionLayer(*curr))
    18541854                clipRect.unite(transparencyClipBox(*curr, rootLayer, transparencyBehavior, DescendantsOfTransparencyClipBox, paintBehavior));
    18551855        }
     
    64236423}
    64246424
     6425bool RenderLayer::isReflectionLayer(const RenderLayer& layer) const
     6426{
     6427    return m_reflection ? &layer == m_reflection->layer() : false;
     6428}
     6429
    64256430void RenderLayer::createReflection()
    64266431{
  • trunk/Source/WebCore/rendering/RenderLayer.h

    r237121 r237122  
    266266    RenderReplica* reflection() const { return m_reflection.get(); }
    267267    RenderLayer* reflectionLayer() const;
     268    bool isReflectionLayer(const RenderLayer&) const;
    268269
    269270    const LayoutPoint& location() const { return m_topLeft; }
Note: See TracChangeset for help on using the changeset viewer.