// Copyright 2021 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_CULL_RECT_UPDATER_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_CULL_RECT_UPDATER_H_ #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/platform/graphics/paint/cull_rect.h" #include "third_party/blink/renderer/platform/graphics/paint/property_tree_state.h" #include "third_party/blink/renderer/platform/heap/persistent.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" namespace blink { class ViewTransitionSupplement; class FragmentData; class LayoutObject; class PaintLayer; struct PaintPropertiesChangeInfo; // This class is used for updating the cull rects of PaintLayer fragments (see: // |FragmentData::cull_rect_| and |FragmentData::contents_cull_rect_|. // Cull rects are used as an optimization to limit painting to areas "near" the // viewport. This update should happen during the PrePaint lifecycle stage. // // Dirty bits (see: |PaintLayer::NeedsCullRectUpdate()| and // PaintLayer::DescendantNeedsCullRectUpdate()|) are used to optimize this // update, and are cleared at the end. class CORE_EXPORT CullRectUpdater { … }; // Used when painting with a custom top-level cull rect, e.g. when printing a // page. It temporarily overrides the cull rects on the starting layer and // descendant PaintLayers if needed, and restores the original cull rects when // leaving this scope. class CORE_EXPORT OverriddenCullRectScope { … }; } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_CULL_RECT_UPDATER_H_