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

Side by Side Diff: third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.h

Issue 2194273002: Fix border radius on composited children. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Improve clip recording code Created 4 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 unified diff | Download patch
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 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 LayoutBoxModelObject* layoutObject() const { 368 LayoutBoxModelObject* layoutObject() const {
369 return m_owningLayer.layoutObject(); 369 return m_owningLayer.layoutObject();
370 } 370 }
371 PaintLayerCompositor* compositor() const { 371 PaintLayerCompositor* compositor() const {
372 return m_owningLayer.compositor(); 372 return m_owningLayer.compositor();
373 } 373 }
374 374
375 void updateInternalHierarchy(); 375 void updateInternalHierarchy();
376 void updatePaintingPhases(); 376 void updatePaintingPhases();
377 bool updateClippingLayers(bool needsAncestorClip, bool needsDescendantClip); 377 bool updateClippingLayers(bool needsAncestorClip, bool needsDescendantClip);
378 bool updateClippingLayers(bool needsAncestorClip,
379 bool needsAncestorClippingMask,
380 bool needsDescendantClip);
378 bool updateChildTransformLayer(bool needsChildTransformLayer); 381 bool updateChildTransformLayer(bool needsChildTransformLayer);
379 bool updateOverflowControlsLayers(bool needsHorizontalScrollbarLayer, 382 bool updateOverflowControlsLayers(bool needsHorizontalScrollbarLayer,
380 bool needsVerticalScrollbarLayer, 383 bool needsVerticalScrollbarLayer,
381 bool needsScrollCornerLayer, 384 bool needsScrollCornerLayer,
382 bool needsAncestorClip); 385 bool needsAncestorClip);
383 bool updateForegroundLayer(bool needsForegroundLayer); 386 bool updateForegroundLayer(bool needsForegroundLayer);
384 bool updateBackgroundLayer(bool needsBackgroundLayer); 387 bool updateBackgroundLayer(bool needsBackgroundLayer);
385 bool updateMaskLayer(bool needsMaskLayer); 388 bool updateMaskLayer(bool needsMaskLayer);
386 void updateChildClippingMaskLayer(bool needsChildClippingMaskLayer); 389 void updateChildClippingMaskLayer(bool needsChildClippingMaskLayer);
387 bool requiresHorizontalScrollbarLayer() const { 390 bool requiresHorizontalScrollbarLayer() const {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 // contains this squashed layer's clipping ancestor. The clip rect is 464 // contains this squashed layer's clipping ancestor. The clip rect is
462 // returned in the coordinate space of the given squashed layer. If there is 465 // returned in the coordinate space of the given squashed layer. If there is
463 // no such containing layer, returns the infinite rect. 466 // no such containing layer, returns the infinite rect.
464 // FIXME: unify this code with the code that sets up m_ancestorClippingLayer. 467 // FIXME: unify this code with the code that sets up m_ancestorClippingLayer.
465 // They are doing very similar things. 468 // They are doing very similar things.
466 static IntRect localClipRectForSquashedLayer( 469 static IntRect localClipRectForSquashedLayer(
467 const PaintLayer& referenceLayer, 470 const PaintLayer& referenceLayer,
468 const GraphicsLayerPaintInfo&, 471 const GraphicsLayerPaintInfo&,
469 const Vector<GraphicsLayerPaintInfo>& layers); 472 const Vector<GraphicsLayerPaintInfo>& layers);
470 473
471 // Return true if |m_owningLayer|'s compositing ancestor is not a descendant 474 // Return true in |owningLayerIsClipped| iff |m_owningLayer|'s compositing
472 // (inclusive) of the clipping container for |m_owningLayer|. 475 // ancestor is not a descendant (inclusive) of the clipping container for
473 bool owningLayerClippedByLayerNotAboveCompositedAncestor( 476 // |m_owningLayer|. Return true in |owningLayerIsMasked| iff
474 const PaintLayer* scrollParent); 477 // |owningLayerIsClipped| is true and |m_owningLayer|'s compositing ancestor
478 // is not a descendant (inclusive) of a container that applies a mask for
479 // |m_owningLayer|.
480 void owningLayerClippedOrMaskedByLayerNotAboveCompositedAncestor(
481 const PaintLayer* scrollParent,
482 bool& owningLayerIsClipped,
483 bool& owningLayerIsMasked);
Stephen Chennney 2016/11/08 21:42:51 Not sure if it's a good idea to set two things wit
475 484
476 const PaintLayer* scrollParent(); 485 const PaintLayer* scrollParent();
477 486
478 // Clear the groupedMapping entry on the layer at the given index, only if 487 // Clear the groupedMapping entry on the layer at the given index, only if
479 // that layer does not appear earlier in the set of layers for this object. 488 // that layer does not appear earlier in the set of layers for this object.
480 bool invalidateLayerIfNoPrecedingEntry(size_t); 489 bool invalidateLayerIfNoPrecedingEntry(size_t);
481 490
482 PaintLayer& m_owningLayer; 491 PaintLayer& m_owningLayer;
483 492
484 // The hierarchy of layers that is maintained by the CompositedLayerMapping 493 // The hierarchy of layers that is maintained by the CompositedLayerMapping
(...skipping 30 matching lines...) Expand all
515 // + B = m_ancestorClippingLayer [+] 524 // + B = m_ancestorClippingLayer [+]
516 // + m_graphicsLayer 525 // + m_graphicsLayer
517 // + ... 526 // + ...
518 // 527 //
519 // In this case B is clipped by another layer that doesn't happen to be its 528 // In this case B is clipped by another layer that doesn't happen to be its
520 // ancestor: A. So we create an ancestor clipping layer for B, [+], which 529 // ancestor: A. So we create an ancestor clipping layer for B, [+], which
521 // ensures that B is clipped as if it had been A's descendant. 530 // ensures that B is clipped as if it had been A's descendant.
522 531
523 // Only used if we are clipped by an ancestor which is not a stacking context. 532 // Only used if we are clipped by an ancestor which is not a stacking context.
524 std::unique_ptr<GraphicsLayer> m_ancestorClippingLayer; 533 std::unique_ptr<GraphicsLayer> m_ancestorClippingLayer;
534
535 // Only used is there is an m_ancestorClippingLayer that also needs to apply
536 // a clipping mask (for CSS clips or border radius).
537 std::unique_ptr<GraphicsLayer> m_ancestorClippingMaskLayer;
538
525 std::unique_ptr<GraphicsLayer> m_graphicsLayer; 539 std::unique_ptr<GraphicsLayer> m_graphicsLayer;
526 540
527 // Only used if we have clipping on a stacking context with compositing 541 // Only used if we have clipping on a stacking context with compositing
528 // children. 542 // children.
529 std::unique_ptr<GraphicsLayer> m_childContainmentLayer; 543 std::unique_ptr<GraphicsLayer> m_childContainmentLayer;
530 544
531 // Only used if we have perspective. 545 // Only used if we have perspective.
532 std::unique_ptr<GraphicsLayer> m_childTransformLayer; 546 std::unique_ptr<GraphicsLayer> m_childTransformLayer;
533 547
534 // Only used if the layer is using composited scrolling. 548 // Only used if the layer is using composited scrolling.
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
649 // Keep track of whether the background is painted onto the scrolling contents 663 // Keep track of whether the background is painted onto the scrolling contents
650 // layer for invalidations. 664 // layer for invalidations.
651 unsigned m_backgroundPaintsOntoScrollingContentsLayer : 1; 665 unsigned m_backgroundPaintsOntoScrollingContentsLayer : 1;
652 666
653 friend class CompositedLayerMappingTest; 667 friend class CompositedLayerMappingTest;
654 }; 668 };
655 669
656 } // namespace blink 670 } // namespace blink
657 671
658 #endif // CompositedLayerMapping_h 672 #endif // CompositedLayerMapping_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698