24 #include "wtf/Platform.h"
30 #include "RenderPath.h"
36 SVGEllipseElement::SVGEllipseElement(
const QualifiedName& tagName, Document* doc)
37 : SVGStyledTransformableElement(tagName, doc)
40 , SVGExternalResourcesRequired()
41 , m_cx(this, LengthModeWidth)
42 , m_cy(this, LengthModeHeight)
43 , m_rx(this, LengthModeWidth)
44 , m_ry(this, LengthModeHeight)
48 SVGEllipseElement::~SVGEllipseElement()
52 ANIMATED_PROPERTY_DEFINITIONS(SVGEllipseElement, SVGLength, Length, length, Cx, cx,
SVGNames::cxAttr, m_cx)
53 ANIMATED_PROPERTY_DEFINITIONS(SVGEllipseElement, SVGLength, Length, length, Cy, cy, SVGNames::
cyAttr, m_cy)
54 ANIMATED_PROPERTY_DEFINITIONS(SVGEllipseElement, SVGLength, Length, length, Rx, rx, SVGNames::
rxAttr, m_rx)
55 ANIMATED_PROPERTY_DEFINITIONS(SVGEllipseElement, SVGLength, Length, length, Ry, ry, SVGNames::
ryAttr, m_ry)
57 void SVGEllipseElement::parseMappedAttribute(MappedAttribute* attr)
60 setCxBaseValue(SVGLength(
this, LengthModeWidth, attr->value()));
62 setCyBaseValue(SVGLength(
this, LengthModeHeight, attr->value()));
64 setRxBaseValue(SVGLength(
this, LengthModeWidth, attr->value()));
65 if (rx().value() < 0.0)
66 document()->accessSVGExtensions()->reportError(
"A negative value for ellipse <rx> is not allowed");
68 setRyBaseValue(SVGLength(
this, LengthModeHeight, attr->value()));
69 if (ry().value() < 0.0)
70 document()->accessSVGExtensions()->reportError(
"A negative value for ellipse <ry> is not allowed");
72 if (SVGTests::parseMappedAttribute(attr))
74 if (SVGLangSpace::parseMappedAttribute(attr))
76 if (SVGExternalResourcesRequired::parseMappedAttribute(attr))
78 SVGStyledTransformableElement::parseMappedAttribute(attr);
82 void SVGEllipseElement::svgAttributeChanged(
const QualifiedName& attrName)
84 SVGStyledTransformableElement::svgAttributeChanged(attrName);
91 SVGTests::isKnownAttribute(attrName) ||
92 SVGLangSpace::isKnownAttribute(attrName) ||
93 SVGExternalResourcesRequired::isKnownAttribute(attrName) ||
94 SVGStyledTransformableElement::isKnownAttribute(attrName))
95 renderer()->setNeedsLayout(
true);
98 Path SVGEllipseElement::toPathData()
const
100 return Path::createEllipse(FloatPoint(cx().value(), cy().value()),
101 rx().value(), ry().value());
104 bool SVGEllipseElement::hasRelativeValues()
const
106 return (cx().isRelative() || cy().isRelative() ||
107 rx().isRelative() || ry().isRelative());
111 quint32 SVGEllipseElement::id()
const
118 #endif // ENABLE(SVG)
DOM::QualifiedName rxAttr
DOM::QualifiedName ellipseTag
DOM::QualifiedName cyAttr
DOM::QualifiedName cxAttr
DOM::QualifiedName ryAttr