Index: Source/core/rendering/svg/RenderSVGResource.cpp |
diff --git a/Source/core/rendering/svg/RenderSVGResource.cpp b/Source/core/rendering/svg/RenderSVGResource.cpp |
deleted file mode 100644 |
index 450bb9ec8a88109f6358fa537f556637a36ef0d4..0000000000000000000000000000000000000000 |
--- a/Source/core/rendering/svg/RenderSVGResource.cpp |
+++ /dev/null |
@@ -1,192 +0,0 @@ |
-/* |
- * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org> |
- * Copyright (C) 2007 Rob Buis <buis@kde.org> |
- * Copyright (C) 2008 Dirk Schulze <krit@webkit.org> |
- * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
- * |
- * This library is free software; you can redistribute it and/or |
- * modify it under the terms of the GNU Library General Public |
- * License as published by the Free Software Foundation; either |
- * version 2 of the License, or (at your option) any later version. |
- * |
- * This library is distributed in the hope that it will be useful, |
- * but WITHOUT ANY WARRANTY; without even the implied warranty of |
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
- * Library General Public License for more details. |
- * |
- * You should have received a copy of the GNU Library General Public License |
- * along with this library; see the file COPYING.LIB. If not, write to |
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
- * Boston, MA 02110-1301, USA. |
- */ |
- |
-#include "config.h" |
-#include "core/rendering/svg/RenderSVGResource.h" |
- |
-#include "core/rendering/style/RenderStyle.h" |
-#include "core/rendering/svg/RenderSVGResourceContainer.h" |
-#include "core/rendering/svg/SVGResources.h" |
-#include "core/rendering/svg/SVGResourcesCache.h" |
-#include "platform/graphics/GraphicsContext.h" |
-#include "platform/graphics/GraphicsContextStateSaver.h" |
- |
-namespace blink { |
- |
-SVGPaintServer::SVGPaintServer(Color color) |
- : m_color(color) |
-{ |
-} |
- |
-SVGPaintServer::SVGPaintServer(PassRefPtr<Gradient> gradient) |
- : m_gradient(gradient) |
- , m_color(Color::black) |
-{ |
-} |
- |
-SVGPaintServer::SVGPaintServer(PassRefPtr<Pattern> pattern) |
- : m_pattern(pattern) |
- , m_color(Color::black) |
-{ |
-} |
- |
-void SVGPaintServer::apply(GraphicsContext& context, RenderSVGResourceMode resourceMode, GraphicsContextStateSaver* stateSaver) |
-{ |
- ASSERT(resourceMode == ApplyToFillMode || resourceMode == ApplyToStrokeMode); |
- if (stateSaver && (m_gradient || m_pattern)) |
- stateSaver->saveIfNeeded(); |
- |
- if (resourceMode == ApplyToFillMode) { |
- if (m_pattern) |
- context.setFillPattern(m_pattern); |
- else if (m_gradient) |
- context.setFillGradient(m_gradient); |
- else |
- context.setFillColor(m_color); |
- } else { |
- if (m_pattern) |
- context.setStrokePattern(m_pattern); |
- else if (m_gradient) |
- context.setStrokeGradient(m_gradient); |
- else |
- context.setStrokeColor(m_color); |
- } |
-} |
- |
-void SVGPaintServer::prependTransform(const AffineTransform& transform) |
-{ |
- ASSERT(m_gradient || m_pattern); |
- if (m_pattern) |
- m_pattern->setPatternSpaceTransform(transform * m_pattern->patternSpaceTransform()); |
- else |
- m_gradient->setGradientSpaceTransform(transform * m_gradient->gradientSpaceTransform()); |
-} |
- |
-static SVGPaintDescription requestPaint(const RenderObject& object, const RenderStyle* style, RenderSVGResourceMode mode) |
-{ |
- ASSERT(style); |
- |
- // If we have no style at all, ignore it. |
- const SVGRenderStyle& svgStyle = style->svgStyle(); |
- |
- // If we have no fill/stroke, return 0. |
- if (mode == ApplyToFillMode) { |
- if (!svgStyle.hasFill()) |
- return SVGPaintDescription(); |
- } else { |
- if (!svgStyle.hasStroke()) |
- return SVGPaintDescription(); |
- } |
- |
- bool applyToFill = mode == ApplyToFillMode; |
- SVGPaintType paintType = applyToFill ? svgStyle.fillPaintType() : svgStyle.strokePaintType(); |
- ASSERT(paintType != SVG_PAINTTYPE_NONE); |
- |
- Color color; |
- bool hasColor = false; |
- switch (paintType) { |
- case SVG_PAINTTYPE_CURRENTCOLOR: |
- case SVG_PAINTTYPE_RGBCOLOR: |
- case SVG_PAINTTYPE_URI_CURRENTCOLOR: |
- case SVG_PAINTTYPE_URI_RGBCOLOR: |
- color = applyToFill ? svgStyle.fillPaintColor() : svgStyle.strokePaintColor(); |
- hasColor = true; |
- default: |
- break; |
- } |
- |
- if (style->insideLink() == InsideVisitedLink) { |
- // FIXME: This code doesn't support the uri component of the visited link paint, https://bugs.webkit.org/show_bug.cgi?id=70006 |
- SVGPaintType visitedPaintType = applyToFill ? svgStyle.visitedLinkFillPaintType() : svgStyle.visitedLinkStrokePaintType(); |
- |
- // For SVG_PAINTTYPE_CURRENTCOLOR, 'color' already contains the 'visitedColor'. |
- if (visitedPaintType < SVG_PAINTTYPE_URI_NONE && visitedPaintType != SVG_PAINTTYPE_CURRENTCOLOR) { |
- const Color& visitedColor = applyToFill ? svgStyle.visitedLinkFillPaintColor() : svgStyle.visitedLinkStrokePaintColor(); |
- color = Color(visitedColor.red(), visitedColor.green(), visitedColor.blue(), color.alpha()); |
- hasColor = true; |
- } |
- } |
- |
- // If the primary resource is just a color, return immediately. |
- if (paintType < SVG_PAINTTYPE_URI_NONE) { |
- // |paintType| will be either <current-color> or <rgb-color> here - both of which will have a color. |
- ASSERT(hasColor); |
- return SVGPaintDescription(color); |
- } |
- |
- RenderSVGResource* uriResource = 0; |
- if (SVGResources* resources = SVGResourcesCache::cachedResourcesForRenderObject(&object)) |
- uriResource = applyToFill ? resources->fill() : resources->stroke(); |
- |
- // If the requested resource is not available, return the color resource or 'none'. |
- if (!uriResource) { |
- // The fallback is 'none'. (SVG2 say 'none' is implied when no fallback is specified.) |
- if (paintType == SVG_PAINTTYPE_URI_NONE || !hasColor) |
- return SVGPaintDescription(); |
- |
- return SVGPaintDescription(color); |
- } |
- |
- // The paint server resource exists, though it may be invalid (pattern with width/height=0). |
- // Return the fallback color to our caller so it can use it, if |
- // preparePaintServer() on the resource container failed. |
- if (hasColor) |
- return SVGPaintDescription(uriResource, color); |
- |
- return SVGPaintDescription(uriResource); |
-} |
- |
-SVGPaintServer SVGPaintServer::requestForRenderer(const RenderObject& renderer, const RenderStyle* style, RenderSVGResourceMode resourceMode) |
-{ |
- ASSERT(style); |
- ASSERT(resourceMode == ApplyToFillMode || resourceMode == ApplyToStrokeMode); |
- |
- SVGPaintDescription paintDescription = requestPaint(renderer, style, resourceMode); |
- if (!paintDescription.isValid) |
- return invalid(); |
- if (!paintDescription.resource) |
- return SVGPaintServer(paintDescription.color); |
- SVGPaintServer paintServer = paintDescription.resource->preparePaintServer(renderer); |
- if (paintServer.isValid()) |
- return paintServer; |
- if (paintDescription.hasFallback) |
- return SVGPaintServer(paintDescription.color); |
- return invalid(); |
-} |
- |
-bool SVGPaintServer::existsForRenderer(const RenderObject& renderer, const RenderStyle* style, RenderSVGResourceMode resourceMode) |
-{ |
- return requestPaint(renderer, style, resourceMode).isValid; |
-} |
- |
-SVGPaintServer RenderSVGResource::preparePaintServer(const RenderObject&) |
-{ |
- ASSERT_NOT_REACHED(); |
- return SVGPaintServer::invalid(); |
-} |
- |
-SVGPaintDescription RenderSVGResource::requestPaintDescription(const RenderObject& renderer, const RenderStyle* style, RenderSVGResourceMode resourceMode) |
-{ |
- return requestPaint(renderer, style, resourceMode); |
-} |
- |
-} |