You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
539 lines
16 KiB
539 lines
16 KiB
/*
|
|
Copyright (C) 2001-2003 KSVG Team
|
|
This file is part of the KDE project
|
|
|
|
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 <kdebug.h>
|
|
|
|
#include <tqstringlist.h>
|
|
|
|
#include "SVGColor.h"
|
|
|
|
#include "SVGColorImpl.h"
|
|
#include "SVGNumberImpl.h"
|
|
#include "SVGICCColorImpl.h"
|
|
#include "SVGDocumentImpl.h"
|
|
#include "SVGSVGElementImpl.h"
|
|
#include "SVGNumberListImpl.h"
|
|
#include "SVGURIReferenceImpl.h"
|
|
#include "SVGColorProfileElementImpl.h"
|
|
|
|
using namespace KSVG;
|
|
|
|
#include "SVGColorImpl.lut.h"
|
|
#include "ksvg_scriptinterpreter.h"
|
|
#include "ksvg_bridge.h"
|
|
#include "ksvg_cacheimpl.h"
|
|
|
|
SVGColorImpl::SVGColorImpl(SVGElementImpl *object) : m_object(object)
|
|
{
|
|
m_colorType = SVG_COLORTYPE_UNKNOWN;
|
|
m_iccColor = 0;
|
|
}
|
|
|
|
SVGColorImpl::SVGColorImpl(const SVGColorImpl &other) : DOM::DomShared()
|
|
{
|
|
(*this) = other;
|
|
}
|
|
|
|
SVGColorImpl::~SVGColorImpl()
|
|
{
|
|
if(m_iccColor)
|
|
m_iccColor->deref();
|
|
}
|
|
|
|
SVGColorImpl &SVGColorImpl::operator=(const SVGColorImpl &other)
|
|
{
|
|
m_colorType = other.m_colorType;
|
|
m_rgbColor = other.m_rgbColor;
|
|
|
|
if(m_iccColor && other.m_iccColor)
|
|
*m_iccColor = *(other.m_iccColor);
|
|
|
|
return *this;
|
|
}
|
|
|
|
unsigned short SVGColorImpl::colorType() const
|
|
{
|
|
return m_colorType;
|
|
}
|
|
|
|
DOM::RGBColor SVGColorImpl::rgbColor() const
|
|
{
|
|
return m_rgbColor;
|
|
}
|
|
|
|
SVGICCColorImpl *SVGColorImpl::iccColor() const
|
|
{
|
|
return m_iccColor;
|
|
}
|
|
|
|
void SVGColorImpl::setRGBColor(TQColor color)
|
|
{
|
|
m_colorType = SVG_COLORTYPE_RGBCOLOR;
|
|
m_rgbColor = DOM::RGBColor(color.rgb());
|
|
}
|
|
|
|
void SVGColorImpl::setRGBColor(int r, int g, int b)
|
|
{
|
|
m_colorType = SVG_COLORTYPE_RGBCOLOR;
|
|
m_rgbColor = DOM::RGBColor(TQColor(r, g, b).rgb());
|
|
}
|
|
|
|
void SVGColorImpl::setRGBColor(const DOM::DOMString &rgbColor)
|
|
{
|
|
if(rgbColor == "aliceblue")
|
|
setRGBColor(240, 248, 255);
|
|
else if(rgbColor == "antiquewhite")
|
|
setRGBColor(250, 235, 215);
|
|
else if(rgbColor == "aqua")
|
|
setRGBColor(0, 255, 255);
|
|
else if(rgbColor == "aquamarine")
|
|
setRGBColor(127, 255, 212);
|
|
else if(rgbColor == "azure")
|
|
setRGBColor(240, 255, 255);
|
|
else if(rgbColor == "beige")
|
|
setRGBColor(245, 245, 220);
|
|
else if(rgbColor == "bisque")
|
|
setRGBColor(255, 228, 196);
|
|
else if(rgbColor == "black")
|
|
setRGBColor(0, 0, 0);
|
|
else if(rgbColor == "blanchedalmond")
|
|
setRGBColor(255, 235, 205);
|
|
else if(rgbColor == "blue")
|
|
setRGBColor(0, 0, 255);
|
|
else if(rgbColor == "blueviolet")
|
|
setRGBColor(138, 43, 226);
|
|
else if(rgbColor == "brown")
|
|
setRGBColor(165, 42, 42);
|
|
else if(rgbColor == "burlywood")
|
|
setRGBColor(222, 184, 135);
|
|
else if(rgbColor == "cadetblue")
|
|
setRGBColor(95, 158, 160);
|
|
else if(rgbColor == "chartreuse")
|
|
setRGBColor(127, 255, 0);
|
|
else if(rgbColor == "chocolate")
|
|
setRGBColor(210, 105, 30);
|
|
else if(rgbColor == "coral")
|
|
setRGBColor(255, 127, 80);
|
|
else if(rgbColor == "cornflowerblue")
|
|
setRGBColor(100, 149, 237);
|
|
else if(rgbColor == "cornsilk")
|
|
setRGBColor(255, 248, 220);
|
|
else if(rgbColor == "crimson")
|
|
setRGBColor(220, 20, 60);
|
|
else if(rgbColor == "cyan")
|
|
setRGBColor(0, 255, 255);
|
|
else if(rgbColor == "darkblue")
|
|
setRGBColor(0, 0, 139);
|
|
else if(rgbColor == "darkcyan")
|
|
setRGBColor(0, 139, 139);
|
|
else if(rgbColor == "darkgoldenrod")
|
|
setRGBColor(184, 134, 11);
|
|
else if(rgbColor == "darkgray")
|
|
setRGBColor(169, 169, 169);
|
|
else if(rgbColor == "darkgrey")
|
|
setRGBColor(169, 169, 169);
|
|
else if(rgbColor == "darkgreen")
|
|
setRGBColor(0, 100, 0);
|
|
else if(rgbColor == "darkkhaki")
|
|
setRGBColor(189, 183, 107);
|
|
else if(rgbColor == "darkmagenta")
|
|
setRGBColor(139, 0, 139);
|
|
else if(rgbColor == "darkolivegreen")
|
|
setRGBColor(85, 107, 47);
|
|
else if(rgbColor == "darkorange")
|
|
setRGBColor(255, 140, 0);
|
|
else if(rgbColor == "darkorchid")
|
|
setRGBColor(153, 50, 204);
|
|
else if(rgbColor == "darkred")
|
|
setRGBColor(139, 0, 0);
|
|
else if(rgbColor == "darksalmon")
|
|
setRGBColor(233, 150, 122);
|
|
else if(rgbColor == "darkseagreen")
|
|
setRGBColor(143, 188, 143);
|
|
else if(rgbColor == "darkslateblue")
|
|
setRGBColor(72, 61, 139);
|
|
else if(rgbColor == "darkslategray")
|
|
setRGBColor(47, 79, 79);
|
|
else if(rgbColor == "darkslategrey")
|
|
setRGBColor(47, 79, 79);
|
|
else if(rgbColor == "darkturquoise")
|
|
setRGBColor(0, 206, 209);
|
|
else if(rgbColor == "darkviolet")
|
|
setRGBColor(148, 0, 211);
|
|
else if(rgbColor == "deeppink")
|
|
setRGBColor(255, 20, 147);
|
|
else if(rgbColor == "deepskyblue")
|
|
setRGBColor(0, 191, 255);
|
|
else if(rgbColor == "dimgray")
|
|
setRGBColor(105, 105, 105);
|
|
else if(rgbColor == "dimgrey")
|
|
setRGBColor(105, 105, 105);
|
|
else if(rgbColor == "dodgerblue")
|
|
setRGBColor(30, 144, 255);
|
|
else if(rgbColor == "firebrick")
|
|
setRGBColor(178, 34, 34);
|
|
else if(rgbColor == "floralwhite")
|
|
setRGBColor(255, 250, 240);
|
|
else if(rgbColor == "forestgreen")
|
|
setRGBColor(34, 139, 34);
|
|
else if(rgbColor == "fuchsia")
|
|
setRGBColor(255, 0, 255);
|
|
else if(rgbColor == "gainsboro")
|
|
setRGBColor(220, 220, 220);
|
|
else if(rgbColor == "ghostwhite")
|
|
setRGBColor(248, 248, 255);
|
|
else if(rgbColor == "gold")
|
|
setRGBColor(255, 215, 0);
|
|
else if(rgbColor == "goldenrod")
|
|
setRGBColor(218, 165, 32);
|
|
else if(rgbColor == "gray")
|
|
setRGBColor(128, 128, 128);
|
|
else if(rgbColor == "grey")
|
|
setRGBColor(128, 128, 128);
|
|
else if(rgbColor == "green")
|
|
setRGBColor(0, 128, 0);
|
|
else if(rgbColor == "greenyellow")
|
|
setRGBColor(173, 255, 47);
|
|
else if(rgbColor == "honeydew")
|
|
setRGBColor(240, 255, 240);
|
|
else if(rgbColor == "hotpink")
|
|
setRGBColor(255, 105, 180);
|
|
else if(rgbColor == "indianred")
|
|
setRGBColor(205, 92, 92);
|
|
else if(rgbColor == "indigo")
|
|
setRGBColor(75, 0, 130);
|
|
else if(rgbColor == "ivory")
|
|
setRGBColor(255, 255, 240);
|
|
else if(rgbColor == "khaki")
|
|
setRGBColor(240, 230, 140);
|
|
else if(rgbColor == "lavender")
|
|
setRGBColor(230, 230, 250);
|
|
else if(rgbColor == "lavenderblush")
|
|
setRGBColor(255, 240, 245);
|
|
else if(rgbColor == "lawngreen")
|
|
setRGBColor(124, 252, 0);
|
|
else if(rgbColor == "lemonchiffon")
|
|
setRGBColor(255, 250, 205);
|
|
else if(rgbColor == "lightblue")
|
|
setRGBColor(173, 216, 230);
|
|
else if(rgbColor == "lightcoral")
|
|
setRGBColor(240, 128, 128);
|
|
else if(rgbColor == "lightcyan")
|
|
setRGBColor(224, 255, 255);
|
|
else if(rgbColor == "lightgoldenrodyellow")
|
|
setRGBColor(250, 250, 210);
|
|
else if(rgbColor == "lightgray")
|
|
setRGBColor(211, 211, 211);
|
|
else if(rgbColor == "lightgrey")
|
|
setRGBColor(211, 211, 211);
|
|
else if(rgbColor == "lightgreen")
|
|
setRGBColor(144, 238, 144);
|
|
else if(rgbColor == "lightpink")
|
|
setRGBColor(255, 182, 193);
|
|
else if(rgbColor == "lightsalmon")
|
|
setRGBColor(255, 160, 122);
|
|
else if(rgbColor == "lightseagreen")
|
|
setRGBColor(32, 178, 170);
|
|
else if(rgbColor == "lightskyblue")
|
|
setRGBColor(135, 206, 250);
|
|
else if(rgbColor == "lightslategray")
|
|
setRGBColor(119, 136, 153);
|
|
else if(rgbColor == "lightslategrey")
|
|
setRGBColor(119, 136, 153);
|
|
else if(rgbColor == "lightsteelblue")
|
|
setRGBColor(176, 196, 222);
|
|
else if(rgbColor == "lightyellow")
|
|
setRGBColor(255, 255, 224);
|
|
else if(rgbColor == "lime")
|
|
setRGBColor(0, 255, 0);
|
|
else if(rgbColor == "limegreen")
|
|
setRGBColor(50, 205, 50);
|
|
else if(rgbColor == "linen")
|
|
setRGBColor(250, 240, 230);
|
|
else if(rgbColor == "magenta")
|
|
setRGBColor(255, 0, 255);
|
|
else if(rgbColor == "maroon")
|
|
setRGBColor(128, 0, 0);
|
|
else if(rgbColor == "mediumaquamarine")
|
|
setRGBColor(102, 205, 170);
|
|
else if(rgbColor == "mediumblue")
|
|
setRGBColor(0, 0, 205);
|
|
else if(rgbColor == "mediumorchid")
|
|
setRGBColor(186, 85, 211);
|
|
else if(rgbColor == "mediumpurple")
|
|
setRGBColor(147, 112, 219);
|
|
else if(rgbColor == "mediumseagreen")
|
|
setRGBColor(60, 179, 113);
|
|
else if(rgbColor == "mediumslateblue")
|
|
setRGBColor(123, 104, 238);
|
|
else if(rgbColor == "mediumspringgreen")
|
|
setRGBColor(0, 250, 154);
|
|
else if(rgbColor == "mediumturquoise")
|
|
setRGBColor(72, 209, 204);
|
|
else if(rgbColor == "mediumvioletred")
|
|
setRGBColor(199, 21, 133);
|
|
else if(rgbColor == "midnightblue")
|
|
setRGBColor(25, 25, 112);
|
|
else if(rgbColor == "mintcream")
|
|
setRGBColor(245, 255, 250);
|
|
else if(rgbColor == "mistyrose")
|
|
setRGBColor(255, 228, 225);
|
|
else if(rgbColor == "moccasin")
|
|
setRGBColor(255, 228, 181);
|
|
else if(rgbColor == "navajowhite")
|
|
setRGBColor(255, 222, 173);
|
|
else if(rgbColor == "navy")
|
|
setRGBColor(0, 0, 128);
|
|
else if(rgbColor == "oldlace")
|
|
setRGBColor(253, 245, 230);
|
|
else if(rgbColor == "olive")
|
|
setRGBColor(128, 128, 0);
|
|
else if(rgbColor == "olivedrab")
|
|
setRGBColor(107, 142, 35);
|
|
else if(rgbColor == "orange")
|
|
setRGBColor(255, 165, 0);
|
|
else if(rgbColor == "orangered")
|
|
setRGBColor(255, 69, 0);
|
|
else if(rgbColor == "orchid")
|
|
setRGBColor(218, 112, 214);
|
|
else if(rgbColor == "palegoldenrod")
|
|
setRGBColor(238, 232, 170);
|
|
else if(rgbColor == "palegreen")
|
|
setRGBColor(152, 251, 152);
|
|
else if(rgbColor == "paleturquoise")
|
|
setRGBColor(175, 238, 238);
|
|
else if(rgbColor == "palevioletred")
|
|
setRGBColor(219, 112, 147);
|
|
else if(rgbColor == "papayawhip")
|
|
setRGBColor(255, 239, 213);
|
|
else if(rgbColor == "peachpuff")
|
|
setRGBColor(255, 218, 185);
|
|
else if(rgbColor == "peru")
|
|
setRGBColor(205, 133, 63);
|
|
else if(rgbColor == "pink")
|
|
setRGBColor(255, 192, 203);
|
|
else if(rgbColor == "plum")
|
|
setRGBColor(221, 160, 221);
|
|
else if(rgbColor == "powderblue")
|
|
setRGBColor(176, 224, 230);
|
|
else if(rgbColor == "purple")
|
|
setRGBColor(128, 0, 128);
|
|
else if(rgbColor == "red")
|
|
setRGBColor(255, 0, 0);
|
|
else if(rgbColor == "rosybrown")
|
|
setRGBColor(188, 143, 143);
|
|
else if(rgbColor == "royalblue")
|
|
setRGBColor(65, 105, 225);
|
|
else if(rgbColor == "saddlebrown")
|
|
setRGBColor(139, 69, 19);
|
|
else if(rgbColor == "salmon")
|
|
setRGBColor(250, 128, 114);
|
|
else if(rgbColor == "sandybrown")
|
|
setRGBColor(244, 164, 96);
|
|
else if(rgbColor == "seagreen")
|
|
setRGBColor(46, 139, 87);
|
|
else if(rgbColor == "seashell")
|
|
setRGBColor(255, 245, 238);
|
|
else if(rgbColor == "sienna")
|
|
setRGBColor(160, 82, 45);
|
|
else if(rgbColor == "silver")
|
|
setRGBColor(192, 192, 192);
|
|
else if(rgbColor == "skyblue")
|
|
setRGBColor(135, 206, 235);
|
|
else if(rgbColor == "slateblue")
|
|
setRGBColor(106, 90, 205);
|
|
else if(rgbColor == "slategray")
|
|
setRGBColor(112, 128, 144);
|
|
else if(rgbColor == "slategrey")
|
|
setRGBColor(112, 128, 144);
|
|
else if(rgbColor == "snow")
|
|
setRGBColor(255, 250, 250);
|
|
else if(rgbColor == "springgreen")
|
|
setRGBColor(0, 255, 127);
|
|
else if(rgbColor == "steelblue")
|
|
setRGBColor(70, 130, 180);
|
|
else if(rgbColor == "tan")
|
|
setRGBColor(210, 180, 140);
|
|
else if(rgbColor == "teal")
|
|
setRGBColor(0, 128, 128);
|
|
else if(rgbColor == "thistle")
|
|
setRGBColor(216, 191, 216);
|
|
else if(rgbColor == "tomato")
|
|
setRGBColor(255, 99, 71);
|
|
else if(rgbColor == "turquoise")
|
|
setRGBColor(64, 224, 208);
|
|
else if(rgbColor == "violet")
|
|
setRGBColor(238, 130, 238);
|
|
else if(rgbColor == "wheat")
|
|
setRGBColor(245, 222, 179);
|
|
else if(rgbColor == "white")
|
|
setRGBColor(255, 255, 255);
|
|
else if(rgbColor == "whitesmoke")
|
|
setRGBColor(245, 245, 245);
|
|
else if(rgbColor == "yellow")
|
|
setRGBColor(255, 255, 0);
|
|
else if(rgbColor == "yellowgreen")
|
|
setRGBColor(154, 205, 50);
|
|
}
|
|
|
|
void SVGColorImpl::setRGBColorICCColor(const DOM::DOMString &rgbColor, const DOM::DOMString &iccColor)
|
|
{
|
|
TQColor color;
|
|
|
|
TQString content = iccColor.string().right(iccColor.string().length() - 10);
|
|
TQString iccTarget = content.mid(0, content.find(','));
|
|
|
|
TQStringList colors = TQStringList::split(',', content);
|
|
TQString r = colors[1];
|
|
TQString g = colors[2];
|
|
TQString b = colors[3].left(colors[3].length() - 1);
|
|
|
|
iccTarget = SVGURIReferenceImpl::getTarget(iccTarget);
|
|
|
|
SVGColorProfileElementImpl *handle = 0;
|
|
if(m_object)
|
|
handle = static_cast<SVGColorProfileElementImpl *>(dynamic_cast<SVGElementImpl *>(m_object)->ownerDoc()->rootElement()->getElementById(iccTarget));
|
|
|
|
if(iccTarget.isEmpty() || !handle)
|
|
{
|
|
color.setNamedColor(rgbColor.string().stripWhiteSpace());
|
|
setRGBColor(color);
|
|
}
|
|
else
|
|
{
|
|
color.setRgb(handle->correctPixel(r.toFloat() * 257, g.toFloat() * 257, b.toFloat() * 257));
|
|
setRGBColor(color);
|
|
|
|
m_colorType = SVG_COLORTYPE_RGBCOLOR_ICCCOLOR;
|
|
|
|
if(!m_iccColor)
|
|
{
|
|
m_iccColor = new SVGICCColorImpl();
|
|
m_iccColor->ref();
|
|
}
|
|
|
|
m_iccColor->setColorProfile(DOM::DOMString(content));
|
|
|
|
SVGNumberImpl *rnumber = SVGSVGElementImpl::createSVGNumber();
|
|
rnumber->setValue(r.toFloat());
|
|
|
|
SVGNumberImpl *gnumber = SVGSVGElementImpl::createSVGNumber();
|
|
gnumber->setValue(g.toFloat());
|
|
|
|
SVGNumberImpl *bnumber = SVGSVGElementImpl::createSVGNumber();
|
|
bnumber->setValue(b.toFloat());
|
|
|
|
m_iccColor->colors()->clear();
|
|
m_iccColor->colors()->appendItem(bnumber);
|
|
m_iccColor->colors()->appendItem(gnumber);
|
|
m_iccColor->colors()->appendItem(rnumber);
|
|
}
|
|
}
|
|
|
|
void SVGColorImpl::setColor(unsigned short colorType, const DOM::DOMString &rgbColor, const DOM::DOMString &iccColor)
|
|
{
|
|
m_colorType = colorType;
|
|
|
|
if(m_colorType == SVG_COLORTYPE_UNKNOWN || m_colorType == SVG_COLORTYPE_CURRENTCOLOR)
|
|
return;
|
|
|
|
setRGBColorICCColor(rgbColor, iccColor);
|
|
}
|
|
|
|
// Ecma stuff
|
|
/*
|
|
@namespace KSVG
|
|
@begin SVGColorImpl::s_hashTable 5
|
|
colorType SVGColorImpl::ColorType DontDelete|ReadOnly
|
|
RGBColor SVGColorImpl::RGBColor DontDelete|ReadOnly
|
|
ICCColor SVGColorImpl::ICCColor DontDelete|ReadOnly
|
|
@end
|
|
@namespace KSVG
|
|
@begin SVGColorImplProto::s_hashTable 5
|
|
setRGBColor SVGColorImpl::SetRGBColor DontDelete|Function 1
|
|
setRGBColorICCColor SVGColorImpl::SetRGBColorICCColor DontDelete|Function 2
|
|
setColor SVGColorImpl::SetColor DontDelete|Function 3
|
|
@end
|
|
*/
|
|
|
|
KSVG_IMPLEMENT_PROTOTYPE("SVGColor", SVGColorImplProto, SVGColorImplProtoFunc)
|
|
|
|
Value SVGColorImpl::getValueProperty(ExecState *exec, int token) const
|
|
{
|
|
switch(token)
|
|
{
|
|
case ColorType:
|
|
return Number(colorType());
|
|
#ifdef __GNUC__
|
|
#warning FIXME bridge stuff
|
|
#endif
|
|
case RGBColor:
|
|
return Undefined();
|
|
case ICCColor:
|
|
return m_iccColor->cache(exec);
|
|
default:
|
|
kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
|
|
return Undefined();
|
|
}
|
|
}
|
|
|
|
Value SVGColorImplProtoFunc::call(ExecState *exec, Object &thisObj, const List &args)
|
|
{
|
|
KSVG_CHECK_THIS(SVGColorImpl)
|
|
|
|
switch(id)
|
|
{
|
|
case SVGColorImpl::SetRGBColor:
|
|
obj->setRGBColor(args[0].toString(exec).string());
|
|
break;
|
|
case SVGColorImpl::SetRGBColorICCColor:
|
|
obj->setRGBColorICCColor(args[0].toString(exec).string(), args[1].toString(exec).string());
|
|
break;
|
|
case SVGColorImpl::SetColor:
|
|
obj->setColor(static_cast<unsigned short>(args[0].toNumber(exec)), args[1].toString(exec).string(), args[2].toString(exec).string());
|
|
break;
|
|
default:
|
|
kdWarning() << "Unhandled function id in " << k_funcinfo << " : " << id << endl;
|
|
break;
|
|
}
|
|
|
|
return Undefined();
|
|
}
|
|
|
|
/*
|
|
@namespace KSVG
|
|
@begin SVGColorImplConstructor::s_hashTable 5
|
|
SVG_COLORTYPE_UNKNOWN KSVG::SVG_COLORTYPE_UNKNOWN DontDelete|ReadOnly
|
|
SVG_COLORTYPE_RGBCOLOR KSVG::SVG_COLORTYPE_RGBCOLOR DontDelete|ReadOnly
|
|
SVG_COLORTYPE_RGBCOLOR_ICCCOLOR KSVG::SVG_COLORTYPE_RGBCOLOR_ICCCOLOR DontDelete|ReadOnly
|
|
SVG_COLORTYPE_CURRENTCOLOR KSVG::SVG_COLORTYPE_CURRENTCOLOR DontDelete|ReadOnly
|
|
@end
|
|
*/
|
|
|
|
Value SVGColorImplConstructor::getValueProperty(ExecState *, int token) const
|
|
{
|
|
return Number(token);
|
|
}
|
|
|
|
Value KSVG::getSVGColorImplConstructor(ExecState *exec)
|
|
{
|
|
return cacheGlobalBridge<SVGColorImplConstructor>(exec, "[[svgcolor.constructor]]");
|
|
}
|