Chromium Code Reviews| 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); |
|
f(malita)
2014/04/09 16:26:15
Isn't (resourceMode & ApplyToTextMode) invariant f
fs
2014/04/09 16:59:13
It's not invariant ATM - decorations are not paint
f(malita)
2014/04/09 17:46:51
Ugh. I find all that SVGInlineTextBox::m_paintingR
fs
2014/04/10 08:16:41
Agreed. (Good that you took care of it! *removes f
f(malita)
2014/04/10 12:57:48
SGTM.
|
| + 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); |