#include "config.h"
#if ENABLE(SVG)
#include "SVGColor.h"
#include "CSSParser.h"
#include "SVGException.h"
namespace WebCore {
SVGColor::SVGColor()
: CSSValue()
, m_colorType(SVG_COLORTYPE_UNKNOWN)
{
}
SVGColor::SVGColor(const String& rgbColor)
: CSSValue()
, m_colorType(SVG_COLORTYPE_RGBCOLOR)
{
setRGBColor(rgbColor);
}
SVGColor::SVGColor(unsigned short colorType)
: CSSValue()
, m_colorType(colorType)
{
}
SVGColor::SVGColor(const Color& c)
: CSSValue()
, m_color(c)
, m_colorType(SVG_COLORTYPE_RGBCOLOR)
{
}
SVGColor::~SVGColor()
{
}
unsigned short SVGColor::colorType() const
{
return m_colorType;
}
unsigned SVGColor::rgbColor() const
{
return m_color.rgb();
}
void SVGColor::setRGBColor(const String& rgbColor, ExceptionCode& ec)
{
Color color = SVGColor::colorFromRGBColorString(rgbColor);
if (color.isValid())
m_color = color;
else
ec = SVGException::SVG_INVALID_VALUE_ERR;
}
Color SVGColor::colorFromRGBColorString(const String& colorString)
{
String s = colorString.stripWhiteSpace();
if (s.startsWith("hsl") || s.startsWith("rgba"))
return Color();
RGBA32 color;
if (CSSParser::parseColor(color, s))
return color;
return Color();
}
void SVGColor::setRGBColorICCColor(const String& , const String& , ExceptionCode& ec)
{
}
void SVGColor::setColor(unsigned short colorType, const String& , const String& , ExceptionCode& ec)
{
m_colorType = colorType;
}
String SVGColor::cssText() const
{
if (m_colorType == SVG_COLORTYPE_RGBCOLOR)
return m_color.name();
return String();
}
const Color& SVGColor::color() const
{
return m_color;
}
}
#endif // ENABLE(SVG)