Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1281)

Unified Diff: Source/core/rendering/svg/RenderSVGResource.cpp

Issue 630903003: Move common GC state update code out of paint-server application (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Move updateGraphicsContext. Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/rendering/svg/RenderSVGResource.cpp
diff --git a/Source/core/rendering/svg/RenderSVGResource.cpp b/Source/core/rendering/svg/RenderSVGResource.cpp
index 2f0541c52138d5fecf133c82733d49bd2402edc7..e8f99f76cec0ef303158711be9958f36bbf51d7d 100644
--- a/Source/core/rendering/svg/RenderSVGResource.cpp
+++ b/Source/core/rendering/svg/RenderSVGResource.cpp
@@ -31,6 +31,7 @@
#include "core/rendering/svg/SVGRenderSupport.h"
#include "core/rendering/svg/SVGResources.h"
#include "core/rendering/svg/SVGResourcesCache.h"
+#include "platform/graphics/GraphicsContext.h"
namespace blink {
@@ -129,6 +130,37 @@ RenderSVGResource* RenderSVGResource::requestPaintingResource(RenderSVGResourceM
return uriResource;
}
+void RenderSVGResource::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 (SVGRenderSupport::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());
+ SVGRenderSupport::applyStrokeStyleToContext(context, style, &renderer);
+ }
+
+ if (resourceModeFlags & ApplyToTextMode)
+ context->setTextDrawingMode(resourceMode == ApplyToFillMode ? TextModeFill : TextModeStroke);
+}
+
RenderSVGResourceSolidColor* RenderSVGResource::sharedSolidPaintingResource()
{
static RenderSVGResourceSolidColor* s_sharedSolidPaintingResource = 0;
« no previous file with comments | « Source/core/rendering/svg/RenderSVGResource.h ('k') | Source/core/rendering/svg/RenderSVGResourceGradient.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698