// Copyright 2017 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_SCOPED_PAINT_STATE_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_SCOPED_PAINT_STATE_H_ #include <optional> #include "third_party/blink/renderer/core/layout/layout_box.h" #include "third_party/blink/renderer/core/layout/physical_box_fragment.h" #include "third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker.h" #include "third_party/blink/renderer/core/paint/paint_info.h" #include "third_party/blink/renderer/platform/graphics/paint/scoped_paint_chunk_properties.h" namespace blink { // Adjusts paint chunk properties, cull rect of the input PaintInfo and finds // the paint offset for a LayoutObject or an NGPaintFragment before painting. // // Normally a Paint(const PaintInfo&) method creates an ScopedPaintState and // holds it in the stack, and pass its GetPaintInfo() and PaintOffset() to the // other PaintXXX() methods that paint different parts of the object. // // Each object create its own ScopedPaintState, so ScopedPaintState created for // one object won't be passed to another object. Instead, PaintInfo is passed // between objects. class ScopedPaintState { … }; // Adjusts paint chunk properties, cull rect and paint offset of the input // ScopedPaintState for box contents if needed. class ScopedBoxContentsPaintState : public ScopedPaintState { … }; } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_SCOPED_PAINT_STATE_H_