#include "platform/text/TextStream.h"
#include "platform/transforms/AffineTransform.h"
-namespace WebCore {
+namespace blink {
FEImage::FEImage(Filter* filter, PassRefPtr<Image> image, PassRefPtr<SVGPreserveAspectRatio> preserveAspectRatio)
: FilterEffect(filter)
, m_image(image)
- , m_document(0)
+ , m_treeScope(0)
, m_preserveAspectRatio(preserveAspectRatio)
{
}
-FEImage::FEImage(Filter* filter, Document& document, const String& href, PassRefPtr<SVGPreserveAspectRatio> preserveAspectRatio)
+FEImage::FEImage(Filter* filter, TreeScope& treeScope, const String& href, PassRefPtr<SVGPreserveAspectRatio> preserveAspectRatio)
: FilterEffect(filter)
- , m_document(&document)
+ , m_treeScope(&treeScope)
, m_href(href)
, m_preserveAspectRatio(preserveAspectRatio)
{
return adoptRef(new FEImage(filter, image, preserveAspectRatio));
}
-PassRefPtr<FEImage> FEImage::createWithIRIReference(Filter* filter, Document& document, const String& href, PassRefPtr<SVGPreserveAspectRatio> preserveAspectRatio)
+PassRefPtr<FEImage> FEImage::createWithIRIReference(Filter* filter, TreeScope& treeScope, const String& href, PassRefPtr<SVGPreserveAspectRatio> preserveAspectRatio)
{
- return adoptRef(new FEImage(filter, document, href, preserveAspectRatio));
+ return adoptRef(new FEImage(filter, treeScope, href, preserveAspectRatio));
}
static FloatRect getRendererRepaintRect(RenderObject* renderer)
{
return renderer->localToParentTransform().mapRect(
- renderer->repaintRectInLocalCoordinates());
+ 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* FEImage::referencedRenderer() const
{
- if (!m_document)
+ if (!m_treeScope)
return 0;
- Element* hrefElement = SVGURIReference::targetElementFromIRIString(m_href, *m_document);
+ Element* hrefElement = SVGURIReference::targetElementFromIRIString(m_href, *m_treeScope);
if (!hrefElement || !hrefElement->isSVGElement())
return 0;
return hrefElement->renderer();
GraphicsContext* context = builder->context();
if (!context)
- return adoptRef(new SkBitmapSource(SkBitmap()));
+ return adoptRef(SkBitmapSource::Create(SkBitmap()));
AffineTransform contentTransformation;
+ FloatRect bounds(FloatPoint(), dstRect.size());
context->save();
- context->beginRecording(FloatRect(FloatPoint(), dstRect.size()));
+ context->beginRecording(bounds);
context->concatCTM(transform);
SVGRenderingContext::renderSubtree(context, renderer, contentTransformation);
RefPtr<DisplayList> displayList = context->endRecording();
context->restore();
- RefPtr<SkImageFilter> result = adoptRef(new SkPictureImageFilter(displayList->picture(), dstRect));
+ RefPtr<SkImageFilter> result = adoptRef(SkPictureImageFilter::Create(displayList->picture(), dstRect));
return result.release();
}
{
RenderObject* renderer = referencedRenderer();
if (!m_image && !renderer)
- return adoptRef(new SkBitmapSource(SkBitmap()));
+ return adoptRef(SkBitmapSource::Create(SkBitmap()));
setOperatingColorSpace(ColorSpaceDeviceRGB);
m_preserveAspectRatio->transformRect(dstRect, srcRect);
if (!m_image->nativeImageForCurrentFrame())
- return adoptRef(new SkBitmapSource(SkBitmap()));
+ return adoptRef(SkBitmapSource::Create(SkBitmap()));
- RefPtr<SkImageFilter> result = adoptRef(new SkBitmapSource(m_image->nativeImageForCurrentFrame()->bitmap(), srcRect, dstRect));
+ RefPtr<SkImageFilter> result = adoptRef(SkBitmapSource::Create(m_image->nativeImageForCurrentFrame()->bitmap(), srcRect, dstRect));
return result.release();
}
-} // namespace WebCore
+} // namespace blink