| Index: Source/core/svg/SVGTextElement.cpp
|
| diff --git a/Source/core/svg/SVGTextElement.cpp b/Source/core/svg/SVGTextElement.cpp
|
| index 07ef41b0f375b700b2bf50d77ec55c6464f1c893..ff7288337f2f40af142a662d8951829789902a96 100644
|
| --- a/Source/core/svg/SVGTextElement.cpp
|
| +++ b/Source/core/svg/SVGTextElement.cpp
|
| @@ -24,28 +24,17 @@
|
|
|
| #include "SVGNames.h"
|
| #include "core/dom/NodeRenderingContext.h"
|
| -#include "core/platform/graphics/FloatRect.h"
|
| -#include "core/platform/graphics/transforms/AffineTransform.h"
|
| #include "core/rendering/svg/RenderSVGResource.h"
|
| #include "core/rendering/svg/RenderSVGText.h"
|
| #include "core/svg/SVGElementInstance.h"
|
|
|
| namespace WebCore {
|
|
|
| -// Animated property definitions
|
| -DEFINE_ANIMATED_TRANSFORM_LIST(SVGTextElement, SVGNames::transformAttr, Transform, transform)
|
| -
|
| -BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGTextElement)
|
| - REGISTER_LOCAL_ANIMATED_PROPERTY(transform)
|
| - REGISTER_PARENT_ANIMATED_PROPERTIES(SVGTextPositioningElement)
|
| -END_REGISTER_ANIMATED_PROPERTIES
|
| -
|
| inline SVGTextElement::SVGTextElement(const QualifiedName& tagName, Document* doc)
|
| : SVGTextPositioningElement(tagName, doc)
|
| {
|
| ASSERT(hasTagName(SVGNames::textTag));
|
| ScriptWrappable::init(this);
|
| - registerAnimatedPropertiesForSVGTextElement();
|
| }
|
|
|
| PassRefPtr<SVGTextElement> SVGTextElement::create(const QualifiedName& tagName, Document* document)
|
| @@ -53,57 +42,8 @@ PassRefPtr<SVGTextElement> SVGTextElement::create(const QualifiedName& tagName,
|
| return adoptRef(new SVGTextElement(tagName, document));
|
| }
|
|
|
| -bool SVGTextElement::isSupportedAttribute(const QualifiedName& attrName)
|
| -{
|
| - DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ());
|
| - if (supportedAttributes.isEmpty())
|
| - supportedAttributes.add(SVGNames::transformAttr);
|
| - return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName);
|
| -}
|
| -
|
| -void SVGTextElement::parseAttribute(const QualifiedName& name, const AtomicString& value)
|
| -{
|
| - if (!isSupportedAttribute(name)) {
|
| - SVGTextPositioningElement::parseAttribute(name, value);
|
| - return;
|
| - }
|
| -
|
| - if (name == SVGNames::transformAttr) {
|
| - SVGTransformList newList;
|
| - newList.parse(value);
|
| - detachAnimatedTransformListWrappers(newList.size());
|
| - setTransformBaseValue(newList);
|
| - return;
|
| - }
|
| -
|
| - ASSERT_NOT_REACHED();
|
| -}
|
| -
|
| -SVGElement* SVGTextElement::nearestViewportElement() const
|
| -{
|
| - return SVGTransformable::nearestViewportElement(this);
|
| -}
|
| -
|
| -SVGElement* SVGTextElement::farthestViewportElement() const
|
| -{
|
| - return SVGTransformable::farthestViewportElement(this);
|
| -}
|
| -
|
| -FloatRect SVGTextElement::getBBox(StyleUpdateStrategy styleUpdateStrategy)
|
| -{
|
| - return SVGTransformable::getBBox(this, styleUpdateStrategy);
|
| -}
|
| -
|
| -AffineTransform SVGTextElement::getCTM(StyleUpdateStrategy styleUpdateStrategy)
|
| -{
|
| - return SVGLocatable::computeCTM(this, SVGLocatable::NearestViewportScope, styleUpdateStrategy);
|
| -}
|
| -
|
| -AffineTransform SVGTextElement::getScreenCTM(StyleUpdateStrategy styleUpdateStrategy)
|
| -{
|
| - return SVGLocatable::computeCTM(this, SVGLocatable::ScreenScope, styleUpdateStrategy);
|
| -}
|
| -
|
| +// We override SVGGraphics::animatedLocalTransform() so that the transform-origin
|
| +// is not taken into account.
|
| AffineTransform SVGTextElement::animatedLocalTransform() const
|
| {
|
| AffineTransform matrix;
|
| @@ -120,18 +60,12 @@ AffineTransform SVGTextElement::animatedLocalTransform() const
|
| } else
|
| transform().concatenate(matrix);
|
|
|
| - if (m_supplementalTransform)
|
| - return *m_supplementalTransform * matrix;
|
| + const AffineTransform* transform = const_cast<SVGTextElement*>(this)->supplementalTransform();
|
| + if (transform)
|
| + return *transform * matrix;
|
| return matrix;
|
| }
|
|
|
| -AffineTransform* SVGTextElement::supplementalTransform()
|
| -{
|
| - if (!m_supplementalTransform)
|
| - m_supplementalTransform = adoptPtr(new AffineTransform);
|
| - return m_supplementalTransform.get();
|
| -}
|
| -
|
| RenderObject* SVGTextElement::createRenderer(RenderStyle*)
|
| {
|
| return new (document()->renderArena()) RenderSVGText(this);
|
| @@ -152,26 +86,4 @@ bool SVGTextElement::childShouldCreateRenderer(const NodeRenderingContext& child
|
| return false;
|
| }
|
|
|
| -void SVGTextElement::svgAttributeChanged(const QualifiedName& attrName)
|
| -{
|
| - if (!isSupportedAttribute(attrName)) {
|
| - SVGTextPositioningElement::svgAttributeChanged(attrName);
|
| - return;
|
| - }
|
| -
|
| - SVGElementInstance::InvalidationGuard invalidationGuard(this);
|
| -
|
| - RenderObject* renderer = this->renderer();
|
| - if (!renderer)
|
| - return;
|
| -
|
| - if (attrName == SVGNames::transformAttr) {
|
| - renderer->setNeedsTransformUpdate();
|
| - RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer);
|
| - return;
|
| - }
|
| -
|
| - ASSERT_NOT_REACHED();
|
| -}
|
| -
|
| }
|
|
|