diff -r 000000000000 -r 4f2f89ce4247 WebCore/svg/SVGPaint.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebCore/svg/SVGPaint.cpp Fri Sep 17 09:02:29 2010 +0300 @@ -0,0 +1,124 @@ +/* + Copyright (C) 2004, 2005 Nikolas Zimmermann + 2004, 2005, 2006, 2007 Rob Buis + 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" + +#if ENABLE(SVG) +#include "SVGPaint.h" +#include "SVGURIReference.h" + +namespace WebCore { + +SVGPaint::SVGPaint() + : m_paintType(SVG_PAINTTYPE_UNKNOWN) +{ +} + +SVGPaint::SVGPaint(const String& uri) + : m_paintType(SVG_PAINTTYPE_URI_RGBCOLOR) +{ + setUri(uri); +} + +SVGPaint::SVGPaint(SVGPaintType paintType) + : m_paintType(paintType) +{ +} + +SVGPaint::SVGPaint(SVGPaintType paintType, const String& uri, const String& rgbPaint, const String&) + : SVGColor(rgbPaint) + , m_paintType(paintType) +{ + setUri(uri); +} + +SVGPaint::SVGPaint(const Color& c) + : SVGColor(c) + , m_paintType(SVG_PAINTTYPE_RGBCOLOR) +{ +} + +SVGPaint::SVGPaint(const String& uri, const Color& c) + : SVGColor(c) + , m_paintType(SVG_PAINTTYPE_URI_RGBCOLOR) +{ + setUri(uri); +} + +SVGPaint::~SVGPaint() +{ +} + +SVGPaint* SVGPaint::defaultFill() +{ + static SVGPaint* staticDefaultFill = create(Color::black).releaseRef(); + return staticDefaultFill; +} + +SVGPaint* SVGPaint::defaultStroke() +{ + static SVGPaint* staticDefaultStroke = create(SVG_PAINTTYPE_NONE).releaseRef(); + return staticDefaultStroke; +} + +String SVGPaint::uri() const +{ + return m_uri; +} + +void SVGPaint::setUri(const String& uri) +{ + m_uri = uri; +} + +void SVGPaint::setPaint(SVGPaintType paintType, const String& uri, const String& rgbPaint, const String&, ExceptionCode&) +{ + m_paintType = paintType; + + if (m_paintType == SVG_PAINTTYPE_URI) + setUri(uri); + else if (m_paintType == SVG_PAINTTYPE_RGBCOLOR) + setRGBColor(rgbPaint); +} + +String SVGPaint::cssText() const +{ + if (m_paintType == SVG_PAINTTYPE_NONE) + return "none"; + else if (m_paintType == SVG_PAINTTYPE_CURRENTCOLOR) + return "currentColor"; + else if (m_paintType == SVG_PAINTTYPE_URI) + return "url(" + m_uri + ")"; + + return SVGColor::cssText(); +} + +bool SVGPaint::matchesTargetURI(const String& referenceId) +{ + if (m_paintType != SVG_PAINTTYPE_URI && m_paintType != SVG_PAINTTYPE_URI_RGBCOLOR) + return false; + + return referenceId == SVGURIReference::getTarget(m_uri); +} + +} + +#endif // ENABLE(SVG)