1/* 2 * Copyright (C) 2004, 2005 Nikolas Zimmermann <zimmermann@kde.org> 3 * Copyright (C) 2004, 2005, 2006, 2007 Rob Buis <buis@kde.org> 4 * Copyright (C) Research In Motion Limited 2011. All rights reserved. 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Library General Public 8 * License as published by the Free Software Foundation; either 9 * version 2 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Library General Public License for more details. 15 * 16 * You should have received a copy of the GNU Library General Public License 17 * along with this library; see the file COPYING.LIB. If not, write to 18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 19 * Boston, MA 02110-1301, USA. 20 */ 21 22#ifndef SVGColor_h 23#define SVGColor_h 24 25#if ENABLE(SVG) 26#include "CSSValue.h" 27#include "Color.h" 28#include <wtf/PassRefPtr.h> 29 30namespace WebCore { 31 32class RGBColor; 33 34class SVGColor : public CSSValue { 35public: 36 enum SVGColorType { 37 SVG_COLORTYPE_UNKNOWN = 0, 38 SVG_COLORTYPE_RGBCOLOR = 1, 39 SVG_COLORTYPE_RGBCOLOR_ICCCOLOR = 2, 40 SVG_COLORTYPE_CURRENTCOLOR = 3 41 }; 42 43 static PassRefPtr<SVGColor> createFromString(const String& rgbColor) 44 { 45 RefPtr<SVGColor> color = adoptRef(new SVGColor(SVG_COLORTYPE_RGBCOLOR)); 46 color->setColor(colorFromRGBColorString(rgbColor)); 47 return color.release(); 48 } 49 50 static PassRefPtr<SVGColor> createFromColor(const Color& rgbColor) 51 { 52 RefPtr<SVGColor> color = adoptRef(new SVGColor(SVG_COLORTYPE_RGBCOLOR)); 53 color->setColor(rgbColor); 54 return color.release(); 55 } 56 57 static PassRefPtr<SVGColor> createCurrentColor() 58 { 59 return adoptRef(new SVGColor(SVG_COLORTYPE_CURRENTCOLOR)); 60 } 61 62 const Color& color() const { return m_color; } 63 const SVGColorType& colorType() const { return m_colorType; } 64 PassRefPtr<RGBColor> rgbColor() const; 65 66 static Color colorFromRGBColorString(const String&); 67 68 void setRGBColor(const String& rgbColor, ExceptionCode&); 69 void setRGBColorICCColor(const String& rgbColor, const String& iccColor, ExceptionCode&); 70 void setColor(unsigned short colorType, const String& rgbColor, const String& iccColor, ExceptionCode&); 71 72 String customCssText() const; 73 74 ~SVGColor() { } 75 76 PassRefPtr<SVGColor> cloneForCSSOM() const; 77 78 bool equals(const SVGColor&) const; 79 80protected: 81 friend class CSSComputedStyleDeclaration; 82 83 SVGColor(ClassType, const SVGColorType&); 84 SVGColor(ClassType, const SVGColor& cloneFrom); 85 86 void setColor(const Color& color) { m_color = color; } 87 void setColorType(const SVGColorType& type) { m_colorType = type; } 88 89private: 90 SVGColor(const SVGColorType&); 91 92 Color m_color; 93 SVGColorType m_colorType; 94}; 95 96} // namespace WebCore 97 98#endif // ENABLE(SVG) 99#endif // SVGColor_h 100