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 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 const RenderLayerReflectionInfo* reflectionInfo() const { return m_reflectio
nInfo.get(); } | 128 const RenderLayerReflectionInfo* reflectionInfo() const { return m_reflectio
nInfo.get(); } |
129 | 129 |
130 const RenderLayer* root() const | 130 const RenderLayer* root() const |
131 { | 131 { |
132 const RenderLayer* curr = this; | 132 const RenderLayer* curr = this; |
133 while (curr->parent()) | 133 while (curr->parent()) |
134 curr = curr->parent(); | 134 curr = curr->parent(); |
135 return curr; | 135 return curr; |
136 } | 136 } |
137 | 137 |
138 const LayoutPoint& location() const { ASSERT(!m_needsPositionUpdate); return
m_location; } | 138 const LayoutPoint location() const; |
139 // FIXME: size() should ASSERT(!m_needsPositionUpdate) as well, but that fai
ls in some tests, | 139 const IntSize size() const; |
140 // for example, fast/repaint/clipped-relative.html. | |
141 const IntSize& size() const { return m_size; } | |
142 void setSizeHackForRenderTreeAsText(const IntSize& size) { m_size = size; } | |
143 | 140 |
144 LayoutRect rect() const { return LayoutRect(location(), size()); } | 141 LayoutRect rect() const { return LayoutRect(location(), size()); } |
145 | 142 |
146 bool isRootLayer() const { return m_isRootLayer; } | 143 bool isRootLayer() const { return m_isRootLayer; } |
147 | 144 |
148 RenderLayerCompositor* compositor() const; | 145 RenderLayerCompositor* compositor() const; |
149 | 146 |
150 // Notification from the renderer that its content changed (e.g. current fra
me of image changed). | 147 // Notification from the renderer that its content changed (e.g. current fra
me of image changed). |
151 // Allows updates of layer content without invalidating paint. | 148 // Allows updates of layer content without invalidating paint. |
152 void contentChanged(ContentChangeType); | 149 void contentChanged(ContentChangeType); |
153 | 150 |
154 void updateLayerPositionsAfterLayout(); | 151 void updateLayerPositionsAfterLayout(); |
155 void updateLayerPositionsAfterOverflowScroll(); | |
156 | 152 |
157 bool isPaginated() const { return m_isPaginated; } | 153 bool isPaginated() const { return m_isPaginated; } |
158 RenderLayer* enclosingPaginationLayer() const { return m_enclosingPagination
Layer; } | 154 RenderLayer* enclosingPaginationLayer() const { return m_enclosingPagination
Layer; } |
159 | 155 |
160 void updateTransformationMatrix(); | 156 void updateTransformationMatrix(); |
161 RenderLayer* renderingContextRoot(); | 157 RenderLayer* renderingContextRoot(); |
162 | 158 |
163 const LayoutSize& offsetForInFlowPosition() const { return m_offsetForInFlow
Position; } | 159 // Our current relative position offset. |
| 160 const LayoutSize offsetForInFlowPosition() const; |
164 | 161 |
165 void blockSelectionGapsBoundsChanged(); | 162 void blockSelectionGapsBoundsChanged(); |
166 void addBlockSelectionGapsBounds(const LayoutRect&); | 163 void addBlockSelectionGapsBounds(const LayoutRect&); |
167 void clearBlockSelectionGapsBounds(); | 164 void clearBlockSelectionGapsBounds(); |
168 void invalidatePaintForBlockSelectionGaps(); | 165 void invalidatePaintForBlockSelectionGaps(); |
169 IntRect blockSelectionGapsBounds() const; | 166 IntRect blockSelectionGapsBounds() const; |
170 bool hasBlockSelectionGapBounds() const; | 167 bool hasBlockSelectionGapBounds() const; |
171 | 168 |
172 RenderLayerStackingNode* stackingNode() { return m_stackingNode.get(); } | 169 RenderLayerStackingNode* stackingNode() { return m_stackingNode.get(); } |
173 const RenderLayerStackingNode* stackingNode() const { return m_stackingNode.
get(); } | 170 const RenderLayerStackingNode* stackingNode() const { return m_stackingNode.
get(); } |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 LayoutRect logicalBoundingBox() const; | 542 LayoutRect logicalBoundingBox() const; |
546 | 543 |
547 bool hasOverflowControls() const; | 544 bool hasOverflowControls() const; |
548 | 545 |
549 void setAncestorChainHasSelfPaintingLayerDescendant(); | 546 void setAncestorChainHasSelfPaintingLayerDescendant(); |
550 void dirtyAncestorChainHasSelfPaintingLayerDescendantStatus(); | 547 void dirtyAncestorChainHasSelfPaintingLayerDescendantStatus(); |
551 | 548 |
552 void clipToRect(const LayerPaintingInfo&, GraphicsContext*, const ClipRect&,
PaintLayerFlags, BorderRadiusClippingRule = IncludeSelfForBorderRadius); | 549 void clipToRect(const LayerPaintingInfo&, GraphicsContext*, const ClipRect&,
PaintLayerFlags, BorderRadiusClippingRule = IncludeSelfForBorderRadius); |
553 void restoreClip(GraphicsContext*, const LayoutRect& paintDirtyRect, const C
lipRect&); | 550 void restoreClip(GraphicsContext*, const LayoutRect& paintDirtyRect, const C
lipRect&); |
554 | 551 |
555 // Returns true if the position changed. | |
556 bool updateLayerPosition(); | |
557 | |
558 void updateLayerPositionRecursive(); | 552 void updateLayerPositionRecursive(); |
559 void updateLayerPositionsAfterScrollRecursive(); | |
560 | 553 |
561 void setNextSibling(RenderLayer* next) { m_next = next; } | 554 void setNextSibling(RenderLayer* next) { m_next = next; } |
562 void setPreviousSibling(RenderLayer* prev) { m_previous = prev; } | 555 void setPreviousSibling(RenderLayer* prev) { m_previous = prev; } |
563 void setFirstChild(RenderLayer* first) { m_first = first; } | 556 void setFirstChild(RenderLayer* first) { m_first = first; } |
564 void setLastChild(RenderLayer* last) { m_last = last; } | 557 void setLastChild(RenderLayer* last) { m_last = last; } |
565 | 558 |
566 LayoutPoint renderBoxLocation() const { return renderer()->isBox() ? toRende
rBox(renderer())->location() : LayoutPoint(); } | 559 LayoutPoint renderBoxLocation() const { return renderer()->isBox() ? toRende
rBox(renderer())->location() : LayoutPoint(); } |
567 | 560 |
568 void paintLayerContentsAndReflection(GraphicsContext*, const LayerPaintingIn
fo&, PaintLayerFlags); | 561 void paintLayerContentsAndReflection(GraphicsContext*, const LayerPaintingIn
fo&, PaintLayerFlags); |
569 void paintLayerByApplyingTransform(GraphicsContext*, const LayerPaintingInfo
&, PaintLayerFlags, const LayoutPoint& translationOffset = LayoutPoint()); | 562 void paintLayerByApplyingTransform(GraphicsContext*, const LayerPaintingInfo
&, PaintLayerFlags, const LayoutPoint& translationOffset = LayoutPoint()); |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
676 | 669 |
677 unsigned m_visibleContentStatusDirty : 1; | 670 unsigned m_visibleContentStatusDirty : 1; |
678 unsigned m_hasVisibleContent : 1; | 671 unsigned m_hasVisibleContent : 1; |
679 unsigned m_visibleDescendantStatusDirty : 1; | 672 unsigned m_visibleDescendantStatusDirty : 1; |
680 unsigned m_hasVisibleDescendant : 1; | 673 unsigned m_hasVisibleDescendant : 1; |
681 | 674 |
682 unsigned m_hasVisibleNonLayerContent : 1; | 675 unsigned m_hasVisibleNonLayerContent : 1; |
683 | 676 |
684 unsigned m_isPaginated : 1; // If we think this layer is split by a multi-co
lumn ancestor, then this bit will be set. | 677 unsigned m_isPaginated : 1; // If we think this layer is split by a multi-co
lumn ancestor, then this bit will be set. |
685 | 678 |
686 #if ENABLE(ASSERT) | |
687 unsigned m_needsPositionUpdate : 1; | |
688 #endif | |
689 | |
690 unsigned m_3DTransformedDescendantStatusDirty : 1; | 679 unsigned m_3DTransformedDescendantStatusDirty : 1; |
691 // Set on a stacking context layer that has 3D descendants anywhere | 680 // Set on a stacking context layer that has 3D descendants anywhere |
692 // in a preserves3D hierarchy. Hint to do 3D-aware hit testing. | 681 // in a preserves3D hierarchy. Hint to do 3D-aware hit testing. |
693 unsigned m_has3DTransformedDescendant : 1; | 682 unsigned m_has3DTransformedDescendant : 1; |
694 | 683 |
695 unsigned m_containsDirtyOverlayScrollbars : 1; | 684 unsigned m_containsDirtyOverlayScrollbars : 1; |
696 | 685 |
697 unsigned m_hasFilterInfo : 1; | 686 unsigned m_hasFilterInfo : 1; |
698 unsigned m_needsAncestorDependentCompositingInputsUpdate : 1; | 687 unsigned m_needsAncestorDependentCompositingInputsUpdate : 1; |
699 unsigned m_needsDescendantDependentCompositingInputsUpdate : 1; | 688 unsigned m_needsDescendantDependentCompositingInputsUpdate : 1; |
(...skipping 17 matching lines...) Expand all Loading... |
717 unsigned m_viewportConstrainedNotCompositedReason : ViewportConstrainedNotCo
mpositedReasonBits; | 706 unsigned m_viewportConstrainedNotCompositedReason : ViewportConstrainedNotCo
mpositedReasonBits; |
718 | 707 |
719 RenderLayerModelObject* m_renderer; | 708 RenderLayerModelObject* m_renderer; |
720 | 709 |
721 RenderLayer* m_parent; | 710 RenderLayer* m_parent; |
722 RenderLayer* m_previous; | 711 RenderLayer* m_previous; |
723 RenderLayer* m_next; | 712 RenderLayer* m_next; |
724 RenderLayer* m_first; | 713 RenderLayer* m_first; |
725 RenderLayer* m_last; | 714 RenderLayer* m_last; |
726 | 715 |
727 // Our current relative position offset. | |
728 LayoutSize m_offsetForInFlowPosition; | |
729 | |
730 // Our (x,y) coordinates are in our parent layer's coordinate space. | |
731 LayoutPoint m_location; | |
732 | |
733 // The layer's width/height | |
734 IntSize m_size; | |
735 | |
736 // Cached normal flow values for absolute positioned elements with static le
ft/top values. | 716 // Cached normal flow values for absolute positioned elements with static le
ft/top values. |
737 LayoutUnit m_staticInlinePosition; | 717 LayoutUnit m_staticInlinePosition; |
738 LayoutUnit m_staticBlockPosition; | 718 LayoutUnit m_staticBlockPosition; |
739 | 719 |
740 OwnPtr<TransformationMatrix> m_transform; | 720 OwnPtr<TransformationMatrix> m_transform; |
741 | 721 |
742 // Pointer to the enclosing RenderLayer that caused us to be paginated. It i
s 0 if we are not paginated. | 722 // Pointer to the enclosing RenderLayer that caused us to be paginated. It i
s 0 if we are not paginated. |
743 RenderLayer* m_enclosingPaginationLayer; | 723 RenderLayer* m_enclosingPaginationLayer; |
744 | 724 |
745 // These compositing reasons are updated whenever style changes, not while u
pdating compositing layers. | 725 // These compositing reasons are updated whenever style changes, not while u
pdating compositing layers. |
(...skipping 24 matching lines...) Expand all Loading... |
770 | 750 |
771 } // namespace blink | 751 } // namespace blink |
772 | 752 |
773 #ifndef NDEBUG | 753 #ifndef NDEBUG |
774 // Outside the WebCore namespace for ease of invocation from gdb. | 754 // Outside the WebCore namespace for ease of invocation from gdb. |
775 void showLayerTree(const blink::RenderLayer*); | 755 void showLayerTree(const blink::RenderLayer*); |
776 void showLayerTree(const blink::RenderObject*); | 756 void showLayerTree(const blink::RenderObject*); |
777 #endif | 757 #endif |
778 | 758 |
779 #endif // RenderLayer_h | 759 #endif // RenderLayer_h |
OLD | NEW |