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

Unified Diff: sky/engine/core/rendering/RenderLayer.cpp

Issue 954913002: Inline RenderLayer::beginTransparencyLayers into RenderBox::paintLayerContents. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months 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 | « sky/engine/core/rendering/RenderLayer.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/engine/core/rendering/RenderLayer.cpp
diff --git a/sky/engine/core/rendering/RenderLayer.cpp b/sky/engine/core/rendering/RenderLayer.cpp
index cc978cac2fd94b4329b639b32f9d3d133da34f84..48c04e49f9f789335e7ca6494afd0ca3a52382e8 100644
--- a/sky/engine/core/rendering/RenderLayer.cpp
+++ b/sky/engine/core/rendering/RenderLayer.cpp
@@ -389,68 +389,6 @@ const RenderLayer* RenderLayer::compositingContainer() const
return 0;
}
-enum TransparencyClipBoxBehavior {
- PaintingTransparencyClipBox,
- HitTestingTransparencyClipBox
-};
-
-static LayoutRect transparencyClipBox(const RenderLayer*, const RenderLayer* rootLayer, const LayoutSize& subPixelAccumulation);
-
-static void expandClipRectForDescendantsAndReflection(LayoutRect& clipRect, const RenderLayer* layer, const RenderLayer* rootLayer,
- const LayoutSize& subPixelAccumulation)
-{
- // Note: we don't have to walk z-order lists since transparent elements always establish
- // a stacking container. This means we can just walk the layer tree directly.
- for (RenderLayer* curr = layer->firstChild(); curr; curr = curr->nextSibling())
- clipRect.unite(transparencyClipBox(curr, rootLayer, subPixelAccumulation));
-}
-
-static LayoutRect transparencyClipBox(const RenderLayer* layer, const RenderLayer* rootLayer,
- const LayoutSize& subPixelAccumulation)
-{
- // FIXME: Although this function completely ignores CSS-imposed clipping, we did already intersect with the
- // paintDirtyRect, and that should cut down on the amount we have to paint. Still it
- // would be better to respect clips.
-
- if (rootLayer != layer && layer->transform()) {
- // The best we can do here is to use enclosed bounding boxes to establish a "fuzzy" enough clip to encompass
- // the transformed layer and all of its children.
- const RenderLayer* rootLayerForTransform = rootLayer;
- LayoutPoint delta;
- layer->convertToLayerCoords(rootLayerForTransform, delta);
-
- delta.move(subPixelAccumulation);
- IntPoint pixelSnappedDelta = roundedIntPoint(delta);
- TransformationMatrix transform;
- transform.translate(pixelSnappedDelta.x(), pixelSnappedDelta.y());
- transform = transform * *layer->transform();
-
- // We don't use fragment boxes when collecting a transformed layer's bounding box, since it always
- // paints unfragmented.y
- LayoutRect clipRect = layer->physicalBoundingBox(layer);
- expandClipRectForDescendantsAndReflection(clipRect, layer, layer, subPixelAccumulation);
- layer->renderer()->style()->filterOutsets().expandRect(clipRect);
- LayoutRect result = transform.mapRect(clipRect);
- return result;
- }
-
- LayoutRect clipRect = layer->physicalBoundingBox(rootLayer);
- expandClipRectForDescendantsAndReflection(clipRect, layer, rootLayer, subPixelAccumulation);
- layer->renderer()->style()->filterOutsets().expandRect(clipRect);
- clipRect.move(subPixelAccumulation);
- return clipRect;
-}
-
-void RenderLayer::beginTransparencyLayers(GraphicsContext* context, const RenderLayer* rootLayer, const LayoutRect& paintDirtyRect, const LayoutSize& subPixelAccumulation)
-{
- ASSERT(isTransparent());
- context->save();
- LayoutRect clipRect = intersection(paintDirtyRect,
- transparencyClipBox(this, rootLayer, subPixelAccumulation));
- context->clip(clipRect);
- context->beginTransparencyLayer(renderer()->opacity());
-}
-
void* RenderLayer::operator new(size_t sz)
{
return partitionAlloc(Partitions::getRenderingPartition(), sz);
« no previous file with comments | « sky/engine/core/rendering/RenderLayer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698