| 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..b3a6dbe5914089d4992f66f392f226f96e2acea5 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)
|
| +PassOwnPtr<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 nullptr;
|
|
|
| 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 nullptr;
|
|
|
| PatternData* patternData = buildPattern(object, patternElement);
|
| if (!patternData)
|
| - return false;
|
| + return nullptr;
|
|
|
| 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 adoptPtr(new SVGPaintServer(patternData->pattern));
|
| }
|
|
|
| static inline FloatRect calculatePatternBoundaries(const PatternAttributes& attributes,
|
|
|