Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1220)

Unified Diff: Source/core/svg/SVGStyledTransformableElement.cpp

Issue 18053005: Introduce SVGGraphicsElement IDL interface (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());
-}
-
-}

Powered by Google App Engine
This is Rietveld 408576698