Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1075)

Unified Diff: Source/core/paint/LayerClipRecorder.cpp

Issue 757183003: Revert of Enable fast/images with slimming paint (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/paint/LayerClipRecorder.h ('k') | Source/core/paint/LayerClipRecorderTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/paint/LayerClipRecorder.cpp
diff --git a/Source/core/paint/LayerClipRecorder.cpp b/Source/core/paint/LayerClipRecorder.cpp
deleted file mode 100644
index d0a9ee97b95e3e179e579dd25ded3b8665212032..0000000000000000000000000000000000000000
--- a/Source/core/paint/LayerClipRecorder.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "config.h"
-#include "core/paint/LayerClipRecorder.h"
-
-#include "core/paint/ClipRecorder.h"
-#include "core/rendering/ClipRect.h"
-#include "core/rendering/RenderLayer.h"
-#include "core/rendering/RenderView.h"
-#include "platform/RuntimeEnabledFeatures.h"
-#include "platform/geometry/IntRect.h"
-#include "platform/graphics/GraphicsContext.h"
-
-namespace blink {
-
-void ClipDisplayItem::replay(GraphicsContext* context)
-{
- context->save();
- context->clip(m_clipRect);
- for (RoundedRect roundedRect : m_roundedRectClips)
- context->clipRoundedRect(roundedRect);
-}
-
-void EndClipDisplayItem::replay(GraphicsContext* context)
-{
- context->restore();
-}
-
-LayerClipRecorder::LayerClipRecorder(const RenderLayerModelObject* renderer, GraphicsContext* graphicsContext, DisplayItem::Type clipType, const ClipRect& clipRect,
- const LayerPaintingInfo* localPaintingInfo, const LayoutPoint& fragmentOffset, PaintLayerFlags paintFlags, BorderRadiusClippingRule rule)
- : m_graphicsContext(graphicsContext)
- , m_renderer(renderer)
-{
- IntRect snappedClipRect = pixelSnappedIntRect(clipRect.rect());
- OwnPtr<ClipDisplayItem> clipDisplayItem = adoptPtr(new ClipDisplayItem(renderer, clipType, snappedClipRect));
- if (localPaintingInfo && clipRect.hasRadius())
- collectRoundedRectClips(*renderer->layer(), *localPaintingInfo, graphicsContext, fragmentOffset, paintFlags, rule, clipDisplayItem->roundedRectClips());
- if (!RuntimeEnabledFeatures::slimmingPaintEnabled()) {
- clipDisplayItem->replay(graphicsContext);
- } else {
- m_renderer->view()->viewDisplayList().add(clipDisplayItem.release());
- }
-}
-
-static bool inContainingBlockChain(RenderLayer* startLayer, RenderLayer* endLayer)
-{
- if (startLayer == endLayer)
- return true;
-
- RenderView* view = startLayer->renderer()->view();
- for (RenderBlock* currentBlock = startLayer->renderer()->containingBlock(); currentBlock && currentBlock != view; currentBlock = currentBlock->containingBlock()) {
- if (currentBlock->layer() == endLayer)
- return true;
- }
-
- return false;
-}
-
-void LayerClipRecorder::collectRoundedRectClips(RenderLayer& renderLayer, const LayerPaintingInfo& localPaintingInfo, GraphicsContext* context, const LayoutPoint& fragmentOffset, PaintLayerFlags paintFlags,
- BorderRadiusClippingRule rule, Vector<RoundedRect>& roundedRectClips)
-{
- // If the clip rect has been tainted by a border radius, then we have to walk up our layer chain applying the clips from
- // any layers with overflow. The condition for being able to apply these clips is that the overflow object be in our
- // containing block chain so we check that also.
- for (RenderLayer* layer = rule == IncludeSelfForBorderRadius ? &renderLayer : renderLayer.parent(); layer; layer = layer->parent()) {
- // Composited scrolling layers handle border-radius clip in the compositor via a mask layer. We do not
- // want to apply a border-radius clip to the layer contents itself, because that would require re-rastering
- // every frame to update the clip. We only want to make sure that the mask layer is properly clipped so
- // that it can in turn clip the scrolled contents in the compositor.
- if (layer->needsCompositedScrolling() && !(paintFlags & PaintLayerPaintingChildClippingMaskPhase))
- break;
-
- if (layer->renderer()->hasOverflowClip() && layer->renderer()->style()->hasBorderRadius() && inContainingBlockChain(&renderLayer, layer)) {
- LayoutPoint delta(fragmentOffset);
- layer->convertToLayerCoords(localPaintingInfo.rootLayer, delta);
- roundedRectClips.append(layer->renderer()->style()->getRoundedInnerBorderFor(LayoutRect(delta, LayoutSize(layer->size()))));
- }
-
- if (layer == localPaintingInfo.rootLayer)
- break;
- }
-}
-
-LayerClipRecorder::~LayerClipRecorder()
-{
- if (RuntimeEnabledFeatures::slimmingPaintEnabled()) {
- OwnPtr<EndClipDisplayItem> endClip = adoptPtr(new EndClipDisplayItem(m_renderer));
- m_renderer->view()->viewDisplayList().add(endClip.release());
- } else {
- m_graphicsContext->restore();
- }
-}
-
-#ifndef NDEBUG
-WTF::String ClipDisplayItem::asDebugString() const
-{
- return String::format("{%s, type: \"%s\", clipRect: [%d,%d,%d,%d]}",
- rendererDebugString(renderer()).utf8().data(), typeAsDebugString(type()).utf8().data(),
- m_clipRect.x(), m_clipRect.y(), m_clipRect.width(), m_clipRect.height());
-}
-#endif
-
-} // namespace blink
« no previous file with comments | « Source/core/paint/LayerClipRecorder.h ('k') | Source/core/paint/LayerClipRecorderTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698