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

Side by Side Diff: Source/core/rendering/compositing/CompositedLayerMapping.h

Issue 264013002: Allow layers that need squashing to draw into the squashing layer in some cases. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix comment. Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009, 2010, 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2009, 2010, 2011 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 RenderLayer* renderLayer; 44 RenderLayer* renderLayer;
45 45
46 LayoutRect compositedBounds; 46 LayoutRect compositedBounds;
47 47
48 // At first, the m_squashingLayer's bounds/location are not known. The value offsetFromSquashingCLM is 48 // At first, the m_squashingLayer's bounds/location are not known. The value offsetFromSquashingCLM is
49 // an intermediate offset for a squashed RenderLayer, described with respect to the CompositedLayerMapping's 49 // an intermediate offset for a squashed RenderLayer, described with respect to the CompositedLayerMapping's
50 // owning layer that would eventually have the m_squashingLayer. Once the sh ared GraphicsLayer's bounds are 50 // owning layer that would eventually have the m_squashingLayer. Once the sh ared GraphicsLayer's bounds are
51 // known, then we can trivially convert this offset to m_squashingLayer's sp ace. 51 // known, then we can trivially convert this offset to m_squashingLayer's sp ace.
52 LayoutSize offsetFromSquashingCLM; 52 LayoutSize offsetFromSquashingCLM;
53 53
54 // The clip rect to apply, in the local coordinate space of the squashed lay er, when painting it.
55 IntRect localClipRectForSquashedLayer;
56
54 // Offset describing where this squashed RenderLayer paints into the shared GraphicsLayer backing. 57 // Offset describing where this squashed RenderLayer paints into the shared GraphicsLayer backing.
55 IntSize offsetFromRenderer; 58 IntSize offsetFromRenderer;
56 LayoutSize subpixelAccumulation; 59 LayoutSize subpixelAccumulation;
57 60
58 GraphicsLayerPaintingPhase paintingPhase; 61 GraphicsLayerPaintingPhase paintingPhase;
59 62
60 bool isBackgroundLayer; 63 bool isBackgroundLayer;
61 64
62 bool isEquivalentForSquashing(const GraphicsLayerPaintInfo& other) 65 bool isEquivalentForSquashing(const GraphicsLayerPaintInfo& other)
63 { 66 {
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 201
199 virtual String debugName(const GraphicsLayer*) OVERRIDE; 202 virtual String debugName(const GraphicsLayer*) OVERRIDE;
200 203
201 LayoutSize contentOffsetInCompositingLayer() const; 204 LayoutSize contentOffsetInCompositingLayer() const;
202 205
203 LayoutPoint squashingOffsetFromTransformedAncestor() 206 LayoutPoint squashingOffsetFromTransformedAncestor()
204 { 207 {
205 return m_squashingLayerOffsetFromTransformedAncestor; 208 return m_squashingLayerOffsetFromTransformedAncestor;
206 } 209 }
207 210
211 // If there is a squashed layer painting into this CLM that is an ancestor o f the given RenderObject, return it. Otherwise return 0.
212 const GraphicsLayerPaintInfo* containingSquashedLayer(const RenderObject*) c onst;
213
208 private: 214 private:
209 void createPrimaryGraphicsLayer(); 215 void createPrimaryGraphicsLayer();
210 void destroyGraphicsLayers(); 216 void destroyGraphicsLayers();
211 217
212 PassOwnPtr<GraphicsLayer> createGraphicsLayer(CompositingReasons); 218 PassOwnPtr<GraphicsLayer> createGraphicsLayer(CompositingReasons);
213 bool toggleScrollbarLayerIfNeeded(OwnPtr<GraphicsLayer>&, bool needsLayer, C ompositingReasons); 219 bool toggleScrollbarLayerIfNeeded(OwnPtr<GraphicsLayer>&, bool needsLayer, C ompositingReasons);
214 220
215 RenderLayerModelObject* renderer() const { return m_owningLayer.renderer(); } 221 RenderLayerModelObject* renderer() const { return m_owningLayer.renderer(); }
216 RenderLayerCompositor* compositor() const { return m_owningLayer.compositor( ); } 222 RenderLayerCompositor* compositor() const { return m_owningLayer.compositor( ); }
217 223
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 void updateContentsRect(); 275 void updateContentsRect();
270 void updateAfterWidgetResize(); 276 void updateAfterWidgetResize();
271 void updateCompositingReasons(); 277 void updateCompositingReasons();
272 278
273 bool hasVisibleNonCompositingDescendantLayers() const; 279 bool hasVisibleNonCompositingDescendantLayers() const;
274 280
275 void paintsIntoCompositedAncestorChanged(); 281 void paintsIntoCompositedAncestorChanged();
276 282
277 void doPaintTask(GraphicsLayerPaintInfo&, GraphicsContext*, const IntRect& c lip); 283 void doPaintTask(GraphicsLayerPaintInfo&, GraphicsContext*, const IntRect& c lip);
278 284
285 // Computes the background clip rect for the given squashed layer, up to any containing layer that is squashed into the
286 // same squashing layer and contains this squashed layer's clipping ancestor .
287 // The clip rect is returned in the coordinate space of the given squashed l ayer.
288 // If there is no such containing layer, returns the infinite rect.
289 // FIXME: unify this code with the code that sets up m_ancestorClippingLayer . They are doing very similar things.
290 IntRect localClipRectForSquashedLayer(const GraphicsLayerPaintInfo&) const;
291
279 RenderLayer& m_owningLayer; 292 RenderLayer& m_owningLayer;
280 293
281 // The hierarchy of layers that is maintained by the CompositedLayerMapping looks like this: 294 // The hierarchy of layers that is maintained by the CompositedLayerMapping looks like this:
282 // 295 //
283 // + m_ancestorClippingLayer [OPTIONAL] 296 // + m_ancestorClippingLayer [OPTIONAL]
284 // + m_graphicsLayer 297 // + m_graphicsLayer
285 // + m_childContainmentLayer [OPTIONAL] <-OR-> m_scrollingLayer [OPTI ONAL] <-OR-> m_childTransformLayer 298 // + m_childContainmentLayer [OPTIONAL] <-OR-> m_scrollingLayer [OPTI ONAL] <-OR-> m_childTransformLayer
286 // + m_scrollingContents Layer [Present iff m_scrollingLayer is present] 299 // + m_scrollingContents Layer [Present iff m_scrollingLayer is present]
287 // 300 //
288 // We need an ancestor clipping layer if our clipping ancestor is not our an cestor in the 301 // We need an ancestor clipping layer if our clipping ancestor is not our an cestor in the
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 bool m_requiresOwnBackingStoreForAncestorReasons : 1; 386 bool m_requiresOwnBackingStoreForAncestorReasons : 1;
374 bool m_canCompositeFilters : 1; 387 bool m_canCompositeFilters : 1;
375 bool m_backgroundLayerPaintsFixedRootBackground : 1; 388 bool m_backgroundLayerPaintsFixedRootBackground : 1;
376 bool m_needToUpdateGraphicsLayer : 1; 389 bool m_needToUpdateGraphicsLayer : 1;
377 bool m_needToUpdateGraphicsLayerOfAllDecendants : 1; 390 bool m_needToUpdateGraphicsLayerOfAllDecendants : 1;
378 }; 391 };
379 392
380 } // namespace WebCore 393 } // namespace WebCore
381 394
382 #endif // CompositedLayerMapping_h 395 #endif // CompositedLayerMapping_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698