| Index: Source/core/svg/SVGStyledTransformableElement.cpp
|
| diff --git a/Source/core/svg/SVGStyledTransformableElement.cpp b/Source/core/svg/SVGStyledTransformableElement.cpp
|
| deleted file mode 100644
|
| index 7304c61e2d4da603dad3dffe0e1e8f0ee7724d2c..0000000000000000000000000000000000000000
|
| --- a/Source/core/svg/SVGStyledTransformableElement.cpp
|
| +++ /dev/null
|
| @@ -1,167 +0,0 @@
|
| -/*
|
| - * Copyright (C) 2004, 2005, 2008 Nikolas Zimmermann <zimmermann@kde.org>
|
| - * Copyright (C) 2004, 2005, 2006 Rob Buis <buis@kde.org>
|
| - *
|
| - * This library is free software; you can redistribute it and/or
|
| - * modify it under the terms of the GNU Library General Public
|
| - * License as published by the Free Software Foundation; either
|
| - * version 2 of the License, or (at your option) any later version.
|
| - *
|
| - * This library is distributed in the hope that it will be useful,
|
| - * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| - * Library General Public License for more details.
|
| - *
|
| - * You should have received a copy of the GNU Library General Public License
|
| - * along with this library; see the file COPYING.LIB. If not, write to
|
| - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
| - * Boston, MA 02110-1301, USA.
|
| - */
|
| -
|
| -#include "config.h"
|
| -
|
| -#include "core/svg/SVGStyledTransformableElement.h"
|
| -
|
| -#include "SVGNames.h"
|
| -#include "core/platform/graphics/transforms/AffineTransform.h"
|
| -#include "core/rendering/svg/RenderSVGPath.h"
|
| -#include "core/rendering/svg/RenderSVGResource.h"
|
| -#include "core/rendering/svg/SVGPathData.h"
|
| -#include "core/svg/SVGElementInstance.h"
|
| -
|
| -namespace WebCore {
|
| -
|
| -// Animated property definitions
|
| -DEFINE_ANIMATED_TRANSFORM_LIST(SVGStyledTransformableElement, SVGNames::transformAttr, Transform, transform)
|
| -
|
| -BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGStyledTransformableElement)
|
| - REGISTER_LOCAL_ANIMATED_PROPERTY(transform)
|
| - REGISTER_PARENT_ANIMATED_PROPERTIES(SVGStyledLocatableElement)
|
| -END_REGISTER_ANIMATED_PROPERTIES
|
| -
|
| -SVGStyledTransformableElement::SVGStyledTransformableElement(const QualifiedName& tagName, Document* document, ConstructionType constructionType)
|
| - : SVGStyledLocatableElement(tagName, document, constructionType)
|
| -{
|
| - registerAnimatedPropertiesForSVGStyledTransformableElement();
|
| -}
|
| -
|
| -SVGStyledTransformableElement::~SVGStyledTransformableElement()
|
| -{
|
| -}
|
| -
|
| -AffineTransform SVGStyledTransformableElement::getCTM(StyleUpdateStrategy styleUpdateStrategy)
|
| -{
|
| - return SVGLocatable::computeCTM(this, SVGLocatable::NearestViewportScope, styleUpdateStrategy);
|
| -}
|
| -
|
| -AffineTransform SVGStyledTransformableElement::getScreenCTM(StyleUpdateStrategy styleUpdateStrategy)
|
| -{
|
| - return SVGLocatable::computeCTM(this, SVGLocatable::ScreenScope, styleUpdateStrategy);
|
| -}
|
| -
|
| -AffineTransform SVGStyledTransformableElement::animatedLocalTransform() const
|
| -{
|
| - AffineTransform matrix;
|
| - RenderStyle* style = renderer() ? renderer()->style() : 0;
|
| -
|
| - // If CSS property was set, use that, otherwise fallback to attribute (if set).
|
| - if (style && style->hasTransform()) {
|
| - // Note: objectBoundingBox is an emptyRect for elements like pattern or clipPath.
|
| - // See the "Object bounding box units" section of http://dev.w3.org/csswg/css3-transforms/
|
| - TransformationMatrix transform;
|
| - style->applyTransform(transform, renderer()->objectBoundingBox());
|
| -
|
| - // Flatten any 3D transform.
|
| - matrix = transform.toAffineTransform();
|
| - } else
|
| - transform().concatenate(matrix);
|
| -
|
| - if (m_supplementalTransform)
|
| - return *m_supplementalTransform * matrix;
|
| - return matrix;
|
| -}
|
| -
|
| -AffineTransform* SVGStyledTransformableElement::supplementalTransform()
|
| -{
|
| - if (!m_supplementalTransform)
|
| - m_supplementalTransform = adoptPtr(new AffineTransform);
|
| - return m_supplementalTransform.get();
|
| -}
|
| -
|
| -bool SVGStyledTransformableElement::isSupportedAttribute(const QualifiedName& attrName)
|
| -{
|
| - DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ());
|
| - if (supportedAttributes.isEmpty())
|
| - supportedAttributes.add(SVGNames::transformAttr);
|
| - return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName);
|
| -}
|
| -
|
| -void SVGStyledTransformableElement::parseAttribute(const QualifiedName& name, const AtomicString& value)
|
| -{
|
| - if (!isSupportedAttribute(name)) {
|
| - SVGStyledLocatableElement::parseAttribute(name, value);
|
| - return;
|
| - }
|
| -
|
| - if (name == SVGNames::transformAttr) {
|
| - SVGTransformList newList;
|
| - newList.parse(value);
|
| - detachAnimatedTransformListWrappers(newList.size());
|
| - setTransformBaseValue(newList);
|
| - return;
|
| - }
|
| -
|
| - ASSERT_NOT_REACHED();
|
| -}
|
| -
|
| -void SVGStyledTransformableElement::svgAttributeChanged(const QualifiedName& attrName)
|
| -{
|
| - if (!isSupportedAttribute(attrName)) {
|
| - SVGStyledLocatableElement::svgAttributeChanged(attrName);
|
| - return;
|
| - }
|
| -
|
| - SVGElementInstance::InvalidationGuard invalidationGuard(this);
|
| -
|
| - RenderObject* object = renderer();
|
| - if (!object)
|
| - return;
|
| -
|
| - if (attrName == SVGNames::transformAttr) {
|
| - object->setNeedsTransformUpdate();
|
| - RenderSVGResource::markForLayoutAndParentResourceInvalidation(object);
|
| - return;
|
| - }
|
| -
|
| - ASSERT_NOT_REACHED();
|
| -}
|
| -
|
| -SVGElement* SVGStyledTransformableElement::nearestViewportElement() const
|
| -{
|
| - return SVGTransformable::nearestViewportElement(this);
|
| -}
|
| -
|
| -SVGElement* SVGStyledTransformableElement::farthestViewportElement() const
|
| -{
|
| - return SVGTransformable::farthestViewportElement(this);
|
| -}
|
| -
|
| -FloatRect SVGStyledTransformableElement::getBBox(StyleUpdateStrategy styleUpdateStrategy)
|
| -{
|
| - return SVGTransformable::getBBox(this, styleUpdateStrategy);
|
| -}
|
| -
|
| -RenderObject* SVGStyledTransformableElement::createRenderer(RenderStyle*)
|
| -{
|
| - // By default, any subclass is expected to do path-based drawing
|
| - return new (document()->renderArena()) RenderSVGPath(this);
|
| -}
|
| -
|
| -void SVGStyledTransformableElement::toClipPath(Path& path)
|
| -{
|
| - updatePathFromGraphicsElement(this, path);
|
| - // FIXME: How do we know the element has done a layout?
|
| - path.transform(animatedLocalTransform());
|
| -}
|
| -
|
| -}
|
|
|