void RenderRegion::paintReplaced(PaintInfo& paintInfo, const LayoutPoint& paintOffset) { // Delegate painting of content in region to RenderFlowThread. if (!m_flowThread || !isValid()) return; setRegionObjectsRegionStyle(); m_flowThread->paintIntoRegion(paintInfo, this, LayoutPoint(paintOffset.x() + borderLeft() + paddingLeft(), paintOffset.y() + borderTop() + paddingTop())); restoreRegionObjectsOriginalStyle(); }
void RenderMultiColumnSet::paintReplaced(PaintInfo& paintInfo, const LayoutPoint& paintOffset) { // FIXME: RenderRegions are replaced elements right now and so they only paint in the foreground phase. // Columns should technically respect phases and allow for background/float/foreground overlap etc., just like // RenderBlocks do. We can't correct this, however, until RenderRegions are changed to actually be // RenderBlocks. Note this is a pretty minor issue, since the old column implementation clipped columns // anyway, thus making it impossible for them to overlap one another. It's also really unlikely that the columns // would overlap another block. setRegionObjectsRegionStyle(); paintColumnRules(paintInfo, paintOffset); paintColumnContents(paintInfo, paintOffset); restoreRegionObjectsOriginalStyle(); }
void RenderRegion::paintObject(PaintInfo& paintInfo, const LayoutPoint& paintOffset) { if (style()->visibility() != VISIBLE) return; RenderBlock::paintObject(paintInfo, paintOffset); // Delegate painting of content in region to RenderFlowThread. // RenderFlowThread is a self painting layer (being a positioned object) who is painting its children, the collected objects. // Since we do not want to paint the flow thread content multiple times (for each painting phase of the region object), // we allow the flow thread painting only for the selection and the foreground phase. if (!isValid() || (paintInfo.phase != PaintPhaseForeground && paintInfo.phase != PaintPhaseSelection)) return; setRegionObjectsRegionStyle(); m_flowThread->paintFlowThreadPortionInRegion(paintInfo, this, flowThreadPortionRect(), flowThreadPortionOverflowRect(), LayoutPoint(paintOffset.x() + borderLeft() + paddingLeft(), paintOffset.y() + borderTop() + paddingTop())); restoreRegionObjectsOriginalStyle(); }
void RenderRegion::paintObject(PaintInfo& paintInfo, const LayoutPoint& paintOffset) { if (style()->visibility() != VISIBLE) return; RenderBlock::paintObject(paintInfo, paintOffset); if (!isValid()) return; // We do not want to paint a region's contents multiple times (for each paint phase of the region object). // Thus, we only paint the region's contents in certain phases. if (!shouldPaintRegionContentsInPhase(paintInfo.phase)) return; // Delegate the painting of a region's contents to RenderFlowThread. // RenderFlowThread is a self painting layer because it's a positioned object. // RenderFlowThread paints its children, the collected objects. setRegionObjectsRegionStyle(); m_flowThread->paintFlowThreadPortionInRegion(paintInfo, this, flowThreadPortionRect(), flowThreadPortionOverflowRect(), LayoutPoint(paintOffset.x() + borderLeft() + paddingLeft(), paintOffset.y() + borderTop() + paddingTop())); restoreRegionObjectsOriginalStyle(); }