Index: Source/core/rendering/svg/RenderSVGResourceGradient.cpp |
diff --git a/Source/core/rendering/svg/RenderSVGResourceGradient.cpp b/Source/core/rendering/svg/RenderSVGResourceGradient.cpp |
index 1c026e5201a7768c6c29b0651366f010ec73cc61..6f44a65b116012aa881e069ad581c6b6c7ebcfcf 100644 |
--- a/Source/core/rendering/svg/RenderSVGResourceGradient.cpp |
+++ b/Source/core/rendering/svg/RenderSVGResourceGradient.cpp |
@@ -85,8 +85,6 @@ bool RenderSVGResourceGradient::applyResource(RenderObject* object, RenderStyle* |
if (!gradientData) |
gradientData = adoptPtr(new GradientData); |
- bool isPaintingText = resourceMode & ApplyToTextMode; |
- |
// Create gradient object |
if (!gradientData->gradient) { |
buildGradient(gradientData.get()); |
@@ -101,35 +99,28 @@ bool RenderSVGResourceGradient::applyResource(RenderObject* object, RenderStyle* |
calculateGradientTransform(gradientTransform); |
gradientData->userspaceTransform *= gradientTransform; |
- if (isPaintingText) { |
- // Depending on font scaling factor, we may need to rescale the gradient here since |
- // text painting removes the scale factor from the context. |
- AffineTransform additionalTextTransform; |
- if (shouldTransformOnTextPainting(object, additionalTextTransform)) |
- gradientData->userspaceTransform *= additionalTextTransform; |
- } |
- gradientData->gradient->setGradientSpaceTransform(gradientData->userspaceTransform); |
} |
if (!gradientData->gradient) |
return false; |
+ const SVGRenderStyle* svgStyle = style->svgStyle(); |
+ ASSERT(svgStyle); |
+ |
+ AffineTransform computedGradientSpaceTransform = computeResourceSpaceTransform(object, gradientData->userspaceTransform, svgStyle, resourceMode); |
+ gradientData->gradient->setGradientSpaceTransform(computedGradientSpaceTransform); |
+ |
// Draw gradient |
context->save(); |
- if (isPaintingText) |
+ if (resourceMode & ApplyToTextMode) |
context->setTextDrawingMode(resourceMode & ApplyToFillMode ? TextModeFill : TextModeStroke); |
- const SVGRenderStyle* svgStyle = style->svgStyle(); |
- ASSERT(svgStyle); |
- |
if (resourceMode & ApplyToFillMode) { |
context->setAlphaAsFloat(svgStyle->fillOpacity()); |
context->setFillGradient(gradientData->gradient); |
context->setFillRule(svgStyle->fillRule()); |
} else if (resourceMode & ApplyToStrokeMode) { |
- if (svgStyle->vectorEffect() == VE_NON_SCALING_STROKE) |
- gradientData->gradient->setGradientSpaceTransform(transformOnNonScalingStroke(object, gradientData->userspaceTransform)); |
context->setAlphaAsFloat(svgStyle->strokeOpacity()); |
context->setStrokeGradient(gradientData->gradient); |
SVGRenderSupport::applyStrokeStyleToContext(context, style, object); |