Index: Source/core/rendering/svg/RenderSVGResourcePattern.cpp |
diff --git a/Source/core/rendering/svg/RenderSVGResourcePattern.cpp b/Source/core/rendering/svg/RenderSVGResourcePattern.cpp |
index 19a1a1b5493cdd1cb7610193540cf9d432094001..121738ead89eec5199b349cf80fa92a4ef012c56 100644 |
--- a/Source/core/rendering/svg/RenderSVGResourcePattern.cpp |
+++ b/Source/core/rendering/svg/RenderSVGResourcePattern.cpp |
@@ -19,11 +19,9 @@ |
*/ |
#include "config.h" |
- |
#include "core/rendering/svg/RenderSVGResourcePattern.h" |
#include "core/dom/ElementTraversal.h" |
-#include "core/rendering/svg/SVGRenderSupport.h" |
#include "core/rendering/svg/SVGRenderingContext.h" |
#include "core/svg/SVGFitToViewBox.h" |
#include "platform/graphics/GraphicsContext.h" |
@@ -112,17 +110,16 @@ PatternData* RenderSVGResourcePattern::buildPattern(RenderObject* object, const |
return m_patternMap.set(object, patternData.release()).storedValue->value.get(); |
} |
-bool RenderSVGResourcePattern::applyResource(RenderObject* object, RenderStyle* style, GraphicsContext* context, RenderSVGResourceModeFlags resourceMode) |
+SVGPaintServer RenderSVGResourcePattern::preparePaintServer(RenderObject* object, RenderStyle* style, RenderSVGResourceModeFlags resourceMode) |
{ |
ASSERT(object); |
ASSERT(style); |
- ASSERT(context); |
clearInvalidationMask(); |
SVGPatternElement* patternElement = toSVGPatternElement(element()); |
if (!patternElement) |
- return false; |
+ return SVGPaintServer::invalid(); |
if (m_shouldCollectPatternAttributes) { |
patternElement->synchronizeAnimatedSVGAttribute(anyQName()); |
@@ -136,33 +133,18 @@ bool RenderSVGResourcePattern::applyResource(RenderObject* object, RenderStyle* |
// then the given effect (e.g. a gradient or a filter) will be ignored. |
FloatRect objectBoundingBox = object->objectBoundingBox(); |
if (m_attributes.patternUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX && objectBoundingBox.isEmpty()) |
- return false; |
+ return SVGPaintServer::invalid(); |
PatternData* patternData = buildPattern(object, patternElement); |
if (!patternData) |
- return false; |
+ return SVGPaintServer::invalid(); |
const SVGRenderStyle& svgStyle = style->svgStyle(); |
AffineTransform computedPatternSpaceTransform = computeResourceSpaceTransform(object, patternData->transform, svgStyle, resourceMode); |
patternData->pattern->setPatternSpaceTransform(computedPatternSpaceTransform); |
- // Draw pattern |
- context->save(); |
- |
- if (resourceMode & ApplyToFillMode) |
- context->setFillPattern(patternData->pattern); |
- else if (resourceMode & ApplyToStrokeMode) |
- context->setStrokePattern(patternData->pattern); |
- |
- updateGraphicsContext(context, style, *object, resourceMode); |
- return true; |
-} |
- |
-void RenderSVGResourcePattern::postApplyResource(GraphicsContext* context) |
-{ |
- ASSERT(context); |
- context->restore(); |
+ return SVGPaintServer(patternData->pattern); |
} |
static inline FloatRect calculatePatternBoundaries(const PatternAttributes& attributes, |