Index: Source/core/rendering/svg/RenderSVGRoot.cpp |
diff --git a/Source/core/rendering/svg/RenderSVGRoot.cpp b/Source/core/rendering/svg/RenderSVGRoot.cpp |
index c872957c2f28f79102679f0a10cc009dbd00236f..dadbf2252401145717ca03cb052d3057536b5602 100644 |
--- a/Source/core/rendering/svg/RenderSVGRoot.cpp |
+++ b/Source/core/rendering/svg/RenderSVGRoot.cpp |
@@ -26,20 +26,17 @@ |
#include "core/rendering/svg/RenderSVGRoot.h" |
#include "core/frame/LocalFrame.h" |
+#include "core/paint/SVGRootPainter.h" |
#include "core/rendering/HitTestResult.h" |
#include "core/rendering/RenderLayer.h" |
#include "core/rendering/RenderPart.h" |
#include "core/rendering/RenderView.h" |
-#include "core/rendering/svg/RenderSVGResourceContainer.h" |
#include "core/rendering/svg/SVGRenderSupport.h" |
-#include "core/rendering/svg/SVGRenderingContext.h" |
-#include "core/rendering/svg/SVGResources.h" |
#include "core/rendering/svg/SVGResourcesCache.h" |
#include "core/svg/SVGElement.h" |
#include "core/svg/SVGSVGElement.h" |
#include "core/svg/graphics/SVGImage.h" |
#include "platform/LengthFunctions.h" |
-#include "platform/graphics/GraphicsContext.h" |
namespace blink { |
@@ -217,49 +214,7 @@ bool RenderSVGRoot::shouldApplyViewportClip() const |
void RenderSVGRoot::paintReplaced(PaintInfo& paintInfo, const LayoutPoint& paintOffset) |
{ |
- // An empty viewport disables rendering. |
- if (pixelSnappedBorderBoxRect().isEmpty()) |
- return; |
- |
- // SVG outlines are painted during PaintPhaseForeground. |
- if (paintInfo.phase == PaintPhaseOutline || paintInfo.phase == PaintPhaseSelfOutline) |
- return; |
- |
- // An empty viewBox also disables rendering. |
- // (http://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute) |
- SVGSVGElement* svg = toSVGSVGElement(node()); |
- ASSERT(svg); |
- if (svg->hasEmptyViewBox()) |
- return; |
- |
- // Don't paint if we don't have kids, except if we have filters we should paint those. |
- if (!firstChild()) { |
- SVGResources* resources = SVGResourcesCache::cachedResourcesForRenderObject(this); |
- if (!resources || !resources->filter()) |
- return; |
- } |
- |
- // Make a copy of the PaintInfo because applyTransform will modify the damage rect. |
- PaintInfo childPaintInfo(paintInfo); |
- GraphicsContextStateSaver stateSaver(*childPaintInfo.context); |
- |
- // Apply initial viewport clip |
- if (shouldApplyViewportClip()) |
- childPaintInfo.context->clip(pixelSnappedIntRect(overflowClipRect(paintOffset))); |
- |
- // Convert from container offsets (html renderers) to a relative transform (svg renderers). |
- // Transform from our paint container's coordinate system to our local coords. |
- IntPoint adjustedPaintOffset = roundedIntPoint(paintOffset); |
- childPaintInfo.applyTransform(AffineTransform::translation(adjustedPaintOffset.x(), adjustedPaintOffset.y()) * localToBorderBoxTransform()); |
- |
- SVGRenderingContext renderingContext; |
- if (childPaintInfo.phase == PaintPhaseForeground) { |
- renderingContext.prepareToRenderSVGContent(this, childPaintInfo); |
- if (!renderingContext.isRenderingPrepared()) |
- return; |
- } |
- |
- RenderBox::paint(childPaintInfo, LayoutPoint()); |
+ SVGRootPainter(*this).paint(paintInfo, paintOffset); |
} |
void RenderSVGRoot::willBeDestroyed() |