PassRefPtr<WebImage> InjectedBundleNodeHandle::renderedImage(SnapshotOptions options) { Frame* frame = m_node->document().frame(); if (!frame) return nullptr; FrameView* frameView = frame->view(); if (!frameView) return nullptr; m_node->document().updateLayout(); RenderObject* renderer = m_node->renderer(); if (!renderer) return nullptr; LayoutRect topLevelRect; IntRect paintingRect = snappedIntRect(renderer->paintingRootRect(topLevelRect)); frameView->setNodeToDraw(m_node.ptr()); auto image = imageForRect(frameView, paintingRect, options); frameView->setNodeToDraw(0); return image; }
PassRefPtr<WebImage> InjectedBundleNodeHandle::renderedImage(SnapshotOptions options) { Document* document = m_node->document(); if (!document) return 0; Frame* frame = document->frame(); if (!frame) return 0; FrameView* frameView = frame->view(); if (!frameView) return 0; document->updateLayout(); RenderObject* renderer = m_node->renderer(); if (!renderer) return 0; LayoutRect topLevelRect; IntRect paintingRect = pixelSnappedIntRect(renderer->paintingRootRect(topLevelRect)); frameView->setNodeToDraw(m_node.get()); RefPtr<WebImage> image = imageForRect(frameView, paintingRect, options); frameView->setNodeToDraw(0); return image.release(); }
/*! Render the element into \a painter . */ void QWebElement::render(QPainter* painter) { WebCore::Element* e = m_element; Document* doc = e ? e->document() : 0; if (!doc) return; Frame* frame = doc->frame(); if (!frame || !frame->view() || !frame->contentRenderer()) return; FrameView* view = frame->view(); view->layoutIfNeededRecursive(); IntRect rect = e->getRect(); if (rect.size().isEmpty()) return; GraphicsContext context(painter); context.save(); context.translate(-rect.x(), -rect.y()); view->setNodeToDraw(e); view->paintContents(&context, rect); view->setNodeToDraw(0); context.restore(); }