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..d4e573d341d500a58bd352bb13f7e7b6c2bda2ba 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) |
chrishtr
2014/09/02 22:05:58
Is this function called anywhere?
Stephen Chennney
2014/09/03 14:19:37
Yep, 3 times in this file only. I wanted to replac
|
+{ |
+ 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,13 @@ PassRefPtr<SkImageFilter> FEImage::createImageFilterForRenderer(RenderObject* re |
if (!context) |
return adoptRef(SkBitmapSource::Create(SkBitmap())); |
AffineTransform contentTransformation; |
+ FloatRect bounds(FloatPoint(), dstRect.size()); |
+ RefPtr<DisplayList> displayList = DisplayList::create(bounds); |
context->save(); |
- context->beginRecording(FloatRect(FloatPoint(), dstRect.size())); |
+ context->beginRecording(displayList); |
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(); |