1 /* 2 * Copyright (C) 2006 Nikolas Zimmermann <zimmermann (at) kde.org> 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Library General Public 6 * License as published by the Free Software Foundation; either 7 * version 2 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Library General Public License for more details. 13 * 14 * You should have received a copy of the GNU Library General Public License 15 * along with this library; see the file COPYING.LIB. If not, write to 16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 * Boston, MA 02110-1301, USA. 18 */ 19 20 #include "config.h" 21 22 #if ENABLE(SVG) 23 #include "JSSVGPathSeg.h" 24 25 #include "JSDOMBinding.h" 26 #include "JSSVGPathSegArcAbs.h" 27 #include "JSSVGPathSegArcRel.h" 28 #include "JSSVGPathSegClosePath.h" 29 #include "JSSVGPathSegCurvetoCubicAbs.h" 30 #include "JSSVGPathSegCurvetoCubicRel.h" 31 #include "JSSVGPathSegCurvetoCubicSmoothAbs.h" 32 #include "JSSVGPathSegCurvetoCubicSmoothRel.h" 33 #include "JSSVGPathSegCurvetoQuadraticAbs.h" 34 #include "JSSVGPathSegCurvetoQuadraticRel.h" 35 #include "JSSVGPathSegCurvetoQuadraticSmoothAbs.h" 36 #include "JSSVGPathSegCurvetoQuadraticSmoothRel.h" 37 #include "JSSVGPathSegLinetoAbs.h" 38 #include "JSSVGPathSegLinetoRel.h" 39 #include "JSSVGPathSegLinetoHorizontalAbs.h" 40 #include "JSSVGPathSegLinetoHorizontalRel.h" 41 #include "JSSVGPathSegLinetoVerticalAbs.h" 42 #include "JSSVGPathSegLinetoVerticalRel.h" 43 #include "JSSVGPathSegMovetoAbs.h" 44 #include "JSSVGPathSegMovetoRel.h" 45 #include "SVGPathSeg.h" 46 #include "SVGPathSegArc.h" 47 #include "SVGPathSegClosePath.h" 48 #include "SVGPathSegCurvetoCubic.h" 49 #include "SVGPathSegCurvetoCubicSmooth.h" 50 #include "SVGPathSegCurvetoQuadratic.h" 51 #include "SVGPathSegCurvetoQuadraticSmooth.h" 52 #include "SVGPathSegLineto.h" 53 #include "SVGPathSegLinetoHorizontal.h" 54 #include "SVGPathSegLinetoVertical.h" 55 #include "SVGPathSegMoveto.h" 56 57 using namespace JSC; 58 59 namespace WebCore { 60 61 JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, SVGPathSeg* object, SVGElement* context) 62 { 63 if (!object) 64 return jsNull(); 65 66 if (DOMObject* wrapper = getCachedDOMObjectWrapper(exec, object)) { 67 ASSERT(JSSVGContextCache::svgContextForDOMObject(wrapper) == context); 68 return wrapper; 69 } 70 71 switch (object->pathSegType()) { 72 case SVGPathSeg::PATHSEG_CLOSEPATH: 73 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegClosePath, object, context); 74 case SVGPathSeg::PATHSEG_MOVETO_ABS: 75 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegMovetoAbs, object, context); 76 case SVGPathSeg::PATHSEG_MOVETO_REL: 77 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegMovetoRel, object, context); 78 case SVGPathSeg::PATHSEG_LINETO_ABS: 79 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoAbs, object, context); 80 case SVGPathSeg::PATHSEG_LINETO_REL: 81 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoRel, object, context); 82 case SVGPathSeg::PATHSEG_CURVETO_CUBIC_ABS: 83 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoCubicAbs, object, context); 84 case SVGPathSeg::PATHSEG_CURVETO_CUBIC_REL: 85 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoCubicRel, object, context); 86 case SVGPathSeg::PATHSEG_CURVETO_QUADRATIC_ABS: 87 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoQuadraticAbs, object, context); 88 case SVGPathSeg::PATHSEG_CURVETO_QUADRATIC_REL: 89 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoQuadraticRel, object, context); 90 case SVGPathSeg::PATHSEG_ARC_ABS: 91 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegArcAbs, object, context); 92 case SVGPathSeg::PATHSEG_ARC_REL: 93 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegArcRel, object, context); 94 case SVGPathSeg::PATHSEG_LINETO_HORIZONTAL_ABS: 95 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoHorizontalAbs, object, context); 96 case SVGPathSeg::PATHSEG_LINETO_HORIZONTAL_REL: 97 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoHorizontalRel, object, context); 98 case SVGPathSeg::PATHSEG_LINETO_VERTICAL_ABS: 99 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoVerticalAbs, object, context); 100 case SVGPathSeg::PATHSEG_LINETO_VERTICAL_REL: 101 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegLinetoVerticalRel, object, context); 102 case SVGPathSeg::PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: 103 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoCubicSmoothAbs, object, context); 104 case SVGPathSeg::PATHSEG_CURVETO_CUBIC_SMOOTH_REL: 105 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoCubicSmoothRel, object, context); 106 case SVGPathSeg::PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: 107 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoQuadraticSmoothAbs, object, context); 108 case SVGPathSeg::PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: 109 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSegCurvetoQuadraticSmoothRel, object, context); 110 case SVGPathSeg::PATHSEG_UNKNOWN: 111 default: 112 return CREATE_SVG_OBJECT_WRAPPER(exec, globalObject, SVGPathSeg, object, context); 113 } 114 } 115 116 } 117 118 #endif // ENABLE(SVG) 119