1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
// Copyright 2020 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_TABLE_PAINTERS_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_TABLE_PAINTERS_H_
#include "third_party/blink/renderer/core/layout/physical_box_fragment.h"
#include "third_party/blink/renderer/core/layout/table/table_fragment_data.h"
#include "third_party/blink/renderer/platform/geometry/physical_offset.h"
#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
namespace blink {
class BoxDecorationData;
class LayoutBox;
class PhysicalBoxFragment;
struct PaintInfo;
struct PhysicalRect;
class TablePainter {
STACK_ALLOCATED();
public:
explicit TablePainter(const PhysicalBoxFragment& table_wrapper_fragment)
: fragment_(table_wrapper_fragment) {
DCHECK(fragment_.IsTable());
}
bool WillCheckColumnBackgrounds();
void PaintBoxDecorationBackground(const PaintInfo&,
const PhysicalRect&,
const BoxDecorationData&);
void PaintCollapsedBorders(const PaintInfo&,
const PhysicalOffset&,
const gfx::Rect& visual_rect);
private:
const PhysicalBoxFragment& fragment_;
};
class TableSectionPainter {
STACK_ALLOCATED();
public:
explicit TableSectionPainter(
const PhysicalBoxFragment& table_section_fragment)
: fragment_(table_section_fragment) {
DCHECK(fragment_.IsTableSection());
}
void PaintBoxDecorationBackground(const PaintInfo&,
const PhysicalRect&,
const BoxDecorationData&);
void PaintColumnsBackground(const PaintInfo&,
const PhysicalOffset& section_paint_offset,
const PhysicalRect& columns_paint_rect,
const TableColumnGeometries&);
private:
const PhysicalBoxFragment& fragment_;
};
class TableRowPainter {
STACK_ALLOCATED();
public:
explicit TableRowPainter(const PhysicalBoxFragment& table_row_fragment)
: fragment_(table_row_fragment) {
DCHECK(fragment_.IsTableRow());
}
void PaintBoxDecorationBackground(const PaintInfo&,
const PhysicalRect&,
const BoxDecorationData&);
void PaintTablePartBackgroundIntoCells(
const PaintInfo& paint_info,
const LayoutBox& table_part,
const PhysicalRect& table_part_paint_rect,
const PhysicalOffset& row_paint_offset);
void PaintColumnsBackground(const PaintInfo&,
const PhysicalOffset& row_paint_offset,
const PhysicalRect& columns_paint_rect,
const TableColumnGeometries&);
private:
const PhysicalBoxFragment& fragment_;
};
class TableCellPainter {
STACK_ALLOCATED();
public:
explicit TableCellPainter(const PhysicalBoxFragment& table_cell_fragment)
: fragment_(table_cell_fragment) {}
void PaintBoxDecorationBackground(const PaintInfo&,
const PhysicalRect&,
const BoxDecorationData&);
void PaintBackgroundForTablePart(
const PaintInfo& paint_info,
const LayoutBox& table_part,
const PhysicalRect& table_part_paint_rect,
const PhysicalOffset& table_cell_paint_offset);
private:
const PhysicalBoxFragment& fragment_;
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_TABLE_PAINTERS_H_
|