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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 | 54 |
55 GraphicsLayerPaintInfo() : paintLayer(nullptr), offsetFromLayoutObjectSet(fa
lse) { } | 55 GraphicsLayerPaintInfo() : paintLayer(nullptr), offsetFromLayoutObjectSet(fa
lse) { } |
56 }; | 56 }; |
57 | 57 |
58 enum GraphicsLayerUpdateScope { | 58 enum GraphicsLayerUpdateScope { |
59 GraphicsLayerUpdateNone, | 59 GraphicsLayerUpdateNone, |
60 GraphicsLayerUpdateLocal, | 60 GraphicsLayerUpdateLocal, |
61 GraphicsLayerUpdateSubtree, | 61 GraphicsLayerUpdateSubtree, |
62 }; | 62 }; |
63 | 63 |
64 // CompositedLayerMapping keeps track of how Layers of the layout tree correspon
d to | 64 // CompositedLayerMapping keeps track of how PaintLayers correspond to |
65 // GraphicsLayers of the composited layer tree. Each instance of CompositedLayer
Mapping | 65 // GraphicsLayers of the composited layer tree. Each instance of CompositedLayer
Mapping |
66 // manages a small cluster of GraphicsLayers and the references to which Layers | 66 // manages a small cluster of GraphicsLayers and the references to which Layers |
67 // and paint phases contribute to each GraphicsLayer. | 67 // and paint phases contribute to each GraphicsLayer. |
68 // | 68 // |
69 // Currently (Oct. 2013) there is one CompositedLayerMapping for each Layer, | 69 // - If a PaintLayer is composited, |
70 // but this is likely to evolve soon. | 70 // - if it paints into its own backings (GraphicsLayers), it owns a |
| 71 // CompositedLayerMapping (PaintLayer::compositedLayerMapping()) to keep |
| 72 // track the backings; |
| 73 // - if it paints into grouped backing (i.e. it's squashed), it has a pointer |
| 74 // (PaintLayer::groupedMapping()) to the CompositedLayerMapping into which |
| 75 // the PaintLayer is squashed; |
| 76 // - Otherwise the PaintLayer doesn't own or directly reference any CompositedLa
yerMapping. |
71 class CORE_EXPORT CompositedLayerMapping final : public GraphicsLayerClient { | 77 class CORE_EXPORT CompositedLayerMapping final : public GraphicsLayerClient { |
72 | 78 |
73 WTF_MAKE_NONCOPYABLE(CompositedLayerMapping); USING_FAST_MALLOC(CompositedLa
yerMapping); | 79 WTF_MAKE_NONCOPYABLE(CompositedLayerMapping); USING_FAST_MALLOC(CompositedLa
yerMapping); |
74 public: | 80 public: |
75 explicit CompositedLayerMapping(PaintLayer&); | 81 explicit CompositedLayerMapping(PaintLayer&); |
76 ~CompositedLayerMapping() override; | 82 ~CompositedLayerMapping() override; |
77 | 83 |
78 PaintLayer& owningLayer() const { return m_owningLayer; } | 84 PaintLayer& owningLayer() const { return m_owningLayer; } |
79 | 85 |
80 bool updateGraphicsLayerConfiguration(); | 86 bool updateGraphicsLayerConfiguration(); |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 bool updateChildTransformLayer(bool needsChildTransformLayer); | 252 bool updateChildTransformLayer(bool needsChildTransformLayer); |
247 bool updateOverflowControlsLayers(bool needsHorizontalScrollbarLayer, bool n
eedsVerticalScrollbarLayer, bool needsScrollCornerLayer, bool needsAncestorClip)
; | 253 bool updateOverflowControlsLayers(bool needsHorizontalScrollbarLayer, bool n
eedsVerticalScrollbarLayer, bool needsScrollCornerLayer, bool needsAncestorClip)
; |
248 bool updateForegroundLayer(bool needsForegroundLayer); | 254 bool updateForegroundLayer(bool needsForegroundLayer); |
249 bool updateBackgroundLayer(bool needsBackgroundLayer); | 255 bool updateBackgroundLayer(bool needsBackgroundLayer); |
250 bool updateMaskLayer(bool needsMaskLayer); | 256 bool updateMaskLayer(bool needsMaskLayer); |
251 void updateChildClippingMaskLayer(bool needsChildClippingMaskLayer); | 257 void updateChildClippingMaskLayer(bool needsChildClippingMaskLayer); |
252 bool requiresHorizontalScrollbarLayer() const { return m_owningLayer.scrolla
bleArea() && m_owningLayer.scrollableArea()->horizontalScrollbar(); } | 258 bool requiresHorizontalScrollbarLayer() const { return m_owningLayer.scrolla
bleArea() && m_owningLayer.scrollableArea()->horizontalScrollbar(); } |
253 bool requiresVerticalScrollbarLayer() const { return m_owningLayer.scrollabl
eArea() && m_owningLayer.scrollableArea()->verticalScrollbar(); } | 259 bool requiresVerticalScrollbarLayer() const { return m_owningLayer.scrollabl
eArea() && m_owningLayer.scrollableArea()->verticalScrollbar(); } |
254 bool requiresScrollCornerLayer() const { return m_owningLayer.scrollableArea
() && !m_owningLayer.scrollableArea()->scrollCornerAndResizerRect().isEmpty(); } | 260 bool requiresScrollCornerLayer() const { return m_owningLayer.scrollableArea
() && !m_owningLayer.scrollableArea()->scrollCornerAndResizerRect().isEmpty(); } |
255 bool updateScrollingLayers(bool scrollingLayers); | 261 bool updateScrollingLayers(bool scrollingLayers); |
256 void updateScrollParent(PaintLayer*); | 262 void updateScrollParent(const PaintLayer*); |
257 void updateClipParent(PaintLayer* scrollParent); | 263 void updateClipParent(const PaintLayer* scrollParent); |
258 bool updateSquashingLayers(bool needsSquashingLayers); | 264 bool updateSquashingLayers(bool needsSquashingLayers); |
259 void updateDrawsContent(); | 265 void updateDrawsContent(); |
260 void updateChildrenTransform(); | 266 void updateChildrenTransform(); |
261 void updateCompositedBounds(); | 267 void updateCompositedBounds(); |
262 void registerScrollingLayers(); | 268 void registerScrollingLayers(); |
263 | 269 |
264 // Also sets subpixelAccumulation on the layer. | 270 // Also sets subpixelAccumulation on the layer. |
265 void computeBoundsOfOwningLayer(const PaintLayer* compositedAncestor, IntRec
t& localCompositingBounds, IntRect& compositingBoundsRelativeToCompositedAncesto
r, LayoutPoint& offsetFromCompositedAncestor, IntPoint& snappedOffsetFromComposi
tedAncestor); | 271 void computeBoundsOfOwningLayer(const PaintLayer* compositedAncestor, IntRec
t& localCompositingBounds, IntRect& compositingBoundsRelativeToCompositedAncesto
r, LayoutPoint& offsetFromCompositedAncestor, IntPoint& snappedOffsetFromComposi
tedAncestor); |
266 | 272 |
267 void setBackgroundLayerPaintsFixedRootBackground(bool); | 273 void setBackgroundLayerPaintsFixedRootBackground(bool); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 | 305 |
300 // Computes the background clip rect for the given squashed layer, up to any
containing layer that is squashed into the | 306 // Computes the background clip rect for the given squashed layer, up to any
containing layer that is squashed into the |
301 // same squashing layer and contains this squashed layer's clipping ancestor
. | 307 // same squashing layer and contains this squashed layer's clipping ancestor
. |
302 // The clip rect is returned in the coordinate space of the given squashed l
ayer. | 308 // The clip rect is returned in the coordinate space of the given squashed l
ayer. |
303 // If there is no such containing layer, returns the infinite rect. | 309 // If there is no such containing layer, returns the infinite rect. |
304 // FIXME: unify this code with the code that sets up m_ancestorClippingLayer
. They are doing very similar things. | 310 // FIXME: unify this code with the code that sets up m_ancestorClippingLayer
. They are doing very similar things. |
305 static IntRect localClipRectForSquashedLayer(const PaintLayer& referenceLaye
r, const GraphicsLayerPaintInfo&, const Vector<GraphicsLayerPaintInfo>& layers)
; | 311 static IntRect localClipRectForSquashedLayer(const PaintLayer& referenceLaye
r, const GraphicsLayerPaintInfo&, const Vector<GraphicsLayerPaintInfo>& layers)
; |
306 | 312 |
307 // Return true if |m_owningLayer|'s compositing ancestor is not a descendant
(inclusive) of the | 313 // Return true if |m_owningLayer|'s compositing ancestor is not a descendant
(inclusive) of the |
308 // clipping container for |m_owningLayer|. | 314 // clipping container for |m_owningLayer|. |
309 bool owningLayerClippedByLayerNotAboveCompositedAncestor(PaintLayer* scrollP
arent); | 315 bool owningLayerClippedByLayerNotAboveCompositedAncestor(const PaintLayer* s
crollParent); |
310 | 316 |
311 PaintLayer* scrollParent(); | 317 const PaintLayer* scrollParent(); |
312 | 318 |
313 // Clear the groupedMapping entry on the layer at the given index, only if t
hat layer does | 319 // Clear the groupedMapping entry on the layer at the given index, only if t
hat layer does |
314 // not appear earlier in the set of layers for this object. | 320 // not appear earlier in the set of layers for this object. |
315 bool invalidateLayerIfNoPrecedingEntry(size_t); | 321 bool invalidateLayerIfNoPrecedingEntry(size_t); |
316 | 322 |
317 PaintLayer& m_owningLayer; | 323 PaintLayer& m_owningLayer; |
318 | 324 |
319 // The hierarchy of layers that is maintained by the CompositedLayerMapping
looks like this: | 325 // The hierarchy of layers that is maintained by the CompositedLayerMapping
looks like this: |
320 // | 326 // |
321 // + m_ancestorClippingLayer [OPTIONAL] | 327 // + m_ancestorClippingLayer [OPTIONAL] |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
437 | 443 |
438 unsigned m_backgroundLayerPaintsFixedRootBackground : 1; | 444 unsigned m_backgroundLayerPaintsFixedRootBackground : 1; |
439 unsigned m_scrollingContentsAreEmpty : 1; | 445 unsigned m_scrollingContentsAreEmpty : 1; |
440 | 446 |
441 friend class CompositedLayerMappingTest; | 447 friend class CompositedLayerMappingTest; |
442 }; | 448 }; |
443 | 449 |
444 } // namespace blink | 450 } // namespace blink |
445 | 451 |
446 #endif // CompositedLayerMapping_h | 452 #endif // CompositedLayerMapping_h |
OLD | NEW |