| Index: Source/core/svg/graphics/filters/SVGFEImage.cpp
|
| diff --git a/Source/core/svg/graphics/filters/SVGFEImage.cpp b/Source/core/svg/graphics/filters/SVGFEImage.cpp
|
| index de94de80f00eacb415afd011cd40f224141faabd..2d6c4cad8b92e75bcf51e044c5aa9c61a7ccc142 100644
|
| --- a/Source/core/svg/graphics/filters/SVGFEImage.cpp
|
| +++ b/Source/core/svg/graphics/filters/SVGFEImage.cpp
|
| @@ -72,6 +72,14 @@ static FloatRect getRendererRepaintRect(RenderObject* renderer)
|
| renderer->paintInvalidationRectInLocalCoordinates());
|
| }
|
|
|
| +AffineTransform makeMapBetweenRects(const FloatRect& source, const FloatRect& dest)
|
| +{
|
| + AffineTransform transform;
|
| + transform.translate(dest.x() - source.x(), dest.y() - source.y());
|
| + transform.scale(dest.width() / source.width(), dest.height() / source.height());
|
| + return transform;
|
| +}
|
| +
|
| FloatRect FEImage::determineAbsolutePaintRect(const FloatRect& originalRequestedRect)
|
| {
|
| RenderObject* renderer = referencedRenderer();
|
| @@ -203,11 +211,12 @@ PassRefPtr<SkImageFilter> FEImage::createImageFilterForRenderer(RenderObject* re
|
| if (!context)
|
| return adoptRef(SkBitmapSource::Create(SkBitmap()));
|
| AffineTransform contentTransformation;
|
| + FloatRect bounds(FloatPoint(), dstRect.size());
|
| context->save();
|
| - context->beginRecording(FloatRect(FloatPoint(), dstRect.size()));
|
| + RefPtr<DisplayList> displayList = context->beginRecording(bounds);
|
| context->concatCTM(transform);
|
| SVGRenderingContext::renderSubtree(context, renderer, contentTransformation);
|
| - RefPtr<DisplayList> displayList = context->endRecording();
|
| + context->endRecording();
|
| context->restore();
|
| RefPtr<SkImageFilter> result = adoptRef(SkPictureImageFilter::Create(displayList->picture(), dstRect));
|
| return result.release();
|
|
|