Index: Source/core/rendering/svg/RenderSVGResourcePattern.cpp |
diff --git a/Source/core/rendering/svg/RenderSVGResourcePattern.cpp b/Source/core/rendering/svg/RenderSVGResourcePattern.cpp |
index cf6889d31ee56e5e6bac54825375bbe63263bb7d..0ded2603785631f5361588263ffaab5f5521497d 100644 |
--- a/Source/core/rendering/svg/RenderSVGResourcePattern.cpp |
+++ b/Source/core/rendering/svg/RenderSVGResourcePattern.cpp |
@@ -118,14 +118,6 @@ PatternData* RenderSVGResourcePattern::buildPattern(RenderObject* object, unsign |
if (!patternTransform.isIdentity()) |
patternData->transform = patternTransform * patternData->transform; |
- // Account for text drawing resetting the context to non-scaled, see SVGInlineTextBox::paintTextWithShadows. |
- if (resourceMode & ApplyToTextMode) { |
- AffineTransform additionalTextTransformation; |
- if (shouldTransformOnTextPainting(object, additionalTextTransformation)) |
- patternData->transform *= additionalTextTransformation; |
- } |
- patternData->pattern->setPatternSpaceTransform(patternData->transform); |
- |
// Various calls above may trigger invalidations in some fringe cases (ImageBuffer allocation |
// failures in the SVG image cache for example). To avoid having our PatternData deleted by |
// removeAllClientsFromCache(), we only make it visible in the cache at the very end. |
@@ -151,19 +143,20 @@ bool RenderSVGResourcePattern::applyResource(RenderObject* object, RenderStyle* |
if (!patternData) |
return false; |
- // Draw pattern |
- context->save(); |
- |
const SVGRenderStyle* svgStyle = style->svgStyle(); |
ASSERT(svgStyle); |
+ AffineTransform computedPatternSpaceTransform = computeResourceSpaceTransform(object, patternData->transform, svgStyle, resourceMode); |
+ patternData->pattern->setPatternSpaceTransform(computedPatternSpaceTransform); |
+ |
+ // Draw pattern |
+ context->save(); |
+ |
if (resourceMode & ApplyToFillMode) { |
context->setAlphaAsFloat(svgStyle->fillOpacity()); |
context->setFillPattern(patternData->pattern); |
context->setFillRule(svgStyle->fillRule()); |
} else if (resourceMode & ApplyToStrokeMode) { |
- if (svgStyle->vectorEffect() == VE_NON_SCALING_STROKE) |
- patternData->pattern->setPatternSpaceTransform(transformOnNonScalingStroke(object, patternData->transform)); |
context->setAlphaAsFloat(svgStyle->strokeOpacity()); |
context->setStrokePattern(patternData->pattern); |
SVGRenderSupport::applyStrokeStyleToContext(context, style, object); |