Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) |
| 3 * (C) 2000 Antti Koivisto (koivisto@kde.org) | 3 * (C) 2000 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2000 Dirk Mueller (mueller@kde.org) | 4 * (C) 2000 Dirk Mueller (mueller@kde.org) |
| 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) | 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) |
| 6 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc. All r ights reserved. | 6 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc. All r ights reserved. |
| 7 * Copyright (C) 2009 Google Inc. All rights reserved. | 7 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 8 * | 8 * |
| 9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
| 10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
| (...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 840 | 840 |
| 841 // Invalidate the paint of a specific subrectangle within a given object. Th e rect |r| is in the object's coordinate space. | 841 // Invalidate the paint of a specific subrectangle within a given object. Th e rect |r| is in the object's coordinate space. |
| 842 void invalidatePaintRectangle(const LayoutRect&) const; | 842 void invalidatePaintRectangle(const LayoutRect&) const; |
| 843 | 843 |
| 844 bool invalidatePaintIfNeeded(const RenderLayerModelObject& paintInvalidation Container, | 844 bool invalidatePaintIfNeeded(const RenderLayerModelObject& paintInvalidation Container, |
| 845 const LayoutRect& oldBounds, const LayoutPoint& oldPositionFromPaintInva lidationContainer, const PaintInvalidationState&); | 845 const LayoutRect& oldBounds, const LayoutPoint& oldPositionFromPaintInva lidationContainer, const PaintInvalidationState&); |
| 846 | 846 |
| 847 // Walk the tree after layout issuing paint invalidations for renderers that have changed or moved, updating bounds that have changed, and clearing paint in validation state. | 847 // Walk the tree after layout issuing paint invalidations for renderers that have changed or moved, updating bounds that have changed, and clearing paint in validation state. |
| 848 virtual void invalidateTreeIfNeeded(const PaintInvalidationState&); | 848 virtual void invalidateTreeIfNeeded(const PaintInvalidationState&); |
| 849 | 849 |
| 850 // For now RenderBoxes and RenderSVGModelObjects know how to invalidate them selves in invalidateTreeIfNeeded. | |
|
dsinclair
2014/07/17 18:36:01
This makes it sound like we're going to make all o
Xianzhu
2014/07/17 21:57:34
Updated crbug.com/394133 and added link here.
| |
| 851 // Other objects (e.g. RenderText, RenderInline, etc) depend on their contai ners for invalidation. | |
| 852 bool invalidatesSelfDuringTreeInvalidation() const { return isBox() || isSVG (); } | |
|
dsinclair
2014/07/17 18:36:01
canSelfInvalidate?
Xianzhu
2014/07/17 21:57:34
As the object just don't self invalidate during in
| |
| 853 | |
| 850 virtual void invalidatePaintForOverflow(); | 854 virtual void invalidatePaintForOverflow(); |
| 851 void invalidatePaintForOverflowIfNeeded(); | 855 void invalidatePaintForOverflowIfNeeded(); |
| 852 | 856 |
| 853 bool checkForPaintInvalidation() const; | 857 bool checkForPaintInvalidation() const; |
| 854 | 858 |
| 855 // Returns the rect that should have paint invalidated whenever this object changes. The rect is in the view's | 859 // Returns the rect that should have paint invalidated whenever this object changes. The rect is in the view's |
| 856 // coordinate space. This method deals with outlines and overflow. | 860 // coordinate space. This method deals with outlines and overflow. |
| 857 LayoutRect absoluteClippedOverflowRect() const | 861 LayoutRect absoluteClippedOverflowRect() const |
| 858 { | 862 { |
| 859 return clippedOverflowRectForPaintInvalidation(0); | 863 return clippedOverflowRectForPaintInvalidation(0); |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 989 | 993 |
| 990 bool isRelayoutBoundaryForInspector() const; | 994 bool isRelayoutBoundaryForInspector() const; |
| 991 | 995 |
| 992 const LayoutRect& previousPaintInvalidationRect() const { return m_previousP aintInvalidationRect; } | 996 const LayoutRect& previousPaintInvalidationRect() const { return m_previousP aintInvalidationRect; } |
| 993 void setPreviousPaintInvalidationRect(const LayoutRect& rect) { m_previousPa intInvalidationRect = rect; } | 997 void setPreviousPaintInvalidationRect(const LayoutRect& rect) { m_previousPa intInvalidationRect = rect; } |
| 994 | 998 |
| 995 const LayoutPoint& previousPositionFromPaintInvalidationContainer() const { return m_previousPositionFromPaintInvalidationContainer; } | 999 const LayoutPoint& previousPositionFromPaintInvalidationContainer() const { return m_previousPositionFromPaintInvalidationContainer; } |
| 996 void setPreviousPositionFromPaintInvalidationContainer(const LayoutPoint& lo cation) { m_previousPositionFromPaintInvalidationContainer = location; } | 1000 void setPreviousPositionFromPaintInvalidationContainer(const LayoutPoint& lo cation) { m_previousPositionFromPaintInvalidationContainer = location; } |
| 997 | 1001 |
| 998 bool shouldDoFullPaintInvalidation() const { return m_bitfields.shouldDoFull PaintInvalidation(); } | 1002 bool shouldDoFullPaintInvalidation() const { return m_bitfields.shouldDoFull PaintInvalidation(); } |
| 999 void setShouldDoFullPaintInvalidation(bool b) { m_bitfields.setShouldDoFullP aintInvalidation(b); } | 1003 void setShouldDoFullPaintInvalidation(bool); |
| 1004 | |
| 1000 bool shouldInvalidateOverflowForPaint() const { return m_bitfields.shouldInv alidateOverflowForPaint(); } | 1005 bool shouldInvalidateOverflowForPaint() const { return m_bitfields.shouldInv alidateOverflowForPaint(); } |
| 1001 | 1006 |
| 1002 bool shouldDoFullPaintInvalidationIfSelfPaintingLayer() const { return m_bit fields.shouldDoFullPaintInvalidationIfSelfPaintingLayer(); } | 1007 bool shouldDoFullPaintInvalidationIfSelfPaintingLayer() const { return m_bit fields.shouldDoFullPaintInvalidationIfSelfPaintingLayer(); } |
| 1003 void setShouldDoFullPaintInvalidationIfSelfPaintingLayer(bool b) { m_bitfiel ds.setShouldDoFullPaintInvalidationIfSelfPaintingLayer(b); } | 1008 void setShouldDoFullPaintInvalidationIfSelfPaintingLayer(bool b) { m_bitfiel ds.setShouldDoFullPaintInvalidationIfSelfPaintingLayer(b); } |
| 1004 | 1009 |
| 1005 bool onlyNeededPositionedMovementLayout() const { return m_bitfields.onlyNee dedPositionedMovementLayout(); } | 1010 bool onlyNeededPositionedMovementLayout() const { return m_bitfields.onlyNee dedPositionedMovementLayout(); } |
| 1006 void setOnlyNeededPositionedMovementLayout(bool b) { m_bitfields.setOnlyNeed edPositionedMovementLayout(b); } | 1011 void setOnlyNeededPositionedMovementLayout(bool b) { m_bitfields.setOnlyNeed edPositionedMovementLayout(b); } |
| 1007 | 1012 |
| 1008 void clearPaintInvalidationState(); | 1013 void clearPaintInvalidationState(); |
| 1009 | 1014 |
| 1010 // layoutDidGetCalled indicates whether this render object was re-laid-out | 1015 // layoutDidGetCalled indicates whether this render object was re-laid-out |
| 1011 // since the last call to setLayoutDidGetCalled(false) on this object. | 1016 // since the last call to setLayoutDidGetCalled(false) on this object. |
| 1012 bool layoutDidGetCalled() { return m_bitfields.layoutDidGetCalled(); } | 1017 bool layoutDidGetCalled() const { return m_bitfields.layoutDidGetCalled(); } |
| 1013 void setLayoutDidGetCalled(bool b) { m_bitfields.setLayoutDidGetCalled(b); } | 1018 void setLayoutDidGetCalled(bool b) { m_bitfields.setLayoutDidGetCalled(b); } |
| 1014 | 1019 |
| 1015 bool mayNeedPaintInvalidation() { return m_bitfields.mayNeedPaintInvalidatio n(); } | 1020 bool mayNeedPaintInvalidation() const { return m_bitfields.mayNeedPaintInval idation(); } |
| 1016 void setMayNeedPaintInvalidation(bool b) | 1021 void setMayNeedPaintInvalidation(bool b) |
| 1017 { | 1022 { |
| 1018 m_bitfields.setMayNeedPaintInvalidation(b); | 1023 m_bitfields.setMayNeedPaintInvalidation(b); |
| 1019 | 1024 |
| 1020 // Make sure our parent is marked as needing invalidation. | 1025 // Make sure our parent is marked as needing invalidation. |
| 1021 if (b && parent() && !parent()->mayNeedPaintInvalidation()) | 1026 if (b && parent() && !parent()->mayNeedPaintInvalidation()) |
| 1022 parent()->setMayNeedPaintInvalidation(b); | 1027 parent()->setMayNeedPaintInvalidation(b); |
| 1023 } | 1028 } |
| 1024 | 1029 |
| 1025 bool neededLayoutBecauseOfChildren() const { return m_bitfields.neededLayout BecauseOfChildren(); } | 1030 bool neededLayoutBecauseOfChildren() const { return m_bitfields.neededLayout BecauseOfChildren(); } |
| 1026 void setNeededLayoutBecauseOfChildren(bool b) { m_bitfields.setNeededLayoutB ecauseOfChildren(b); } | 1031 void setNeededLayoutBecauseOfChildren(bool b) { m_bitfields.setNeededLayoutB ecauseOfChildren(b); } |
| 1027 | 1032 |
| 1028 bool shouldCheckForPaintInvalidation() | 1033 bool shouldCheckForPaintInvalidation() const |
| 1029 { | 1034 { |
| 1030 return layoutDidGetCalled() || mayNeedPaintInvalidation(); | 1035 return m_bitfields.childNeedsPaintInvalidation() || shouldCheckForSelfPa intInvalidation(); |
| 1036 } | |
| 1037 bool shouldCheckForSelfPaintInvalidation() const | |
|
dsinclair
2014/07/17 18:36:01
The naming of these two methods doesn't seem quite
Xianzhu
2014/07/17 21:57:34
How about shouldCheckForTreePaintInvalidation() an
dsinclair
2014/07/18 14:15:04
My preference would be to get the word Tree out of
Xianzhu
2014/07/18 17:15:22
Agreed. Done.
| |
| 1038 { | |
| 1039 return layoutDidGetCalled() || mayNeedPaintInvalidation() || shouldDoFul lPaintInvalidation(); | |
| 1031 } | 1040 } |
| 1032 | 1041 |
| 1033 bool supportsLayoutStateCachedOffsets() const { return !hasColumns() && !has Transform() && !hasReflection() && !style()->isFlippedBlocksWritingMode(); } | 1042 bool supportsLayoutStateCachedOffsets() const { return !hasColumns() && !has Transform() && !hasReflection() && !style()->isFlippedBlocksWritingMode(); } |
| 1034 | 1043 |
| 1035 void setNeedsOverflowRecalcAfterStyleChange(); | 1044 void setNeedsOverflowRecalcAfterStyleChange(); |
| 1036 void markContainingBlocksForOverflowRecalc(); | 1045 void markContainingBlocksForOverflowRecalc(); |
| 1037 | 1046 |
| 1038 protected: | 1047 protected: |
| 1039 inline bool layerCreationAllowedForSubtree() const; | 1048 inline bool layerCreationAllowedForSubtree() const; |
| 1040 | 1049 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1086 // Add hit-test rects for this renderer only to the provided list. layerOffs et is the offset | 1095 // Add hit-test rects for this renderer only to the provided list. layerOffs et is the offset |
| 1087 // of this renderer within the current layer that should be used for each re sult. | 1096 // of this renderer within the current layer that should be used for each re sult. |
| 1088 virtual void computeSelfHitTestRects(Vector<LayoutRect>&, const LayoutPoint& layerOffset) const { }; | 1097 virtual void computeSelfHitTestRects(Vector<LayoutRect>&, const LayoutPoint& layerOffset) const { }; |
| 1089 | 1098 |
| 1090 virtual InvalidationReason getPaintInvalidationReason(const RenderLayerModel Object& paintInvalidationContainer, | 1099 virtual InvalidationReason getPaintInvalidationReason(const RenderLayerModel Object& paintInvalidationContainer, |
| 1091 const LayoutRect& oldBounds, const LayoutPoint& oldPositionFromPaintInva lidationContainer, | 1100 const LayoutRect& oldBounds, const LayoutPoint& oldPositionFromPaintInva lidationContainer, |
| 1092 const LayoutRect& newBounds, const LayoutPoint& newPositionFromPaintInva lidationContainer); | 1101 const LayoutRect& newBounds, const LayoutPoint& newPositionFromPaintInva lidationContainer); |
| 1093 void incrementallyInvalidatePaint(const RenderLayerModelObject& paintInvalid ationContainer, const LayoutRect& oldBounds, const LayoutRect& newBounds); | 1102 void incrementallyInvalidatePaint(const RenderLayerModelObject& paintInvalid ationContainer, const LayoutRect& oldBounds, const LayoutRect& newBounds); |
| 1094 void fullyInvalidatePaint(const RenderLayerModelObject& paintInvalidationCon tainer, InvalidationReason, const LayoutRect& oldBounds, const LayoutRect& newBo unds); | 1103 void fullyInvalidatePaint(const RenderLayerModelObject& paintInvalidationCon tainer, InvalidationReason, const LayoutRect& oldBounds, const LayoutRect& newBo unds); |
| 1095 | 1104 |
| 1105 void setChildNeedsPaintInvalidation(bool b) { m_bitfields.setChildNeedsPaint Invalidation(true); } | |
| 1106 | |
| 1096 private: | 1107 private: |
| 1097 const RenderLayerModelObject* enclosingCompositedContainer() const; | 1108 const RenderLayerModelObject* enclosingCompositedContainer() const; |
| 1098 | 1109 |
| 1099 RenderBlock* containerForFixedPosition(const RenderLayerModelObject* paintIn validationContainer = 0, bool* paintInvalidationContainerSkipped = 0) const; | 1110 RenderBlock* containerForFixedPosition(const RenderLayerModelObject* paintIn validationContainer = 0, bool* paintInvalidationContainerSkipped = 0) const; |
| 1100 | 1111 |
| 1101 RenderFlowThread* locateFlowThreadContainingBlock() const; | 1112 RenderFlowThread* locateFlowThreadContainingBlock() const; |
| 1102 void removeFromRenderFlowThread(); | 1113 void removeFromRenderFlowThread(); |
| 1103 void removeFromRenderFlowThreadRecursive(RenderFlowThread*); | 1114 void removeFromRenderFlowThreadRecursive(RenderFlowThread*); |
| 1104 | 1115 |
| 1105 bool hasImmediateNonWhitespaceTextChildOrPropertiesDependentOnColor() const; | 1116 bool hasImmediateNonWhitespaceTextChildOrPropertiesDependentOnColor() const; |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1147 | 1158 |
| 1148 public: | 1159 public: |
| 1149 RenderObjectBitfields(Node* node) | 1160 RenderObjectBitfields(Node* node) |
| 1150 : m_selfNeedsLayout(false) | 1161 : m_selfNeedsLayout(false) |
| 1151 , m_shouldDoFullPaintInvalidation(false) | 1162 , m_shouldDoFullPaintInvalidation(false) |
| 1152 , m_shouldInvalidateOverflowForPaint(false) | 1163 , m_shouldInvalidateOverflowForPaint(false) |
| 1153 , m_shouldDoFullPaintInvalidationIfSelfPaintingLayer(false) | 1164 , m_shouldDoFullPaintInvalidationIfSelfPaintingLayer(false) |
| 1154 // FIXME: We should remove mayNeedPaintInvalidation once we are able to | 1165 // FIXME: We should remove mayNeedPaintInvalidation once we are able to |
| 1155 // use the other layout flags to detect the same cases. crbug.com/37 0118 | 1166 // use the other layout flags to detect the same cases. crbug.com/37 0118 |
| 1156 , m_mayNeedPaintInvalidation(false) | 1167 , m_mayNeedPaintInvalidation(false) |
| 1168 , m_childNeedsPaintInvalidation(false) | |
| 1157 , m_onlyNeededPositionedMovementLayout(false) | 1169 , m_onlyNeededPositionedMovementLayout(false) |
| 1158 , m_neededLayoutBecauseOfChildren(false) | 1170 , m_neededLayoutBecauseOfChildren(false) |
| 1159 , m_needsPositionedMovementLayout(false) | 1171 , m_needsPositionedMovementLayout(false) |
| 1160 , m_normalChildNeedsLayout(false) | 1172 , m_normalChildNeedsLayout(false) |
| 1161 , m_posChildNeedsLayout(false) | 1173 , m_posChildNeedsLayout(false) |
| 1162 , m_needsSimplifiedNormalFlowLayout(false) | 1174 , m_needsSimplifiedNormalFlowLayout(false) |
| 1163 , m_preferredLogicalWidthsDirty(false) | 1175 , m_preferredLogicalWidthsDirty(false) |
| 1164 , m_floating(false) | 1176 , m_floating(false) |
| 1165 , m_selfNeedsOverflowRecalcAfterStyleChange(false) | 1177 , m_selfNeedsOverflowRecalcAfterStyleChange(false) |
| 1166 , m_childNeedsOverflowRecalcAfterStyleChange(false) | 1178 , m_childNeedsOverflowRecalcAfterStyleChange(false) |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 1188 , m_hasPendingResourceUpdate(false) | 1200 , m_hasPendingResourceUpdate(false) |
| 1189 { | 1201 { |
| 1190 } | 1202 } |
| 1191 | 1203 |
| 1192 // 32 bits have been used in the first word, and 6 in the second. | 1204 // 32 bits have been used in the first word, and 6 in the second. |
| 1193 ADD_BOOLEAN_BITFIELD(selfNeedsLayout, SelfNeedsLayout); | 1205 ADD_BOOLEAN_BITFIELD(selfNeedsLayout, SelfNeedsLayout); |
| 1194 ADD_BOOLEAN_BITFIELD(shouldDoFullPaintInvalidation, ShouldDoFullPaintInv alidation); | 1206 ADD_BOOLEAN_BITFIELD(shouldDoFullPaintInvalidation, ShouldDoFullPaintInv alidation); |
| 1195 ADD_BOOLEAN_BITFIELD(shouldInvalidateOverflowForPaint, ShouldInvalidateO verflowForPaint); | 1207 ADD_BOOLEAN_BITFIELD(shouldInvalidateOverflowForPaint, ShouldInvalidateO verflowForPaint); |
| 1196 ADD_BOOLEAN_BITFIELD(shouldDoFullPaintInvalidationIfSelfPaintingLayer, S houldDoFullPaintInvalidationIfSelfPaintingLayer); | 1208 ADD_BOOLEAN_BITFIELD(shouldDoFullPaintInvalidationIfSelfPaintingLayer, S houldDoFullPaintInvalidationIfSelfPaintingLayer); |
| 1197 ADD_BOOLEAN_BITFIELD(mayNeedPaintInvalidation, MayNeedPaintInvalidation) ; | 1209 ADD_BOOLEAN_BITFIELD(mayNeedPaintInvalidation, MayNeedPaintInvalidation) ; |
| 1210 ADD_BOOLEAN_BITFIELD(childNeedsPaintInvalidation, ChildNeedsPaintInvalid ation); | |
| 1198 ADD_BOOLEAN_BITFIELD(onlyNeededPositionedMovementLayout, OnlyNeededPosit ionedMovementLayout); | 1211 ADD_BOOLEAN_BITFIELD(onlyNeededPositionedMovementLayout, OnlyNeededPosit ionedMovementLayout); |
| 1199 ADD_BOOLEAN_BITFIELD(neededLayoutBecauseOfChildren, NeededLayoutBecauseO fChildren); | 1212 ADD_BOOLEAN_BITFIELD(neededLayoutBecauseOfChildren, NeededLayoutBecauseO fChildren); |
| 1200 ADD_BOOLEAN_BITFIELD(needsPositionedMovementLayout, NeedsPositionedMovem entLayout); | 1213 ADD_BOOLEAN_BITFIELD(needsPositionedMovementLayout, NeedsPositionedMovem entLayout); |
| 1201 ADD_BOOLEAN_BITFIELD(normalChildNeedsLayout, NormalChildNeedsLayout); | 1214 ADD_BOOLEAN_BITFIELD(normalChildNeedsLayout, NormalChildNeedsLayout); |
| 1202 ADD_BOOLEAN_BITFIELD(posChildNeedsLayout, PosChildNeedsLayout); | 1215 ADD_BOOLEAN_BITFIELD(posChildNeedsLayout, PosChildNeedsLayout); |
| 1203 ADD_BOOLEAN_BITFIELD(needsSimplifiedNormalFlowLayout, NeedsSimplifiedNor malFlowLayout); | 1216 ADD_BOOLEAN_BITFIELD(needsSimplifiedNormalFlowLayout, NeedsSimplifiedNor malFlowLayout); |
| 1204 ADD_BOOLEAN_BITFIELD(preferredLogicalWidthsDirty, PreferredLogicalWidths Dirty); | 1217 ADD_BOOLEAN_BITFIELD(preferredLogicalWidthsDirty, PreferredLogicalWidths Dirty); |
| 1205 ADD_BOOLEAN_BITFIELD(floating, Floating); | 1218 ADD_BOOLEAN_BITFIELD(floating, Floating); |
| 1206 ADD_BOOLEAN_BITFIELD(selfNeedsOverflowRecalcAfterStyleChange, SelfNeedsO verflowRecalcAfterStyleChange); | 1219 ADD_BOOLEAN_BITFIELD(selfNeedsOverflowRecalcAfterStyleChange, SelfNeedsO verflowRecalcAfterStyleChange); |
| 1207 ADD_BOOLEAN_BITFIELD(childNeedsOverflowRecalcAfterStyleChange, ChildNeed sOverflowRecalcAfterStyleChange); | 1220 ADD_BOOLEAN_BITFIELD(childNeedsOverflowRecalcAfterStyleChange, ChildNeed sOverflowRecalcAfterStyleChange); |
| (...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1489 void showTree(const WebCore::RenderObject*); | 1502 void showTree(const WebCore::RenderObject*); |
| 1490 void showLineTree(const WebCore::RenderObject*); | 1503 void showLineTree(const WebCore::RenderObject*); |
| 1491 void showRenderTree(const WebCore::RenderObject* object1); | 1504 void showRenderTree(const WebCore::RenderObject* object1); |
| 1492 // We don't make object2 an optional parameter so that showRenderTree | 1505 // We don't make object2 an optional parameter so that showRenderTree |
| 1493 // can be called from gdb easily. | 1506 // can be called from gdb easily. |
| 1494 void showRenderTree(const WebCore::RenderObject* object1, const WebCore::RenderO bject* object2); | 1507 void showRenderTree(const WebCore::RenderObject* object1, const WebCore::RenderO bject* object2); |
| 1495 | 1508 |
| 1496 #endif | 1509 #endif |
| 1497 | 1510 |
| 1498 #endif // RenderObject_h | 1511 #endif // RenderObject_h |
| OLD | NEW |