void RenderSnapshottedPlugIn::paintReplacedSnapshot(PaintInfo& paintInfo, const LayoutPoint& paintOffset) { RefPtr<Image> image = m_snapshotResource->image(); if (!image || image->isNull()) return; paintSnapshot(image.get(), paintInfo, paintOffset); }
void RenderSnapshottedPlugIn::paintReplacedSnapshotWithLabel(PaintInfo& paintInfo, const LayoutPoint& paintOffset) { if (contentBoxRect().isEmpty()) return; if (!plugInImageElement()->hovered() && m_showReason == UserMousedOver) return; m_showedLabelOnce = true; LayoutRect rect = contentBoxRect(); LayoutRect labelRect = tryToFitStartLabel(LabelSizeLarge, rect); LabelSize size = NoLabel; if (!labelRect.isEmpty()) size = LabelSizeLarge; else { labelRect = tryToFitStartLabel(LabelSizeSmall, rect); if (!labelRect.isEmpty()) size = LabelSizeSmall; else return; } Image* labelImage = startLabelImage(size); if (!labelImage) return; RefPtr<Image> snapshotImage = m_snapshotResource->image(); if (!snapshotImage || snapshotImage->isNull()) return; #if ENABLE(FILTERS) RefPtr<Image> blurredSnapshotImage = m_snapshotResourceForLabel->image(); if (!blurredSnapshotImage || blurredSnapshotImage->isNull()) { blurredSnapshotImage = snapshottedPluginImageForLabelDisplay(snapshotImage, labelRect); m_snapshotResourceForLabel->setCachedImage(new CachedImage(blurredSnapshotImage.get())); } snapshotImage = blurredSnapshotImage; #endif paintSnapshot(snapshotImage.get(), paintInfo, paintOffset); // Remember that the labelRect includes the label inset, so we need to adjust for it. paintInfo.context->drawImage(labelImage, ColorSpaceDeviceRGB, IntRect(roundedIntPoint(paintOffset + labelRect.location() - IntSize(startLabelInset, startLabelInset)), roundedIntSize(labelRect.size() + IntSize(2 * startLabelInset, 2 * startLabelInset))), labelImage->rect()); }
void RenderSnapshottedPlugIn::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset) { if (paintInfo.phase == PaintPhaseForeground && plugInImageElement().displayState() < HTMLPlugInElement::Restarting) { paintSnapshot(paintInfo, paintOffset); } PaintPhase newPhase = (paintInfo.phase == PaintPhaseChildOutlines) ? PaintPhaseOutline : paintInfo.phase; newPhase = (newPhase == PaintPhaseChildBlockBackgrounds) ? PaintPhaseChildBlockBackground : newPhase; PaintInfo paintInfoForChild(paintInfo); paintInfoForChild.phase = newPhase; paintInfoForChild.updateSubtreePaintRootForChildren(this); for (auto& child : childrenOfType<RenderBox>(*this)) { LayoutPoint childPoint = flipForWritingModeForChild(&child, paintOffset); if (!child.hasSelfPaintingLayer() && !child.isFloating()) child.paint(paintInfoForChild, childPoint); } RenderEmbeddedObject::paint(paintInfo, paintOffset); }