Changeset 191049 in webkit


Ignore:
Timestamp:
Oct 14, 2015, 11:10:32 AM (10 years ago)
Author:
Simon Fraser
Message:

Change GraphicsContext image-drawing functions to take references
https://bugs.webkit.org/show_bug.cgi?id=150108

Reviewed by Tim Horton and Sam Weinig.

Change GraphicsContext::drawImage(), drawTiledImage(), drawImageBuffer(), clipToImageBuffer()
and isCompatibleWithBuffer() to take references, and adjust calling code, adding
null-checks where necessary.

Source/WebCore:

  • css/CSSCrossfadeValue.cpp:

(WebCore::CSSCrossfadeValue::image):

  • css/CSSFilterImageValue.cpp:

(WebCore::CSSFilterImageValue::image):

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::paint):

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::drawImage):
(WebCore::CanvasRenderingContext2D::compositeBuffer):
(WebCore::drawImageToContext):
(WebCore::CanvasRenderingContext2D::fullCanvasCompositedDrawImage):
(WebCore::CanvasRenderingContext2D::drawTextInternal):

  • html/canvas/CanvasRenderingContext2D.h:
  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::texSubImage2D):

  • html/canvas/WebGLRenderingContext.cpp:

(WebCore::WebGLRenderingContext::texSubImage2D):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::drawImageIntoBuffer):
(WebCore::WebGLRenderingContextBase::texImage2D):

  • html/canvas/WebGLRenderingContextBase.h:
  • platform/ScrollView.cpp:

(WebCore::ScrollView::paintPanScrollIcon):

  • platform/graphics/CrossfadeGeneratedImage.cpp:

(WebCore::CrossfadeGeneratedImage::CrossfadeGeneratedImage):
(WebCore::drawCrossfadeSubimage):
(WebCore::CrossfadeGeneratedImage::drawCrossfade):

  • platform/graphics/CrossfadeGeneratedImage.h:
  • platform/graphics/GradientImage.cpp:

(WebCore::GradientImage::drawPattern):

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::drawImage):
(WebCore::GraphicsContext::drawTiledImage):
(WebCore::GraphicsContext::drawImageBuffer):
(WebCore::GraphicsContext::clipToImageBuffer):
(WebCore::GraphicsContext::isCompatibleWithBuffer):

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/ShadowBlur.cpp:

(WebCore::ShadowBlur::drawShadowBuffer):
(WebCore::ShadowBlur::drawRectShadowWithoutTiling):
(WebCore::ShadowBlur::drawInsetShadowWithoutTiling):
(WebCore::ShadowBlur::drawInsetShadowWithTiling):
(WebCore::ShadowBlur::drawRectShadowWithTiling):
(WebCore::ShadowBlur::drawLayerPieces):
(WebCore::ShadowBlur::endShadowLayer):

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::draw):

  • platform/graphics/cg/PDFDocumentImage.cpp:

(WebCore::PDFDocumentImage::draw):

  • platform/graphics/filters/FEBlend.cpp:

(WebCore::FEBlend::platformApplySoftware):

  • platform/graphics/filters/FEColorMatrix.cpp:

(WebCore::FEColorMatrix::platformApplySoftware):

  • platform/graphics/filters/FEComposite.cpp:

(WebCore::FEComposite::platformApplySoftware):

  • platform/graphics/filters/FEDropShadow.cpp:

(WebCore::FEDropShadow::platformApplySoftware):

  • platform/graphics/filters/FEMerge.cpp:

(WebCore::FEMerge::platformApplySoftware):

  • platform/graphics/filters/FEOffset.cpp:

(WebCore::FEOffset::platformApplySoftware):

  • platform/graphics/filters/FETile.cpp:

(WebCore::FETile::platformApplySoftware):

  • platform/graphics/filters/SourceAlpha.cpp:

(WebCore::SourceAlpha::platformApplySoftware):

  • platform/graphics/filters/SourceGraphic.cpp:

(WebCore::SourceGraphic::platformApplySoftware):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::paint):

  • platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp:

(WebCore::ImageBackingSurfaceClient::ImageBackingSurfaceClient):
(WebCore::CoordinatedImageBacking::update):

  • platform/mac/ThemeMac.mm:

(WebCore::ThemeMac::drawCellOrFocusRingWithViewIntoContext):

  • rendering/FilterEffectRenderer.cpp:

(WebCore::FilterEffectRendererHelper::applyFilterEffect):

  • rendering/ImageQualityController.cpp:

(WebCore::ImageQualityController::shouldPaintAtLowQuality):

  • rendering/ImageQualityController.h:
  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::shouldPaintAtLowQuality):
(WebCore::RenderBoxModelObject::paintFillLayerExtended):

  • rendering/RenderBoxModelObject.h:
  • rendering/RenderEmbeddedObject.cpp:

(WebCore::RenderEmbeddedObject::paintSnapshotImage):
(WebCore::RenderEmbeddedObject::paintContents):

  • rendering/RenderEmbeddedObject.h:
  • rendering/RenderImage.cpp:

(WebCore::RenderImage::paintReplaced):
(WebCore::RenderImage::paintIntoRect):

  • rendering/RenderImageResourceStyleImage.cpp:

(WebCore::RenderImageResourceStyleImage::shutdown):
(WebCore::RenderImageResourceStyleImage::image):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::drawPlatformResizerImage):

  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::paint):

  • rendering/RenderSnapshottedPlugIn.cpp:

(WebCore::RenderSnapshottedPlugIn::paintSnapshot):

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::paintProgressBar):
(WebCore::RenderThemeMac::paintSnapshottedPluginOverlay):

  • rendering/RenderThemeWin.cpp:

(WebCore::RenderThemeWin::paintSearchFieldCancelButton):
(WebCore::RenderThemeWin::paintSearchFieldResultsDecorationPart):
(WebCore::RenderThemeWin::paintSearchFieldResultsButton):

  • rendering/shapes/Shape.cpp:

(WebCore::Shape::createRasterShape):

  • rendering/shapes/ShapeOutsideInfo.cpp:

(WebCore::ShapeOutsideInfo::createShapeForImage): Deleted.

  • rendering/style/NinePieceImage.cpp:

(WebCore::NinePieceImage::paint):

  • rendering/svg/RenderSVGImage.cpp:

(WebCore::RenderSVGImage::paintForeground):

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::postApplyResource):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::SVGRenderingContext::clipToImageBuffer):
(WebCore::SVGRenderingContext::bufferForeground):

  • svg/graphics/filters/SVGFEImage.cpp:

(WebCore::FEImage::platformApplySoftware):

Source/WebKit/win:

  • FullscreenVideoController.cpp:

(HUDButton::draw):

  • Plugins/PluginView.cpp:

(WebCore::PluginView::paintMissingPluginIcon):

Source/WebKit2:

  • Shared/ContextMenuContextData.cpp:

(WebKit::ContextMenuContextData::ContextMenuContextData):

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::encodeImage):
(IPC::encodeOptionalImage):
(IPC::ArgumentCoder<Cursor>::encode):

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::createSelectionSnapshot):

