OLD | NEW |
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 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 void destroyGraphicsLayers(); | 258 void destroyGraphicsLayers(); |
259 | 259 |
260 std::unique_ptr<GraphicsLayer> createGraphicsLayer(CompositingReasons, Squas
hingDisallowedReasons = SquashingDisallowedReasonsNone); | 260 std::unique_ptr<GraphicsLayer> createGraphicsLayer(CompositingReasons, Squas
hingDisallowedReasons = SquashingDisallowedReasonsNone); |
261 bool toggleScrollbarLayerIfNeeded(std::unique_ptr<GraphicsLayer>&, bool need
sLayer, CompositingReasons); | 261 bool toggleScrollbarLayerIfNeeded(std::unique_ptr<GraphicsLayer>&, bool need
sLayer, CompositingReasons); |
262 | 262 |
263 LayoutBoxModelObject* layoutObject() const { return m_owningLayer.layoutObje
ct(); } | 263 LayoutBoxModelObject* layoutObject() const { return m_owningLayer.layoutObje
ct(); } |
264 PaintLayerCompositor* compositor() const { return m_owningLayer.compositor()
; } | 264 PaintLayerCompositor* compositor() const { return m_owningLayer.compositor()
; } |
265 | 265 |
266 void updateInternalHierarchy(); | 266 void updateInternalHierarchy(); |
267 void updatePaintingPhases(); | 267 void updatePaintingPhases(); |
268 bool updateClippingLayers(bool needsAncestorClip, bool needsDescendantClip); | 268 bool updateClippingLayers(bool needsAncestorClip, bool needsAncestorClipping
Mask, bool needsDescendantClip); |
269 bool updateChildTransformLayer(bool needsChildTransformLayer); | 269 bool updateChildTransformLayer(bool needsChildTransformLayer); |
270 bool updateOverflowControlsLayers(bool needsHorizontalScrollbarLayer, bool n
eedsVerticalScrollbarLayer, bool needsScrollCornerLayer, bool needsAncestorClip)
; | 270 bool updateOverflowControlsLayers(bool needsHorizontalScrollbarLayer, bool n
eedsVerticalScrollbarLayer, bool needsScrollCornerLayer, bool needsAncestorClip)
; |
271 bool updateForegroundLayer(bool needsForegroundLayer); | 271 bool updateForegroundLayer(bool needsForegroundLayer); |
272 bool updateBackgroundLayer(bool needsBackgroundLayer); | 272 bool updateBackgroundLayer(bool needsBackgroundLayer); |
273 bool updateMaskLayer(bool needsMaskLayer); | 273 bool updateMaskLayer(bool needsMaskLayer); |
274 void updateChildClippingMaskLayer(bool needsChildClippingMaskLayer); | 274 void updateChildClippingMaskLayer(bool needsChildClippingMaskLayer); |
275 bool requiresHorizontalScrollbarLayer() const { return m_owningLayer.getScro
llableArea() && m_owningLayer.getScrollableArea()->horizontalScrollbar(); } | 275 bool requiresHorizontalScrollbarLayer() const { return m_owningLayer.getScro
llableArea() && m_owningLayer.getScrollableArea()->horizontalScrollbar(); } |
276 bool requiresVerticalScrollbarLayer() const { return m_owningLayer.getScroll
ableArea() && m_owningLayer.getScrollableArea()->verticalScrollbar(); } | 276 bool requiresVerticalScrollbarLayer() const { return m_owningLayer.getScroll
ableArea() && m_owningLayer.getScrollableArea()->verticalScrollbar(); } |
277 bool requiresScrollCornerLayer() const { return m_owningLayer.getScrollableA
rea() && !m_owningLayer.getScrollableArea()->scrollCornerAndResizerRect().isEmpt
y(); } | 277 bool requiresScrollCornerLayer() const { return m_owningLayer.getScrollableA
rea() && !m_owningLayer.getScrollableArea()->scrollCornerAndResizerRect().isEmpt
y(); } |
278 bool updateScrollingLayers(bool scrollingLayers); | 278 bool updateScrollingLayers(bool scrollingLayers); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 // Computes the background clip rect for the given squashed layer, up to any
containing layer that is squashed into the | 323 // Computes the background clip rect for the given squashed layer, up to any
containing layer that is squashed into the |
324 // same squashing layer and contains this squashed layer's clipping ancestor
. | 324 // same squashing layer and contains this squashed layer's clipping ancestor
. |
325 // The clip rect is returned in the coordinate space of the given squashed l
ayer. | 325 // The clip rect is returned in the coordinate space of the given squashed l
ayer. |
326 // If there is no such containing layer, returns the infinite rect. | 326 // If there is no such containing layer, returns the infinite rect. |
327 // FIXME: unify this code with the code that sets up m_ancestorClippingLayer
. They are doing very similar things. | 327 // FIXME: unify this code with the code that sets up m_ancestorClippingLayer
. They are doing very similar things. |
328 static IntRect localClipRectForSquashedLayer(const PaintLayer& referenceLaye
r, const GraphicsLayerPaintInfo&, const Vector<GraphicsLayerPaintInfo>& layers)
; | 328 static IntRect localClipRectForSquashedLayer(const PaintLayer& referenceLaye
r, const GraphicsLayerPaintInfo&, const Vector<GraphicsLayerPaintInfo>& layers)
; |
329 | 329 |
330 // Return true if |m_owningLayer|'s compositing ancestor is not a descendant
(inclusive) of the | 330 // Return true if |m_owningLayer|'s compositing ancestor is not a descendant
(inclusive) of the |
331 // clipping container for |m_owningLayer|. | 331 // clipping container for |m_owningLayer|. |
332 bool owningLayerClippedByLayerNotAboveCompositedAncestor(const PaintLayer* s
crollParent); | 332 bool owningLayerClippedByLayerNotAboveCompositedAncestor(const PaintLayer* s
crollParent); |
| 333 // Return true if |m_owningLayer|'s compositing ancestor is not a descendant
(inclusive) of the |
| 334 // clipping container for |m_owningLayer| and that clipping container has bo
rder radius. |
| 335 bool owningLayerMaskedByLayerNotAboveCompositedAncestor(const PaintLayer* sc
rollParent); |
| 336 |
333 | 337 |
334 const PaintLayer* scrollParent(); | 338 const PaintLayer* scrollParent(); |
335 | 339 |
336 // Clear the groupedMapping entry on the layer at the given index, only if t
hat layer does | 340 // Clear the groupedMapping entry on the layer at the given index, only if t
hat layer does |
337 // not appear earlier in the set of layers for this object. | 341 // not appear earlier in the set of layers for this object. |
338 bool invalidateLayerIfNoPrecedingEntry(size_t); | 342 bool invalidateLayerIfNoPrecedingEntry(size_t); |
339 | 343 |
340 PaintLayer& m_owningLayer; | 344 PaintLayer& m_owningLayer; |
341 | 345 |
342 // The hierarchy of layers that is maintained by the CompositedLayerMapping
looks like this: | 346 // The hierarchy of layers that is maintained by the CompositedLayerMapping
looks like this: |
(...skipping 23 matching lines...) Expand all Loading... |
366 // ... | 370 // ... |
367 // | | 371 // | |
368 // + B = m_ancestorClippingLayer [+] | 372 // + B = m_ancestorClippingLayer [+] |
369 // + m_graphicsLayer | 373 // + m_graphicsLayer |
370 // + ... | 374 // + ... |
371 // | 375 // |
372 // In this case B is clipped by another layer that doesn't happen to be its
ancestor: A. | 376 // In this case B is clipped by another layer that doesn't happen to be its
ancestor: A. |
373 // So we create an ancestor clipping layer for B, [+], which ensures that B
is clipped | 377 // So we create an ancestor clipping layer for B, [+], which ensures that B
is clipped |
374 // as if it had been A's descendant. | 378 // as if it had been A's descendant. |
375 std::unique_ptr<GraphicsLayer> m_ancestorClippingLayer; // Only used if we a
re clipped by an ancestor which is not a stacking context. | 379 std::unique_ptr<GraphicsLayer> m_ancestorClippingLayer; // Only used if we a
re clipped by an ancestor which is not a stacking context. |
| 380 std::unique_ptr<GraphicsLayer> m_ancestorClippingMaskLayer; // Only used is
there is an m_ancestorClippingLayer that also needs to apply a border radius mas
k. |
376 std::unique_ptr<GraphicsLayer> m_graphicsLayer; | 381 std::unique_ptr<GraphicsLayer> m_graphicsLayer; |
377 std::unique_ptr<GraphicsLayer> m_childContainmentLayer; // Only used if we h
ave clipping on a stacking context with compositing children. | 382 std::unique_ptr<GraphicsLayer> m_childContainmentLayer; // Only used if we h
ave clipping on a stacking context with compositing children. |
378 std::unique_ptr<GraphicsLayer> m_childTransformLayer; // Only used if we hav
e perspective. | 383 std::unique_ptr<GraphicsLayer> m_childTransformLayer; // Only used if we hav
e perspective. |
379 std::unique_ptr<GraphicsLayer> m_scrollingLayer; // Only used if the layer i
s using composited scrolling. | 384 std::unique_ptr<GraphicsLayer> m_scrollingLayer; // Only used if the layer i
s using composited scrolling. |
380 std::unique_ptr<GraphicsLayer> m_scrollingContentsLayer; // Only used if the
layer is using composited scrolling. | 385 std::unique_ptr<GraphicsLayer> m_scrollingContentsLayer; // Only used if the
layer is using composited scrolling. |
381 | 386 |
382 // This layer is also added to the hierarchy by the RLB, but in a different
way than | 387 // This layer is also added to the hierarchy by the RLB, but in a different
way than |
383 // the layers above. It's added to m_graphicsLayer as its mask layer (natura
lly) if | 388 // the layers above. It's added to m_graphicsLayer as its mask layer (natura
lly) if |
384 // we have a mask, and isn't part of the typical hierarchy (it has no childr
en). | 389 // we have a mask, and isn't part of the typical hierarchy (it has no childr
en). |
385 std::unique_ptr<GraphicsLayer> m_maskLayer; // Only used if we have a mask. | 390 std::unique_ptr<GraphicsLayer> m_maskLayer; // Only used if we have a mask. |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
466 | 471 |
467 // Keep track of whether the background is painted onto the scrolling conten
ts layer for invalidations. | 472 // Keep track of whether the background is painted onto the scrolling conten
ts layer for invalidations. |
468 unsigned m_backgroundPaintsOntoScrollingContentsLayer : 1; | 473 unsigned m_backgroundPaintsOntoScrollingContentsLayer : 1; |
469 | 474 |
470 friend class CompositedLayerMappingTest; | 475 friend class CompositedLayerMappingTest; |
471 }; | 476 }; |
472 | 477 |
473 } // namespace blink | 478 } // namespace blink |
474 | 479 |
475 #endif // CompositedLayerMapping_h | 480 #endif // CompositedLayerMapping_h |
OLD | NEW |