Home | History | Annotate | Download | only in svg
      1 /*
      2  Copyright (C) 2007 Eric Seidel <eric (at) webkit.org>
      3  Copyright (C) 2008 Apple Inc. All Rights Reserved.
      4 
      5  This file is part of the WebKit project
      6 
      7  This library is free software; you can redistribute it and/or
      8  modify it under the terms of the GNU Library General Public
      9  License as published by the Free Software Foundation; either
     10  version 2 of the License, or (at your option) any later version.
     11 
     12  This library is distributed in the hope that it will be useful,
     13  but WITHOUT ANY WARRANTY; without even the implied warranty of
     14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     15  Library General Public License for more details.
     16 
     17  You should have received a copy of the GNU Library General Public License
     18  along with this library; see the file COPYING.LIB.  If not, write to
     19  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     20  Boston, MA 02110-1301, USA.
     21  */
     22 
     23 #ifndef SVGAnimateMotionElement_h
     24 #define SVGAnimateMotionElement_h
     25 #if ENABLE(SVG_ANIMATION)
     26 #include "AffineTransform.h"
     27 #include "Path.h"
     28 #include "SVGAnimationElement.h"
     29 
     30 namespace WebCore {
     31 
     32     class SVGAnimateMotionElement : public SVGAnimationElement {
     33     public:
     34         SVGAnimateMotionElement(const QualifiedName&, Document*);
     35         virtual ~SVGAnimateMotionElement();
     36 
     37         virtual bool hasValidTarget() const;
     38 
     39         virtual void parseMappedAttribute(MappedAttribute*);
     40 
     41     private:
     42         virtual void resetToBaseValue(const String&);
     43         virtual bool calculateFromAndToValues(const String& fromString, const String& toString);
     44         virtual bool calculateFromAndByValues(const String& fromString, const String& byString);
     45         virtual void calculateAnimatedValue(float percentage, unsigned repeat, SVGSMILElement* resultElement);
     46         virtual void applyResultsToTarget();
     47         virtual float calculateDistance(const String& fromString, const String& toString);
     48         virtual Path animationPath() const;
     49 
     50         enum RotateMode {
     51             RotateAngle,
     52             RotateAuto,
     53             RotateAutoReverse
     54         };
     55         RotateMode rotateMode() const;
     56 
     57         FloatSize m_animatedTranslation;
     58         float m_animatedAngle;
     59 
     60         // Note: we do not support percentage values for to/from coords as the spec implies we should (opera doesn't either)
     61         FloatPoint m_fromPoint;
     62         float m_fromAngle;
     63         FloatPoint m_toPoint;
     64         float m_toAngle;
     65 
     66         unsigned m_baseIndexInTransformList;
     67 
     68         Path m_path;
     69         Vector<float> m_keyPoints;
     70         float m_angle;
     71     };
     72 
     73 } // namespace WebCore
     74 
     75 #endif // ENABLE(SVG_ANIMATION)
     76 #endif // SVGAnimateMotionElement_h
     77 
     78 // vim:ts=4:noet
     79