24 #include "wtf/Platform.h"
31 #include "RenderPath.h"
39 SVGStyledTransformableElement::SVGStyledTransformableElement(
const QualifiedName& tagName, Document* doc)
40 : SVGStyledLocatableElement(tagName, doc)
46 SVGStyledTransformableElement::~SVGStyledTransformableElement()
50 ANIMATED_PROPERTY_DEFINITIONS(SVGStyledTransformableElement, SVGTransformList*, TransformList, transformList, Transform, transform,
SVGNames::transformAttr, m_transform.get())
52 AffineTransform SVGStyledTransformableElement::getCTM()
const
54 return SVGTransformable::getCTM(
this);
57 AffineTransform SVGStyledTransformableElement::getScreenCTM()
const
59 return SVGTransformable::getScreenCTM(
this);
62 AffineTransform SVGStyledTransformableElement::animatedLocalTransform()
const
64 return m_supplementalTransform ? transform()->concatenate().matrix() * *m_supplementalTransform : transform()->concatenate().matrix();
67 AffineTransform* SVGStyledTransformableElement::supplementalTransform()
69 if (!m_supplementalTransform)
70 m_supplementalTransform.set(
new AffineTransform());
71 return m_supplementalTransform.get();
74 void SVGStyledTransformableElement::parseMappedAttribute(MappedAttribute* attr)
77 SVGTransformList* localTransforms = transformBaseValue();
80 localTransforms->clear(ec);
82 if (!SVGTransformable::parseTransformAttribute(localTransforms, attr->value()))
83 localTransforms->clear(ec);
85 setTransformBaseValue(localTransforms);
87 SVGStyledLocatableElement::parseMappedAttribute(attr);
90 bool SVGStyledTransformableElement::isKnownAttribute(
const QualifiedName& attrName)
92 return SVGTransformable::isKnownAttribute(attrName) ||
93 SVGStyledLocatableElement::isKnownAttribute(attrName);
96 SVGElement* SVGStyledTransformableElement::nearestViewportElement()
const
98 return SVGTransformable::nearestViewportElement(
this);
101 SVGElement* SVGStyledTransformableElement::farthestViewportElement()
const
103 return SVGTransformable::farthestViewportElement(
this);
106 FloatRect SVGStyledTransformableElement::getBBox()
const
108 return SVGTransformable::getBBox(
this);
111 RenderObject* SVGStyledTransformableElement::createRenderer(RenderArena* arena, RenderStyle* style)
114 return new (arena) RenderPath(style,
this);
119 #endif // ENABLE(SVG)