Index: Source/core/rendering/svg/SVGRenderSupport.cpp |
diff --git a/Source/core/rendering/svg/SVGRenderSupport.cpp b/Source/core/rendering/svg/SVGRenderSupport.cpp |
index 2a51b9ce6fd21cf817a9d8b5c0014625ef3dd8c1..7df56c24038d565c16f87864997b3d559116d6c9 100644 |
--- a/Source/core/rendering/svg/SVGRenderSupport.cpp |
+++ b/Source/core/rendering/svg/SVGRenderSupport.cpp |
@@ -402,6 +402,37 @@ void SVGRenderSupport::fillOrStrokePath(GraphicsContext* context, unsigned short |
context->strokePath(path); |
} |
+void SVGRenderSupport::updateGraphicsContext(GraphicsContext* context, const RenderStyle* style, const RenderObject& renderer, unsigned resourceModeFlags) |
+{ |
+ ASSERT(context); |
+ ASSERT(style); |
+ |
+ RenderSVGResourceMode resourceMode = static_cast<RenderSVGResourceMode>(resourceModeFlags & (ApplyToFillMode | ApplyToStrokeMode)); |
+ ASSERT(resourceMode == ApplyToFillMode || resourceMode == ApplyToStrokeMode); |
+ |
+ if (isRenderingClipPathAsMaskImage(renderer)) { |
+ // When rendering the mask for a RenderSVGResourceClipper, the stroke code path is never hit. |
+ ASSERT(resourceMode == ApplyToFillMode); |
+ context->setAlphaAsFloat(1); |
+ if (resourceModeFlags & ApplyToTextMode) |
+ context->setTextDrawingMode(TextModeFill); |
+ return; |
+ } |
+ |
+ const SVGRenderStyle& svgStyle = style->svgStyle(); |
+ |
+ if (resourceMode == ApplyToFillMode) { |
+ context->setAlphaAsFloat(svgStyle.fillOpacity()); |
+ context->setFillRule(svgStyle.fillRule()); |
+ } else { |
+ context->setAlphaAsFloat(svgStyle.strokeOpacity()); |
+ applyStrokeStyleToContext(context, style, &renderer); |
+ } |
+ |
+ if (resourceModeFlags & ApplyToTextMode) |
+ context->setTextDrawingMode(resourceMode == ApplyToFillMode ? TextModeFill : TextModeStroke); |
+} |
+ |
bool SVGRenderSupport::isRenderableTextNode(const RenderObject* object) |
{ |
ASSERT(object->isText()); |