Chromium Code Reviews| Index: Source/core/rendering/svg/RenderSVGResourcePattern.cpp |
| diff --git a/Source/core/rendering/svg/RenderSVGResourcePattern.cpp b/Source/core/rendering/svg/RenderSVGResourcePattern.cpp |
| index 19a1a1b5493cdd1cb7610193540cf9d432094001..a2dd73416b9ecfb913fe9032b0bcc9d0602911a9 100644 |
| --- a/Source/core/rendering/svg/RenderSVGResourcePattern.cpp |
| +++ b/Source/core/rendering/svg/RenderSVGResourcePattern.cpp |
| @@ -19,11 +19,10 @@ |
| */ |
| #include "config.h" |
| - |
| #include "core/rendering/svg/RenderSVGResourcePattern.h" |
| #include "core/dom/ElementTraversal.h" |
| -#include "core/rendering/svg/SVGRenderSupport.h" |
| +#include "core/paint/SVGPaintServer.h" |
| #include "core/rendering/svg/SVGRenderingContext.h" |
| #include "core/svg/SVGFitToViewBox.h" |
| #include "platform/graphics/GraphicsContext.h" |
| @@ -112,17 +111,16 @@ PatternData* RenderSVGResourcePattern::buildPattern(RenderObject* object, const |
| return m_patternMap.set(object, patternData.release()).storedValue->value.get(); |
| } |
| -bool RenderSVGResourcePattern::applyResource(RenderObject* object, RenderStyle* style, GraphicsContext* context, RenderSVGResourceModeFlags resourceMode) |
| +SVGPaintServer RenderSVGResourcePattern::preparePaintServer(RenderObject* object, RenderStyle* style, RenderSVGResourceModeFlags resourceMode) |
| { |
| ASSERT(object); |
| ASSERT(style); |
| - ASSERT(context); |
| clearInvalidationMask(); |
| SVGPatternElement* patternElement = toSVGPatternElement(element()); |
| if (!patternElement) |
| - return false; |
| + return SVGPaintServer::invalid(); |
| if (m_shouldCollectPatternAttributes) { |
| patternElement->synchronizeAnimatedSVGAttribute(anyQName()); |
| @@ -136,33 +134,18 @@ bool RenderSVGResourcePattern::applyResource(RenderObject* object, RenderStyle* |
| // then the given effect (e.g. a gradient or a filter) will be ignored. |
| FloatRect objectBoundingBox = object->objectBoundingBox(); |
| if (m_attributes.patternUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX && objectBoundingBox.isEmpty()) |
| - return false; |
| + return SVGPaintServer::invalid(); |
| PatternData* patternData = buildPattern(object, patternElement); |
| if (!patternData) |
| - return false; |
| + return SVGPaintServer::invalid(); |
| const SVGRenderStyle& svgStyle = style->svgStyle(); |
| AffineTransform computedPatternSpaceTransform = computeResourceSpaceTransform(object, patternData->transform, svgStyle, resourceMode); |
| patternData->pattern->setPatternSpaceTransform(computedPatternSpaceTransform); |
| - // Draw pattern |
| - context->save(); |
| - |
| - if (resourceMode & ApplyToFillMode) |
| - context->setFillPattern(patternData->pattern); |
| - else if (resourceMode & ApplyToStrokeMode) |
| - context->setStrokePattern(patternData->pattern); |
| - |
| - updateGraphicsContext(context, style, *object, resourceMode); |
| - return true; |
| -} |
| - |
| -void RenderSVGResourcePattern::postApplyResource(GraphicsContext* context) |
| -{ |
| - ASSERT(context); |
| - context->restore(); |
| + return SVGPaintServer(patternData->pattern); |
|
chrishtr
2014/10/10 16:59:20
Why not just have a method that exposes the data n
fs
2014/10/11 12:05:50
Then I'd have to think, that it'd be better to jus
|
| } |
| static inline FloatRect calculatePatternBoundaries(const PatternAttributes& attributes, |