17242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 27242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Use of this source code is governed by a BSD-style license that can be 37242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// found in the LICENSE file. 47242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 57242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "config.h" 67242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/paint/TableRowPainter.h" 77242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 87242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/rendering/GraphicsContextAnnotator.h" 97242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/rendering/PaintInfo.h" 107242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/rendering/RenderTableCell.h" 117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/rendering/RenderTableRow.h" 127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccinamespace blink { 147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 157242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivoid TableRowPainter::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset) 167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{ 177242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci ASSERT(m_renderTableRow.hasSelfPaintingLayer()); 187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci ANNOTATE_GRAPHICS_CONTEXT(paintInfo, &m_renderTableRow); 197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci paintOutlineForRowIfNeeded(paintInfo, paintOffset); 217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci for (RenderTableCell* cell = m_renderTableRow.firstCell(); cell; cell = cell->nextCell()) { 227242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // Paint the row background behind the cell. 237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (paintInfo.phase == PaintPhaseBlockBackground || paintInfo.phase == PaintPhaseChildBlockBackground) 247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci cell->paintBackgroundsBehindCell(paintInfo, paintOffset, &m_renderTableRow); 257242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (!cell->hasSelfPaintingLayer()) 267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci cell->paint(paintInfo, paintOffset); 277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci } 287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} 297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivoid TableRowPainter::paintOutlineForRowIfNeeded(PaintInfo& paintInfo, const LayoutPoint& paintOffset) 317242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{ 327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci LayoutPoint adjustedPaintOffset = paintOffset + m_renderTableRow.location(); 337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PaintPhase paintPhase = paintInfo.phase; 347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if ((paintPhase == PaintPhaseOutline || paintPhase == PaintPhaseSelfOutline) && m_renderTableRow.style()->visibility() == VISIBLE) 357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_renderTableRow.paintOutline(paintInfo, LayoutRect(adjustedPaintOffset, m_renderTableRow.size())); 367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} 377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} // namespace blink 39