summaryrefslogtreecommitdiffstats
path: root/WebCore/bindings/js/JSSVGElementWrapperFactory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/bindings/js/JSSVGElementWrapperFactory.cpp')
-rw-r--r--WebCore/bindings/js/JSSVGElementWrapperFactory.cpp316
1 files changed, 316 insertions, 0 deletions
diff --git a/WebCore/bindings/js/JSSVGElementWrapperFactory.cpp b/WebCore/bindings/js/JSSVGElementWrapperFactory.cpp
new file mode 100644
index 0000000..29ead3d
--- /dev/null
+++ b/WebCore/bindings/js/JSSVGElementWrapperFactory.cpp
@@ -0,0 +1,316 @@
+/*
+ * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; 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 "JSSVGElementWrapperFactory.h"
+
+#include "JSSVGAElement.h"
+#include "JSSVGAnimateColorElement.h"
+#include "JSSVGAnimateElement.h"
+#include "JSSVGAnimateTransformElement.h"
+#include "JSSVGCircleElement.h"
+#include "JSSVGClipPathElement.h"
+#include "JSSVGCursorElement.h"
+#include "JSSVGDefsElement.h"
+#include "JSSVGDefinitionSrcElement.h"
+#include "JSSVGDescElement.h"
+#include "JSSVGEllipseElement.h"
+#include "JSSVGFEBlendElement.h"
+#include "JSSVGFEColorMatrixElement.h"
+#include "JSSVGFEComponentTransferElement.h"
+#include "JSSVGFECompositeElement.h"
+#include "JSSVGFEDiffuseLightingElement.h"
+#include "JSSVGFEDisplacementMapElement.h"
+#include "JSSVGFEDistantLightElement.h"
+#include "JSSVGFEFloodElement.h"
+#include "JSSVGFEFuncAElement.h"
+#include "JSSVGFEFuncBElement.h"
+#include "JSSVGFEFuncGElement.h"
+#include "JSSVGFEFuncRElement.h"
+#include "JSSVGFEGaussianBlurElement.h"
+#include "JSSVGFEImageElement.h"
+#include "JSSVGFEMergeElement.h"
+#include "JSSVGFEMergeNodeElement.h"
+#include "JSSVGFEOffsetElement.h"
+#include "JSSVGFEPointLightElement.h"
+#include "JSSVGFESpecularLightingElement.h"
+#include "JSSVGFESpotLightElement.h"
+#include "JSSVGFETileElement.h"
+#include "JSSVGFETurbulenceElement.h"
+#include "JSSVGFilterElement.h"
+#include "JSSVGForeignObjectElement.h"
+#include "JSSVGFontElement.h"
+#include "JSSVGFontFaceElement.h"
+#include "JSSVGFontFaceFormatElement.h"
+#include "JSSVGFontFaceNameElement.h"
+#include "JSSVGFontFaceSrcElement.h"
+#include "JSSVGFontFaceUriElement.h"
+#include "JSSVGGElement.h"
+#include "JSSVGGlyphElement.h"
+#include "JSSVGImageElement.h"
+#include "JSSVGLinearGradientElement.h"
+#include "JSSVGLineElement.h"
+#include "JSSVGMarkerElement.h"
+#include "JSSVGMaskElement.h"
+#include "JSSVGMetadataElement.h"
+#include "JSSVGMissingGlyphElement.h"
+#include "JSSVGPathElement.h"
+#include "JSSVGPatternElement.h"
+#include "JSSVGPolygonElement.h"
+#include "JSSVGPolylineElement.h"
+#include "JSSVGRadialGradientElement.h"
+#include "JSSVGRectElement.h"
+#include "JSSVGScriptElement.h"
+#include "JSSVGSetElement.h"
+#include "JSSVGStopElement.h"
+#include "JSSVGStyleElement.h"
+#include "JSSVGSVGElement.h"
+#include "JSSVGSwitchElement.h"
+#include "JSSVGSymbolElement.h"
+#include "JSSVGTextElement.h"
+#include "JSSVGTextPathElement.h"
+#include "JSSVGTitleElement.h"
+#include "JSSVGTRefElement.h"
+#include "JSSVGTSpanElement.h"
+#include "JSSVGUseElement.h"
+#include "JSSVGViewElement.h"
+
+#include "SVGNames.h"
+
+#include "SVGAElement.h"
+#include "SVGAnimateColorElement.h"
+#include "SVGAnimateElement.h"
+#include "SVGAnimateTransformElement.h"
+#include "SVGCircleElement.h"
+#include "SVGClipPathElement.h"
+#include "SVGCursorElement.h"
+#include "SVGDefsElement.h"
+#include "SVGDefinitionSrcElement.h"
+#include "SVGDescElement.h"
+#include "SVGEllipseElement.h"
+#include "SVGFEBlendElement.h"
+#include "SVGFEColorMatrixElement.h"
+#include "SVGFEComponentTransferElement.h"
+#include "SVGFECompositeElement.h"
+#include "SVGFEDiffuseLightingElement.h"
+#include "SVGFEDisplacementMapElement.h"
+#include "SVGFEDistantLightElement.h"
+#include "SVGFEFloodElement.h"
+#include "SVGFEFuncAElement.h"
+#include "SVGFEFuncBElement.h"
+#include "SVGFEFuncGElement.h"
+#include "SVGFEFuncRElement.h"
+#include "SVGFEGaussianBlurElement.h"
+#include "SVGFEImageElement.h"
+#include "SVGFEMergeElement.h"
+#include "SVGFEMergeNodeElement.h"
+#include "SVGFEOffsetElement.h"
+#include "SVGFEPointLightElement.h"
+#include "SVGFESpecularLightingElement.h"
+#include "SVGFESpotLightElement.h"
+#include "SVGFETileElement.h"
+#include "SVGFETurbulenceElement.h"
+#include "SVGFilterElement.h"
+#include "SVGForeignObjectElement.h"
+#include "SVGFontElement.h"
+#include "SVGFontFaceElement.h"
+#include "SVGFontFaceFormatElement.h"
+#include "SVGFontFaceNameElement.h"
+#include "SVGFontFaceSrcElement.h"
+#include "SVGFontFaceUriElement.h"
+#include "SVGGElement.h"
+#include "SVGGlyphElement.h"
+#include "SVGImageElement.h"
+#include "SVGLinearGradientElement.h"
+#include "SVGLineElement.h"
+#include "SVGMarkerElement.h"
+#include "SVGMaskElement.h"
+#include "SVGMetadataElement.h"
+#include "SVGMissingGlyphElement.h"
+#include "SVGPathElement.h"
+#include "SVGPatternElement.h"
+#include "SVGPolygonElement.h"
+#include "SVGPolylineElement.h"
+#include "SVGRadialGradientElement.h"
+#include "SVGRectElement.h"
+#include "SVGScriptElement.h"
+#include "SVGSetElement.h"
+#include "SVGStopElement.h"
+#include "SVGStyleElement.h"
+#include "SVGSVGElement.h"
+#include "SVGSwitchElement.h"
+#include "SVGSymbolElement.h"
+#include "SVGTextElement.h"
+#include "SVGTextPathElement.h"
+#include "SVGTitleElement.h"
+#include "SVGTRefElement.h"
+#include "SVGTSpanElement.h"
+#include "SVGUseElement.h"
+#include "SVGViewElement.h"
+
+using namespace KJS;
+
+// FIXME: Eventually this file should be autogenerated, just like SVGNames, SVGElementFactory, etc.
+
+namespace WebCore {
+
+using namespace SVGNames;
+
+typedef JSNode* (*CreateSVGElementWrapperFunction)(ExecState*, PassRefPtr<SVGElement>);
+
+#if ENABLE(SVG_ANIMATION)
+#define FOR_EACH_ANIMATION_TAG(macro) \
+ macro(animateColor, AnimateColor) \
+ macro(animate, Animate) \
+ macro(animateTransform, AnimateTransform) \
+ // end of macro
+
+#else
+#define FOR_EACH_ANIMATION_TAG(macro)
+#endif
+
+
+#if ENABLE(SVG_FONTS)
+#define FOR_EACH_FONT_TAG(macro) \
+ macro(definition_src, DefinitionSrc) \
+ macro(font, Font) \
+ macro(font_face, FontFace) \
+ macro(font_face_format, FontFaceFormat) \
+ macro(font_face_name, FontFaceName) \
+ macro(font_face_src, FontFaceSrc) \
+ macro(font_face_uri, FontFaceUri) \
+ macro(glyph, Glyph) \
+ macro(missing_glyph, MissingGlyph)
+ // end of macro
+
+#else
+#define FOR_EACH_FONT_TAG(macro)
+#endif
+
+#if ENABLE(SVG_FILTERS)
+#define FOR_EACH_FILTER_TAG(macro) \
+ macro(feBlend, FEBlend) \
+ macro(feColorMatrix, FEColorMatrix) \
+ macro(feComponentTransfer, FEComponentTransfer) \
+ macro(feComposite, FEComposite) \
+ macro(feDiffuseLighting, FEDiffuseLighting) \
+ macro(feDisplacementMap, FEDisplacementMap) \
+ macro(feDistantLight, FEDistantLight) \
+ macro(feFlood, FEFlood) \
+ macro(feFuncA, FEFuncA) \
+ macro(feFuncB, FEFuncB) \
+ macro(feFuncG, FEFuncG) \
+ macro(feFuncR, FEFuncR) \
+ macro(feGaussianBlur, FEGaussianBlur) \
+ macro(feImage, FEImage) \
+ macro(feMerge, FEMerge) \
+ macro(feMergeNode, FEMergeNode) \
+ macro(feOffset, FEOffset) \
+ macro(fePointLight, FEPointLight) \
+ macro(feSpecularLighting, FESpecularLighting) \
+ macro(feSpotLight, FESpotLight) \
+ macro(feTile, FETile) \
+ macro(feTurbulence, FETurbulence) \
+ macro(filter, Filter) \
+ // end of macro
+#else
+#define FOR_EACH_FILTER_TAG(macro)
+#endif
+
+#if ENABLE(SVG_FOREIGN_OBJECT)
+#define FOR_EACH_FOREIGN_OBJECT_TAG(macro) \
+ macro(foreignObject, ForeignObject) \
+ // end of macro
+#else
+#define FOR_EACH_FOREIGN_OBJECT_TAG(macro)
+#endif
+
+#define FOR_EACH_TAG(macro) \
+ macro(a, A) \
+ macro(circle, Circle) \
+ macro(clipPath, ClipPath) \
+ macro(cursor, Cursor) \
+ macro(defs, Defs) \
+ macro(desc, Desc) \
+ macro(ellipse, Ellipse) \
+ macro(g, G) \
+ macro(image, Image) \
+ macro(linearGradient, LinearGradient) \
+ macro(line, Line) \
+ macro(marker, Marker) \
+ macro(mask, Mask) \
+ macro(metadata, Metadata) \
+ macro(path, Path) \
+ macro(pattern, Pattern) \
+ macro(polyline, Polyline) \
+ macro(polygon, Polygon) \
+ macro(radialGradient, RadialGradient) \
+ macro(rect, Rect) \
+ macro(script, Script) \
+ macro(set, Set) \
+ macro(stop, Stop) \
+ macro(style, Style) \
+ macro(svg, SVG) \
+ macro(switch, Switch) \
+ macro(symbol, Symbol) \
+ macro(text, Text) \
+ macro(textPath, TextPath) \
+ macro(title, Title) \
+ macro(tref, TRef) \
+ macro(tspan, TSpan) \
+ macro(use, Use) \
+ macro(view, View) \
+ // end of macro
+
+#define CREATE_WRAPPER_FUNCTION(tag, name) \
+static JSNode* create##name##Wrapper(ExecState* exec, PassRefPtr<SVGElement> element) \
+{ \
+ return new JSSVG##name##Element(JSSVG##name##ElementPrototype::self(exec), static_cast<SVG##name##Element*>(element.get())); \
+}
+FOR_EACH_TAG(CREATE_WRAPPER_FUNCTION)
+FOR_EACH_ANIMATION_TAG(CREATE_WRAPPER_FUNCTION)
+FOR_EACH_FONT_TAG(CREATE_WRAPPER_FUNCTION)
+FOR_EACH_FILTER_TAG(CREATE_WRAPPER_FUNCTION)
+FOR_EACH_FOREIGN_OBJECT_TAG(CREATE_WRAPPER_FUNCTION)
+
+#undef CREATE_WRAPPER_FUNCTION
+
+JSNode* createJSSVGWrapper(ExecState* exec, PassRefPtr<SVGElement> element)
+{
+ static HashMap<WebCore::AtomicStringImpl*, CreateSVGElementWrapperFunction> map;
+ if (map.isEmpty()) {
+#define ADD_TO_HASH_MAP(tag, name) map.set(tag##Tag.localName().impl(), create##name##Wrapper);
+FOR_EACH_TAG(ADD_TO_HASH_MAP)
+FOR_EACH_ANIMATION_TAG(ADD_TO_HASH_MAP)
+FOR_EACH_FONT_TAG(ADD_TO_HASH_MAP)
+FOR_EACH_FILTER_TAG(ADD_TO_HASH_MAP)
+FOR_EACH_FOREIGN_OBJECT_TAG(ADD_TO_HASH_MAP)
+#undef ADD_TO_HASH_MAP
+ }
+ CreateSVGElementWrapperFunction createWrapperFunction = map.get(element->localName().impl());
+ if (createWrapperFunction)
+ return createWrapperFunction(exec, element);
+ return new JSSVGElement(JSSVGElementPrototype::self(exec), element.get());
+}
+
+}
+
+#endif // ENABLE(SVG)