summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/graphics/filters/SourceAlpha.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/platform/graphics/filters/SourceAlpha.cpp')
-rw-r--r--WebCore/platform/graphics/filters/SourceAlpha.cpp22
1 files changed, 8 insertions, 14 deletions
diff --git a/WebCore/platform/graphics/filters/SourceAlpha.cpp b/WebCore/platform/graphics/filters/SourceAlpha.cpp
index beaf2e7..7dc56d9 100644
--- a/WebCore/platform/graphics/filters/SourceAlpha.cpp
+++ b/WebCore/platform/graphics/filters/SourceAlpha.cpp
@@ -42,31 +42,25 @@ const AtomicString& SourceAlpha::effectName()
return s_effectName;
}
-FloatRect SourceAlpha::determineFilterPrimitiveSubregion(Filter* filter)
+void SourceAlpha::determineAbsolutePaintRect(Filter* filter)
{
- FloatRect clippedSourceRect = filter->sourceImageRect();
- if (filter->sourceImageRect().x() < filter->filterRegion().x())
- clippedSourceRect.setX(filter->filterRegion().x());
- if (filter->sourceImageRect().y() < filter->filterRegion().y())
- clippedSourceRect.setY(filter->filterRegion().y());
- setFilterPrimitiveSubregion(clippedSourceRect);
- clippedSourceRect.scale(filter->filterResolution().width(), filter->filterResolution().height());
- setRepaintRectInLocalCoordinates(clippedSourceRect);
- return filter->filterRegion();
+ FloatRect paintRect = filter->sourceImageRect();
+ paintRect.scale(filter->filterResolution().width(), filter->filterResolution().height());
+ setAbsolutePaintRect(enclosingIntRect(paintRect));
}
void SourceAlpha::apply(Filter* filter)
{
- GraphicsContext* filterContext = effectContext();
- if (!filterContext)
+ GraphicsContext* filterContext = effectContext(filter);
+ if (!filterContext || !filter->sourceImage())
return;
setIsAlphaImage(true);
- FloatRect imageRect(FloatPoint(), filter->sourceImage()->size());
+ FloatRect imageRect(FloatPoint(), absolutePaintRect().size());
filterContext->save();
filterContext->clipToImageBuffer(filter->sourceImage(), imageRect);
- filterContext->fillRect(imageRect, Color::black, DeviceColorSpace);
+ filterContext->fillRect(imageRect, Color::black, ColorSpaceDeviceRGB);
filterContext->restore();
}