Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "core/paint/TableRowPainter.h" | 5 #include "core/paint/TableRowPainter.h" |
| 6 | 6 |
| 7 #include "core/layout/LayoutTableCell.h" | 7 #include "core/layout/LayoutTableCell.h" |
| 8 #include "core/layout/LayoutTableRow.h" | 8 #include "core/layout/LayoutTableRow.h" |
| 9 #include "core/paint/BoxPainter.h" | 9 #include "core/paint/BoxPainter.h" |
| 10 #include "core/paint/LayoutObjectDrawingRecorder.h" | 10 #include "core/paint/LayoutObjectDrawingRecorder.h" |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 25 PaintOutline(paint_info, paint_offset); | 25 PaintOutline(paint_info, paint_offset); |
| 26 if (paint_info.phase == kPaintPhaseSelfOutlineOnly) | 26 if (paint_info.phase == kPaintPhaseSelfOutlineOnly) |
| 27 return; | 27 return; |
| 28 | 28 |
| 29 if (ShouldPaintSelfBlockBackground(paint_info.phase)) { | 29 if (ShouldPaintSelfBlockBackground(paint_info.phase)) { |
| 30 const auto* section = layout_table_row_.Section(); | 30 const auto* section = layout_table_row_.Section(); |
| 31 LayoutRect cull_rect = LayoutRect(paint_info.GetCullRect().rect_); | 31 LayoutRect cull_rect = LayoutRect(paint_info.GetCullRect().rect_); |
| 32 cull_rect.MoveBy(layout_table_row_.PhysicalLocation(section)); | 32 cull_rect.MoveBy(layout_table_row_.PhysicalLocation(section)); |
| 33 LayoutRect logical_rect_in_section = | 33 LayoutRect logical_rect_in_section = |
| 34 section->LogicalRectForWritingModeAndDirection(cull_rect); | 34 section->LogicalRectForWritingModeAndDirection(cull_rect); |
| 35 CellSpan dirtied_columns = | 35 CellSpan dirtied_rows; |
| 36 section->DirtiedEffectiveColumns(logical_rect_in_section); | 36 CellSpan dirtied_columns; |
| 37 section->DirtiedRowsAndEffectiveColumns(logical_rect_in_section, | |
| 38 dirtied_rows, dirtied_columns); | |
|
wkorman
2017/05/16 20:30:11
If we passed pointers rather than refs, could pass
Xianzhu
2017/05/17 00:33:21
This is the only case that only one output is need
| |
| 37 PaintBoxDecorationBackground(paint_info, paint_offset, dirtied_columns); | 39 PaintBoxDecorationBackground(paint_info, paint_offset, dirtied_columns); |
| 38 } | 40 } |
| 39 | 41 |
| 40 if (paint_info.phase == kPaintPhaseSelfBlockBackgroundOnly) | 42 if (paint_info.phase == kPaintPhaseSelfBlockBackgroundOnly) |
| 41 return; | 43 return; |
| 42 | 44 |
| 43 PaintInfo paint_info_for_cells = paint_info.ForDescendants(); | 45 PaintInfo paint_info_for_cells = paint_info.ForDescendants(); |
| 44 for (LayoutTableCell* cell = layout_table_row_.FirstCell(); cell; | 46 for (LayoutTableCell* cell = layout_table_row_.FirstCell(); cell; |
| 45 cell = cell->NextCell()) { | 47 cell = cell->NextCell()) { |
| 46 if (!cell->HasSelfPaintingLayer()) | 48 if (!cell->HasSelfPaintingLayer()) |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 89 bounds); | 91 bounds); |
| 90 LayoutRect paint_rect(adjusted_paint_offset, layout_table_row_.Size()); | 92 LayoutRect paint_rect(adjusted_paint_offset, layout_table_row_.Size()); |
| 91 | 93 |
| 92 if (has_box_shadow) { | 94 if (has_box_shadow) { |
| 93 BoxPainter::PaintNormalBoxShadow(paint_info, paint_rect, | 95 BoxPainter::PaintNormalBoxShadow(paint_info, paint_rect, |
| 94 layout_table_row_.StyleRef()); | 96 layout_table_row_.StyleRef()); |
| 95 } | 97 } |
| 96 | 98 |
| 97 if (has_background) { | 99 if (has_background) { |
| 98 PaintInfo paint_info_for_cells = paint_info.ForDescendants(); | 100 PaintInfo paint_info_for_cells = paint_info.ForDescendants(); |
| 99 for (auto c = dirtied_columns.Start(); c < dirtied_columns.end(); c++) { | 101 for (auto c = dirtied_columns.Start(); c < dirtied_columns.End(); c++) { |
| 100 if (const auto* cell = | 102 if (const auto* cell = |
| 101 section->OriginatingCellAt(layout_table_row_.RowIndex(), c)) | 103 section->OriginatingCellAt(layout_table_row_.RowIndex(), c)) |
| 102 PaintBackgroundBehindCell(*cell, paint_info_for_cells, paint_offset); | 104 PaintBackgroundBehindCell(*cell, paint_info_for_cells, paint_offset); |
| 103 } | 105 } |
| 104 } | 106 } |
| 105 | 107 |
| 106 if (has_box_shadow) { | 108 if (has_box_shadow) { |
| 107 // TODO(wangxianzhu): Calculate the inset shadow bounds by insetting | 109 // TODO(wangxianzhu): Calculate the inset shadow bounds by insetting |
| 108 // paintRect by half widths of collapsed borders. | 110 // paintRect by half widths of collapsed borders. |
| 109 BoxPainter::PaintInsetBoxShadow(paint_info, paint_rect, | 111 BoxPainter::PaintInsetBoxShadow(paint_info, paint_rect, |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 122 // flipped blocks direction. | 124 // flipped blocks direction. |
| 123 if (!layout_table_row_.HasSelfPaintingLayer()) { | 125 if (!layout_table_row_.HasSelfPaintingLayer()) { |
| 124 cell_point = layout_table_row_.Section()->FlipForWritingModeForChild( | 126 cell_point = layout_table_row_.Section()->FlipForWritingModeForChild( |
| 125 &cell, cell_point); | 127 &cell, cell_point); |
| 126 } | 128 } |
| 127 TableCellPainter(cell).PaintContainerBackgroundBehindCell( | 129 TableCellPainter(cell).PaintContainerBackgroundBehindCell( |
| 128 paint_info, cell_point, layout_table_row_); | 130 paint_info, cell_point, layout_table_row_); |
| 129 } | 131 } |
| 130 | 132 |
| 131 } // namespace blink | 133 } // namespace blink |
| OLD | NEW |