OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2003, 2009, 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2003, 2009, 2012 Apple Inc. All rights reserved. |
3 * Copyright (C) 2013 Intel Corporation. All rights reserved. | 3 * Copyright (C) 2013 Intel Corporation. All rights reserved. |
4 * | 4 * |
5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. | 5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. |
6 * | 6 * |
7 * Other contributors: | 7 * Other contributors: |
8 * Robert O'Callahan <roc+@cs.cmu.edu> | 8 * Robert O'Callahan <roc+@cs.cmu.edu> |
9 * David Baron <dbaron@fas.harvard.edu> | 9 * David Baron <dbaron@fas.harvard.edu> |
10 * Christian Biesinger <cbiesinger@web.de> | 10 * Christian Biesinger <cbiesinger@web.de> |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 String debugName() const; | 104 String debugName() const; |
105 | 105 |
106 LayoutBoxModelObject* layoutObject() const { return m_layoutObject; } | 106 LayoutBoxModelObject* layoutObject() const { return m_layoutObject; } |
107 LayoutBox* layoutBox() const { return m_layoutObject && m_layoutObject->isBo
x() ? toLayoutBox(m_layoutObject) : 0; } | 107 LayoutBox* layoutBox() const { return m_layoutObject && m_layoutObject->isBo
x() ? toLayoutBox(m_layoutObject) : 0; } |
108 DeprecatedPaintLayer* parent() const { return m_parent; } | 108 DeprecatedPaintLayer* parent() const { return m_parent; } |
109 DeprecatedPaintLayer* previousSibling() const { return m_previous; } | 109 DeprecatedPaintLayer* previousSibling() const { return m_previous; } |
110 DeprecatedPaintLayer* nextSibling() const { return m_next; } | 110 DeprecatedPaintLayer* nextSibling() const { return m_next; } |
111 DeprecatedPaintLayer* firstChild() const { return m_first; } | 111 DeprecatedPaintLayer* firstChild() const { return m_first; } |
112 DeprecatedPaintLayer* lastChild() const { return m_last; } | 112 DeprecatedPaintLayer* lastChild() const { return m_last; } |
113 | 113 |
114 const DeprecatedPaintLayer* compositingContainer() const; | 114 // TODO(wangxianzhu): Find a better name for it. 'paintContainer' might be g
ood but |
| 115 // we can't use it for now because it conflicts with PaintInfo::paintContain
er. |
| 116 DeprecatedPaintLayer* compositingContainer() const; |
115 | 117 |
116 void addChild(DeprecatedPaintLayer* newChild, DeprecatedPaintLayer* beforeCh
ild = 0); | 118 void addChild(DeprecatedPaintLayer* newChild, DeprecatedPaintLayer* beforeCh
ild = 0); |
117 DeprecatedPaintLayer* removeChild(DeprecatedPaintLayer*); | 119 DeprecatedPaintLayer* removeChild(DeprecatedPaintLayer*); |
118 | 120 |
119 void removeOnlyThisLayer(); | 121 void removeOnlyThisLayer(); |
120 void insertOnlyThisLayer(); | 122 void insertOnlyThisLayer(); |
121 | 123 |
122 void styleChanged(StyleDifference, const ComputedStyle* oldStyle); | 124 void styleChanged(StyleDifference, const ComputedStyle* oldStyle); |
123 | 125 |
124 // FIXME: Many people call this function while it has out-of-date informatio
n. | 126 // FIXME: Many people call this function while it has out-of-date informatio
n. |
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
538 }; | 540 }; |
539 | 541 |
540 enum TransparencyClipBoxMode { | 542 enum TransparencyClipBoxMode { |
541 DescendantsOfTransparencyClipBox, | 543 DescendantsOfTransparencyClipBox, |
542 RootOfTransparencyClipBox | 544 RootOfTransparencyClipBox |
543 }; | 545 }; |
544 | 546 |
545 static LayoutRect transparencyClipBox(const DeprecatedPaintLayer*, const Dep
recatedPaintLayer* rootLayer, TransparencyClipBoxBehavior transparencyBehavior, | 547 static LayoutRect transparencyClipBox(const DeprecatedPaintLayer*, const Dep
recatedPaintLayer* rootLayer, TransparencyClipBoxBehavior transparencyBehavior, |
546 TransparencyClipBoxMode transparencyMode, GlobalPaintFlags = GlobalPaint
NormalPhase); | 548 TransparencyClipBoxMode transparencyMode, GlobalPaintFlags = GlobalPaint
NormalPhase); |
547 | 549 |
| 550 bool needsRepaint() const { return m_needsRepaint; } |
| 551 void setNeedsRepaint(); |
| 552 void clearNeedsRepaint() { m_needsRepaint = false; } |
| 553 |
548 private: | 554 private: |
549 // Bounding box in the coordinates of this layer. | 555 // Bounding box in the coordinates of this layer. |
550 LayoutRect logicalBoundingBox() const; | 556 LayoutRect logicalBoundingBox() const; |
551 | 557 |
552 bool hasOverflowControls() const; | 558 bool hasOverflowControls() const; |
553 | 559 |
554 void dirtyAncestorChainHasSelfPaintingLayerDescendantStatus(); | 560 void dirtyAncestorChainHasSelfPaintingLayerDescendantStatus(); |
555 | 561 |
556 // Returns true if the position changed. | 562 // Returns true if the position changed. |
557 bool updateLayerPosition(); | 563 bool updateLayerPosition(); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
610 // Both updates the status, and returns true if descendants of this have 3d. | 616 // Both updates the status, and returns true if descendants of this have 3d. |
611 bool update3DTransformedDescendantStatus(); | 617 bool update3DTransformedDescendantStatus(); |
612 | 618 |
613 void updateOrRemoveFilterClients(); | 619 void updateOrRemoveFilterClients(); |
614 | 620 |
615 void updatePaginationRecursive(bool needsPaginationUpdate = false); | 621 void updatePaginationRecursive(bool needsPaginationUpdate = false); |
616 void clearPaginationRecursive(); | 622 void clearPaginationRecursive(); |
617 | 623 |
618 void blockSelectionGapsBoundsChanged(); | 624 void blockSelectionGapsBoundsChanged(); |
619 | 625 |
| 626 void markCompositingContainerChainForNeedsRepaint(); |
| 627 |
620 DeprecatedPaintLayerType m_layerType; | 628 DeprecatedPaintLayerType m_layerType; |
621 | 629 |
622 // Self-painting layer is an optimization where we avoid the heavy Layer pai
nting | 630 // Self-painting layer is an optimization where we avoid the heavy Layer pai
nting |
623 // machinery for a Layer allocated only to handle the overflow clip case. | 631 // machinery for a Layer allocated only to handle the overflow clip case. |
624 // FIXME(crbug.com/332791): Self-painting layer should be merged into the ov
erflow-only concept. | 632 // FIXME(crbug.com/332791): Self-painting layer should be merged into the ov
erflow-only concept. |
625 unsigned m_isSelfPaintingLayer : 1; | 633 unsigned m_isSelfPaintingLayer : 1; |
626 | 634 |
627 // If have no self-painting descendants, we don't have to walk our children
during painting. This can lead to | 635 // If have no self-painting descendants, we don't have to walk our children
during painting. This can lead to |
628 // significant savings, especially if the tree has lots of non-self-painting
layers grouped together (e.g. table cells). | 636 // significant savings, especially if the tree has lots of non-self-painting
layers grouped together (e.g. table cells). |
629 mutable unsigned m_hasSelfPaintingLayerDescendant : 1; | 637 mutable unsigned m_hasSelfPaintingLayerDescendant : 1; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
661 // as opposed to the tree formed by the z-order and normal flow lists). | 669 // as opposed to the tree formed by the z-order and normal flow lists). |
662 unsigned m_hasNonCompositedChild : 1; | 670 unsigned m_hasNonCompositedChild : 1; |
663 | 671 |
664 // Should be for stacking contexts having unisolated blending descendants. | 672 // Should be for stacking contexts having unisolated blending descendants. |
665 unsigned m_shouldIsolateCompositedDescendants : 1; | 673 unsigned m_shouldIsolateCompositedDescendants : 1; |
666 | 674 |
667 // True if this layout layer just lost its grouped mapping due to the Compos
itedDeprecatedPaintLayerMapping being destroyed, | 675 // True if this layout layer just lost its grouped mapping due to the Compos
itedDeprecatedPaintLayerMapping being destroyed, |
668 // and we don't yet know to what graphics layer this Layer will be assigned. | 676 // and we don't yet know to what graphics layer this Layer will be assigned. |
669 unsigned m_lostGroupedMapping : 1; | 677 unsigned m_lostGroupedMapping : 1; |
670 | 678 |
| 679 unsigned m_needsRepaint : 1; |
| 680 |
671 LayoutBoxModelObject* m_layoutObject; | 681 LayoutBoxModelObject* m_layoutObject; |
672 | 682 |
673 DeprecatedPaintLayer* m_parent; | 683 DeprecatedPaintLayer* m_parent; |
674 DeprecatedPaintLayer* m_previous; | 684 DeprecatedPaintLayer* m_previous; |
675 DeprecatedPaintLayer* m_next; | 685 DeprecatedPaintLayer* m_next; |
676 DeprecatedPaintLayer* m_first; | 686 DeprecatedPaintLayer* m_first; |
677 DeprecatedPaintLayer* m_last; | 687 DeprecatedPaintLayer* m_last; |
678 | 688 |
679 // Our current relative position offset. | 689 // Our current relative position offset. |
680 LayoutSize m_offsetForInFlowPosition; | 690 LayoutSize m_offsetForInFlowPosition; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
727 | 737 |
728 } // namespace blink | 738 } // namespace blink |
729 | 739 |
730 #ifndef NDEBUG | 740 #ifndef NDEBUG |
731 // Outside the WebCore namespace for ease of invocation from gdb. | 741 // Outside the WebCore namespace for ease of invocation from gdb. |
732 void showLayerTree(const blink::DeprecatedPaintLayer*); | 742 void showLayerTree(const blink::DeprecatedPaintLayer*); |
733 void showLayerTree(const blink::LayoutObject*); | 743 void showLayerTree(const blink::LayoutObject*); |
734 #endif | 744 #endif |
735 | 745 |
736 #endif // Layer_h | 746 #endif // Layer_h |
OLD | NEW |