blob: 12595d0c3350568cd7e7a3499e5e46bd5a6b2a6c [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// 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_OBJECT_PAINTER_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_OBJECT_PAINTER_H_
#include "third_party/blink/renderer/core/paint/object_painter_base.h"
#include "third_party/blink/renderer/core/style/computed_style_constants.h"
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
namespace blink {
class LayoutObject;
struct PaintInfo;
struct PhysicalOffset;
class ObjectPainter : public ObjectPainterBase {
STACK_ALLOCATED();
public:
ObjectPainter(const LayoutObject& layout_object)
: layout_object_(layout_object) {}
void PaintOutline(const PaintInfo&, const PhysicalOffset& paint_offset);
void PaintInlineChildrenOutlines(const PaintInfo&);
void AddPDFURLRectIfNeeded(const PaintInfo&,
const PhysicalOffset& paint_offset);
// Paints the object atomically as if it created a new stacking context, for:
// - inline blocks, inline tables, inline-level replaced elements (Section
// 7.2.1.4 in http://www.w3.org/TR/CSS2/zindex.html#painting-order),
// - non-positioned floating objects (Section 5 in
// http://www.w3.org/TR/CSS2/zindex.html#painting-order),
// - flex items (http://www.w3.org/TR/css-flexbox-1/#painting),
// - grid items (http://www.w3.org/TR/css-grid-1/#z-order),
// - custom scrollbar parts.
// Also see core/paint/README.md.
//
// It is expected that the caller will call this function independent of the
// value of paintInfo.phase, and this function will do atomic paint (for
// kForeground), normal paint (for kSelection and kTextClip) or nothing (other
// paint phases) according to paintInfo.phase.
void PaintAllPhasesAtomically(const PaintInfo&);
const LayoutObject& layout_object_;
};
} // namespace blink
#endif