void TableCellPainter::paintBoxDecorationBackground(const PaintInfo& paintInfo, const LayoutPoint& paintOffset) { if (!paintInfo.shouldPaintWithinRoot(&m_layoutTableCell)) return; LayoutTable* table = m_layoutTableCell.table(); if (!table->collapseBorders() && m_layoutTableCell.style()->emptyCells() == HIDE && !m_layoutTableCell.firstChild()) return; bool needsToPaintBorder = m_layoutTableCell.styleRef().hasBorder() && !table->collapseBorders(); if (!m_layoutTableCell.hasBackground() && !m_layoutTableCell.styleRef().boxShadow() && !needsToPaintBorder) return; LayoutRect paintRect = paintBounds(paintOffset, DoNotAddOffsetFromParent); LayoutObjectDrawingRecorder recorder(*paintInfo.context, m_layoutTableCell, DisplayItem::BoxDecorationBackground, pixelSnappedIntRect(paintRect)); if (recorder.canUseCachedDrawing()) return; BoxPainter::paintBoxShadow(paintInfo, paintRect, m_layoutTableCell.styleRef(), Normal); // Paint our cell background. paintBackgroundsBehindCell(paintInfo, paintOffset, &m_layoutTableCell); BoxPainter::paintBoxShadow(paintInfo, paintRect, m_layoutTableCell.styleRef(), Inset); if (!needsToPaintBorder) return; BoxPainter::paintBorder(m_layoutTableCell, paintInfo, paintRect, m_layoutTableCell.styleRef()); }
void TableCellPainter::paintBoxDecorationBackground(const PaintInfo& paintInfo, const LayoutPoint& paintOffset) { LayoutTable* table = m_layoutTableCell.table(); if (!table->collapseBorders() && m_layoutTableCell.style()->emptyCells() == EmptyCellsHide && !m_layoutTableCell.firstChild()) return; bool needsToPaintBorder = m_layoutTableCell.styleRef().hasBorderDecoration() && !table->collapseBorders(); if (!m_layoutTableCell.hasBackground() && !m_layoutTableCell.styleRef().boxShadow() && !needsToPaintBorder) return; if (LayoutObjectDrawingRecorder::useCachedDrawingIfPossible(paintInfo.context, m_layoutTableCell, DisplayItem::BoxDecorationBackground)) return; LayoutRect visualOverflowRect = m_layoutTableCell.visualOverflowRect(); visualOverflowRect.moveBy(paintOffset); // TODO(chrishtr): the pixel-snapping here is likely incorrect. LayoutObjectDrawingRecorder recorder(paintInfo.context, m_layoutTableCell, DisplayItem::BoxDecorationBackground, pixelSnappedIntRect(visualOverflowRect)); LayoutRect paintRect = paintBounds(paintOffset, DoNotAddOffsetFromParent); BoxPainter::paintBoxShadow(paintInfo, paintRect, m_layoutTableCell.styleRef(), Normal); // Paint our cell background. paintBackgroundsBehindCell(paintInfo, paintOffset, &m_layoutTableCell, DisplayItem::BoxDecorationBackground); BoxPainter::paintBoxShadow(paintInfo, paintRect, m_layoutTableCell.styleRef(), Inset); if (!needsToPaintBorder) return; BoxPainter::paintBorder(m_layoutTableCell, paintInfo, paintRect, m_layoutTableCell.styleRef()); }
void TableCellPainter::paintBoxDecorationBackground(const PaintInfo& paintInfo, const LayoutPoint& paintOffset) { if (!paintInfo.shouldPaintWithinRoot(&m_renderTableCell)) return; RenderTable* tableElt = m_renderTableCell.table(); if (!tableElt->collapseBorders() && m_renderTableCell.style()->emptyCells() == HIDE && !m_renderTableCell.firstChild()) return; LayoutRect paintRect = paintBounds(paintOffset, DoNotAddOffsetFromParent); RenderDrawingRecorder recorder(paintInfo.context, m_renderTableCell, paintInfo.phase, pixelSnappedIntRect(paintRect)); if (recorder.canUseCachedDrawing()) return; BoxPainter::paintBoxShadow(paintInfo, paintRect, m_renderTableCell.style(), Normal); // Paint our cell background. paintBackgroundsBehindCell(paintInfo, paintOffset, &m_renderTableCell); BoxPainter::paintBoxShadow(paintInfo, paintRect, m_renderTableCell.style(), Inset); if (!m_renderTableCell.style()->hasBorder() || tableElt->collapseBorders()) return; BoxPainter::paintBorder(m_renderTableCell, paintInfo, paintRect, m_renderTableCell.style()); }