blob: eb94e0b206569218d0f63a87067420930696a8bc [file] [log] [blame]
// Copyright 2017 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_NG_NG_FRAGMENT_PAINTER_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_NG_NG_FRAGMENT_PAINTER_H_
#include "third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h"
#include "third_party/blink/renderer/core/paint/object_painter_base.h"
#include "third_party/blink/renderer/platform/wtf/hash_map.h"
namespace blink {
struct PaintInfo;
struct PhysicalOffset;
// Generic fragment painter for paint logic shared between all types of
// fragments. LayoutNG version of ObjectPainter, based on ObjectPainterBase.
class NGFragmentPainter : public ObjectPainterBase {
STACK_ALLOCATED();
public:
NGFragmentPainter(const NGPhysicalBoxFragment& box,
const DisplayItemClient& display_item_client)
: box_fragment_(box), display_item_client_(display_item_client) {}
// |style_to_use| may be from other objects than |box_fragment_|. When
// painting outlines for a block in a continuation chain, its style does not
// have the `outline` property set.
void PaintOutline(const PaintInfo&,
const PhysicalOffset& paint_offset,
const ComputedStyle& style_to_use);
void AddURLRectIfNeeded(const PaintInfo&, const PhysicalOffset& paint_offset);
private:
const NGPhysicalBoxFragment& PhysicalFragment() const {
return box_fragment_;
}
const DisplayItemClient& GetDisplayItemClient() const {
return display_item_client_;
}
const NGPhysicalBoxFragment& box_fragment_;
const DisplayItemClient& display_item_client_;
};
} // namespace blink
#endif