Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / paint / TableRowPainter.cpp
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
3 // found in the LICENSE file.
4
5 #include "config.h"
6 #include "core/paint/TableRowPainter.h"
7
8 #include "core/rendering/GraphicsContextAnnotator.h"
9 #include "core/rendering/PaintInfo.h"
10 #include "core/rendering/RenderTableCell.h"
11 #include "core/rendering/RenderTableRow.h"
12
13 namespace blink {
14
15 void TableRowPainter::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset)
16 {
17     ASSERT(m_renderTableRow.hasSelfPaintingLayer());
18     ANNOTATE_GRAPHICS_CONTEXT(paintInfo, &m_renderTableRow);
19
20     paintOutlineForRowIfNeeded(paintInfo, paintOffset);
21     for (RenderTableCell* cell = m_renderTableRow.firstCell(); cell; cell = cell->nextCell()) {
22         // Paint the row background behind the cell.
23         if (paintInfo.phase == PaintPhaseBlockBackground || paintInfo.phase == PaintPhaseChildBlockBackground)
24             cell->paintBackgroundsBehindCell(paintInfo, paintOffset, &m_renderTableRow);
25         if (!cell->hasSelfPaintingLayer())
26             cell->paint(paintInfo, paintOffset);
27     }
28 }
29
30 void TableRowPainter::paintOutlineForRowIfNeeded(PaintInfo& paintInfo, const LayoutPoint& paintOffset)
31 {
32     LayoutPoint adjustedPaintOffset = paintOffset + m_renderTableRow.location();
33     PaintPhase paintPhase = paintInfo.phase;
34     if ((paintPhase == PaintPhaseOutline || paintPhase == PaintPhaseSelfOutline) && m_renderTableRow.style()->visibility() == VISIBLE)
35         m_renderTableRow.paintOutline(paintInfo, LayoutRect(adjustedPaintOffset, m_renderTableRow.size()));
36 }
37
38 } // namespace blink