Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutObject.h

Issue 2872423002: Tweak PaintInvalidationReasons (Closed)
Patch Set: Rebaseline-cl Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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. 6 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc.
7 * All rights reserved. 7 * All rights reserved.
8 * Copyright (C) 2009 Google Inc. All rights reserved. 8 * Copyright (C) 2009 Google Inc. All rights reserved.
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 1643 matching lines...) Expand 10 before | Expand all | Expand 10 after
1654 1654
1655 // Called when the previous visual rect(s) is no longer valid. 1655 // Called when the previous visual rect(s) is no longer valid.
1656 virtual void ClearPreviousVisualRects(); 1656 virtual void ClearPreviousVisualRects();
1657 1657
1658 const LayoutPoint& PaintOffset() const { return paint_offset_; } 1658 const LayoutPoint& PaintOffset() const { return paint_offset_; }
1659 1659
1660 PaintInvalidationReason FullPaintInvalidationReason() const { 1660 PaintInvalidationReason FullPaintInvalidationReason() const {
1661 return bitfields_.FullPaintInvalidationReason(); 1661 return bitfields_.FullPaintInvalidationReason();
1662 } 1662 }
1663 bool ShouldDoFullPaintInvalidation() const { 1663 bool ShouldDoFullPaintInvalidation() const {
1664 return bitfields_.FullPaintInvalidationReason() != kPaintInvalidationNone; 1664 return bitfields_.FullPaintInvalidationReason() !=
1665 PaintInvalidationReason::kNone;
1665 } 1666 }
1666 void SetShouldDoFullPaintInvalidation( 1667 void SetShouldDoFullPaintInvalidation(
1667 PaintInvalidationReason = kPaintInvalidationFull); 1668 PaintInvalidationReason = PaintInvalidationReason::kFull);
1668 void SetShouldDoFullPaintInvalidationWithoutGeometryChange( 1669 void SetShouldDoFullPaintInvalidationWithoutGeometryChange(
1669 PaintInvalidationReason = kPaintInvalidationFull); 1670 PaintInvalidationReason = PaintInvalidationReason::kFull);
1670 void ClearShouldDoFullPaintInvalidation() { 1671 void ClearShouldDoFullPaintInvalidation() {
1671 bitfields_.SetFullPaintInvalidationReason(kPaintInvalidationNone); 1672 bitfields_.SetFullPaintInvalidationReason(PaintInvalidationReason::kNone);
1672 } 1673 }
1673 1674
1674 void ClearPaintInvalidationFlags(); 1675 void ClearPaintInvalidationFlags();
1675 1676
1676 bool MayNeedPaintInvalidation() const { 1677 bool MayNeedPaintInvalidation() const {
1677 return bitfields_.MayNeedPaintInvalidation(); 1678 return bitfields_.MayNeedPaintInvalidation();
1678 } 1679 }
1679 void SetMayNeedPaintInvalidation(); 1680 void SetMayNeedPaintInvalidation();
1680 void SetMayNeedPaintInvalidationWithoutGeometryChange(); 1681 void SetMayNeedPaintInvalidationWithoutGeometryChange();
1681 1682
(...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after
2295 has_previous_selection_visual_rect_(false), 2296 has_previous_selection_visual_rect_(false),
2296 needs_paint_property_update_(true), 2297 needs_paint_property_update_(true),
2297 subtree_needs_paint_property_update_(true), 2298 subtree_needs_paint_property_update_(true),
2298 descendant_needs_paint_property_update_(true), 2299 descendant_needs_paint_property_update_(true),
2299 background_changed_since_last_paint_invalidation_(false), 2300 background_changed_since_last_paint_invalidation_(false),
2300 outline_may_be_affected_by_descendants_(false), 2301 outline_may_be_affected_by_descendants_(false),
2301 previous_outline_may_be_affected_by_descendants_(false), 2302 previous_outline_may_be_affected_by_descendants_(false),
2302 positioned_state_(kIsStaticallyPositioned), 2303 positioned_state_(kIsStaticallyPositioned),
2303 selection_state_(SelectionNone), 2304 selection_state_(SelectionNone),
2304 background_obscuration_state_(kBackgroundObscurationStatusInvalid), 2305 background_obscuration_state_(kBackgroundObscurationStatusInvalid),
2305 full_paint_invalidation_reason_(kPaintInvalidationNone) {} 2306 full_paint_invalidation_reason_(
2307 static_cast<unsigned>(PaintInvalidationReason::kNone)) {}
2306 2308
2307 // Self needs layout means that this layout object is marked for a full 2309 // Self needs layout means that this layout object is marked for a full
2308 // layout. This is the default layout but it is expensive as it recomputes 2310 // layout. This is the default layout but it is expensive as it recomputes
2309 // everything. For CSS boxes, this includes the width (laying out the line 2311 // everything. For CSS boxes, this includes the width (laying out the line
2310 // boxes again), the margins (due to block collapsing margins), the 2312 // boxes again), the margins (due to block collapsing margins), the
2311 // positions, the height and the potential overflow. 2313 // positions, the height and the potential overflow.
2312 ADD_BOOLEAN_BITFIELD(self_needs_layout_, SelfNeedsLayout); 2314 ADD_BOOLEAN_BITFIELD(self_needs_layout_, SelfNeedsLayout);
2313 2315
2314 // A positioned movement layout is a specialized type of layout used on 2316 // A positioned movement layout is a specialized type of layout used on
2315 // positioned objects that only visually moved. This layout is used when 2317 // positioned objects that only visually moved. This layout is used when
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
2502 unsigned unused_bits_ : 4; 2504 unsigned unused_bits_ : 4;
2503 2505
2504 private: 2506 private:
2505 // This is the cached 'position' value of this object 2507 // This is the cached 'position' value of this object
2506 // (see ComputedStyle::position). 2508 // (see ComputedStyle::position).
2507 unsigned positioned_state_ : 2; // PositionedState 2509 unsigned positioned_state_ : 2; // PositionedState
2508 unsigned selection_state_ : 3; // SelectionState 2510 unsigned selection_state_ : 3; // SelectionState
2509 // Mutable for getter which lazily update this field. 2511 // Mutable for getter which lazily update this field.
2510 mutable unsigned 2512 mutable unsigned
2511 background_obscuration_state_ : 2; // BackgroundObscurationState 2513 background_obscuration_state_ : 2; // BackgroundObscurationState
2514
2512 unsigned full_paint_invalidation_reason_ : 5; // PaintInvalidationReason 2515 unsigned full_paint_invalidation_reason_ : 5; // PaintInvalidationReason
2516 static_assert(static_cast<unsigned>(PaintInvalidationReason::kMax) <
2517 (1u << 5),
2518 "PaintInvalidationReason should fit in the bit field");
2513 2519
2514 public: 2520 public:
2515 bool IsOutOfFlowPositioned() const { 2521 bool IsOutOfFlowPositioned() const {
2516 return positioned_state_ == kIsOutOfFlowPositioned; 2522 return positioned_state_ == kIsOutOfFlowPositioned;
2517 } 2523 }
2518 bool IsRelPositioned() const { 2524 bool IsRelPositioned() const {
2519 return positioned_state_ == kIsRelativelyPositioned; 2525 return positioned_state_ == kIsRelativelyPositioned;
2520 } 2526 }
2521 bool IsStickyPositioned() const { 2527 bool IsStickyPositioned() const {
2522 return positioned_state_ == kIsStickyPositioned; 2528 return positioned_state_ == kIsStickyPositioned;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
2570 ALWAYS_INLINE void SetBackgroundObscurationState( 2576 ALWAYS_INLINE void SetBackgroundObscurationState(
2571 BackgroundObscurationState s) const { 2577 BackgroundObscurationState s) const {
2572 background_obscuration_state_ = s; 2578 background_obscuration_state_ = s;
2573 } 2579 }
2574 2580
2575 PaintInvalidationReason FullPaintInvalidationReason() const { 2581 PaintInvalidationReason FullPaintInvalidationReason() const {
2576 return static_cast<PaintInvalidationReason>( 2582 return static_cast<PaintInvalidationReason>(
2577 full_paint_invalidation_reason_); 2583 full_paint_invalidation_reason_);
2578 } 2584 }
2579 void SetFullPaintInvalidationReason(PaintInvalidationReason reason) { 2585 void SetFullPaintInvalidationReason(PaintInvalidationReason reason) {
2580 full_paint_invalidation_reason_ = reason; 2586 full_paint_invalidation_reason_ = static_cast<unsigned>(reason);
2581 } 2587 }
2582 }; 2588 };
2583 2589
2584 #undef ADD_BOOLEAN_BITFIELD 2590 #undef ADD_BOOLEAN_BITFIELD
2585 2591
2586 LayoutObjectBitfields bitfields_; 2592 LayoutObjectBitfields bitfields_;
2587 2593
2588 void SetSelfNeedsLayout(bool b) { bitfields_.SetSelfNeedsLayout(b); } 2594 void SetSelfNeedsLayout(bool b) { bitfields_.SetSelfNeedsLayout(b); }
2589 void SetNeedsPositionedMovementLayout(bool b) { 2595 void SetNeedsPositionedMovementLayout(bool b) {
2590 bitfields_.SetNeedsPositionedMovementLayout(b); 2596 bitfields_.SetNeedsPositionedMovementLayout(b);
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
2829 CORE_EXPORT void showLineTree(const blink::LayoutObject*); 2835 CORE_EXPORT void showLineTree(const blink::LayoutObject*);
2830 CORE_EXPORT void showLayoutTree(const blink::LayoutObject* object1); 2836 CORE_EXPORT void showLayoutTree(const blink::LayoutObject* object1);
2831 // We don't make object2 an optional parameter so that showLayoutTree 2837 // We don't make object2 an optional parameter so that showLayoutTree
2832 // can be called from gdb easily. 2838 // can be called from gdb easily.
2833 CORE_EXPORT void showLayoutTree(const blink::LayoutObject* object1, 2839 CORE_EXPORT void showLayoutTree(const blink::LayoutObject* object1,
2834 const blink::LayoutObject* object2); 2840 const blink::LayoutObject* object2);
2835 2841
2836 #endif 2842 #endif
2837 2843
2838 #endif // LayoutObject_h 2844 #endif // LayoutObject_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698