• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  Copyright (C) 2007 Eric Seidel <eric@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 
27 #include "SVGAnimationElement.h"
28 #include "TransformationMatrix.h"
29 #include "Path.h"
30 
31 namespace WebCore {
32 
33     class SVGAnimateMotionElement : public SVGAnimationElement {
34     public:
35         SVGAnimateMotionElement(const QualifiedName&, Document*);
36         virtual ~SVGAnimateMotionElement();
37 
38         virtual bool hasValidTarget() const;
39 
40         virtual void parseMappedAttribute(MappedAttribute*);
41 
42     private:
43         virtual void resetToBaseValue(const String&);
44         virtual bool calculateFromAndToValues(const String& fromString, const String& toString);
45         virtual bool calculateFromAndByValues(const String& fromString, const String& byString);
46         virtual void calculateAnimatedValue(float percentage, unsigned repeat, SVGSMILElement* resultElement);
47         virtual void applyResultsToTarget();
48         virtual float calculateDistance(const String& fromString, const String& toString);
49         virtual Path animationPath() const;
50 
51         enum RotateMode {
52             RotateAngle,
53             RotateAuto,
54             RotateAutoReverse
55         };
56         RotateMode rotateMode() const;
57 
58         FloatSize m_animatedTranslation;
59         float m_animatedAngle;
60 
61         // Note: we do not support percentage values for to/from coords as the spec implies we should (opera doesn't either)
62         FloatPoint m_fromPoint;
63         float m_fromAngle;
64         FloatPoint m_toPoint;
65         float m_toAngle;
66 
67         unsigned m_baseIndexInTransformList;
68 
69         Path m_path;
70         Vector<float> m_keyPoints;
71         float m_angle;
72     };
73 
74 } // namespace WebCore
75 
76 #endif // ENABLE(SVG_ANIMATION)
77 #endif // SVGAnimateMotionElement_h
78 
79 // vim:ts=4:noet
80