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 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 #include "core/paint/PaintLayerFragment.h" | 53 #include "core/paint/PaintLayerFragment.h" |
54 #include "core/paint/PaintLayerPainter.h" | 54 #include "core/paint/PaintLayerPainter.h" |
55 #include "core/paint/PaintLayerReflectionInfo.h" | 55 #include "core/paint/PaintLayerReflectionInfo.h" |
56 #include "core/paint/PaintLayerScrollableArea.h" | 56 #include "core/paint/PaintLayerScrollableArea.h" |
57 #include "core/paint/PaintLayerStackingNode.h" | 57 #include "core/paint/PaintLayerStackingNode.h" |
58 #include "core/paint/PaintLayerStackingNodeIterator.h" | 58 #include "core/paint/PaintLayerStackingNodeIterator.h" |
59 #include "platform/graphics/CompositingReasons.h" | 59 #include "platform/graphics/CompositingReasons.h" |
60 #include "platform/graphics/SquashingDisallowedReasons.h" | 60 #include "platform/graphics/SquashingDisallowedReasons.h" |
61 #include "public/platform/WebBlendMode.h" | 61 #include "public/platform/WebBlendMode.h" |
62 #include "wtf/Allocator.h" | 62 #include "wtf/Allocator.h" |
63 #include "wtf/PtrUtil.h" | 63 #include "wtf/OwnPtr.h" |
64 #include <memory> | |
65 | 64 |
66 namespace blink { | 65 namespace blink { |
67 | 66 |
68 class CompositedLayerMapping; | 67 class CompositedLayerMapping; |
69 class ComputedStyle; | 68 class ComputedStyle; |
70 class FilterEffectBuilder; | 69 class FilterEffectBuilder; |
71 class FilterOperations; | 70 class FilterOperations; |
72 class HitTestRequest; | 71 class HitTestRequest; |
73 class HitTestResult; | 72 class HitTestResult; |
74 class HitTestingTransformState; | 73 class HitTestingTransformState; |
(...skipping 18 matching lines...) Expand all Loading... |
93 TemporaryChange<CompositingQueryMode> m_disabler; | 92 TemporaryChange<CompositingQueryMode> m_disabler; |
94 }; | 93 }; |
95 | 94 |
96 struct PaintLayerRareData { | 95 struct PaintLayerRareData { |
97 PaintLayerRareData(); | 96 PaintLayerRareData(); |
98 ~PaintLayerRareData(); | 97 ~PaintLayerRareData(); |
99 | 98 |
100 // Our current relative position offset. | 99 // Our current relative position offset. |
101 LayoutSize offsetForInFlowPosition; | 100 LayoutSize offsetForInFlowPosition; |
102 | 101 |
103 std::unique_ptr<TransformationMatrix> transform; | 102 OwnPtr<TransformationMatrix> transform; |
104 | 103 |
105 // Pointer to the enclosing Layer that caused us to be paginated. It is 0 if
we are not paginated. | 104 // Pointer to the enclosing Layer that caused us to be paginated. It is 0 if
we are not paginated. |
106 // | 105 // |
107 // See LayoutMultiColumnFlowThread and | 106 // See LayoutMultiColumnFlowThread and |
108 // https://sites.google.com/a/chromium.org/dev/developers/design-documents/m
ulti-column-layout | 107 // https://sites.google.com/a/chromium.org/dev/developers/design-documents/m
ulti-column-layout |
109 // for more information about the multicol implementation. It's important to
understand the | 108 // for more information about the multicol implementation. It's important to
understand the |
110 // difference between flow thread coordinates and visual coordinates when wo
rking with multicol | 109 // difference between flow thread coordinates and visual coordinates when wo
rking with multicol |
111 // in Layer, since Layer is one of the few places where we have to worry abo
ut the | 110 // in Layer, since Layer is one of the few places where we have to worry abo
ut the |
112 // visual ones. Internally we try to use flow-thread coordinates whenever po
ssible. | 111 // visual ones. Internally we try to use flow-thread coordinates whenever po
ssible. |
113 PaintLayer* enclosingPaginationLayer; | 112 PaintLayer* enclosingPaginationLayer; |
114 | 113 |
115 // These compositing reasons are updated whenever style changes, not while u
pdating compositing layers. | 114 // These compositing reasons are updated whenever style changes, not while u
pdating compositing layers. |
116 // They should not be used to infer the compositing state of this layer. | 115 // They should not be used to infer the compositing state of this layer. |
117 CompositingReasons potentialCompositingReasonsFromStyle; | 116 CompositingReasons potentialCompositingReasonsFromStyle; |
118 | 117 |
119 // Once computed, indicates all that a layer needs to become composited usin
g the CompositingReasons enum bitfield. | 118 // Once computed, indicates all that a layer needs to become composited usin
g the CompositingReasons enum bitfield. |
120 CompositingReasons compositingReasons; | 119 CompositingReasons compositingReasons; |
121 | 120 |
122 // This captures reasons why a paint layer might be forced to be separately | 121 // This captures reasons why a paint layer might be forced to be separately |
123 // composited rather than sharing a backing with another layer. | 122 // composited rather than sharing a backing with another layer. |
124 SquashingDisallowedReasons squashingDisallowedReasons; | 123 SquashingDisallowedReasons squashingDisallowedReasons; |
125 | 124 |
126 // If the layer paints into its own backings, this keeps track of the backin
gs. | 125 // If the layer paints into its own backings, this keeps track of the backin
gs. |
127 // It's nullptr if the layer is not composited or paints into grouped backin
g. | 126 // It's nullptr if the layer is not composited or paints into grouped backin
g. |
128 std::unique_ptr<CompositedLayerMapping> compositedLayerMapping; | 127 OwnPtr<CompositedLayerMapping> compositedLayerMapping; |
129 | 128 |
130 // If the layer paints into grouped backing (i.e. squashed), this points to
the | 129 // If the layer paints into grouped backing (i.e. squashed), this points to
the |
131 // grouped CompositedLayerMapping. It's null if the layer is not composited
or | 130 // grouped CompositedLayerMapping. It's null if the layer is not composited
or |
132 // paints into its own backing. | 131 // paints into its own backing. |
133 CompositedLayerMapping* groupedMapping; | 132 CompositedLayerMapping* groupedMapping; |
134 | 133 |
135 std::unique_ptr<PaintLayerReflectionInfo> reflectionInfo; | 134 OwnPtr<PaintLayerReflectionInfo> reflectionInfo; |
136 | 135 |
137 Persistent<PaintLayerFilterInfo> filterInfo; | 136 Persistent<PaintLayerFilterInfo> filterInfo; |
138 | 137 |
139 // The accumulated subpixel offset of a composited layer's composited bounds
compared to absolute coordinates. | 138 // The accumulated subpixel offset of a composited layer's composited bounds
compared to absolute coordinates. |
140 LayoutSize subpixelAccumulation; | 139 LayoutSize subpixelAccumulation; |
141 }; | 140 }; |
142 | 141 |
143 // PaintLayer is an old object that handles lots of unrelated operations. | 142 // PaintLayer is an old object that handles lots of unrelated operations. |
144 // | 143 // |
145 // We want it to die at some point and be replaced by more focused objects, | 144 // We want it to die at some point and be replaced by more focused objects, |
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
689 | 688 |
690 bool needsPaintPhaseDescendantBlockBackgrounds() const { return m_needsPaint
PhaseDescendantBlockBackgrounds; } | 689 bool needsPaintPhaseDescendantBlockBackgrounds() const { return m_needsPaint
PhaseDescendantBlockBackgrounds; } |
691 void setNeedsPaintPhaseDescendantBlockBackgrounds() { ASSERT(isSelfPaintingL
ayer()); m_needsPaintPhaseDescendantBlockBackgrounds = true; } | 690 void setNeedsPaintPhaseDescendantBlockBackgrounds() { ASSERT(isSelfPaintingL
ayer()); m_needsPaintPhaseDescendantBlockBackgrounds = true; } |
692 | 691 |
693 PaintTiming* paintTiming(); | 692 PaintTiming* paintTiming(); |
694 | 693 |
695 ClipRectsCache* clipRectsCache() const { return m_clipRectsCache.get(); } | 694 ClipRectsCache* clipRectsCache() const { return m_clipRectsCache.get(); } |
696 ClipRectsCache& ensureClipRectsCache() const | 695 ClipRectsCache& ensureClipRectsCache() const |
697 { | 696 { |
698 if (!m_clipRectsCache) | 697 if (!m_clipRectsCache) |
699 m_clipRectsCache = wrapUnique(new ClipRectsCache); | 698 m_clipRectsCache = adoptPtr(new ClipRectsCache); |
700 return *m_clipRectsCache; | 699 return *m_clipRectsCache; |
701 } | 700 } |
702 void clearClipRectsCache() const { m_clipRectsCache.reset(); } | 701 void clearClipRectsCache() const { m_clipRectsCache.reset(); } |
703 | 702 |
704 void dirty3DTransformedDescendantStatus(); | 703 void dirty3DTransformedDescendantStatus(); |
705 // Both updates the status, and returns true if descendants of this have 3d. | 704 // Both updates the status, and returns true if descendants of this have 3d. |
706 bool update3DTransformedDescendantStatus(); | 705 bool update3DTransformedDescendantStatus(); |
707 bool has3DTransformedDescendant() const { DCHECK(!m_3DTransformedDescendantS
tatusDirty); return m_has3DTransformedDescendant; } | 706 bool has3DTransformedDescendant() const { DCHECK(!m_3DTransformedDescendantS
tatusDirty); return m_has3DTransformedDescendant; } |
708 | 707 |
709 #if CHECK_DISPLAY_ITEM_CLIENT_ALIVENESS | 708 #if CHECK_DISPLAY_ITEM_CLIENT_ALIVENESS |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
776 | 775 |
777 void updatePaginationRecursive(bool needsPaginationUpdate = false); | 776 void updatePaginationRecursive(bool needsPaginationUpdate = false); |
778 void clearPaginationRecursive(); | 777 void clearPaginationRecursive(); |
779 | 778 |
780 void setNeedsRepaintInternal(); | 779 void setNeedsRepaintInternal(); |
781 void markCompositingContainerChainForNeedsRepaint(); | 780 void markCompositingContainerChainForNeedsRepaint(); |
782 | 781 |
783 PaintLayerRareData& ensureRareData() | 782 PaintLayerRareData& ensureRareData() |
784 { | 783 { |
785 if (!m_rareData) | 784 if (!m_rareData) |
786 m_rareData = wrapUnique(new PaintLayerRareData); | 785 m_rareData = adoptPtr(new PaintLayerRareData); |
787 return *m_rareData; | 786 return *m_rareData; |
788 } | 787 } |
789 | 788 |
790 void mergeNeedsPaintPhaseFlagsFrom(const PaintLayer& layer) | 789 void mergeNeedsPaintPhaseFlagsFrom(const PaintLayer& layer) |
791 { | 790 { |
792 m_needsPaintPhaseDescendantOutlines |= layer.m_needsPaintPhaseDescendant
Outlines; | 791 m_needsPaintPhaseDescendantOutlines |= layer.m_needsPaintPhaseDescendant
Outlines; |
793 m_needsPaintPhaseFloat |= layer.m_needsPaintPhaseFloat; | 792 m_needsPaintPhaseFloat |= layer.m_needsPaintPhaseFloat; |
794 m_needsPaintPhaseDescendantBlockBackgrounds |= layer.m_needsPaintPhaseDe
scendantBlockBackgrounds; | 793 m_needsPaintPhaseDescendantBlockBackgrounds |= layer.m_needsPaintPhaseDe
scendantBlockBackgrounds; |
795 } | 794 } |
796 | 795 |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
876 IntSize m_size; | 875 IntSize m_size; |
877 | 876 |
878 // Cached normal flow values for absolute positioned elements with static le
ft/top values. | 877 // Cached normal flow values for absolute positioned elements with static le
ft/top values. |
879 LayoutUnit m_staticInlinePosition; | 878 LayoutUnit m_staticInlinePosition; |
880 LayoutUnit m_staticBlockPosition; | 879 LayoutUnit m_staticBlockPosition; |
881 | 880 |
882 // The first ancestor having a non visible overflow. | 881 // The first ancestor having a non visible overflow. |
883 const PaintLayer* m_ancestorOverflowLayer; | 882 const PaintLayer* m_ancestorOverflowLayer; |
884 | 883 |
885 AncestorDependentCompositingInputs m_ancestorDependentCompositingInputs; | 884 AncestorDependentCompositingInputs m_ancestorDependentCompositingInputs; |
886 std::unique_ptr<RareAncestorDependentCompositingInputs> m_rareAncestorDepend
entCompositingInputs; | 885 OwnPtr<RareAncestorDependentCompositingInputs> m_rareAncestorDependentCompos
itingInputs; |
887 | 886 |
888 Persistent<PaintLayerScrollableArea> m_scrollableArea; | 887 Persistent<PaintLayerScrollableArea> m_scrollableArea; |
889 | 888 |
890 mutable std::unique_ptr<ClipRectsCache> m_clipRectsCache; | 889 mutable OwnPtr<ClipRectsCache> m_clipRectsCache; |
891 | 890 |
892 std::unique_ptr<PaintLayerStackingNode> m_stackingNode; | 891 OwnPtr<PaintLayerStackingNode> m_stackingNode; |
893 | 892 |
894 IntSize m_previousScrollOffsetAccumulationForPainting; | 893 IntSize m_previousScrollOffsetAccumulationForPainting; |
895 RefPtr<ClipRects> m_previousPaintingClipRects; | 894 RefPtr<ClipRects> m_previousPaintingClipRects; |
896 LayoutRect m_previousPaintDirtyRect; | 895 LayoutRect m_previousPaintDirtyRect; |
897 | 896 |
898 std::unique_ptr<PaintLayerRareData> m_rareData; | 897 OwnPtr<PaintLayerRareData> m_rareData; |
899 | 898 |
900 DISPLAY_ITEM_CACHE_STATUS_IMPLEMENTATION | 899 DISPLAY_ITEM_CACHE_STATUS_IMPLEMENTATION |
901 }; | 900 }; |
902 | 901 |
903 } // namespace blink | 902 } // namespace blink |
904 | 903 |
905 #ifndef NDEBUG | 904 #ifndef NDEBUG |
906 // Outside the WebCore namespace for ease of invocation from gdb. | 905 // Outside the WebCore namespace for ease of invocation from gdb. |
907 void showLayerTree(const blink::PaintLayer*); | 906 void showLayerTree(const blink::PaintLayer*); |
908 void showLayerTree(const blink::LayoutObject*); | 907 void showLayerTree(const blink::LayoutObject*); |
909 #endif | 908 #endif |
910 | 909 |
911 #endif // Layer_h | 910 #endif // Layer_h |
OLD | NEW |