JSValue jsSVGCircleElementExternalResourcesRequired(ExecState* exec, const Identifier&, const PropertySlot& slot) { UNUSED_PARAM(exec); SVGCircleElement* imp = static_cast<SVGCircleElement*>(static_cast<JSSVGCircleElement*>(asObject(slot.slotBase()))->impl()); RefPtr<SVGAnimatedBoolean> obj = imp->externalResourcesRequiredAnimated(); return toJS(exec, obj.get(), imp); }
JSValue jsSVGCircleElementTransform(ExecState* exec, const Identifier&, const PropertySlot& slot) { UNUSED_PARAM(exec); SVGCircleElement* imp = static_cast<SVGCircleElement*>(static_cast<JSSVGCircleElement*>(asObject(slot.slotBase()))->impl()); RefPtr<SVGAnimatedTransformList> obj = imp->transformAnimated(); return toJS(exec, obj.get(), imp); }
static void updatePathFromCircleElement(SVGElement* element, Path& path) { ASSERT(isSVGCircleElement(element)); SVGCircleElement* circle = toSVGCircleElement(element); SVGLengthContext lengthContext(element); float r = circle->r().value(lengthContext); if (r > 0) path.addEllipse(FloatRect(circle->cx().value(lengthContext) - r, circle->cy().value(lengthContext) - r, r * 2, r * 2)); }
static void updatePathFromCircleElement(SVGElement* element, Path& path) { ASSERT(element->hasTagName(SVGNames::circleTag)); SVGCircleElement* circle = static_cast<SVGCircleElement*>(element); SVGLengthContext lengthContext(element); float r = circle->r().value(lengthContext); if (r > 0) path.addEllipse(FloatRect(circle->cx().value(lengthContext) - r, circle->cy().value(lengthContext) - r, r * 2, r * 2)); }
JSValue JSC_HOST_CALL jsSVGCircleElementPrototypeFunctionGetBBox(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args) { UNUSED_PARAM(args); if (!thisValue.isObject(&JSSVGCircleElement::s_info)) return throwError(exec, TypeError); JSSVGCircleElement* castedThisObj = static_cast<JSSVGCircleElement*>(asObject(thisValue)); SVGCircleElement* imp = static_cast<SVGCircleElement*>(castedThisObj->impl()); JSC::JSValue result = toJS(exec, JSSVGStaticPODTypeWrapper<FloatRect>::create(imp->getBBox()).get(), imp); return result; }
JSValue JSC_HOST_CALL jsSVGCircleElementPrototypeFunctionGetPresentationAttribute(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args) { UNUSED_PARAM(args); if (!thisValue.isObject(&JSSVGCircleElement::s_info)) return throwError(exec, TypeError); JSSVGCircleElement* castedThisObj = static_cast<JSSVGCircleElement*>(asObject(thisValue)); SVGCircleElement* imp = static_cast<SVGCircleElement*>(castedThisObj->impl()); const UString& name = args.at(0).toString(exec); JSC::JSValue result = toJS(exec, WTF::getPtr(imp->getPresentationAttribute(name))); return result; }
JSValue JSC_HOST_CALL jsSVGCircleElementPrototypeFunctionHasExtension(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args) { UNUSED_PARAM(args); if (!thisValue.isObject(&JSSVGCircleElement::s_info)) return throwError(exec, TypeError); JSSVGCircleElement* castedThisObj = static_cast<JSSVGCircleElement*>(asObject(thisValue)); SVGCircleElement* imp = static_cast<SVGCircleElement*>(castedThisObj->impl()); const UString& extension = args.at(0).toString(exec); JSC::JSValue result = jsBoolean(imp->hasExtension(extension)); return result; }
void JSSVGCircleElement::putValueProperty(ExecState* exec, int token, JSValue* value, int /*attr*/) { switch (token) { case XmllangAttrNum: { SVGCircleElement* imp = static_cast<SVGCircleElement*>(impl()); imp->setXmllang(value->toString(exec)); break; } case XmlspaceAttrNum: { SVGCircleElement* imp = static_cast<SVGCircleElement*>(impl()); imp->setXmlspace(value->toString(exec)); break; } } }
static TextStream& operator<<(TextStream& ts, const RenderSVGShape& shape) { writePositionAndStyle(ts, shape); ASSERT(shape.node()->isSVGElement()); SVGElement* svgElement = toSVGElement(shape.node()); SVGLengthContext lengthContext(svgElement); if (svgElement->hasTagName(SVGNames::rectTag)) { SVGRectElement* element = static_cast<SVGRectElement*>(svgElement); writeNameValuePair(ts, "x", element->x().value(lengthContext)); writeNameValuePair(ts, "y", element->y().value(lengthContext)); writeNameValuePair(ts, "width", element->width().value(lengthContext)); writeNameValuePair(ts, "height", element->height().value(lengthContext)); } else if (svgElement->hasTagName(SVGNames::lineTag)) { SVGLineElement* element = static_cast<SVGLineElement*>(svgElement); writeNameValuePair(ts, "x1", element->x1().value(lengthContext)); writeNameValuePair(ts, "y1", element->y1().value(lengthContext)); writeNameValuePair(ts, "x2", element->x2().value(lengthContext)); writeNameValuePair(ts, "y2", element->y2().value(lengthContext)); } else if (svgElement->hasTagName(SVGNames::ellipseTag)) { SVGEllipseElement* element = static_cast<SVGEllipseElement*>(svgElement); writeNameValuePair(ts, "cx", element->cx().value(lengthContext)); writeNameValuePair(ts, "cy", element->cy().value(lengthContext)); writeNameValuePair(ts, "rx", element->rx().value(lengthContext)); writeNameValuePair(ts, "ry", element->ry().value(lengthContext)); } else if (svgElement->hasTagName(SVGNames::circleTag)) { SVGCircleElement* element = static_cast<SVGCircleElement*>(svgElement); writeNameValuePair(ts, "cx", element->cx().value(lengthContext)); writeNameValuePair(ts, "cy", element->cy().value(lengthContext)); writeNameValuePair(ts, "r", element->r().value(lengthContext)); } else if (svgElement->hasTagName(SVGNames::polygonTag) || svgElement->hasTagName(SVGNames::polylineTag)) { SVGPolyElement* element = static_cast<SVGPolyElement*>(svgElement); writeNameAndQuotedValue(ts, "points", element->pointList().valueAsString()); } else if (svgElement->hasTagName(SVGNames::pathTag)) { SVGPathElement* element = toSVGPathElement(svgElement); String pathString; // FIXME: We should switch to UnalteredParsing here - this will affect the path dumping output of dozens of tests. buildStringFromByteStream(element->pathByteStream(), pathString, NormalizedParsing); writeNameAndQuotedValue(ts, "data", pathString); } else ASSERT_NOT_REACHED(); return ts; }
void RenderSVGEllipse::calculateRadiiAndCenter() { ASSERT(element()); if (element()->hasTagName(SVGNames::circleTag)) { SVGCircleElement* circle = toSVGCircleElement(element()); SVGLengthContext lengthContext(circle); float radius = circle->rCurrentValue().value(lengthContext); m_radii = FloatSize(radius, radius); m_center = FloatPoint(circle->cxCurrentValue().value(lengthContext), circle->cyCurrentValue().value(lengthContext)); return; } SVGEllipseElement* ellipse = toSVGEllipseElement(element()); SVGLengthContext lengthContext(ellipse); m_radii = FloatSize(ellipse->rxCurrentValue().value(lengthContext), ellipse->ryCurrentValue().value(lengthContext)); m_center = FloatPoint(ellipse->cxCurrentValue().value(lengthContext), ellipse->cyCurrentValue().value(lengthContext)); }
void RenderSVGEllipse::calculateRadiiAndCenter() { ASSERT(element()); if (isSVGCircleElement(element())) { SVGCircleElement* circle = toSVGCircleElement(element()); SVGLengthContext lengthContext(circle); float radius = circle->r().value(lengthContext); m_radii = FloatSize(radius, radius); m_center = FloatPoint(circle->cx().value(lengthContext), circle->cy().value(lengthContext)); return; } ASSERT(isSVGEllipseElement(element())); SVGEllipseElement* ellipse = toSVGEllipseElement(element()); SVGLengthContext lengthContext(ellipse); m_radii = FloatSize(ellipse->rx().value(lengthContext), ellipse->ry().value(lengthContext)); m_center = FloatPoint(ellipse->cx().value(lengthContext), ellipse->cy().value(lengthContext)); }
void RenderSVGEllipse::calculateRadiiAndCenter() { ASSERT(node()); if (node()->hasTagName(SVGNames::circleTag)) { SVGCircleElement* circle = static_cast<SVGCircleElement*>(node()); SVGLengthContext lengthContext(circle); float radius = circle->r().value(lengthContext); m_radii = FloatSize(radius, radius); m_center = FloatPoint(circle->cx().value(lengthContext), circle->cy().value(lengthContext)); return; } ASSERT(node()->hasTagName(SVGNames::ellipseTag)); SVGEllipseElement* ellipse = static_cast<SVGEllipseElement*>(node()); SVGLengthContext lengthContext(ellipse); m_radii = FloatSize(ellipse->rx().value(lengthContext), ellipse->ry().value(lengthContext)); m_center = FloatPoint(ellipse->cx().value(lengthContext), ellipse->cy().value(lengthContext)); }
JSValue JSC_HOST_CALL jsSVGCircleElementPrototypeFunctionGetTransformToElement(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args) { UNUSED_PARAM(args); if (!thisValue.isObject(&JSSVGCircleElement::s_info)) return throwError(exec, TypeError); JSSVGCircleElement* castedThisObj = static_cast<JSSVGCircleElement*>(asObject(thisValue)); SVGCircleElement* imp = static_cast<SVGCircleElement*>(castedThisObj->impl()); ExceptionCode ec = 0; SVGElement* element = toSVGElement(args.at(0)); JSC::JSValue result = toJS(exec, JSSVGStaticPODTypeWrapper<TransformationMatrix>::create(imp->getTransformToElement(element, ec)).get(), imp); setDOMException(exec, ec); return result; }
JSValue* JSSVGCircleElementPrototypeFunction::callAsFunction(ExecState* exec, JSObject* thisObj, const List& args) { if (!thisObj->inherits(&JSSVGCircleElement::info)) return throwError(exec, TypeError); SVGCircleElement* imp = static_cast<SVGCircleElement*>(static_cast<JSSVGCircleElement*>(thisObj)->impl()); switch (id) { case JSSVGCircleElement::HasExtensionFuncNum: { String extension = args[0]->toString(exec); KJS::JSValue* result = jsBoolean(imp->hasExtension(extension)); return result; } case JSSVGCircleElement::GetBBoxFuncNum: { KJS::JSValue* result = toJS(exec, new JSSVGPODTypeWrapper<FloatRect>(imp->getBBox())); return result; } case JSSVGCircleElement::GetCTMFuncNum: { KJS::JSValue* result = toJS(exec, new JSSVGPODTypeWrapper<AffineTransform>(imp->getCTM())); return result; } case JSSVGCircleElement::GetScreenCTMFuncNum: { KJS::JSValue* result = toJS(exec, new JSSVGPODTypeWrapper<AffineTransform>(imp->getScreenCTM())); return result; } case JSSVGCircleElement::GetTransformToElementFuncNum: { ExceptionCode ec = 0; SVGElement* element = toSVGElement(args[0]); KJS::JSValue* result = toJS(exec, new JSSVGPODTypeWrapper<AffineTransform>(imp->getTransformToElement(element, ec))); setDOMException(exec, ec); return result; } } return 0; }
JSValue* JSSVGCircleElement::getValueProperty(ExecState* exec, int token) const { switch (token) { case CxAttrNum: { SVGCircleElement* imp = static_cast<SVGCircleElement*>(impl()); ASSERT(exec && exec->dynamicInterpreter()); RefPtr<SVGAnimatedLength> obj = imp->cxAnimated(); Frame* activeFrame = static_cast<ScriptInterpreter*>(exec->dynamicInterpreter())->frame(); if (activeFrame) { SVGDocumentExtensions* extensions = (activeFrame->document() ? activeFrame->document()->accessSVGExtensions() : 0); if (extensions) { if (extensions->hasGenericContext<SVGAnimatedLength>(obj.get())) ASSERT(extensions->genericContext<SVGAnimatedLength>(obj.get()) == imp); else extensions->setGenericContext<SVGAnimatedLength>(obj.get(), imp); } } return toJS(exec, obj.get()); } case CyAttrNum: { SVGCircleElement* imp = static_cast<SVGCircleElement*>(impl()); ASSERT(exec && exec->dynamicInterpreter()); RefPtr<SVGAnimatedLength> obj = imp->cyAnimated(); Frame* activeFrame = static_cast<ScriptInterpreter*>(exec->dynamicInterpreter())->frame(); if (activeFrame) { SVGDocumentExtensions* extensions = (activeFrame->document() ? activeFrame->document()->accessSVGExtensions() : 0); if (extensions) { if (extensions->hasGenericContext<SVGAnimatedLength>(obj.get())) ASSERT(extensions->genericContext<SVGAnimatedLength>(obj.get()) == imp); else extensions->setGenericContext<SVGAnimatedLength>(obj.get(), imp); } } return toJS(exec, obj.get()); } case RAttrNum: { SVGCircleElement* imp = static_cast<SVGCircleElement*>(impl()); ASSERT(exec && exec->dynamicInterpreter()); RefPtr<SVGAnimatedLength> obj = imp->rAnimated(); Frame* activeFrame = static_cast<ScriptInterpreter*>(exec->dynamicInterpreter())->frame(); if (activeFrame) { SVGDocumentExtensions* extensions = (activeFrame->document() ? activeFrame->document()->accessSVGExtensions() : 0); if (extensions) { if (extensions->hasGenericContext<SVGAnimatedLength>(obj.get())) ASSERT(extensions->genericContext<SVGAnimatedLength>(obj.get()) == imp); else extensions->setGenericContext<SVGAnimatedLength>(obj.get(), imp); } } return toJS(exec, obj.get()); } case RequiredFeaturesAttrNum: { SVGCircleElement* imp = static_cast<SVGCircleElement*>(impl()); return toJS(exec, WTF::getPtr(imp->requiredFeatures())); } case RequiredExtensionsAttrNum: { SVGCircleElement* imp = static_cast<SVGCircleElement*>(impl()); return toJS(exec, WTF::getPtr(imp->requiredExtensions())); } case SystemLanguageAttrNum: { SVGCircleElement* imp = static_cast<SVGCircleElement*>(impl()); return toJS(exec, WTF::getPtr(imp->systemLanguage())); } case XmllangAttrNum: { SVGCircleElement* imp = static_cast<SVGCircleElement*>(impl()); return jsString(imp->xmllang()); } case XmlspaceAttrNum: { SVGCircleElement* imp = static_cast<SVGCircleElement*>(impl()); return jsString(imp->xmlspace()); } case ExternalResourcesRequiredAttrNum: { SVGCircleElement* imp = static_cast<SVGCircleElement*>(impl()); ASSERT(exec && exec->dynamicInterpreter()); RefPtr<SVGAnimatedBoolean> obj = imp->externalResourcesRequiredAnimated(); Frame* activeFrame = static_cast<ScriptInterpreter*>(exec->dynamicInterpreter())->frame(); if (activeFrame) { SVGDocumentExtensions* extensions = (activeFrame->document() ? activeFrame->document()->accessSVGExtensions() : 0); if (extensions) { if (extensions->hasGenericContext<SVGAnimatedBoolean>(obj.get())) ASSERT(extensions->genericContext<SVGAnimatedBoolean>(obj.get()) == imp); else extensions->setGenericContext<SVGAnimatedBoolean>(obj.get(), imp); } } return toJS(exec, obj.get()); } case ClassNameAttrNum: { SVGCircleElement* imp = static_cast<SVGCircleElement*>(impl()); ASSERT(exec && exec->dynamicInterpreter()); RefPtr<SVGAnimatedString> obj = imp->classNameAnimated(); Frame* activeFrame = static_cast<ScriptInterpreter*>(exec->dynamicInterpreter())->frame(); if (activeFrame) { SVGDocumentExtensions* extensions = (activeFrame->document() ? activeFrame->document()->accessSVGExtensions() : 0); if (extensions) { if (extensions->hasGenericContext<SVGAnimatedString>(obj.get())) ASSERT(extensions->genericContext<SVGAnimatedString>(obj.get()) == imp); else extensions->setGenericContext<SVGAnimatedString>(obj.get(), imp); } } return toJS(exec, obj.get()); } case StyleAttrNum: { SVGCircleElement* imp = static_cast<SVGCircleElement*>(impl()); return toJS(exec, WTF::getPtr(imp->style())); } case TransformAttrNum: { SVGCircleElement* imp = static_cast<SVGCircleElement*>(impl()); ASSERT(exec && exec->dynamicInterpreter()); RefPtr<SVGAnimatedTransformList> obj = imp->transformAnimated(); Frame* activeFrame = static_cast<ScriptInterpreter*>(exec->dynamicInterpreter())->frame(); if (activeFrame) { SVGDocumentExtensions* extensions = (activeFrame->document() ? activeFrame->document()->accessSVGExtensions() : 0); if (extensions) { if (extensions->hasGenericContext<SVGAnimatedTransformList>(obj.get())) ASSERT(extensions->genericContext<SVGAnimatedTransformList>(obj.get()) == imp); else extensions->setGenericContext<SVGAnimatedTransformList>(obj.get(), imp); } } return toJS(exec, obj.get()); } case NearestViewportElementAttrNum: { SVGCircleElement* imp = static_cast<SVGCircleElement*>(impl()); return toJS(exec, WTF::getPtr(imp->nearestViewportElement())); } case FarthestViewportElementAttrNum: { SVGCircleElement* imp = static_cast<SVGCircleElement*>(impl()); return toJS(exec, WTF::getPtr(imp->farthestViewportElement())); } } return 0; }
void setJSSVGCircleElementXmlspace(ExecState* exec, JSObject* thisObject, JSValue value) { SVGCircleElement* imp = static_cast<SVGCircleElement*>(static_cast<JSSVGCircleElement*>(thisObject)->impl()); imp->setXmlspace(value.toString(exec)); }
JSValue jsSVGCircleElementFarthestViewportElement(ExecState* exec, const Identifier&, const PropertySlot& slot) { UNUSED_PARAM(exec); SVGCircleElement* imp = static_cast<SVGCircleElement*>(static_cast<JSSVGCircleElement*>(asObject(slot.slotBase()))->impl()); return toJS(exec, WTF::getPtr(imp->farthestViewportElement())); }
JSValue jsSVGCircleElementSystemLanguage(ExecState* exec, const Identifier&, const PropertySlot& slot) { UNUSED_PARAM(exec); SVGCircleElement* imp = static_cast<SVGCircleElement*>(static_cast<JSSVGCircleElement*>(asObject(slot.slotBase()))->impl()); return toJS(exec, WTF::getPtr(imp->systemLanguage()), imp); }
JSValue jsSVGCircleElementXmlspace(ExecState* exec, const Identifier&, const PropertySlot& slot) { UNUSED_PARAM(exec); SVGCircleElement* imp = static_cast<SVGCircleElement*>(static_cast<JSSVGCircleElement*>(asObject(slot.slotBase()))->impl()); return jsString(exec, imp->xmlspace()); }