Ejemplo n.º 1
0
inline void CachedImage::createImage()
{
    // Create the image if it doesn't yet exist.
    if (m_image)
        return;

#if USE(CG) && !USE(WEBKIT_IMAGE_DECODERS)
    else if (m_response.mimeType() == "application/pdf")
        m_image = PDFDocumentImage::create(this);
#endif
    else if (m_response.mimeType() == "image/svg+xml") {
        RefPtr<SVGImage> svgImage = SVGImage::create(*this, url());
        m_svgImageCache = std::make_unique<SVGImageCache>(svgImage.get());
        m_image = svgImage.release();
    } else {
        m_image = BitmapImage::create(this);
        downcast<BitmapImage>(*m_image).setAllowSubsampling(m_loader && m_loader->frameLoader()->frame().settings().imageSubsamplingEnabled());
    }

    if (m_image) {
        // Send queued container size requests.
        if (m_image->usesContainerSize()) {
            for (auto& request : m_pendingContainerSizeRequests)
                setContainerSizeForRenderer(request.key, request.value.first, request.value.second);
        }
        m_pendingContainerSizeRequests.clear();
    }
}
Ejemplo n.º 2
0
inline void CachedImage::createImage()
{
    // Create the image if it doesn't yet exist.
    if (m_image)
        return;

#if USE(CG) && !USE(WEBKIT_IMAGE_DECODERS)
    else if (m_response.mimeType() == "application/pdf")
        m_image = PDFDocumentImage::create(this);
#endif
    else if (m_response.mimeType() == "image/svg+xml") {
        auto svgImage = SVGImage::create(*this, url());
        m_svgImageCache = std::make_unique<SVGImageCache>(svgImage.ptr());
        m_image = WTFMove(svgImage);
    } else
        m_image = BitmapImage::create(this);

    if (m_image) {
        // Send queued container size requests.
        if (m_image->usesContainerSize()) {
            for (auto& request : m_pendingContainerSizeRequests)
                setContainerSizeForRenderer(request.key, request.value.first, request.value.second);
        }
        m_pendingContainerSizeRequests.clear();
    }
}