Location:
trunk/Source
Files:
61 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r191048 r191049  
     12015-10-14  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Change GraphicsContext image-drawing functions to take references
     4        https://bugs.webkit.org/show_bug.cgi?id=150108
     5
     6        Reviewed by Tim Horton and Sam Weinig.
     7
     8        Change GraphicsContext::drawImage(), drawTiledImage(), drawImageBuffer(), clipToImageBuffer()
     9        and isCompatibleWithBuffer() to take references, and adjust calling code, adding
     10        null-checks where necessary.
     11
     12        * css/CSSCrossfadeValue.cpp:
     13        (WebCore::CSSCrossfadeValue::image):
     14        * css/CSSFilterImageValue.cpp:
     15        (WebCore::CSSFilterImageValue::image):
     16        * html/HTMLCanvasElement.cpp:
     17        (WebCore::HTMLCanvasElement::paint):
     18        * html/canvas/CanvasRenderingContext2D.cpp:
     19        (WebCore::CanvasRenderingContext2D::drawImage):
     20        (WebCore::CanvasRenderingContext2D::compositeBuffer):
     21        (WebCore::drawImageToContext):
     22        (WebCore::CanvasRenderingContext2D::fullCanvasCompositedDrawImage):
     23        (WebCore::CanvasRenderingContext2D::drawTextInternal):
     24        * html/canvas/CanvasRenderingContext2D.h:
     25        * html/canvas/WebGL2RenderingContext.cpp:
     26        (WebCore::WebGL2RenderingContext::texSubImage2D):
     27        * html/canvas/WebGLRenderingContext.cpp:
     28        (WebCore::WebGLRenderingContext::texSubImage2D):
     29        * html/canvas/WebGLRenderingContextBase.cpp:
     30        (WebCore::WebGLRenderingContextBase::drawImageIntoBuffer):
     31        (WebCore::WebGLRenderingContextBase::texImage2D):
     32        * html/canvas/WebGLRenderingContextBase.h:
     33        * platform/ScrollView.cpp:
     34        (WebCore::ScrollView::paintPanScrollIcon):
     35        * platform/graphics/CrossfadeGeneratedImage.cpp:
     36        (WebCore::CrossfadeGeneratedImage::CrossfadeGeneratedImage):
     37        (WebCore::drawCrossfadeSubimage):
     38        (WebCore::CrossfadeGeneratedImage::drawCrossfade):
     39        * platform/graphics/CrossfadeGeneratedImage.h:
     40        * platform/graphics/GradientImage.cpp:
     41        (WebCore::GradientImage::drawPattern):
     42        * platform/graphics/GraphicsContext.cpp:
     43        (WebCore::GraphicsContext::drawImage):
     44        (WebCore::GraphicsContext::drawTiledImage):
     45        (WebCore::GraphicsContext::drawImageBuffer):
     46        (WebCore::GraphicsContext::clipToImageBuffer):
     47        (WebCore::GraphicsContext::isCompatibleWithBuffer):
     48        * platform/graphics/GraphicsContext.h:
     49        * platform/graphics/ShadowBlur.cpp:
     50        (WebCore::ShadowBlur::drawShadowBuffer):
     51        (WebCore::ShadowBlur::drawRectShadowWithoutTiling):
     52        (WebCore::ShadowBlur::drawInsetShadowWithoutTiling):
     53        (WebCore::ShadowBlur::drawInsetShadowWithTiling):
     54        (WebCore::ShadowBlur::drawRectShadowWithTiling):
     55        (WebCore::ShadowBlur::drawLayerPieces):
     56        (WebCore::ShadowBlur::endShadowLayer):
     57        * platform/graphics/cairo/ImageBufferCairo.cpp:
     58        (WebCore::ImageBuffer::draw):
     59        * platform/graphics/cg/PDFDocumentImage.cpp:
     60        (WebCore::PDFDocumentImage::draw):
     61        * platform/graphics/filters/FEBlend.cpp:
     62        (WebCore::FEBlend::platformApplySoftware):
     63        * platform/graphics/filters/FEColorMatrix.cpp:
     64        (WebCore::FEColorMatrix::platformApplySoftware):
     65        * platform/graphics/filters/FEComposite.cpp:
     66        (WebCore::FEComposite::platformApplySoftware):
     67        * platform/graphics/filters/FEDropShadow.cpp:
     68        (WebCore::FEDropShadow::platformApplySoftware):
     69        * platform/graphics/filters/FEMerge.cpp:
     70        (WebCore::FEMerge::platformApplySoftware):
     71        * platform/graphics/filters/FEOffset.cpp:
     72        (WebCore::FEOffset::platformApplySoftware):
     73        * platform/graphics/filters/FETile.cpp:
     74        (WebCore::FETile::platformApplySoftware):
     75        * platform/graphics/filters/SourceAlpha.cpp:
     76        (WebCore::SourceAlpha::platformApplySoftware):
     77        * platform/graphics/filters/SourceGraphic.cpp:
     78        (WebCore::SourceGraphic::platformApplySoftware):
     79        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
     80        (WebCore::MediaPlayerPrivateGStreamerBase::paint):
     81        * platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp:
     82        (WebCore::ImageBackingSurfaceClient::ImageBackingSurfaceClient):
     83        (WebCore::CoordinatedImageBacking::update):
     84        * platform/mac/ThemeMac.mm:
     85        (WebCore::ThemeMac::drawCellOrFocusRingWithViewIntoContext):
     86        * rendering/FilterEffectRenderer.cpp:
     87        (WebCore::FilterEffectRendererHelper::applyFilterEffect):
     88        * rendering/ImageQualityController.cpp:
     89        (WebCore::ImageQualityController::shouldPaintAtLowQuality):
     90        * rendering/ImageQualityController.h:
     91        * rendering/RenderBoxModelObject.cpp:
     92        (WebCore::RenderBoxModelObject::shouldPaintAtLowQuality):
     93        (WebCore::RenderBoxModelObject::paintFillLayerExtended):
     94        * rendering/RenderBoxModelObject.h:
     95        * rendering/RenderEmbeddedObject.cpp:
     96        (WebCore::RenderEmbeddedObject::paintSnapshotImage):
     97        (WebCore::RenderEmbeddedObject::paintContents):
     98        * rendering/RenderEmbeddedObject.h:
     99        * rendering/RenderImage.cpp:
     100        (WebCore::RenderImage::paintReplaced):
     101        (WebCore::RenderImage::paintIntoRect):
     102        * rendering/RenderImageResourceStyleImage.cpp:
     103        (WebCore::RenderImageResourceStyleImage::shutdown):
     104        (WebCore::RenderImageResourceStyleImage::image):
     105        * rendering/RenderLayer.cpp:
     106        (WebCore::RenderLayer::drawPlatformResizerImage):
     107        * rendering/RenderListMarker.cpp:
     108        (WebCore::RenderListMarker::paint):
     109        * rendering/RenderSnapshottedPlugIn.cpp:
     110        (WebCore::RenderSnapshottedPlugIn::paintSnapshot):
     111        * rendering/RenderThemeMac.mm:
     112        (WebCore::RenderThemeMac::paintProgressBar):
     113        (WebCore::RenderThemeMac::paintSnapshottedPluginOverlay):
     114        * rendering/RenderThemeWin.cpp:
     115        (WebCore::RenderThemeWin::paintSearchFieldCancelButton):
     116        (WebCore::RenderThemeWin::paintSearchFieldResultsDecorationPart):
     117        (WebCore::RenderThemeWin::paintSearchFieldResultsButton):
     118        * rendering/shapes/Shape.cpp:
     119        (WebCore::Shape::createRasterShape):
     120        * rendering/shapes/ShapeOutsideInfo.cpp:
     121        (WebCore::ShapeOutsideInfo::createShapeForImage): Deleted.
     122        * rendering/style/NinePieceImage.cpp:
     123        (WebCore::NinePieceImage::paint):
     124        * rendering/svg/RenderSVGImage.cpp:
     125        (WebCore::RenderSVGImage::paintForeground):
     126        * rendering/svg/RenderSVGResourceFilter.cpp:
     127        (WebCore::RenderSVGResourceFilter::postApplyResource):
     128        * rendering/svg/SVGRenderingContext.cpp:
     129        (WebCore::SVGRenderingContext::clipToImageBuffer):
     130        (WebCore::SVGRenderingContext::bufferForeground):
     131        * svg/graphics/filters/SVGFEImage.cpp:
     132        (WebCore::FEImage::platformApplySoftware):
     133
    11342015-10-14  Said Abou-Hallawa  <sabouhallawa@apple.com>
    2135
  • trunk/Source/WebCore/css/CSSCrossfadeValue.cpp

    r188315 r191049  
    166166        return Image::nullImage();
    167167
    168     m_generatedImage = CrossfadeGeneratedImage::create(fromImage, toImage, m_percentageValue->getFloatValue(), fixedSize(renderer), size);
     168    m_generatedImage = CrossfadeGeneratedImage::create(*fromImage, *toImage, m_percentageValue->getFloatValue(), fixedSize(renderer), size);
    169169
    170170    return m_generatedImage;
  • trunk/Source/WebCore/css/CSSFilterImageValue.cpp

    r190124 r191049  
    125125    if (!texture)
    126126        return Image::nullImage();
     127
    127128    FloatRect imageRect = FloatRect(FloatPoint(), size);
    128     texture->context().drawImage(image, ColorSpaceDeviceRGB, imageRect);
     129    texture->context().drawImage(*image, ColorSpaceDeviceRGB, imageRect);
    129130
    130131    RefPtr<FilterEffectRenderer> filterRenderer = FilterEffectRenderer::create();
  • trunk/Source/WebCore/html/HTMLCanvasElement.cpp

    r190613 r191049  
    389389                orientationDescription.setImageOrientationEnum(renderer()->style().imageOrientation());
    390390#endif
    391                 context.drawImage(m_presentedImage.get(), ColorSpaceDeviceRGB, snappedIntRect(r), ImagePaintingOptions(orientationDescription, useLowQualityScale));
     391                context.drawImage(*m_presentedImage, ColorSpaceDeviceRGB, snappedIntRect(r), ImagePaintingOptions(orientationDescription, useLowQualityScale));
    392392            } else
    393                 context.drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, snappedIntRect(r), useLowQualityScale);
     393                context.drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, snappedIntRect(r), useLowQualityScale);
    394394        }
    395395    }
  • trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp

    r190618 r191049  
    14491449
    14501450    if (rectContainsCanvas(normalizedDstRect)) {
    1451         c->drawImage(image, ColorSpaceDeviceRGB, normalizedDstRect, normalizedSrcRect, ImagePaintingOptions(op, blendMode));
     1451        c->drawImage(*image, ColorSpaceDeviceRGB, normalizedDstRect, normalizedSrcRect, ImagePaintingOptions(op, blendMode));
    14521452        didDrawEntireCanvas();
    14531453    } else if (isFullCanvasCompositeMode(op)) {
    1454         fullCanvasCompositedDrawImage(image, ColorSpaceDeviceRGB, normalizedDstRect, normalizedSrcRect, op);
     1454        fullCanvasCompositedDrawImage(*image, ColorSpaceDeviceRGB, normalizedDstRect, normalizedSrcRect, op);
    14551455        didDrawEntireCanvas();
    14561456    } else if (op == CompositeCopy) {
    14571457        clearCanvas();
    1458         c->drawImage(image, ColorSpaceDeviceRGB, normalizedDstRect, normalizedSrcRect, ImagePaintingOptions(op, blendMode));
     1458        c->drawImage(*image, ColorSpaceDeviceRGB, normalizedDstRect, normalizedSrcRect, ImagePaintingOptions(op, blendMode));
    14591459        didDrawEntireCanvas();
    14601460    } else {
    1461         c->drawImage(image, ColorSpaceDeviceRGB, normalizedDstRect, normalizedSrcRect, ImagePaintingOptions(op, blendMode));
     1461        c->drawImage(*image, ColorSpaceDeviceRGB, normalizedDstRect, normalizedSrcRect, ImagePaintingOptions(op, blendMode));
    14621462        didDraw(normalizedDstRect);
    14631463    }
     
    15371537
    15381538    if (rectContainsCanvas(dstRect)) {
    1539         c->drawImageBuffer(buffer, ColorSpaceDeviceRGB, dstRect, srcRect, ImagePaintingOptions(state().globalComposite, state().globalBlend));
     1539        c->drawImageBuffer(*buffer, ColorSpaceDeviceRGB, dstRect, srcRect, ImagePaintingOptions(state().globalComposite, state().globalBlend));
    15401540        didDrawEntireCanvas();
    15411541    } else if (isFullCanvasCompositeMode(state().globalComposite)) {
    1542         fullCanvasCompositedDrawImage(buffer, ColorSpaceDeviceRGB, dstRect, srcRect, state().globalComposite);
     1542        fullCanvasCompositedDrawImage(*buffer, ColorSpaceDeviceRGB, dstRect, srcRect, state().globalComposite);
    15431543        didDrawEntireCanvas();
    15441544    } else if (state().globalComposite == CompositeCopy) {
    15451545        clearCanvas();
    1546         c->drawImageBuffer(buffer, ColorSpaceDeviceRGB, dstRect, srcRect, ImagePaintingOptions(state().globalComposite, state().globalBlend));
     1546        c->drawImageBuffer(*buffer, ColorSpaceDeviceRGB, dstRect, srcRect, ImagePaintingOptions(state().globalComposite, state().globalBlend));
    15471547        didDrawEntireCanvas();
    15481548    } else {
    1549         c->drawImageBuffer(buffer, ColorSpaceDeviceRGB, dstRect, srcRect, ImagePaintingOptions(state().globalComposite, state().globalBlend));
     1549        c->drawImageBuffer(*buffer, ColorSpaceDeviceRGB, dstRect, srcRect, ImagePaintingOptions(state().globalComposite, state().globalBlend));
    15501550        didDraw(dstRect);
    15511551    }
     
    17101710}
    17111711
    1712 void CanvasRenderingContext2D::compositeBuffer(ImageBuffer* buffer, const IntRect& bufferRect, CompositeOperator op)
     1712void CanvasRenderingContext2D::compositeBuffer(ImageBuffer& buffer, const IntRect& bufferRect, CompositeOperator op)
    17131713{
    17141714    IntRect canvasRect(0, 0, canvas()->width(), canvas()->height());
     
    17311731}
    17321732
    1733 static void drawImageToContext(Image* image, GraphicsContext& context, ColorSpace styleColorSpace, const FloatRect& dest, const FloatRect& src, CompositeOperator op)
     1733static void drawImageToContext(Image& image, GraphicsContext& context, ColorSpace styleColorSpace, const FloatRect& dest, const FloatRect& src, CompositeOperator op)
    17341734{
    17351735    context.drawImage(image, styleColorSpace, dest, src, op);
    17361736}
    17371737
    1738 static void drawImageToContext(ImageBuffer* imageBuffer, GraphicsContext& context, ColorSpace styleColorSpace, const FloatRect& dest, const FloatRect& src, CompositeOperator op)
     1738static void drawImageToContext(ImageBuffer& imageBuffer, GraphicsContext& context, ColorSpace styleColorSpace, const FloatRect& dest, const FloatRect& src, CompositeOperator op)
    17391739{
    17401740    context.drawImageBuffer(imageBuffer, styleColorSpace, dest, src, op);
    17411741}
    17421742
    1743 template<class T> void  CanvasRenderingContext2D::fullCanvasCompositedDrawImage(T* image, ColorSpace styleColorSpace, const FloatRect& dest, const FloatRect& src, CompositeOperator op)
     1743template<class T> void  CanvasRenderingContext2D::fullCanvasCompositedDrawImage(T& image, ColorSpace styleColorSpace, const FloatRect& dest, const FloatRect& src, CompositeOperator op)
    17441744{
    17451745    ASSERT(isFullCanvasCompositeMode(op));
     
    17691769    drawImageToContext(image, buffer->context(), styleColorSpace, adjustedDest, src, CompositeSourceOver);
    17701770
    1771     compositeBuffer(buffer.get(), bufferRect, op);
     1771    compositeBuffer(*buffer, bufferRect, op);
    17721772}
    17731773
     
    24202420    // The slop built in to this mask rect matches the heuristic used in FontCGWin.cpp for GDI text.
    24212421    FloatRect textRect = FloatRect(location.x() - fontMetrics.height() / 2, location.y() - fontMetrics.ascent() - fontMetrics.lineGap(),
    2422                                    width + fontMetrics.height(), fontMetrics.lineSpacing());
     2422        width + fontMetrics.height(), fontMetrics.lineSpacing());
    24232423    if (!fill)
    24242424        inflateStrokeRect(textRect);
     
    24622462
    24632463        std::unique_ptr<ImageBuffer> maskImage = c->createCompatibleBuffer(maskRect.size());
     2464        if (!maskImage)
     2465            return;
    24642466
    24652467        GraphicsContext& maskImageContext = maskImage->context();
     
    24852487
    24862488        GraphicsContextStateSaver stateSaver(*c);
    2487         c->clipToImageBuffer(maskImage.get(), maskRect);
     2489        c->clipToImageBuffer(*maskImage, maskRect);
    24882490        drawStyle.applyFillColor(c);
    24892491        c->fillRect(maskRect);
  • trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.h

    r190383 r191049  
    364364    template<class T> IntRect calculateCompositingBufferRect(const T&, IntSize*);
    365365    std::unique_ptr<ImageBuffer> createCompositingBuffer(const IntRect&);
    366     void compositeBuffer(ImageBuffer*, const IntRect&, CompositeOperator);
     366    void compositeBuffer(ImageBuffer&, const IntRect&, CompositeOperator);
    367367
    368368    void inflateStrokeRect(FloatRect&) const;
    369369
    370     template<class T> void fullCanvasCompositedDrawImage(T*, ColorSpace, const FloatRect&, const FloatRect&, CompositeOperator);
     370    template<class T> void fullCanvasCompositedDrawImage(T&, ColorSpace, const FloatRect&, const FloatRect&, CompositeOperator);
    371371
    372372    void prepareGradientForDashboard(CanvasGradient& gradient) const;
  • trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp

    r190595 r191049  
    14201420   
    14211421    RefPtr<Image> imageForRender = image->cachedImage()->imageForRenderer(image->renderer());
     1422    if (!imageForRender)
     1423        return;
     1424
    14221425    if (imageForRender->isSVGImage())
    1423         imageForRender = drawImageIntoBuffer(imageForRender.get(), image->width(), image->height(), 1);
     1426        imageForRender = drawImageIntoBuffer(*imageForRender, image->width(), image->height(), 1);
    14241427   
    14251428    if (!imageForRender || !validateTexFunc("texSubImage2D", TexSubImage, SourceHTMLImageElement, target, level, GraphicsContext3D::NONE, imageForRender->width(), imageForRender->height(), 0, format, type, xoffset, yoffset))
  • trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp

    r190595 r191049  
    624624   
    625625    RefPtr<Image> imageForRender = image->cachedImage()->imageForRenderer(image->renderer());
     626    if (!imageForRender)
     627        return;
     628
    626629    if (imageForRender->isSVGImage())
    627         imageForRender = drawImageIntoBuffer(imageForRender.get(), image->width(), image->height(), 1);
     630        imageForRender = drawImageIntoBuffer(*imageForRender, image->width(), image->height(), 1);
    628631   
    629632    if (!imageForRender || !validateTexFunc("texSubImage2D", TexSubImage, SourceHTMLImageElement, target, level, format, imageForRender->width(), imageForRender->height(), 0, format, type, xoffset, yoffset))
  • trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp

    r190613 r191049  
    31653165}
    31663166
    3167 PassRefPtr<Image> WebGLRenderingContextBase::drawImageIntoBuffer(Image* image, int width, int height, int deviceScaleFactor)
     3167PassRefPtr<Image> WebGLRenderingContextBase::drawImageIntoBuffer(Image& image, int width, int height, int deviceScaleFactor)
    31683168{
    31693169    IntSize size(width, height);
     
    31753175    }
    31763176
    3177     FloatRect srcRect(FloatPoint(), image->size());
     3177    FloatRect srcRect(FloatPoint(), image.size());
    31783178    FloatRect destRect(FloatPoint(), size);
    31793179    buf->context().drawImage(image, ColorSpaceDeviceRGB, destRect, srcRect);
     
    31893189
    31903190    RefPtr<Image> imageForRender = image->cachedImage()->imageForRenderer(image->renderer());
     3191    if (!imageForRender)
     3192        return;
     3193
    31913194    if (imageForRender->isSVGImage())
    3192         imageForRender = drawImageIntoBuffer(imageForRender.get(), image->width(), image->height(), 1);
     3195        imageForRender = drawImageIntoBuffer(*imageForRender, image->width(), image->height(), 1);
    31933196
    31943197    if (!imageForRender || !validateTexFunc("texImage2D", TexImage, SourceHTMLImageElement, target, level, internalformat, imageForRender->width(), imageForRender->height(), 0, format, type, 0, 0))
  • trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h

    r190481 r191049  
    427427    void addCompressedTextureFormat(GC3Denum);
    428428
    429     PassRefPtr<Image> drawImageIntoBuffer(Image*, int width, int height, int deviceScaleFactor);
     429    PassRefPtr<Image> drawImageIntoBuffer(Image&, int width, int height, int deviceScaleFactor);
    430430
    431431#if ENABLE(VIDEO)
  • trunk/Source/WebCore/platform/ScrollView.cpp

    r189270 r191049  
    11791179{
    11801180    static Image* panScrollIcon = Image::loadPlatformResource("panIcon").leakRef();
     1181    if (!panScrollIcon)
     1182        return;
    11811183    IntPoint iconGCPoint = m_panScrollIconPoint;
    11821184    if (parent())
    11831185        iconGCPoint = parent()->windowToContents(iconGCPoint);
    1184     context.drawImage(panScrollIcon, ColorSpaceDeviceRGB, iconGCPoint);
     1186    context.drawImage(*panScrollIcon, ColorSpaceDeviceRGB, iconGCPoint);
    11851187}
    11861188
  • trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp

    r190910 r191049  
    3333namespace WebCore {
    3434
    35 CrossfadeGeneratedImage::CrossfadeGeneratedImage(Image* fromImage, Image* toImage, float percentage, const FloatSize& crossfadeSize, const FloatSize& size)
     35CrossfadeGeneratedImage::CrossfadeGeneratedImage(Image& fromImage, Image& toImage, float percentage, const FloatSize& crossfadeSize, const FloatSize& size)
    3636    : m_fromImage(fromImage)
    3737    , m_toImage(toImage)
     
    4242}
    4343
    44 static void drawCrossfadeSubimage(GraphicsContext& context, Image* image, CompositeOperator operation, float opacity, const FloatSize& targetSize)
     44static void drawCrossfadeSubimage(GraphicsContext& context, Image& image, CompositeOperator operation, float opacity, const FloatSize& targetSize)
    4545{
    46     FloatSize imageSize = image->size();
     46    FloatSize imageSize = image.size();
    4747
    4848    // SVGImage resets the opacity when painting, so we have to use transparency layers to accurately paint one at a given opacity.
    49     bool useTransparencyLayer = image->isSVGImage();
     49    bool useTransparencyLayer = image.isSVGImage();
    5050
    5151    GraphicsContextStateSaver stateSaver(context);
     
    6969{
    7070    // Draw nothing if either of the images hasn't loaded yet.
    71     if (m_fromImage == Image::nullImage() || m_toImage == Image::nullImage())
     71    if (m_fromImage.ptr() == Image::nullImage() || m_toImage.ptr() == Image::nullImage())
    7272        return;
    7373
     
    7777    context.beginTransparencyLayer(1);
    7878
    79     drawCrossfadeSubimage(context, m_fromImage, CompositeSourceOver, 1 - m_percentage, m_crossfadeSize);
    80     drawCrossfadeSubimage(context, m_toImage, CompositePlusLighter, m_percentage, m_crossfadeSize);
     79    drawCrossfadeSubimage(context, m_fromImage.get(), CompositeSourceOver, 1 - m_percentage, m_crossfadeSize);
     80    drawCrossfadeSubimage(context, m_toImage.get(), CompositePlusLighter, m_percentage, m_crossfadeSize);
    8181
    8282    context.endTransparencyLayer();
  • trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.h

    r190910 r191049  
    3737class CrossfadeGeneratedImage final : public GeneratedImage {
    3838public:
    39     static Ref<CrossfadeGeneratedImage> create(Image* fromImage, Image* toImage, float percentage, const FloatSize& crossfadeSize, const FloatSize& size)
     39    static Ref<CrossfadeGeneratedImage> create(Image& fromImage, Image& toImage, float percentage, const FloatSize& crossfadeSize, const FloatSize& size)
    4040    {
    4141        return adoptRef(*new CrossfadeGeneratedImage(fromImage, toImage, percentage, crossfadeSize, size));
     
    5353    virtual void drawPattern(GraphicsContext&, const FloatRect& srcRect, const AffineTransform& patternTransform, const FloatPoint& phase, const FloatSize& spacing, ColorSpace styleColorSpace, CompositeOperator, const FloatRect& dstRect, BlendMode) override;
    5454
    55     CrossfadeGeneratedImage(Image* fromImage, Image* toImage, float percentage, const FloatSize& crossfadeSize, const FloatSize&);
     55    CrossfadeGeneratedImage(Image& fromImage, Image& toImage, float percentage, const FloatSize& crossfadeSize, const FloatSize&);
    5656
    5757private:
    5858    void drawCrossfade(GraphicsContext&);
    5959
    60     Image* m_fromImage;
    61     Image* m_toImage;
     60    Ref<Image> m_fromImage;
     61    Ref<Image> m_toImage;
    6262
    6363    float m_percentage;
  • trunk/Source/WebCore/platform/graphics/GradientImage.cpp

    r191048 r191049  
    7474    unsigned generatorHash = m_gradient->hash();
    7575
    76     if (!m_cachedImageBuffer || m_cachedGeneratorHash != generatorHash || m_cachedAdjustedSize != adjustedSize || !destContext.isCompatibleWithBuffer(m_cachedImageBuffer.get())) {
     76    if (!m_cachedImageBuffer || m_cachedGeneratorHash != generatorHash || m_cachedAdjustedSize != adjustedSize || !destContext.isCompatibleWithBuffer(*m_cachedImageBuffer)) {
    7777        m_cachedImageBuffer = destContext.createCompatibleBuffer(adjustedSize, m_gradient->hasAlpha());
    7878        if (!m_cachedImageBuffer)
  • trunk/Source/WebCore/platform/graphics/GraphicsContext.cpp

    r190910 r191049  
    369369}
    370370
    371 void GraphicsContext::drawImage(Image* image, ColorSpace colorSpace, const FloatPoint& destination, const ImagePaintingOptions& imagePaintingOptions)
    372 {
    373     if (!image)
    374         return;
    375     drawImage(image, colorSpace, FloatRect(destination, image->size()), FloatRect(FloatPoint(), image->size()), imagePaintingOptions);
    376 }
    377 
    378 void GraphicsContext::drawImage(Image* image, ColorSpace colorSpace, const FloatRect& destination, const ImagePaintingOptions& imagePaintingOptions)
    379 {
    380     if (!image)
    381         return;
    382    
     371void GraphicsContext::drawImage(Image& image, ColorSpace colorSpace, const FloatPoint& destination, const ImagePaintingOptions& imagePaintingOptions)
     372{
     373    drawImage(image, colorSpace, FloatRect(destination, image.size()), FloatRect(FloatPoint(), image.size()), imagePaintingOptions);
     374}
     375
     376void GraphicsContext::drawImage(Image& image, ColorSpace colorSpace, const FloatRect& destination, const ImagePaintingOptions& imagePaintingOptions)
     377{
    383378#if PLATFORM(IOS)
    384     FloatRect srcRect(FloatPoint(), image->originalSize());
     379    FloatRect srcRect(FloatPoint(), image.originalSize());
    385380#else
    386     FloatRect srcRect(FloatPoint(), image->size());
     381    FloatRect srcRect(FloatPoint(), image.size());
    387382#endif
    388383       
     
    390385}
    391386
    392 void GraphicsContext::drawImage(Image* image, ColorSpace colorSpace, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& imagePaintingOptions)
    393 {
    394     if (paintingDisabled() || !image)
     387void GraphicsContext::drawImage(Image& image, ColorSpace colorSpace, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& imagePaintingOptions)
     388{
     389    if (paintingDisabled())
    395390        return;
    396391
    397392    // FIXME (49002): Should be InterpolationLow
    398393    InterpolationQualityMaintainer interpolationQualityForThisScope(*this, imagePaintingOptions.m_useLowQualityScale ? InterpolationNone : imageInterpolationQuality());
    399     image->draw(*this, destination, source, colorSpace, imagePaintingOptions.m_compositeOperator, imagePaintingOptions.m_blendMode, imagePaintingOptions.m_orientationDescription);
    400 }
    401 
    402 void GraphicsContext::drawTiledImage(Image* image, ColorSpace colorSpace, const FloatRect& destination, const FloatPoint& source, const FloatSize& tileSize, const FloatSize& spacing, const ImagePaintingOptions& imagePaintingOptions)
    403 {
    404     if (paintingDisabled() || !image)
     394    image.draw(*this, destination, source, colorSpace, imagePaintingOptions.m_compositeOperator, imagePaintingOptions.m_blendMode, imagePaintingOptions.m_orientationDescription);
     395}
     396
     397void GraphicsContext::drawTiledImage(Image& image, ColorSpace colorSpace, const FloatRect& destination, const FloatPoint& source, const FloatSize& tileSize, const FloatSize& spacing, const ImagePaintingOptions& imagePaintingOptions)
     398{
     399    if (paintingDisabled())
    405400        return;
    406401
    407402    InterpolationQualityMaintainer interpolationQualityForThisScope(*this, imagePaintingOptions.m_useLowQualityScale ? InterpolationLow : imageInterpolationQuality());
    408     image->drawTiled(*this, destination, source, tileSize, spacing, colorSpace, imagePaintingOptions.m_compositeOperator, imagePaintingOptions.m_blendMode);
    409 }
    410 
    411 void GraphicsContext::drawTiledImage(Image* image, ColorSpace colorSpace, const FloatRect& destination, const FloatRect& source, const FloatSize& tileScaleFactor,
     403    image.drawTiled(*this, destination, source, tileSize, spacing, colorSpace, imagePaintingOptions.m_compositeOperator, imagePaintingOptions.m_blendMode);
     404}
     405
     406void GraphicsContext::drawTiledImage(Image& image, ColorSpace colorSpace, const FloatRect& destination, const FloatRect& source, const FloatSize& tileScaleFactor,
    412407    Image::TileRule hRule, Image::TileRule vRule, const ImagePaintingOptions& imagePaintingOptions)
    413408{
    414     if (paintingDisabled() || !image)
     409    if (paintingDisabled())
    415410        return;
    416411
     
    422417
    423418    InterpolationQualityMaintainer interpolationQualityForThisScope(*this, imagePaintingOptions.m_useLowQualityScale ? InterpolationLow : imageInterpolationQuality());
    424     image->drawTiled(*this, destination, source, tileScaleFactor, hRule, vRule, colorSpace, imagePaintingOptions.m_compositeOperator);
    425 }
    426 
    427 void GraphicsContext::drawImageBuffer(ImageBuffer* image, ColorSpace colorSpace, const FloatPoint& destination, const ImagePaintingOptions& imagePaintingOptions)
    428 {
    429     if (!image)
    430         return;
    431     drawImageBuffer(image, colorSpace, FloatRect(destination, image->logicalSize()), FloatRect(FloatPoint(), image->logicalSize()), imagePaintingOptions);
    432 }
    433 
    434 void GraphicsContext::drawImageBuffer(ImageBuffer* image, ColorSpace colorSpace, const FloatRect& destination, const ImagePaintingOptions& imagePaintingOptions)
    435 {
    436     if (!image)
    437         return;
    438     drawImageBuffer(image, colorSpace, destination, FloatRect(FloatPoint(), FloatSize(image->logicalSize())), imagePaintingOptions);
    439 }
    440 
    441 void GraphicsContext::drawImageBuffer(ImageBuffer* image, ColorSpace colorSpace, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& imagePaintingOptions)
    442 {
    443     if (paintingDisabled() || !image)
     419    image.drawTiled(*this, destination, source, tileScaleFactor, hRule, vRule, colorSpace, imagePaintingOptions.m_compositeOperator);
     420}
     421
     422void GraphicsContext::drawImageBuffer(ImageBuffer& image, ColorSpace colorSpace, const FloatPoint& destination, const ImagePaintingOptions& imagePaintingOptions)
     423{
     424    drawImageBuffer(image, colorSpace, FloatRect(destination, image.logicalSize()), FloatRect(FloatPoint(), image.logicalSize()), imagePaintingOptions);
     425}
     426
     427void GraphicsContext::drawImageBuffer(ImageBuffer& image, ColorSpace colorSpace, const FloatRect& destination, const ImagePaintingOptions& imagePaintingOptions)
     428{
     429    drawImageBuffer(image, colorSpace, destination, FloatRect(FloatPoint(), FloatSize(image.logicalSize())), imagePaintingOptions);
     430}
     431
     432void GraphicsContext::drawImageBuffer(ImageBuffer& image, ColorSpace colorSpace, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& imagePaintingOptions)
     433{
     434    if (paintingDisabled())
    444435        return;
    445436
    446437    // FIXME (49002): Should be InterpolationLow
    447438    InterpolationQualityMaintainer interpolationQualityForThisScope(*this, imagePaintingOptions.m_useLowQualityScale ? InterpolationNone : imageInterpolationQuality());
    448     image->draw(*this, colorSpace, destination, source, imagePaintingOptions.m_compositeOperator, imagePaintingOptions.m_blendMode, imagePaintingOptions.m_useLowQualityScale);
     439    image.draw(*this, colorSpace, destination, source, imagePaintingOptions.m_compositeOperator, imagePaintingOptions.m_blendMode, imagePaintingOptions.m_useLowQualityScale);
    449440}
    450441
     
    479470}
    480471
    481 void GraphicsContext::clipToImageBuffer(ImageBuffer* buffer, const FloatRect& rect)
    482 {
    483     if (paintingDisabled())
    484         return;
    485     buffer->clip(*this, rect);
     472void GraphicsContext::clipToImageBuffer(ImageBuffer& buffer, const FloatRect& rect)
     473{
     474    if (paintingDisabled())
     475        return;
     476    buffer.clip(*this, rect);
    486477}
    487478
     
    649640}
    650641
    651 bool GraphicsContext::isCompatibleWithBuffer(ImageBuffer* buffer) const
    652 {
    653     GraphicsContext& bufferContext = buffer->context();
     642bool GraphicsContext::isCompatibleWithBuffer(ImageBuffer& buffer) const
     643{
     644    GraphicsContext& bufferContext = buffer.context();
    654645
    655646    return scalesMatch(getCTM(), bufferContext.getCTM()) && isAcceleratedContext() == bufferContext.isAcceleratedContext();
  • trunk/Source/WebCore/platform/graphics/GraphicsContext.h

    r191000 r191049  
    309309        WEBCORE_EXPORT void strokeRect(const FloatRect&, float lineWidth);
    310310
    311         WEBCORE_EXPORT void drawImage(Image*, ColorSpace, const FloatPoint& destination, const ImagePaintingOptions& = ImagePaintingOptions());
    312         WEBCORE_EXPORT void drawImage(Image*, ColorSpace, const FloatRect& destination, const ImagePaintingOptions& = ImagePaintingOptions());
    313         void drawImage(Image*, ColorSpace, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& = ImagePaintingOptions());
    314 
    315         void drawTiledImage(Image*, ColorSpace, const FloatRect& destination, const FloatPoint& source, const FloatSize& tileSize, const FloatSize& spacing, const ImagePaintingOptions& = ImagePaintingOptions());
    316         void drawTiledImage(Image*, ColorSpace, const FloatRect& destination, const FloatRect& source, const FloatSize& tileScaleFactor,
     311        WEBCORE_EXPORT void drawImage(Image&, ColorSpace, const FloatPoint& destination, const ImagePaintingOptions& = ImagePaintingOptions());
     312        WEBCORE_EXPORT void drawImage(Image&, ColorSpace, const FloatRect& destination, const ImagePaintingOptions& = ImagePaintingOptions());
     313        void drawImage(Image&, ColorSpace, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& = ImagePaintingOptions());
     314
     315        void drawTiledImage(Image&, ColorSpace, const FloatRect& destination, const FloatPoint& source, const FloatSize& tileSize, const FloatSize& spacing, const ImagePaintingOptions& = ImagePaintingOptions());
     316        void drawTiledImage(Image&, ColorSpace, const FloatRect& destination, const FloatRect& source, const FloatSize& tileScaleFactor,
    317317            Image::TileRule, Image::TileRule, const ImagePaintingOptions& = ImagePaintingOptions());
    318318
    319         WEBCORE_EXPORT void drawImageBuffer(ImageBuffer*, ColorSpace, const FloatPoint& destination, const ImagePaintingOptions& = ImagePaintingOptions());
    320         void drawImageBuffer(ImageBuffer*, ColorSpace, const FloatRect& destination, const ImagePaintingOptions& = ImagePaintingOptions());
    321         void drawImageBuffer(ImageBuffer*, ColorSpace, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& = ImagePaintingOptions());
     319        WEBCORE_EXPORT void drawImageBuffer(ImageBuffer&, ColorSpace, const FloatPoint& destination, const ImagePaintingOptions& = ImagePaintingOptions());
     320        void drawImageBuffer(ImageBuffer&, ColorSpace, const FloatRect& destination, const ImagePaintingOptions& = ImagePaintingOptions());
     321        void drawImageBuffer(ImageBuffer&, ColorSpace, const FloatRect& destination, const FloatRect& source, const ImagePaintingOptions& = ImagePaintingOptions());
    322322
    323323        void drawPattern(Image&, const FloatRect& srcRect, const AffineTransform&, const FloatPoint& phase, const FloatSize& spacing, ColorSpace, CompositeOperator, const FloatRect& destRect, BlendMode = BlendModeNormal);
     
    334334        void clipPath(const Path&, WindRule);
    335335        void clipConvexPolygon(size_t numPoints, const FloatPoint*, bool antialias = true);
    336         void clipToImageBuffer(ImageBuffer*, const FloatRect&);
     336        void clipToImageBuffer(ImageBuffer&, const FloatRect&);
    337337       
    338338        IntRect clipBounds() const;
     
    444444        // for drawing into the buffer and then into this context.
    445445        std::unique_ptr<ImageBuffer> createCompatibleBuffer(const FloatSize&, bool hasAlpha = true) const;
    446         bool isCompatibleWithBuffer(ImageBuffer*) const;
     446        bool isCompatibleWithBuffer(ImageBuffer&) const;
    447447
    448448        // This function applies the device scale factor to the context, making the context capable of
  • trunk/Source/WebCore/platform/graphics/ShadowBlur.cpp

    r190124 r191049  
    473473        graphicsContext.clip(FloatRect(m_layerOrigin, m_layerSize));
    474474    }
    475     graphicsContext.clipToImageBuffer(m_layerImage, FloatRect(m_layerOrigin, bufferSize));
     475    graphicsContext.clipToImageBuffer(*m_layerImage, FloatRect(m_layerOrigin, bufferSize));
    476476    graphicsContext.setFillColor(m_color, m_colorSpace);
    477477
     
    594594   
    595595    drawShadowBuffer(graphicsContext);
    596     m_layerImage = 0;
     596    m_layerImage = nullptr;
    597597    ScratchBuffer::singleton().scheduleScratchBufferPurge();
    598598}
     
    635635   
    636636    drawShadowBuffer(graphicsContext);
    637     m_layerImage = 0;
     637    m_layerImage = nullptr;
    638638    ScratchBuffer::singleton().scheduleScratchBufferPurge();
    639639}
     
    732732    drawLayerPieces(graphicsContext, destHoleBounds, holeRect.radii(), edgeSize, templateSize, InnerShadow);
    733733
    734     m_layerImage = 0;
     734    m_layerImage = nullptr;
    735735    ScratchBuffer::singleton().scheduleScratchBufferPurge();
    736736}
     
    778778    drawLayerPieces(graphicsContext, shadowBounds, shadowedRect.radii(), edgeSize, templateSize, OuterShadow);
    779779
    780     m_layerImage = 0;
     780    m_layerImage = nullptr;
    781781    ScratchBuffer::singleton().scheduleScratchBufferPurge();
    782782}
     
    817817    FloatRect tileRect = FloatRect(leftSlice, 0, templateSideLength, topSlice);
    818818    FloatRect destRect = FloatRect(centerRect.x(), centerRect.y() - topSlice, centerRect.width(), topSlice);
    819     graphicsContext.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
     819    graphicsContext.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
    820820
    821821    // Draw the bottom side.
     
    824824    destRect.setY(centerRect.maxY());
    825825    destRect.setHeight(bottomSlice);
    826     graphicsContext.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
     826    graphicsContext.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
    827827
    828828    // Left side.
    829829    tileRect = FloatRect(0, topSlice, leftSlice, templateSideLength);
    830830    destRect = FloatRect(centerRect.x() - leftSlice, centerRect.y(), leftSlice, centerRect.height());
    831     graphicsContext.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
     831    graphicsContext.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
    832832
    833833    // Right side.
     
    836836    destRect.setX(centerRect.maxX());
    837837    destRect.setWidth(rightSlice);
    838     graphicsContext.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
     838    graphicsContext.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
    839839
    840840    // Top left corner.
    841841    tileRect = FloatRect(0, 0, leftSlice, topSlice);
    842842    destRect = FloatRect(centerRect.x() - leftSlice, centerRect.y() - topSlice, leftSlice, topSlice);
    843     graphicsContext.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
     843    graphicsContext.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
    844844
    845845    // Top right corner.
    846846    tileRect = FloatRect(templateSize.width() - rightSlice, 0, rightSlice, topSlice);
    847847    destRect = FloatRect(centerRect.maxX(), centerRect.y() - topSlice, rightSlice, topSlice);
    848     graphicsContext.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
     848    graphicsContext.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
    849849
    850850    // Bottom right corner.
    851851    tileRect = FloatRect(templateSize.width() - rightSlice, templateSize.height() - bottomSlice, rightSlice, bottomSlice);
    852852    destRect = FloatRect(centerRect.maxX(), centerRect.maxY(), rightSlice, bottomSlice);
    853     graphicsContext.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
     853    graphicsContext.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
    854854
    855855    // Bottom left corner.
    856856    tileRect = FloatRect(0, templateSize.height() - bottomSlice, leftSlice, bottomSlice);
    857857    destRect = FloatRect(centerRect.x() - leftSlice, centerRect.maxY(), leftSlice, bottomSlice);
    858     graphicsContext.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
     858    graphicsContext.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, destRect, tileRect);
    859859}
    860860
     
    916916
    917917    context.clearShadow();
    918     context.drawImageBuffer(m_layerImage, ColorSpaceDeviceRGB, FloatRect(roundedIntPoint(m_layerOrigin), m_layerSize), FloatRect(FloatPoint(), m_layerSize), context.compositeOperation());
    919 
    920     m_layerImage = 0;
     918    context.drawImageBuffer(*m_layerImage, ColorSpaceDeviceRGB, FloatRect(roundedIntPoint(m_layerOrigin), m_layerSize), FloatRect(FloatPoint(), m_layerSize), context.compositeOperation());
     919
     920    m_layerImage = nullptr;
    921921    ScratchBuffer::singleton().scheduleScratchBufferPurge();
    922922}
  • trunk/Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp

    r190914 r191049  
    171171    BackingStoreCopy copyMode = &destinationContext == &context() ? CopyBackingStore : DontCopyBackingStore;
    172172    RefPtr<Image> image = copyImage(copyMode);
    173     destinationContext.drawImage(image.get(), styleColorSpace, destRect, srcRect, ImagePaintingOptions(op, blendMode, ImageOrientationDescription(), useLowQualityScale));
     173    destinationContext.drawImage(*image, styleColorSpace, destRect, srcRect, ImagePaintingOptions(op, blendMode, ImageOrientationDescription(), useLowQualityScale));
    174174}
    175175
  • trunk/Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp

    r189144 r191049  
    191191
    192192        if (m_cachedImageBuffer)
    193             context.drawImageBuffer(m_cachedImageBuffer.get(), ColorSpaceDeviceRGB, dstRect);
     193            context.drawImageBuffer(*m_cachedImageBuffer, ColorSpaceDeviceRGB, dstRect);
    194194        else {
    195195            transformContextForPainting(context, dstRect, srcRect);
  • trunk/Source/WebCore/platform/graphics/filters/FEBlend.cpp

    r189144 r191049  
    7373    ImageBuffer* imageBuffer = in->asImageBuffer();
    7474    ImageBuffer* imageBuffer2 = in2->asImageBuffer();
    75     ASSERT(imageBuffer);
    76     ASSERT(imageBuffer2);
     75    if (!imageBuffer || !imageBuffer2)
     76        return;
    7777
    78     filterContext.drawImageBuffer(imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()));
    79     filterContext.drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), ImagePaintingOptions(CompositeSourceOver, m_mode));
     78    filterContext.drawImageBuffer(*imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()));
     79    filterContext.drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), ImagePaintingOptions(CompositeSourceOver, m_mode));
    8080}
    8181#endif
  • trunk/Source/WebCore/platform/graphics/filters/FEColorMatrix.cpp

    r189144 r191049  
    148148        return;
    149149
    150     resultImage->context().drawImageBuffer(in->asImageBuffer(), ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
     150    ImageBuffer* inBuffer = in->asImageBuffer();
     151    if (inBuffer)
     152        resultImage->context().drawImageBuffer(*inBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
    151153
    152154    IntRect imageRect(IntPoint(), resultImage->logicalSize());
  • trunk/Source/WebCore/platform/graphics/filters/FEComposite.cpp

    r189144 r191049  
    277277    ImageBuffer* imageBuffer = in->asImageBuffer();
    278278    ImageBuffer* imageBuffer2 = in2->asImageBuffer();
    279     ASSERT(imageBuffer);
    280     ASSERT(imageBuffer2);
     279    if (!imageBuffer || !imageBuffer2)
     280        return;
    281281
    282282    switch (m_type) {
    283283    case FECOMPOSITE_OPERATOR_OVER:
    284         filterContext.drawImageBuffer(imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()));
    285         filterContext.drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
     284        filterContext.drawImageBuffer(*imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()));
     285        filterContext.drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
    286286        break;
    287287    case FECOMPOSITE_OPERATOR_IN: {
     
    295295        IntRect sourceRect = destinationRect - in->absolutePaintRect().location();
    296296        IntRect source2Rect = destinationRect - in2->absolutePaintRect().location();
    297         filterContext.drawImageBuffer(imageBuffer2, ColorSpaceDeviceRGB, adjustedDestinationRect, source2Rect);
    298         filterContext.drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, adjustedDestinationRect, sourceRect, CompositeSourceIn);
     297        filterContext.drawImageBuffer(*imageBuffer2, ColorSpaceDeviceRGB, adjustedDestinationRect, source2Rect);
     298        filterContext.drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, adjustedDestinationRect, sourceRect, CompositeSourceIn);
    299299        break;
    300300    }
    301301    case FECOMPOSITE_OPERATOR_OUT:
    302         filterContext.drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
    303         filterContext.drawImageBuffer(imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()), IntRect(IntPoint(), imageBuffer2->logicalSize()), CompositeDestinationOut);
     302        filterContext.drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
     303        filterContext.drawImageBuffer(*imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()), IntRect(IntPoint(), imageBuffer2->logicalSize()), CompositeDestinationOut);
    304304        break;
    305305    case FECOMPOSITE_OPERATOR_ATOP:
    306         filterContext.drawImageBuffer(imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()));
    307         filterContext.drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), CompositeSourceAtop);
     306        filterContext.drawImageBuffer(*imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()));
     307        filterContext.drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), CompositeSourceAtop);
    308308        break;
    309309    case FECOMPOSITE_OPERATOR_XOR:
    310         filterContext.drawImageBuffer(imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()));
    311         filterContext.drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), CompositeXOR);
     310        filterContext.drawImageBuffer(*imageBuffer2, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in2->absolutePaintRect()));
     311        filterContext.drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), CompositeXOR);
    312312        break;
    313313    default:
  • trunk/Source/WebCore/platform/graphics/filters/FEDropShadow.cpp

    r189144 r191049  
    8989
    9090    ImageBuffer* sourceImage = in->asImageBuffer();
    91     ASSERT(sourceImage);
     91    if (!sourceImage)
     92        return;
     93
    9294    GraphicsContext& resultContext = resultImage->context();
    9395    resultContext.setAlpha(m_shadowOpacity);
    94     resultContext.drawImageBuffer(sourceImage, ColorSpaceDeviceRGB, drawingRegionWithOffset);
     96    resultContext.drawImageBuffer(*sourceImage, ColorSpaceDeviceRGB, drawingRegionWithOffset);
    9597    resultContext.setAlpha(1);
    9698
     
    109111    resultContext.setCompositeOperation(CompositeDestinationOver);
    110112
    111     resultImage->context().drawImageBuffer(sourceImage, ColorSpaceDeviceRGB, drawingRegion);
     113    resultImage->context().drawImageBuffer(*sourceImage, ColorSpaceDeviceRGB, drawingRegion);
    112114}
    113115
  • trunk/Source/WebCore/platform/graphics/filters/FEMerge.cpp

    r189144 r191049  
    4848        return;
    4949
     50
    5051    GraphicsContext& filterContext = resultImage->context();
    5152    for (unsigned i = 0; i < size; ++i) {
    5253        FilterEffect* in = inputEffect(i);
    53         filterContext.drawImageBuffer(in->asImageBuffer(), ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
     54        if (ImageBuffer* inBuffer = in->asImageBuffer())
     55            filterContext.drawImageBuffer(*inBuffer, ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
    5456    }
    5557}
  • trunk/Source/WebCore/platform/graphics/filters/FEOffset.cpp

    r189144 r191049  
    8080
    8181    ImageBuffer* resultImage = createImageBufferResult();
    82     if (!resultImage)
     82    ImageBuffer* inBuffer = in->asImageBuffer();
     83    if (!resultImage || !inBuffer)
    8384        return;
    8485
     
    8889    Filter& filter = this->filter();
    8990    drawingRegion.move(filter.applyHorizontalScale(m_dx), filter.applyVerticalScale(m_dy));
    90     resultImage->context().drawImageBuffer(in->asImageBuffer(), ColorSpaceDeviceRGB, drawingRegion);
     91    resultImage->context().drawImageBuffer(*inBuffer, ColorSpaceDeviceRGB, drawingRegion);
    9192}
    9293
  • trunk/Source/WebCore/platform/graphics/filters/FETile.cpp

    r189144 r191049  
    4848
    4949    ImageBuffer* resultImage = createImageBufferResult();
    50     if (!resultImage)
     50    ImageBuffer* inBuffer = in->asImageBuffer();
     51    if (!resultImage || !inBuffer)
    5152        return;
    5253
     
    7071    GraphicsContext& tileImageContext = tileImage->context();
    7172    tileImageContext.translate(-inMaxEffectLocation.x(), -inMaxEffectLocation.y());
    72     tileImageContext.drawImageBuffer(in->asImageBuffer(), ColorSpaceDeviceRGB, in->absolutePaintRect().location());
     73    tileImageContext.drawImageBuffer(*inBuffer, ColorSpaceDeviceRGB, in->absolutePaintRect().location());
    7374
    7475    auto tileImageCopy = tileImage->copyImage(CopyBackingStore);
  • trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp

    r189144 r191049  
    5555
    5656    ImageBuffer* imageBuffer = inputEffect(0)->asImageBuffer();
    57     ASSERT(imageBuffer);
     57    if (!imageBuffer)
     58        return;
    5859
    5960    FloatRect imageRect(FloatPoint(), absolutePaintRect().size());
    6061    filterContext.fillRect(imageRect, Color::black, ColorSpaceDeviceRGB);
    61     filterContext.drawImageBuffer(imageBuffer, ColorSpaceDeviceRGB, IntPoint(), CompositeDestinationIn);
     62    filterContext.drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, IntPoint(), CompositeDestinationIn);
    6263}
    6364
  • trunk/Source/WebCore/platform/graphics/filters/SourceGraphic.cpp

    r189144 r191049  
    5050void SourceGraphic::platformApplySoftware()
    5151{
     52    Filter& filter = this->filter();
     53
    5254    ImageBuffer* resultImage = createImageBufferResult();
    53     Filter& filter = this->filter();
    54     if (!resultImage || !filter.sourceImage())
     55    ImageBuffer* sourceImage = filter.sourceImage();
     56    if (!resultImage || !sourceImage)
    5557        return;
    5658
    57     resultImage->context().drawImageBuffer(filter.sourceImage(), ColorSpaceDeviceRGB, IntPoint());
     59    resultImage->context().drawImageBuffer(*sourceImage, ColorSpaceDeviceRGB, IntPoint());
    5860}
    5961
  • trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp

    r190852 r191049  
    526526        return;
    527527
    528     context.drawImage(reinterpret_cast<Image*>(gstImage->image().get()), ColorSpaceSRGB,
    529         rect, gstImage->rect(), CompositeCopy);
     528    if (Image* image = reinterpret_cast<Image*>(gstImage->image().get()))
     529        context.drawImage(*image, ColorSpaceSRGB, rect, gstImage->rect(), CompositeCopy);
    530530}
    531531
  • trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp

    r190095 r191049  
    3636class ImageBackingSurfaceClient : public CoordinatedSurface::Client {
    3737public:
    38     ImageBackingSurfaceClient(Image* image, const IntRect& rect)
     38    ImageBackingSurfaceClient(Image& image, const IntRect& rect)
    3939        : m_image(image)
    4040        , m_rect(rect)
     
    4848
    4949private:
    50     Image* m_image;
     50    Image& m_image;
    5151    IntRect m_rect;
    5252};
     
    129129    IntRect rect(IntPoint::zero(), IntSize(m_image->size()));
    130130
    131     ImageBackingSurfaceClient surfaceClient(m_image.get(), rect);
     131    ImageBackingSurfaceClient surfaceClient(*m_image, rect);
    132132    m_surface->paintToSurface(rect, &surfaceClient);
    133133
  • trunk/Source/WebCore/platform/mac/ThemeMac.mm

    r190623 r191049  
    687687        NSRect imageBufferDrawRect = NSRect(FloatRect(buttonFocusRectOutlineWidth, buttonFocusRectOutlineWidth, rect.width(), rect.height()));
    688688        auto imageBuffer = ImageBuffer::createCompatibleBuffer(rect.size() + 2 * FloatSize(buttonFocusRectOutlineWidth, buttonFocusRectOutlineWidth), deviceScaleFactor, ColorSpaceSRGB, context, false);
     689        if (!imageBuffer)
     690            return needsRepaint;
    689691        {
    690692            LocalCurrentGraphicsContext localContext(imageBuffer->context());
    691693            needsRepaint = drawCellOrFocusRingIntoRectWithView(cell, imageBufferDrawRect, view, drawButtonCell, drawFocusRing);
    692694        }
    693         context.drawImageBuffer(imageBuffer.get(), ColorSpaceSRGB, rect.location() - FloatSize(buttonFocusRectOutlineWidth, buttonFocusRectOutlineWidth));
     695        context.drawImageBuffer(*imageBuffer, ColorSpaceSRGB, rect.location() - FloatSize(buttonFocusRectOutlineWidth, buttonFocusRectOutlineWidth));
    694696        return needsRepaint;
    695697    }
  • trunk/Source/WebCore/rendering/FilterEffectRenderer.cpp

    r190124 r191049  
    430430    destRect.move(m_paintOffset.x(), m_paintOffset.y());
    431431
    432     destinationContext.drawImageBuffer(filter->output(), m_renderLayer->renderer().style().colorSpace(),
    433         snapRectToDevicePixels(destRect, m_renderLayer->renderer().document().deviceScaleFactor()));
     432    if (ImageBuffer* outputBuffer = filter->output()) {
     433        destinationContext.drawImageBuffer(*outputBuffer, m_renderLayer->renderer().style().colorSpace(),
     434            snapRectToDevicePixels(destRect, m_renderLayer->renderer().document().deviceScaleFactor()));
     435    }
    434436
    435437    filter->clearIntermediateResults();
  • trunk/Source/WebCore/rendering/ImageQualityController.cpp

    r189144 r191049  
    100100}
    101101
    102 bool ImageQualityController::shouldPaintAtLowQuality(GraphicsContext& context, RenderBoxModelObject* object, Image* image, const void *layer, const LayoutSize& size)
     102bool ImageQualityController::shouldPaintAtLowQuality(GraphicsContext& context, RenderBoxModelObject* object, Image& image, const void *layer, const LayoutSize& size)
    103103{
    104104    // If the image is not a bitmap image, then none of this is relevant and we just paint at high
    105105    // quality.
    106     if (!image || !(image->isBitmapImage() || image->isPDFDocumentImage()) || context.paintingDisabled())
     106    if (!(image.isBitmapImage() || image.isPDFDocumentImage()) || context.paintingDisabled())
    107107        return false;
    108108
     
    119119    // Make sure to use the unzoomed image size, since if a full page zoom is in effect, the image
    120120    // is actually being scaled.
    121     IntSize imageSize(image->width(), image->height());
     121    IntSize imageSize(image.width(), image.height());
    122122
    123123    // Look ourselves up in the hashtables.
     
    157157    // There is no need to hash scaled images that always use low quality mode when the page demands it. This is the iChat case.
    158158    if (m_renderView.frame().page()->inLowQualityImageInterpolationMode()) {
    159         double totalPixels = static_cast<double>(image->width()) * static_cast<double>(image->height());
     159        double totalPixels = static_cast<double>(image.width()) * static_cast<double>(image.height());
    160160        if (totalPixels > cInterpolationCutoff)
    161161            return true;
  • trunk/Source/WebCore/rendering/ImageQualityController.h

    r189144 r191049  
    4444    explicit ImageQualityController(const RenderView&);
    4545
    46     bool shouldPaintAtLowQuality(GraphicsContext&, RenderBoxModelObject*, Image*, const void* layer, const LayoutSize&);
     46    bool shouldPaintAtLowQuality(GraphicsContext&, RenderBoxModelObject*, Image&, const void* layer, const LayoutSize&);
    4747    void rendererWillBeDestroyed(RenderBoxModelObject& renderer) { removeObject(&renderer); }
    4848
  • trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp

    r190910 r191049  
    162162}
    163163
    164 bool RenderBoxModelObject::shouldPaintAtLowQuality(GraphicsContext& context, Image* image, const void* layer, const LayoutSize& size)
     164bool RenderBoxModelObject::shouldPaintAtLowQuality(GraphicsContext& context, Image& image, const void* layer, const LayoutSize& size)
    165165{
    166166    return view().imageQualityController().shouldPaintAtLowQuality(context, this, image, layer, size);
     
    831831        BackgroundImageGeometry geometry = calculateBackgroundImageGeometry(paintInfo.paintContainer, *bgLayer, rect.location(), scrolledPaintRect, backgroundObject);
    832832        geometry.clip(LayoutRect(pixelSnappedRect));
    833         if (!geometry.destRect().isEmpty()) {
     833        RefPtr<Image> image;
     834        if (!geometry.destRect().isEmpty() && (image = bgImage->image(backgroundObject ? backgroundObject : this, geometry.tileSize()))) {
    834835            CompositeOperator compositeOp = op == CompositeSourceOver ? bgLayer->composite() : op;
    835             auto clientForBackgroundImage = backgroundObject ? backgroundObject : this;
    836             RefPtr<Image> image = bgImage->image(clientForBackgroundImage, geometry.tileSize());
    837836            context.setDrawLuminanceMask(bgLayer->maskSourceType() == MaskLuminance);
    838             bool useLowQualityScaling = shouldPaintAtLowQuality(context, image.get(), bgLayer, geometry.tileSize());
    839             context.drawTiledImage(image.get(), style().colorSpace(), geometry.destRect(), toLayoutPoint(geometry.relativePhase()), geometry.tileSize(), geometry.spaceSize(), ImagePaintingOptions(compositeOp, bgLayer->blendMode(), ImageOrientationDescription(), useLowQualityScaling));
    840         }
    841     }
    842 
    843     if (bgLayer->clip() == TextFillBox) {
    844         context.drawImageBuffer(maskImage.get(), ColorSpaceDeviceRGB, maskRect, CompositeDestinationIn);
     837            bool useLowQualityScaling = shouldPaintAtLowQuality(context, *image, bgLayer, geometry.tileSize());
     838            context.drawTiledImage(*image, style().colorSpace(), geometry.destRect(), toLayoutPoint(geometry.relativePhase()), geometry.tileSize(), geometry.spaceSize(), ImagePaintingOptions(compositeOp, bgLayer->blendMode(), ImageOrientationDescription(), useLowQualityScaling));
     839        }
     840    }
     841
     842    if (maskImage && bgLayer->clip() == TextFillBox) {
     843        context.drawImageBuffer(*maskImage, ColorSpaceDeviceRGB, maskRect, CompositeDestinationIn);
    845844        context.endTransparencyLayer();
    846845    }
  • trunk/Source/WebCore/rendering/RenderBoxModelObject.h

    r190883 r191049  
    252252    LayoutRect borderInnerRectAdjustedForBleedAvoidance(const GraphicsContext&, const LayoutRect&, BackgroundBleedAvoidance) const;
    253253
    254     bool shouldPaintAtLowQuality(GraphicsContext&, Image*, const void*, const LayoutSize&);
     254    bool shouldPaintAtLowQuality(GraphicsContext&, Image&, const void*, const LayoutSize&);
    255255
    256256    RenderBoxModelObject* continuation() const;
  • trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp

    r189830 r191049  
    198198}
    199199
    200 void RenderEmbeddedObject::paintSnapshotImage(PaintInfo& paintInfo, const LayoutPoint& paintOffset, Image* image)
     200void RenderEmbeddedObject::paintSnapshotImage(PaintInfo& paintInfo, const LayoutPoint& paintOffset, Image& image)
    201201{
    202202    LayoutUnit cWidth = contentWidth();
     
    215215        return;
    216216
    217     bool useLowQualityScaling = shouldPaintAtLowQuality(context, image, image, alignedRect.size());
     217    bool useLowQualityScaling = shouldPaintAtLowQuality(context, image, &image, alignedRect.size());
    218218    ImageOrientationDescription orientationDescription(shouldRespectImageOrientation());
    219219#if ENABLE(CSS_IMAGE_ORIENTATION)
     
    240240
    241241    if (Image* snapshot = downcast<HTMLPlugInImageElement>(plugInElement).snapshotImage())
    242         paintSnapshotImage(paintInfo, paintOffset, snapshot);
     242        paintSnapshotImage(paintInfo, paintOffset, *snapshot);
    243243}
    244244
  • trunk/Source/WebCore/rendering/RenderEmbeddedObject.h

    r178510 r191049  
    7474    virtual bool isEmbeddedObject() const override final { return true; }
    7575
    76     void paintSnapshotImage(PaintInfo&, const LayoutPoint&, Image*);
     76    void paintSnapshotImage(PaintInfo&, const LayoutPoint&, Image&);
    7777    virtual void paintContents(PaintInfo&, const LayoutPoint&) override final;
    7878
  • trunk/Source/WebCore/rendering/RenderImage.cpp

    r189144 r191049  
    425425                orientationDescription.setImageOrientationEnum(style().imageOrientation());
    426426#endif
    427                 context.drawImage(image.get(), style().colorSpace(), snapRectToDevicePixels(LayoutRect(paintOffset + imageOffset, imageSize), deviceScaleFactor), orientationDescription);
     427                context.drawImage(*image, style().colorSpace(), snapRectToDevicePixels(LayoutRect(paintOffset + imageOffset, imageSize), deviceScaleFactor), orientationDescription);
    428428                errorPictureDrawn = true;
    429429            }
     
    549549    CompositeOperator compositeOperator = imageElement ? imageElement->compositeOperator() : CompositeSourceOver;
    550550    Image* image = imageResource().image().get();
    551     bool useLowQualityScaling = shouldPaintAtLowQuality(context, image, image, LayoutSize(rect.size()));
     551    bool useLowQualityScaling = image && shouldPaintAtLowQuality(context, *image, image, LayoutSize(rect.size()));
    552552    ImageOrientationDescription orientationDescription(shouldRespectImageOrientation());
    553553#if ENABLE(CSS_IMAGE_ORIENTATION)
    554554    orientationDescription.setImageOrientationEnum(style().imageOrientation());
    555555#endif
    556     context.drawImage(imageResource().image(rect.width(), rect.height()).get(), style().colorSpace(), rect,
     556    context.drawImage(*img, style().colorSpace(), rect,
    557557        ImagePaintingOptions(compositeOperator, BlendModeNormal, orientationDescription, useLowQualityScaling));
    558558}
  • trunk/Source/WebCore/rendering/RenderImageResourceStyleImage.cpp

    r158163 r191049  
    5858    ASSERT(m_renderer);
    5959    m_styleImage->removeClient(m_renderer);
    60     m_cachedImage = 0;
     60    m_cachedImage = nullptr;
    6161}
    6262
     
    6565    // Generated content may trigger calls to image() while we're still pending, don't assert but gracefully exit.
    6666    if (m_styleImage->isPendingImage())
    67         return 0;
     67        return nullptr;
    6868    return m_styleImage->image(m_renderer, IntSize(width, height));
    6969}
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r191002 r191049  
    36563656        context.translate(resizerCornerRect.x() + cornerResizerSize.width(), resizerCornerRect.y() + resizerCornerRect.height() - cornerResizerSize.height());
    36573657        context.scale(FloatSize(-1.0, 1.0));
    3658         context.drawImage(resizeCornerImage.get(), renderer().style().colorSpace(), FloatRect(FloatPoint(), cornerResizerSize));
     3658        if (resizeCornerImage)
     3659            context.drawImage(*resizeCornerImage, renderer().style().colorSpace(), FloatRect(FloatPoint(), cornerResizerSize));
    36593660        context.restore();
    36603661        return;
    36613662    }
     3663   
     3664    if (!resizeCornerImage)
     3665        return;
    36623666    FloatRect imageRect = snapRectToDevicePixels(LayoutRect(resizerCornerRect.maxXMaxYCorner() - cornerResizerSize, cornerResizerSize), renderer().document().deviceScaleFactor());
    3663     context.drawImage(resizeCornerImage.get(), renderer().style().colorSpace(), imageRect);
     3667    context.drawImage(*resizeCornerImage, renderer().style().colorSpace(), imageRect);
    36643668}
    36653669
  • trunk/Source/WebCore/rendering/RenderListMarker.cpp

    r190883 r191049  
    11981198
    11991199    if (isImage()) {
    1200         context.drawImage(m_image->image(this, marker.size()).get(), style().colorSpace(), marker);
     1200        if (RefPtr<Image> markerImage = m_image->image(this, marker.size()))
     1201            context.drawImage(*markerImage, style().colorSpace(), marker);
    12011202        if (selectionState() != SelectionNone) {
    12021203            LayoutRect selRect = localSelectionRect();
  • trunk/Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp

    r189144 r191049  
    136136        return;
    137137
    138     bool useLowQualityScaling = shouldPaintAtLowQuality(context, image, image, alignedRect.size());
     138    bool useLowQualityScaling = shouldPaintAtLowQuality(context, *image, image, alignedRect.size());
    139139
    140140    ImageOrientationDescription orientationDescription(shouldRespectImageOrientation());
     
    142142    orientationDescription.setImageOrientationEnum(style().imageOrientation());
    143143#endif
    144     context.drawImage(image, style().colorSpace(), alignedRect, ImagePaintingOptions(orientationDescription, useLowQualityScaling));
     144    context.drawImage(*image, style().colorSpace(), alignedRect, ImagePaintingOptions(orientationDescription, useLowQualityScaling));
    145145}
    146146
  • trunk/Source/WebCore/rendering/RenderThemeMac.mm

    r190800 r191049  
    11591159    }
    11601160
    1161     paintInfo.context().drawImageBuffer(imageBuffer.get(), ColorSpaceDeviceRGB, inflatedRect.location());
     1161    paintInfo.context().drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, inflatedRect.location());
    11621162    return false;
    11631163}
     
    19131913        return true;
    19141914
    1915     context.drawImage(snapshot, plugInRenderer.style().colorSpace(), alignedPluginRect, CompositeSourceOver);
     1915    context.drawImage(*snapshot, plugInRenderer.style().colorSpace(), alignedPluginRect, CompositeSourceOver);
    19161916    return false;
    19171917}
  • trunk/Source/WebCore/rendering/RenderThemeWin.cpp

    r189830 r191049  
    893893    static Image* cancelImage = Image::loadPlatformResource("searchCancel").leakRef();
    894894    static Image* cancelPressedImage = Image::loadPlatformResource("searchCancelPressed").leakRef();
    895     paintInfo.context().drawImage(isPressed(o) ? cancelPressedImage : cancelImage, o.style().colorSpace(), bounds);
     895    paintInfo.context().drawImage(isPressed(o) ? *cancelPressedImage : *cancelImage, o.style().colorSpace(), bounds);
    896896    return false;
    897897}
     
    941941   
    942942    static Image* magnifierImage = Image::loadPlatformResource("searchMagnifier").leakRef();
    943     paintInfo.context().drawImage(magnifierImage, o.style().colorSpace(), bounds);
     943    paintInfo.context().drawImage(*magnifierImage, o.style().colorSpace(), bounds);
    944944    return false;
    945945}
     
    976976
    977977    static Image* magnifierImage = Image::loadPlatformResource("searchMagnifierResults").leakRef();
    978     paintInfo.context().drawImage(magnifierImage, o.style().colorSpace(), bounds);
     978    paintInfo.context().drawImage(*magnifierImage, o.style().colorSpace(), bounds);
    979979    return false;
    980980}
  • trunk/Source/WebCore/rendering/shapes/Shape.cpp

    r190124 r191049  
    185185    if (imageBuffer) {
    186186        GraphicsContext& graphicsContext = imageBuffer->context();
    187         graphicsContext.drawImage(image, ColorSpaceDeviceRGB, IntRect(IntPoint(), imageRect.size()));
     187        if (image)
     188            graphicsContext.drawImage(*image, ColorSpaceDeviceRGB, IntRect(IntPoint(), imageRect.size()));
    188189
    189190        RefPtr<Uint8ClampedArray> pixelArray = imageBuffer->getUnmultipliedImageData(IntRect(IntPoint(), imageRect.size()));
  • trunk/Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp

    r190883 r191049  
    159159    ASSERT(!styleImage->isPendingImage());
    160160    RefPtr<Image> image = styleImage->image(const_cast<RenderBox*>(&m_renderer), imageSize);
    161 
    162161    return Shape::createRasterShape(image.get(), shapeImageThreshold, imageRect, marginRect, writingMode, margin);
    163162}
  • trunk/Source/WebCore/rendering/style/NinePieceImage.cpp

    r191017 r191049  
    207207
    208208    RefPtr<Image> image = styleImage->image(renderer, source);
     209    if (!image)
     210        return;
     211
    209212    ColorSpace colorSpace = style.colorSpace();
    210213
     
    214217
    215218        if (isCornerPiece(piece)) {
    216             graphicsContext.drawImage(image.get(), colorSpace, destinationRects[piece], sourceRects[piece], op);
     219            graphicsContext.drawImage(*image, colorSpace, destinationRects[piece], sourceRects[piece], op);
    217220            continue;
    218221        }
     
    220223        Image::TileRule hRule = isHorizontalPiece(piece) ? static_cast<Image::TileRule>(horizontalRule()) : Image::StretchTile;
    221224        Image::TileRule vRule = isVerticalPiece(piece) ? static_cast<Image::TileRule>(verticalRule()) : Image::StretchTile;
    222         graphicsContext.drawTiledImage(image.get(), colorSpace, destinationRects[piece], sourceRects[piece], tileScales[piece], hRule, vRule, op);
     225        graphicsContext.drawTiledImage(*image, colorSpace, destinationRects[piece], sourceRects[piece], tileScales[piece], hRule, vRule, op);
    223226    }
    224227}
  • trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp

    r189144 r191049  
    162162{
    163163    RefPtr<Image> image = imageResource().image();
     164    if (!image)
     165        return;
     166
    164167    FloatRect destRect = m_objectBoundingBox;
    165168    FloatRect srcRect(0, 0, image->width(), image->height());
     
    167170    imageElement().preserveAspectRatio().transformRect(destRect, srcRect);
    168171
    169     paintInfo.context().drawImage(image.get(), ColorSpaceDeviceRGB, destRect, srcRect);
     172    paintInfo.context().drawImage(*image, ColorSpaceDeviceRGB, destRect, srcRect);
    170173}
    171174
  • trunk/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp

    r189565 r191049  
    271271
    272272            context->scale(FloatSize(1 / filterData->filter->filterResolution().width(), 1 / filterData->filter->filterResolution().height()));
    273             context->drawImageBuffer(resultImage, renderer.style().colorSpace(), lastEffect->absolutePaintRect());
     273            context->drawImageBuffer(*resultImage, renderer.style().colorSpace(), lastEffect->absolutePaintRect());
    274274            context->scale(filterData->filter->filterResolution());
    275275
  • trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp

    r190124 r191049  
    310310void SVGRenderingContext::clipToImageBuffer(GraphicsContext& context, const AffineTransform& absoluteTransform, const FloatRect& targetRect, std::unique_ptr<ImageBuffer>& imageBuffer, bool safeToClear)
    311311{
    312     ASSERT(imageBuffer);
     312    if (!imageBuffer)
     313        return;
    313314
    314315    FloatRect absoluteTargetRect = calculateImageBufferRect(targetRect, absoluteTransform);
     
    317318    // So the actual masking process has to be done in the absolute coordinate space as well.
    318319    context.concatCTM(absoluteTransform.inverse());
    319     context.clipToImageBuffer(imageBuffer.get(), absoluteTargetRect);
     320    context.clipToImageBuffer(*imageBuffer, absoluteTargetRect);
    320321    context.concatCTM(absoluteTransform);
    321322
     
    361362    }
    362363
    363     m_paintInfo->context().drawImageBuffer(imageBuffer.get(), ColorSpaceDeviceRGB, boundingBox);
     364    m_paintInfo->context().drawImageBuffer(*imageBuffer, ColorSpaceDeviceRGB, boundingBox);
    364365    return true;
    365366}
  • trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp

    r189144 r191049  
    136136    }
    137137
    138     resultImage->context().drawImage(m_image.get(), ColorSpaceDeviceRGB, destRect, srcRect);
     138    resultImage->context().drawImage(*m_image, ColorSpaceDeviceRGB, destRect, srcRect);
    139139}
    140140
  • trunk/Source/WebKit/win/ChangeLog

    r190859 r191049  
     12015-10-14  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Change GraphicsContext image-drawing functions to take references
     4        https://bugs.webkit.org/show_bug.cgi?id=150108
     5
     6        Reviewed by Tim Horton and Sam Weinig.
     7
     8        Change GraphicsContext::drawImage(), drawTiledImage(), drawImageBuffer(), clipToImageBuffer()
     9        and isCompatibleWithBuffer() to take references, and adjust calling code, adding
     10        null-checks where necessary.
     11
     12        * FullscreenVideoController.cpp:
     13        (HUDButton::draw):
     14        * Plugins/PluginView.cpp:
     15        (WebCore::PluginView::paintMissingPluginIcon):
     16
    1172015-10-09  Anders Carlsson  <andersca@apple.com>
    218
  • trunk/Source/WebKit/win/FullscreenVideoController.cpp

    r189830 r191049  
    119119{
    120120    Image* image = (m_showAltButton && m_buttonImageAlt) ? m_buttonImageAlt.get() : m_buttonImage.get();
    121     context.drawImage(image, ColorSpaceDeviceRGB, m_rect.location());
     121    context.drawImage(*image, ColorSpaceDeviceRGB, m_rect.location());
    122122}
    123123
  • trunk/Source/WebKit/win/Plugins/PluginView.cpp

    r189919 r191049  
    11231123    context.save();
    11241124    context.clip(windowClipRect());
    1125     context.drawImage(nullPluginImage.get(), ColorSpaceDeviceRGB, imageRect.location());
     1125    context.drawImage(*nullPluginImage, ColorSpaceDeviceRGB, imageRect.location());
    11261126    context.restore();
    11271127}
  • trunk/Source/WebKit2/ChangeLog

    r191047 r191049  
     12015-10-14  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Change GraphicsContext image-drawing functions to take references
     4        https://bugs.webkit.org/show_bug.cgi?id=150108
     5
     6        Reviewed by Tim Horton and Sam Weinig.
     7
     8        Change GraphicsContext::drawImage(), drawTiledImage(), drawImageBuffer(), clipToImageBuffer()
     9        and isCompatibleWithBuffer() to take references, and adjust calling code, adding
     10        null-checks where necessary.
     11
     12        * Shared/ContextMenuContextData.cpp:
     13        (WebKit::ContextMenuContextData::ContextMenuContextData):
     14        * Shared/WebCoreArgumentCoders.cpp:
     15        (IPC::encodeImage):
     16        (IPC::encodeOptionalImage):
     17        (IPC::ArgumentCoder<Cursor>::encode):
     18        * WebProcess/WebPage/WebFrame.cpp:
     19        (WebKit::WebFrame::createSelectionSnapshot):
     20
    1212015-10-14  Anders Carlsson  <andersca@apple.com>
    222
  • trunk/Source/WebKit2/Shared/ContextMenuContextData.cpp

    r182753 r191049  
    5959    // FIXME: figure out the rounding startegy for ShareableBitmap.
    6060    m_controlledImage = ShareableBitmap::createShareable(IntSize(image->size()), ShareableBitmap::SupportsAlpha);
    61     m_controlledImage->createGraphicsContext()->drawImage(image, ColorSpaceDeviceRGB, IntPoint());
     61    m_controlledImage->createGraphicsContext()->drawImage(*image, ColorSpaceDeviceRGB, IntPoint());
    6262#endif
    6363}
  • trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp

    r189810 r191049  
    722722}
    723723
    724 static void encodeImage(ArgumentEncoder& encoder, Image* image)
    725 {
    726     RefPtr<ShareableBitmap> bitmap = ShareableBitmap::createShareable(IntSize(image->size()), ShareableBitmap::SupportsAlpha);
     724static void encodeImage(ArgumentEncoder& encoder, Image& image)
     725{
     726    RefPtr<ShareableBitmap> bitmap = ShareableBitmap::createShareable(IntSize(image.size()), ShareableBitmap::SupportsAlpha);
    727727    bitmap->createGraphicsContext()->drawImage(image, ColorSpaceDeviceRGB, IntPoint());
    728728
     
    754754
    755755    if (hasImage)
    756         encodeImage(encoder, image);
     756        encodeImage(encoder, *image);
    757757}
    758758
     
    785785
    786786    encoder << true;
    787     encodeImage(encoder, cursor.image());
     787    encodeImage(encoder, *cursor.image());
    788788    encoder << cursor.hotSpot();
    789789#if ENABLE(MOUSE_CURSOR_SCALE)
     
    12541254void ArgumentCoder<PasteboardImage>::encode(ArgumentEncoder& encoder, const PasteboardImage& pasteboardImage)
    12551255{
    1256     encodeImage(encoder, pasteboardImage.image.get());
     1256    encodeOptionalImage(encoder, pasteboardImage.image.get());
    12571257    encoder << pasteboardImage.url.url;
    12581258    encoder << pasteboardImage.url.title;
     
    12641264bool ArgumentCoder<PasteboardImage>::decode(ArgumentDecoder& decoder, PasteboardImage& pasteboardImage)
    12651265{
    1266     if (!decodeImage(decoder, pasteboardImage.image))
     1266    if (!decodeOptionalImage(decoder, pasteboardImage.image))
    12671267        return false;
    12681268    if (!decoder.decode(pasteboardImage.url.url))
  • trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp

    r189193 r191049  
    839839    float deviceScaleFactor = coreFrame()->page()->deviceScaleFactor();
    840840    graphicsContext->scale(FloatSize(deviceScaleFactor, deviceScaleFactor));
    841     graphicsContext->drawImageBuffer(snapshot.get(), ColorSpaceDeviceRGB, FloatPoint());
     841    graphicsContext->drawImageBuffer(*snapshot, ColorSpaceDeviceRGB, FloatPoint());
    842842
    843843    return sharedSnapshot.release();
  • trunk/Source/WebKit2/WebProcess/WebPage/ios/FindControllerIOS.mm

    r189178 r191049  
    8484        context.fillPath(path);
    8585
    86     context.drawImage(indicatorImage, ColorSpaceDeviceRGB, overlay.bounds());
     86    context.drawImage(*indicatorImage, ColorSpaceDeviceRGB, overlay.bounds());
    8787}
    8888
  • trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm

    r190604 r191049  
    22192219                                if (RefPtr<ShareableBitmap> sharedBitmap = ShareableBitmap::createShareable(IntSize(bitmapSize), ShareableBitmap::SupportsAlpha)) {
    22202220                                    auto graphicsContext = sharedBitmap->createGraphicsContext();
    2221                                     graphicsContext->drawImage(image, ColorSpaceDeviceRGB, FloatRect(0, 0, bitmapSize.width(), bitmapSize.height()));
     2221                                    graphicsContext->drawImage(*image, ColorSpaceDeviceRGB, FloatRect(0, 0, bitmapSize.width(), bitmapSize.height()));
    22222222                                    info.image = sharedBitmap;
    22232223                                }
Note: See TracChangeset for help on using the changeset viewer.