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 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 110 InvalidationFull, | 110 InvalidationFull, |
| 111 InvalidationBorderFitLines, | 111 InvalidationBorderFitLines, |
| 112 InvalidationBorderBoxChange, | 112 InvalidationBorderBoxChange, |
| 113 InvalidationBoundsChange, | 113 InvalidationBoundsChange, |
| 114 InvalidationLocationChange, | 114 InvalidationLocationChange, |
| 115 InvalidationBecameVisible, | 115 InvalidationBecameVisible, |
| 116 InvalidationBecameInvisible, | 116 InvalidationBecameInvisible, |
| 117 InvalidationScroll, | 117 InvalidationScroll, |
| 118 InvalidationSelection, | 118 InvalidationSelection, |
| 119 InvalidationLayer, | 119 InvalidationLayer, |
| 120 InvalidationRendererInsertion, | |
| 120 InvalidationRendererRemoval, | 121 InvalidationRendererRemoval, |
| 121 InvalidationPaintRectangle | 122 InvalidationPaintRectangle |
| 122 }; | 123 }; |
| 123 | 124 |
| 124 const int caretWidth = 1; | 125 const int caretWidth = 1; |
| 125 | 126 |
| 126 struct AnnotatedRegionValue { | 127 struct AnnotatedRegionValue { |
| 127 bool operator==(const AnnotatedRegionValue& o) const | 128 bool operator==(const AnnotatedRegionValue& o) const |
| 128 { | 129 { |
| 129 return draggable == o.draggable && bounds == o.bounds; | 130 return draggable == o.draggable && bounds == o.bounds; |
| (...skipping 696 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 826 virtual CursorDirective getCursor(const LayoutPoint&, Cursor&) const; | 827 virtual CursorDirective getCursor(const LayoutPoint&, Cursor&) const; |
| 827 | 828 |
| 828 struct AppliedTextDecoration { | 829 struct AppliedTextDecoration { |
| 829 Color color; | 830 Color color; |
| 830 TextDecorationStyle style; | 831 TextDecorationStyle style; |
| 831 AppliedTextDecoration() : color(Color::transparent), style(TextDecoratio nStyleSolid) { } | 832 AppliedTextDecoration() : color(Color::transparent), style(TextDecoratio nStyleSolid) { } |
| 832 }; | 833 }; |
| 833 | 834 |
| 834 void getTextDecorations(unsigned decorations, AppliedTextDecoration& underli ne, AppliedTextDecoration& overline, AppliedTextDecoration& linethrough, bool qu irksMode = false, bool firstlineStyle = false); | 835 void getTextDecorations(unsigned decorations, AppliedTextDecoration& underli ne, AppliedTextDecoration& overline, AppliedTextDecoration& linethrough, bool qu irksMode = false, bool firstlineStyle = false); |
| 835 | 836 |
| 836 void setHadPaintInvalidation(); | |
| 837 bool hadPaintInvalidation() const; | |
| 838 | |
| 839 // Return the RenderLayerModelObject in the container chain which is respons ible for painting this object, or 0 | 837 // Return the RenderLayerModelObject in the container chain which is respons ible for painting this object, or 0 |
| 840 // if painting is root-relative. This is the container that should be passed to the 'forPaintInvalidation' | 838 // if painting is root-relative. This is the container that should be passed to the 'forPaintInvalidation' |
| 841 // methods. | 839 // methods. |
| 842 const RenderLayerModelObject* containerForPaintInvalidation() const; | 840 const RenderLayerModelObject* containerForPaintInvalidation() const; |
| 843 const RenderLayerModelObject* adjustCompositedContainerForSpecialAncestors(c onst RenderLayerModelObject* paintInvalidationContainer) const; | 841 const RenderLayerModelObject* adjustCompositedContainerForSpecialAncestors(c onst RenderLayerModelObject* paintInvalidationContainer) const; |
| 844 bool isPaintInvalidationContainer() const; | 842 bool isPaintInvalidationContainer() const; |
| 845 | 843 |
| 846 LayoutRect computePaintInvalidationRect() | 844 LayoutRect computePaintInvalidationRect() |
| 847 { | 845 { |
| 848 return computePaintInvalidationRect(containerForPaintInvalidation()); | 846 return computePaintInvalidationRect(containerForPaintInvalidation()); |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1010 bool isRelayoutBoundaryForInspector() const; | 1008 bool isRelayoutBoundaryForInspector() const; |
| 1011 | 1009 |
| 1012 // The previous paint invalidation rect in the object's previous paint backi ng. | 1010 // The previous paint invalidation rect in the object's previous paint backi ng. |
| 1013 const LayoutRect& previousPaintInvalidationRect() const { return m_previousP aintInvalidationRect; } | 1011 const LayoutRect& previousPaintInvalidationRect() const { return m_previousP aintInvalidationRect; } |
| 1014 void setPreviousPaintInvalidationRect(const LayoutRect& rect) { m_previousPa intInvalidationRect = rect; } | 1012 void setPreviousPaintInvalidationRect(const LayoutRect& rect) { m_previousPa intInvalidationRect = rect; } |
| 1015 | 1013 |
| 1016 // The previous position of the top-left corner of the object in its previou s paint backing. | 1014 // The previous position of the top-left corner of the object in its previou s paint backing. |
| 1017 const LayoutPoint& previousPositionFromPaintInvalidationBacking() const { re turn m_previousPositionFromPaintInvalidationBacking; } | 1015 const LayoutPoint& previousPositionFromPaintInvalidationBacking() const { re turn m_previousPositionFromPaintInvalidationBacking; } |
| 1018 void setPreviousPositionFromPaintInvalidationBacking(const LayoutPoint& posi tionFromPaintInvalidationBacking) { m_previousPositionFromPaintInvalidationBacki ng = positionFromPaintInvalidationBacking; } | 1016 void setPreviousPositionFromPaintInvalidationBacking(const LayoutPoint& posi tionFromPaintInvalidationBacking) { m_previousPositionFromPaintInvalidationBacki ng = positionFromPaintInvalidationBacking; } |
| 1019 | 1017 |
| 1020 bool shouldDoFullPaintInvalidation() const { return m_bitfields.shouldDoFull PaintInvalidation(); } | 1018 bool shouldDoFullPaintInvalidation() const { return m_bitfields.fullPaintInv alidationReason() != InvalidationNone; } |
| 1021 void setShouldDoFullPaintInvalidation(bool, MarkingBehavior = MarkContaining BlockChain); | 1019 void setShouldDoFullPaintInvalidation(bool, MarkingBehavior = MarkContaining BlockChain); |
| 1020 void setShouldDoFullPaintInvalidationWithReason(InvalidationReason = Invalid ationFull, MarkingBehavior = MarkContainingBlockChain); | |
|
Julien - ping for review
2014/09/26 17:56:24
I don't think the default InvalidationReason is gi
Xianzhu
2014/09/26 18:36:21
- Removed the default value for InvalidationReason
| |
| 1022 | 1021 |
| 1023 bool shouldInvalidateOverflowForPaint() const { return m_bitfields.shouldInv alidateOverflowForPaint(); } | 1022 bool shouldInvalidateOverflowForPaint() const { return m_bitfields.shouldInv alidateOverflowForPaint(); } |
| 1024 | 1023 |
| 1025 bool shouldDoFullPaintInvalidationIfSelfPaintingLayer() const { return m_bit fields.shouldDoFullPaintInvalidationIfSelfPaintingLayer(); } | 1024 bool shouldDoFullPaintInvalidationIfSelfPaintingLayer() const { return m_bit fields.shouldDoFullPaintInvalidationIfSelfPaintingLayer(); } |
| 1026 void setShouldDoFullPaintInvalidationIfSelfPaintingLayer(bool b) | 1025 void setShouldDoFullPaintInvalidationIfSelfPaintingLayer(bool b) |
| 1027 { | 1026 { |
| 1028 m_bitfields.setShouldDoFullPaintInvalidationIfSelfPaintingLayer(b); | 1027 m_bitfields.setShouldDoFullPaintInvalidationIfSelfPaintingLayer(b); |
| 1029 | 1028 |
| 1030 if (b) | 1029 if (b) |
| 1031 markContainingBlockChainForPaintInvalidation(); | 1030 markContainingBlockChainForPaintInvalidation(); |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1193 class RenderObjectBitfields { | 1192 class RenderObjectBitfields { |
| 1194 enum PositionedState { | 1193 enum PositionedState { |
| 1195 IsStaticallyPositioned = 0, | 1194 IsStaticallyPositioned = 0, |
| 1196 IsRelativelyPositioned = 1, | 1195 IsRelativelyPositioned = 1, |
| 1197 IsOutOfFlowPositioned = 2, | 1196 IsOutOfFlowPositioned = 2, |
| 1198 }; | 1197 }; |
| 1199 | 1198 |
| 1200 public: | 1199 public: |
| 1201 RenderObjectBitfields(Node* node) | 1200 RenderObjectBitfields(Node* node) |
| 1202 : m_selfNeedsLayout(false) | 1201 : m_selfNeedsLayout(false) |
| 1203 , m_shouldDoFullPaintInvalidation(false) | |
| 1204 , m_shouldInvalidateOverflowForPaint(false) | 1202 , m_shouldInvalidateOverflowForPaint(false) |
| 1205 , m_shouldDoFullPaintInvalidationIfSelfPaintingLayer(false) | 1203 , m_shouldDoFullPaintInvalidationIfSelfPaintingLayer(false) |
| 1206 // FIXME: We should remove mayNeedPaintInvalidation once we are able to | 1204 // FIXME: We should remove mayNeedPaintInvalidation once we are able to |
| 1207 // use the other layout flags to detect the same cases. crbug.com/37 0118 | 1205 // use the other layout flags to detect the same cases. crbug.com/37 0118 |
| 1208 , m_mayNeedPaintInvalidation(false) | 1206 , m_mayNeedPaintInvalidation(false) |
| 1209 , m_onlyNeededPositionedMovementLayout(false) | 1207 , m_onlyNeededPositionedMovementLayout(false) |
| 1210 , m_neededLayoutBecauseOfChildren(false) | 1208 , m_neededLayoutBecauseOfChildren(false) |
| 1211 , m_needsPositionedMovementLayout(false) | 1209 , m_needsPositionedMovementLayout(false) |
| 1212 , m_normalChildNeedsLayout(false) | 1210 , m_normalChildNeedsLayout(false) |
| 1213 , m_posChildNeedsLayout(false) | 1211 , m_posChildNeedsLayout(false) |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 1232 , m_ancestorLineBoxDirty(false) | 1230 , m_ancestorLineBoxDirty(false) |
| 1233 , m_layoutDidGetCalled(false) | 1231 , m_layoutDidGetCalled(false) |
| 1234 , m_hasPendingResourceUpdate(false) | 1232 , m_hasPendingResourceUpdate(false) |
| 1235 , m_childrenInline(false) | 1233 , m_childrenInline(false) |
| 1236 , m_hasColumns(false) | 1234 , m_hasColumns(false) |
| 1237 , m_alwaysCreateLineBoxesForRenderInline(false) | 1235 , m_alwaysCreateLineBoxesForRenderInline(false) |
| 1238 , m_positionedState(IsStaticallyPositioned) | 1236 , m_positionedState(IsStaticallyPositioned) |
| 1239 , m_selectionState(SelectionNone) | 1237 , m_selectionState(SelectionNone) |
| 1240 , m_flowThreadState(NotInsideFlowThread) | 1238 , m_flowThreadState(NotInsideFlowThread) |
| 1241 , m_boxDecorationBackgroundState(NoBoxDecorationBackground) | 1239 , m_boxDecorationBackgroundState(NoBoxDecorationBackground) |
| 1240 , m_fullPaintInvalidationReason(InvalidationNone) | |
| 1242 { | 1241 { |
| 1243 } | 1242 } |
| 1244 | 1243 |
| 1245 // 32 bits have been used in the first word, and 11 in the second. | 1244 // 32 bits have been used in the first word, and 11 in the second. |
|
Julien - ping for review
2014/09/26 17:56:24
Let's update the number of remaining bits please!
Xianzhu
2014/09/26 18:36:21
Done.
| |
| 1246 ADD_BOOLEAN_BITFIELD(selfNeedsLayout, SelfNeedsLayout); | 1245 ADD_BOOLEAN_BITFIELD(selfNeedsLayout, SelfNeedsLayout); |
| 1247 ADD_BOOLEAN_BITFIELD(shouldDoFullPaintInvalidation, ShouldDoFullPaintInv alidation); | |
| 1248 ADD_BOOLEAN_BITFIELD(shouldInvalidateOverflowForPaint, ShouldInvalidateO verflowForPaint); | 1246 ADD_BOOLEAN_BITFIELD(shouldInvalidateOverflowForPaint, ShouldInvalidateO verflowForPaint); |
| 1249 ADD_BOOLEAN_BITFIELD(shouldDoFullPaintInvalidationIfSelfPaintingLayer, S houldDoFullPaintInvalidationIfSelfPaintingLayer); | 1247 ADD_BOOLEAN_BITFIELD(shouldDoFullPaintInvalidationIfSelfPaintingLayer, S houldDoFullPaintInvalidationIfSelfPaintingLayer); |
| 1250 ADD_BOOLEAN_BITFIELD(mayNeedPaintInvalidation, MayNeedPaintInvalidation) ; | 1248 ADD_BOOLEAN_BITFIELD(mayNeedPaintInvalidation, MayNeedPaintInvalidation) ; |
| 1251 ADD_BOOLEAN_BITFIELD(onlyNeededPositionedMovementLayout, OnlyNeededPosit ionedMovementLayout); | 1249 ADD_BOOLEAN_BITFIELD(onlyNeededPositionedMovementLayout, OnlyNeededPosit ionedMovementLayout); |
| 1252 ADD_BOOLEAN_BITFIELD(neededLayoutBecauseOfChildren, NeededLayoutBecauseO fChildren); | 1250 ADD_BOOLEAN_BITFIELD(neededLayoutBecauseOfChildren, NeededLayoutBecauseO fChildren); |
| 1253 ADD_BOOLEAN_BITFIELD(needsPositionedMovementLayout, NeedsPositionedMovem entLayout); | 1251 ADD_BOOLEAN_BITFIELD(needsPositionedMovementLayout, NeedsPositionedMovem entLayout); |
| 1254 ADD_BOOLEAN_BITFIELD(normalChildNeedsLayout, NormalChildNeedsLayout); | 1252 ADD_BOOLEAN_BITFIELD(normalChildNeedsLayout, NormalChildNeedsLayout); |
| 1255 ADD_BOOLEAN_BITFIELD(posChildNeedsLayout, PosChildNeedsLayout); | 1253 ADD_BOOLEAN_BITFIELD(posChildNeedsLayout, PosChildNeedsLayout); |
| 1256 ADD_BOOLEAN_BITFIELD(needsSimplifiedNormalFlowLayout, NeedsSimplifiedNor malFlowLayout); | 1254 ADD_BOOLEAN_BITFIELD(needsSimplifiedNormalFlowLayout, NeedsSimplifiedNor malFlowLayout); |
| 1257 ADD_BOOLEAN_BITFIELD(preferredLogicalWidthsDirty, PreferredLogicalWidths Dirty); | 1255 ADD_BOOLEAN_BITFIELD(preferredLogicalWidthsDirty, PreferredLogicalWidths Dirty); |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 1285 ADD_BOOLEAN_BITFIELD(hasColumns, HasColumns); | 1283 ADD_BOOLEAN_BITFIELD(hasColumns, HasColumns); |
| 1286 | 1284 |
| 1287 // from RenderInline | 1285 // from RenderInline |
| 1288 ADD_BOOLEAN_BITFIELD(alwaysCreateLineBoxesForRenderInline, AlwaysCreateL ineBoxesForRenderInline); | 1286 ADD_BOOLEAN_BITFIELD(alwaysCreateLineBoxesForRenderInline, AlwaysCreateL ineBoxesForRenderInline); |
| 1289 | 1287 |
| 1290 private: | 1288 private: |
| 1291 unsigned m_positionedState : 2; // PositionedState | 1289 unsigned m_positionedState : 2; // PositionedState |
| 1292 unsigned m_selectionState : 3; // SelectionState | 1290 unsigned m_selectionState : 3; // SelectionState |
| 1293 unsigned m_flowThreadState : 2; // FlowThreadState | 1291 unsigned m_flowThreadState : 2; // FlowThreadState |
| 1294 unsigned m_boxDecorationBackgroundState : 2; // BoxDecorationBackgroundS tate | 1292 unsigned m_boxDecorationBackgroundState : 2; // BoxDecorationBackgroundS tate |
| 1293 unsigned m_fullPaintInvalidationReason : 4; // InvalidationReason | |
| 1295 | 1294 |
| 1296 public: | 1295 public: |
| 1297 bool isOutOfFlowPositioned() const { return m_positionedState == IsOutOf FlowPositioned; } | 1296 bool isOutOfFlowPositioned() const { return m_positionedState == IsOutOf FlowPositioned; } |
| 1298 bool isRelPositioned() const { return m_positionedState == IsRelativelyP ositioned; } | 1297 bool isRelPositioned() const { return m_positionedState == IsRelativelyP ositioned; } |
| 1299 bool isPositioned() const { return m_positionedState != IsStaticallyPosi tioned; } | 1298 bool isPositioned() const { return m_positionedState != IsStaticallyPosi tioned; } |
| 1300 | 1299 |
| 1301 void setPositionedState(int positionState) | 1300 void setPositionedState(int positionState) |
| 1302 { | 1301 { |
| 1303 // This mask maps FixedPosition and AbsolutePosition to IsOutOfFlowP ositioned, saving one bit. | 1302 // This mask maps FixedPosition and AbsolutePosition to IsOutOfFlowP ositioned, saving one bit. |
| 1304 m_positionedState = static_cast<PositionedState>(positionState & 0x3 ); | 1303 m_positionedState = static_cast<PositionedState>(positionState & 0x3 ); |
| 1305 } | 1304 } |
| 1306 void clearPositionedState() { m_positionedState = StaticPosition; } | 1305 void clearPositionedState() { m_positionedState = StaticPosition; } |
| 1307 | 1306 |
| 1308 ALWAYS_INLINE SelectionState selectionState() const { return static_cast <SelectionState>(m_selectionState); } | 1307 ALWAYS_INLINE SelectionState selectionState() const { return static_cast <SelectionState>(m_selectionState); } |
| 1309 ALWAYS_INLINE void setSelectionState(SelectionState selectionState) { m_ selectionState = selectionState; } | 1308 ALWAYS_INLINE void setSelectionState(SelectionState selectionState) { m_ selectionState = selectionState; } |
| 1310 | 1309 |
| 1311 ALWAYS_INLINE FlowThreadState flowThreadState() const { return static_ca st<FlowThreadState>(m_flowThreadState); } | 1310 ALWAYS_INLINE FlowThreadState flowThreadState() const { return static_ca st<FlowThreadState>(m_flowThreadState); } |
| 1312 ALWAYS_INLINE void setFlowThreadState(FlowThreadState flowThreadState) { m_flowThreadState = flowThreadState; } | 1311 ALWAYS_INLINE void setFlowThreadState(FlowThreadState flowThreadState) { m_flowThreadState = flowThreadState; } |
| 1313 | 1312 |
| 1314 ALWAYS_INLINE BoxDecorationBackgroundState boxDecorationBackgroundState( ) const { return static_cast<BoxDecorationBackgroundState>(m_boxDecorationBackgr oundState); } | 1313 ALWAYS_INLINE BoxDecorationBackgroundState boxDecorationBackgroundState( ) const { return static_cast<BoxDecorationBackgroundState>(m_boxDecorationBackgr oundState); } |
| 1315 ALWAYS_INLINE void setBoxDecorationBackgroundState(BoxDecorationBackgrou ndState s) { m_boxDecorationBackgroundState = s; } | 1314 ALWAYS_INLINE void setBoxDecorationBackgroundState(BoxDecorationBackgrou ndState s) { m_boxDecorationBackgroundState = s; } |
| 1315 | |
| 1316 InvalidationReason fullPaintInvalidationReason() const { return static_c ast<InvalidationReason>(m_fullPaintInvalidationReason); } | |
| 1317 void setFullPaintInvalidationReason(InvalidationReason reason) | |
| 1318 { | |
| 1319 ASSERT(reason != InvalidationIncremental); | |
| 1320 m_fullPaintInvalidationReason = reason; | |
| 1321 } | |
| 1316 }; | 1322 }; |
| 1317 | 1323 |
| 1318 #undef ADD_BOOLEAN_BITFIELD | 1324 #undef ADD_BOOLEAN_BITFIELD |
| 1319 | 1325 |
| 1320 RenderObjectBitfields m_bitfields; | 1326 RenderObjectBitfields m_bitfields; |
| 1321 | 1327 |
| 1322 void setSelfNeedsLayout(bool b) { m_bitfields.setSelfNeedsLayout(b); } | 1328 void setSelfNeedsLayout(bool b) { m_bitfields.setSelfNeedsLayout(b); } |
| 1323 void setNeedsPositionedMovementLayout(bool b) { m_bitfields.setNeedsPosition edMovementLayout(b); } | 1329 void setNeedsPositionedMovementLayout(bool b) { m_bitfields.setNeedsPosition edMovementLayout(b); } |
| 1324 void setNormalChildNeedsLayout(bool b) { m_bitfields.setNormalChildNeedsLayo ut(b); } | 1330 void setNormalChildNeedsLayout(bool b) { m_bitfields.setNormalChildNeedsLayo ut(b); } |
| 1325 void setPosChildNeedsLayout(bool b) { m_bitfields.setPosChildNeedsLayout(b); } | 1331 void setPosChildNeedsLayout(bool b) { m_bitfields.setPosChildNeedsLayout(b); } |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1557 void showTree(const blink::RenderObject*); | 1563 void showTree(const blink::RenderObject*); |
| 1558 void showLineTree(const blink::RenderObject*); | 1564 void showLineTree(const blink::RenderObject*); |
| 1559 void showRenderTree(const blink::RenderObject* object1); | 1565 void showRenderTree(const blink::RenderObject* object1); |
| 1560 // We don't make object2 an optional parameter so that showRenderTree | 1566 // We don't make object2 an optional parameter so that showRenderTree |
| 1561 // can be called from gdb easily. | 1567 // can be called from gdb easily. |
| 1562 void showRenderTree(const blink::RenderObject* object1, const blink::RenderObjec t* object2); | 1568 void showRenderTree(const blink::RenderObject* object1, const blink::RenderObjec t* object2); |
| 1563 | 1569 |
| 1564 #endif | 1570 #endif |
| 1565 | 1571 |
| 1566 #endif // RenderObject_h | 1572 #endif // RenderObject_h |
| OLD | NEW |