[Webkit-unassigned] [Bug 181974] feFlood doesn't work when filter resolution is reduced
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Wed Jan 31 10:01:20 PST 2018
https://bugs.webkit.org/show_bug.cgi?id=181974
--- Comment #3 from Simon Fraser (smfr) <simon.fraser at apple.com> ---
Need something like this:
diff --git a/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp b/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp
index 8ca9ada96d74b94ddf7b55a7f8fa070f617ae04c..dc21410a207996a7376bf1c32450d9c9e4007338 100644
--- a/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp
+++ b/Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp
@@ -176,13 +176,16 @@ bool RenderSVGResourceFilter::applyResource(RenderElement& renderer, const Rende
if (!lastEffect || lastEffect->totalNumberOfEffectInputs() > maxTotalOfEffectInputs)
return false;
- LOG_WITH_STREAM(Filters, stream << "RenderSVGResourceFilter::applyResource\n" << *filterData->builder->lastEffect());
-
RenderSVGResourceFilterPrimitive::determineFilterPrimitiveSubregion(*lastEffect);
FloatRect subRegion = lastEffect->maxEffectRect();
+
+ LOG_WITH_STREAM(Filters, stream << "RenderSVGResourceFilter::applyResource (scale " << scale << ", subregion " << subRegion << ")\n" << *filterData->builder->lastEffect());
+
// At least one FilterEffect has a too big image size,
// recalculate the effect sizes with new scale factors.
- if (ImageBuffer::sizeNeedsClamping(subRegion.size(), scale)) {
+ auto boundingRect = enclosingIntRect(subRegion);
+ if (ImageBuffer::sizeNeedsClamping(boundingRect.size(), scale)) {
+ LOG_WITH_STREAM(Filters, stream << "subregion size " << subRegion.size() << " requires clamping, scaling by " << scale);
filterData->filter->setFilterResolution(scale);
RenderSVGResourceFilterPrimitive::determineFilterPrimitiveSubregion(*lastEffect);
}
@@ -279,6 +282,9 @@ void RenderSVGResourceFilter::postApplyResource(RenderElement& renderer, Graphic
// Always true if filterData is just built (filterData->state == FilterData::Built).
if (!lastEffect->hasResult()) {
filterData.state = FilterData::Applying;
+
+ LOG_WITH_STREAM(Filters, stream << "RenderSVGResourceFilter::postApplyResource " << *lastEffect);
+
lastEffect->applyAll();
lastEffect->correctFilterResultIfNeeded();
lastEffect->transformResultColorSpace(ColorSpaceSRGB);
with a fudge factor for rounding.
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20180131/41d340e6/attachment.html>
More information about the webkit-unassigned
mailing list