Diff
Modified: trunk/Source/WebCore/ChangeLog (259146 => 259147)
--- trunk/Source/WebCore/ChangeLog 2020-03-27 23:44:46 UTC (rev 259146)
+++ trunk/Source/WebCore/ChangeLog 2020-03-27 23:51:09 UTC (rev 259147)
@@ -1,3 +1,26 @@
+2020-03-27 Simon Fraser <[email protected]>
+
+ Change SVGRenderingContext::renderSubtreeToImageBuffer() to SVGRenderingContext::renderSubtreeToContext()
+ https://bugs.webkit.org/show_bug.cgi?id=209679
+
+ Reviewed by Said Abou-Hallawa.
+
+ renderSubtreeToImageBuffer() just gets the context from the buffer, so change the name and signature
+ and just pass a GraphicsContext.
+
+ * rendering/svg/RenderSVGResourceClipper.cpp:
+ (WebCore::RenderSVGResourceClipper::drawContentIntoMaskImage):
+ * rendering/svg/RenderSVGResourceMasker.cpp:
+ (WebCore::RenderSVGResourceMasker::drawContentIntoMaskImage):
+ * rendering/svg/RenderSVGResourcePattern.cpp:
+ (WebCore::RenderSVGResourcePattern::createTileImage const):
+ * rendering/svg/SVGRenderingContext.cpp:
+ (WebCore::SVGRenderingContext::renderSubtreeToContext):
+ (WebCore::SVGRenderingContext::renderSubtreeToImageBuffer): Deleted.
+ * rendering/svg/SVGRenderingContext.h:
+ * svg/graphics/filters/SVGFEImage.cpp:
+ (WebCore::FEImage::platformApplySoftware):
+
2020-03-26 Yusuke Suzuki <[email protected]>
Use EnsureStillAliveScope to keep JSValues alive
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp (259146 => 259147)
--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp 2020-03-27 23:44:46 UTC (rev 259146)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp 2020-03-27 23:51:09 UTC (rev 259147)
@@ -231,9 +231,9 @@
maskContext.setFillRule(newClipRule);
// In the case of a <use> element, we obtained its renderere above, to retrieve its clipRule.
- // We have to pass the <use> renderer itself to renderSubtreeToImageBuffer() to apply it's x/y/transform/etc. values when rendering.
+ // We have to pass the <use> renderer itself to renderSubtreeToContext() to apply it's x/y/transform/etc. values when rendering.
// So if isUseElement is true, refetch the childNode->renderer(), as renderer got overridden above.
- SVGRenderingContext::renderSubtreeToImageBuffer(&maskImageBuffer, isUseElement ? *child.renderer() : *renderer, maskContentTransformation);
+ SVGRenderingContext::renderSubtreeToContext(maskContext, isUseElement ? *child.renderer() : *renderer, maskContentTransformation);
}
view().frameView().setPaintBehavior(oldBehavior);
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp (259146 => 259147)
--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp 2020-03-27 23:44:46 UTC (rev 259146)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp 2020-03-27 23:51:09 UTC (rev 259147)
@@ -109,7 +109,7 @@
const RenderStyle& style = renderer->style();
if (style.display() == DisplayType::None || style.visibility() != Visibility::Visible)
continue;
- SVGRenderingContext::renderSubtreeToImageBuffer(maskerData->maskImage.get(), *renderer, maskContentTransformation);
+ SVGRenderingContext::renderSubtreeToContext(maskImageContext, *renderer, maskContentTransformation);
}
#if !USE(CG)
Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp (259146 => 259147)
--- trunk/Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp 2020-03-27 23:44:46 UTC (rev 259146)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourcePattern.cpp 2020-03-27 23:51:09 UTC (rev 259147)
@@ -278,7 +278,7 @@
continue;
if (child.renderer()->needsLayout())
return nullptr;
- SVGRenderingContext::renderSubtreeToImageBuffer(tileImage.get(), *child.renderer(), contentTransformation);
+ SVGRenderingContext::renderSubtreeToContext(tileImageContext, *child.renderer(), contentTransformation);
}
return tileImage;
Modified: trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp (259146 => 259147)
--- trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp 2020-03-27 23:44:46 UTC (rev 259146)
+++ trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp 2020-03-27 23:51:09 UTC (rev 259147)
@@ -290,13 +290,11 @@
return imageBuffer;
}
-void SVGRenderingContext::renderSubtreeToImageBuffer(ImageBuffer* image, RenderElement& item, const AffineTransform& subtreeContentTransformation)
+void SVGRenderingContext::renderSubtreeToContext(GraphicsContext& context, RenderElement& item, const AffineTransform& subtreeContentTransformation)
{
- ASSERT(image);
-
// Rendering into a buffer implies we're being used for masking, clipping, patterns or filters. In each of these
// cases we don't want to paint the selection.
- PaintInfo info(image->context(), LayoutRect::infiniteRect(), PaintPhase::Foreground, PaintBehavior::SkipSelectionHighlight);
+ PaintInfo info(context, LayoutRect::infiniteRect(), PaintPhase::Foreground, PaintBehavior::SkipSelectionHighlight);
AffineTransform& contentTransformation = currentContentTransformation();
AffineTransform savedContentTransformation = contentTransformation;
Modified: trunk/Source/WebCore/rendering/svg/SVGRenderingContext.h (259146 => 259147)
--- trunk/Source/WebCore/rendering/svg/SVGRenderingContext.h 2020-03-27 23:44:46 UTC (rev 259146)
+++ trunk/Source/WebCore/rendering/svg/SVGRenderingContext.h 2020-03-27 23:51:09 UTC (rev 259147)
@@ -63,7 +63,7 @@
static std::unique_ptr<ImageBuffer> createImageBuffer(const FloatRect& targetRect, const AffineTransform& absoluteTransform, ColorSpace, RenderingMode, const GraphicsContext* = nullptr);
static std::unique_ptr<ImageBuffer> createImageBuffer(const FloatRect& targetRect, const FloatRect& clampedRect, ColorSpace, RenderingMode, const GraphicsContext* = nullptr);
- static void renderSubtreeToImageBuffer(ImageBuffer*, RenderElement&, const AffineTransform&);
+ static void renderSubtreeToContext(GraphicsContext&, RenderElement&, const AffineTransform&);
static void clipToImageBuffer(GraphicsContext&, const AffineTransform& absoluteTransform, const FloatRect& targetRect, std::unique_ptr<ImageBuffer>&, bool safeToClear);
static float calculateScreenFontSizeScalingFactor(const RenderObject&);
Modified: trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp (259146 => 259147)
--- trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp 2020-03-27 23:44:46 UTC (rev 259146)
+++ trunk/Source/WebCore/svg/graphics/filters/SVGFEImage.cpp 2020-03-27 23:51:09 UTC (rev 259147)
@@ -113,9 +113,11 @@
IntPoint paintLocation = absolutePaintRect().location();
destRect.move(-paintLocation.x(), -paintLocation.y());
+ auto& context = resultImage->context();
+
if (renderer) {
const AffineTransform& absoluteTransform = filter().absoluteTransform();
- resultImage->context().concatCTM(absoluteTransform);
+ context.concatCTM(absoluteTransform);
auto contextNode = makeRefPtr(downcast<SVGElement>(renderer->element()));
if (contextNode->hasRelativeLengths()) {
@@ -125,15 +127,15 @@
// If we're referencing an element with percentage units, eg. <rect with="30%"> those values were resolved against the viewport.
// Build up a transformation that maps from the viewport space to the filter primitive subregion.
if (lengthContext.determineViewport(viewportSize))
- resultImage->context().concatCTM(makeMapBetweenRects(FloatRect(FloatPoint(), viewportSize), destRect));
+ context.concatCTM(makeMapBetweenRects(FloatRect(FloatPoint(), viewportSize), destRect));
}
AffineTransform contentTransformation;
- SVGRenderingContext::renderSubtreeToImageBuffer(resultImage, *renderer, contentTransformation);
+ SVGRenderingContext::renderSubtreeToContext(context, *renderer, contentTransformation);
return;
}
- resultImage->context().drawImage(*m_image, destRect, srcRect);
+ context.drawImage(*m_image, destRect, srcRect);
}
TextStream& FEImage::externalRepresentation(TextStream& ts, RepresentationType representation) const