Chromium Code Reviews| 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 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 292 DontConstrainForMask = 1 << 4, | 292 DontConstrainForMask = 1 << 4, |
| 293 IncludeCompositedDescendants = 1 << 5, | 293 IncludeCompositedDescendants = 1 << 5, |
| 294 UseFragmentBoxes = 1 << 6, | 294 UseFragmentBoxes = 1 << 6, |
| 295 PretendLayerHasOwnBacking = 1 << 7, | 295 PretendLayerHasOwnBacking = 1 << 7, |
| 296 DefaultCalculateLayerBoundsFlags = IncludeSelfTransform | UseLocalClipR ectIfPossible | IncludeLayerFilterOutsets | UseFragmentBoxes | 296 DefaultCalculateLayerBoundsFlags = IncludeSelfTransform | UseLocalClipR ectIfPossible | IncludeLayerFilterOutsets | UseFragmentBoxes |
| 297 }; | 297 }; |
| 298 typedef unsigned CalculateLayerBoundsFlags; | 298 typedef unsigned CalculateLayerBoundsFlags; |
| 299 | 299 |
| 300 // Bounding box relative to some ancestor layer. Pass offsetFromRoot if know n. | 300 // Bounding box relative to some ancestor layer. Pass offsetFromRoot if know n. |
| 301 LayoutRect boundingBox(const RenderLayer* rootLayer, CalculateLayerBoundsFla gs = 0, const LayoutPoint* offsetFromRoot = 0) const; | 301 LayoutRect boundingBox(const RenderLayer* rootLayer, CalculateLayerBoundsFla gs = 0, const LayoutPoint* offsetFromRoot = 0) const; |
| 302 // Bounding box in the coordinates of this layer. | |
| 303 LayoutRect localBoundingBox(CalculateLayerBoundsFlags = 0) const; | |
| 304 // Pixel snapped bounding box relative to the root. | |
| 305 IntRect absoluteBoundingBox() const; | |
| 306 | 302 |
| 307 // Bounds used for layer overlap testing in RenderLayerCompositor. | 303 // Bounds used for layer overlap testing in RenderLayerCompositor. |
| 308 LayoutRect overlapBounds() const { return overlapBoundsIncludeChildren() ? c alculateLayerBounds(this) : localBoundingBox(); } | 304 LayoutRect overlapBounds() const { return overlapBoundsIncludeChildren() ? c alculateLayerBounds(this) : localBoundingBox(); } |
| 309 | 305 |
| 310 // If true, this layer's children are included in its bounds for overlap tes ting. | 306 // If true, this layer's children are included in its bounds for overlap tes ting. |
| 311 // We can't rely on the children's positions if this layer has a filter that could have moved the children's pixels around. | 307 // We can't rely on the children's positions if this layer has a filter that could have moved the children's pixels around. |
| 312 bool overlapBoundsIncludeChildren() const { return hasFilter() && renderer() ->style()->filter().hasFilterThatMovesPixels(); } | 308 bool overlapBoundsIncludeChildren() const { return hasFilter() && renderer() ->style()->filter().hasFilterThatMovesPixels(); } |
| 313 | 309 |
| 314 // Can pass offsetFromRoot if known. | 310 // Can pass offsetFromRoot if known. |
| 315 LayoutRect calculateLayerBounds(const RenderLayer* ancestorLayer, const Layo utPoint* offsetFromRoot = 0, CalculateLayerBoundsFlags = DefaultCalculateLayerBo undsFlags) const; | 311 LayoutRect calculateLayerBounds(const RenderLayer* ancestorLayer, const Layo utPoint* offsetFromRoot = 0, CalculateLayerBoundsFlags = DefaultCalculateLayerBo undsFlags) const; |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 472 | 468 |
| 473 RenderLayerBlendInfo& blendInfo() { return m_blendInfo; } | 469 RenderLayerBlendInfo& blendInfo() { return m_blendInfo; } |
| 474 | 470 |
| 475 void setOffsetFromSquashingLayerOrigin(IntSize offset) { m_compositingProper ties.offsetFromSquashingLayerOrigin = offset; } | 471 void setOffsetFromSquashingLayerOrigin(IntSize offset) { m_compositingProper ties.offsetFromSquashingLayerOrigin = offset; } |
| 476 IntSize offsetFromSquashingLayerOrigin() const { return m_compositingPropert ies.offsetFromSquashingLayerOrigin; } | 472 IntSize offsetFromSquashingLayerOrigin() const { return m_compositingPropert ies.offsetFromSquashingLayerOrigin; } |
| 477 | 473 |
| 478 bool scrollsOverflow() const; | 474 bool scrollsOverflow() const; |
| 479 | 475 |
| 480 bool hasDirectReasonsForCompositing() const { return compositingReasons() & CompositingReasonComboAllDirectReasons; } | 476 bool hasDirectReasonsForCompositing() const { return compositingReasons() & CompositingReasonComboAllDirectReasons; } |
| 481 | 477 |
| 478 const IntRect& cachedAbsoluteBoundingBox() { ASSERT(!m_needsToRecomputeBound s); return m_cachedAbsoluteBoundingBox; } | |
| 479 void setAbsoluteBoundingBoxForOverlap(const IntRect&); | |
| 480 void clearNeedsToRecomputeBounds(); | |
| 481 bool needsToRecomputeBounds() { return m_needsToRecomputeBounds; } | |
| 482 | |
| 482 private: | 483 private: |
| 484 // Bounding box in the coordinates of this layer. | |
| 485 LayoutRect localBoundingBox(CalculateLayerBoundsFlags = 0) const; | |
| 486 | |
| 483 bool hasOverflowControls() const; | 487 bool hasOverflowControls() const; |
| 484 | 488 |
| 485 void setIsUnclippedDescendant(bool isUnclippedDescendant) { m_isUnclippedDes cendant = isUnclippedDescendant; } | 489 void setIsUnclippedDescendant(bool isUnclippedDescendant) { m_isUnclippedDes cendant = isUnclippedDescendant; } |
| 486 | 490 |
| 487 void setAncestorChainHasSelfPaintingLayerDescendant(); | 491 void setAncestorChainHasSelfPaintingLayerDescendant(); |
| 488 void dirtyAncestorChainHasSelfPaintingLayerDescendantStatus(); | 492 void dirtyAncestorChainHasSelfPaintingLayerDescendantStatus(); |
| 489 | 493 |
| 490 void setAncestorChainHasOutOfFlowPositionedDescendant(); | 494 void setAncestorChainHasOutOfFlowPositionedDescendant(); |
| 491 void dirtyAncestorChainHasOutOfFlowPositionedDescendantStatus(); | 495 void dirtyAncestorChainHasOutOfFlowPositionedDescendantStatus(); |
| 492 | 496 |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 675 unsigned m_has3DTransformedDescendant : 1; | 679 unsigned m_has3DTransformedDescendant : 1; |
| 676 | 680 |
| 677 unsigned m_containsDirtyOverlayScrollbars : 1; | 681 unsigned m_containsDirtyOverlayScrollbars : 1; |
| 678 | 682 |
| 679 // This is an optimization added for <table>. | 683 // This is an optimization added for <table>. |
| 680 // Currently cells do not need to update their repaint rectangles when scrol ling. This also | 684 // Currently cells do not need to update their repaint rectangles when scrol ling. This also |
| 681 // saves a lot of time when scrolling on a table. | 685 // saves a lot of time when scrolling on a table. |
| 682 const unsigned m_canSkipRepaintRectsUpdateOnScroll : 1; | 686 const unsigned m_canSkipRepaintRectsUpdateOnScroll : 1; |
| 683 | 687 |
| 684 unsigned m_hasFilterInfo : 1; | 688 unsigned m_hasFilterInfo : 1; |
| 689 unsigned m_needsToRecomputeBounds : 1; | |
| 685 | 690 |
| 686 RenderLayerModelObject* m_renderer; | 691 RenderLayerModelObject* m_renderer; |
| 687 | 692 |
| 688 RenderLayer* m_parent; | 693 RenderLayer* m_parent; |
| 689 RenderLayer* m_previous; | 694 RenderLayer* m_previous; |
| 690 RenderLayer* m_next; | 695 RenderLayer* m_next; |
| 691 RenderLayer* m_first; | 696 RenderLayer* m_first; |
| 692 RenderLayer* m_last; | 697 RenderLayer* m_last; |
| 693 | 698 |
| 694 // Our current relative position offset. | 699 // Our current relative position offset. |
| 695 LayoutSize m_offsetForInFlowPosition; | 700 LayoutSize m_offsetForInFlowPosition; |
| 696 | 701 |
| 697 // Our (x,y) coordinates are in our parent layer's coordinate space. | 702 // Our (x,y) coordinates are in our parent layer's coordinate space. |
| 698 LayoutPoint m_topLeft; | 703 LayoutPoint m_topLeft; |
| 699 | 704 |
| 700 // The layer's width/height | 705 // The layer's width/height |
| 701 IntSize m_layerSize; | 706 IntSize m_layerSize; |
| 702 | 707 |
| 703 // Cached normal flow values for absolute positioned elements with static le ft/top values. | 708 // Cached normal flow values for absolute positioned elements with static le ft/top values. |
| 704 LayoutUnit m_staticInlinePosition; | 709 LayoutUnit m_staticInlinePosition; |
| 705 LayoutUnit m_staticBlockPosition; | 710 LayoutUnit m_staticBlockPosition; |
| 706 | 711 |
| 712 IntRect m_cachedAbsoluteBoundingBox; | |
|
esprehn
2014/03/21 23:28:01
m_absoluteBoundingBox ? cached seems like a detail
ojan
2014/03/22 00:25:43
I guess. I wanted to distinguish from boundingBox.
| |
| 713 | |
| 707 OwnPtr<TransformationMatrix> m_transform; | 714 OwnPtr<TransformationMatrix> m_transform; |
| 708 | 715 |
| 709 // Pointer to the enclosing RenderLayer that caused us to be paginated. It i s 0 if we are not paginated. | 716 // Pointer to the enclosing RenderLayer that caused us to be paginated. It i s 0 if we are not paginated. |
| 710 RenderLayer* m_enclosingPaginationLayer; | 717 RenderLayer* m_enclosingPaginationLayer; |
| 711 | 718 |
| 712 // Pointer to the enclosing RenderLayer that establishes the 3d rendering co ntext in which this layer participates. | 719 // Pointer to the enclosing RenderLayer that establishes the 3d rendering co ntext in which this layer participates. |
| 713 // If it 0, it does not participate in a 3d rendering context. | 720 // If it 0, it does not participate in a 3d rendering context. |
| 714 RenderLayer* m_3dRenderingContextRoot; | 721 RenderLayer* m_3dRenderingContextRoot; |
| 715 | 722 |
| 716 // Properties that are computed while updating compositing layers. These val ues may be dirty/invalid if | 723 // Properties that are computed while updating compositing layers. These val ues may be dirty/invalid if |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 767 | 774 |
| 768 } // namespace WebCore | 775 } // namespace WebCore |
| 769 | 776 |
| 770 #ifndef NDEBUG | 777 #ifndef NDEBUG |
| 771 // Outside the WebCore namespace for ease of invocation from gdb. | 778 // Outside the WebCore namespace for ease of invocation from gdb. |
| 772 void showLayerTree(const WebCore::RenderLayer*); | 779 void showLayerTree(const WebCore::RenderLayer*); |
| 773 void showLayerTree(const WebCore::RenderObject*); | 780 void showLayerTree(const WebCore::RenderObject*); |
| 774 #endif | 781 #endif |
| 775 | 782 |
| 776 #endif // RenderLayer_h | 783 #endif // RenderLayer_h |
| OLD | NEW |