Rename AtomicString to AtomString
[WebKit-https.git] / Source / WebCore / svg / SVGAnimateMotionElement.h
index 91c0855..fabaac5 100644 (file)
  * Boston, MA 02110-1301, USA.
  */
 
-#ifndef SVGAnimateMotionElement_h
-#define SVGAnimateMotionElement_h
-#if ENABLE(SVG)
-#include "AffineTransform.h"
+#pragma once
+
 #include "Path.h"
 #include "SVGAnimationElement.h"
 
 namespace WebCore {
+
+class AffineTransform;
             
-class SVGAnimateMotionElement : public SVGAnimationElement {
+class SVGAnimateMotionElement final : public SVGAnimationElement {
+    WTF_MAKE_ISO_ALLOCATED(SVGAnimateMotionElement);
 public:
-    static PassRefPtr<SVGAnimateMotionElement> create(const QualifiedName&, Document*);
+    static Ref<SVGAnimateMotionElement> create(const QualifiedName&, Document&);
+    void updateAnimationPath();
 
 private:
-    SVGAnimateMotionElement(const QualifiedName&, Document*);
+    SVGAnimateMotionElement(const QualifiedName&, Document&);
 
-    virtual bool hasValidAttributeType();
+    bool hasValidAttributeType() const override;
+    bool hasValidAttributeName() const override;
 
-    bool isSupportedAttribute(const QualifiedName&);
-    virtual void parseAttribute(Attribute*) OVERRIDE;
+    void parseAttribute(const QualifiedName&, const AtomString&) override;
 
-    virtual void resetToBaseValue();
-    virtual bool calculateFromAndToValues(const String& fromString, const String& toString);
-    virtual bool calculateFromAndByValues(const String& fromString, const String& byString);
-    virtual void calculateAnimatedValue(float percentage, unsigned repeat, SVGSMILElement* resultElement);
-    virtual void applyResultsToTarget();
-    virtual float calculateDistance(const String& fromString, const String& toString);
-    virtual Path animationPath() const;
+    void resetAnimatedType() override;
+    void clearAnimatedType(SVGElement* targetElement) override;
+    bool calculateToAtEndOfDurationValue(const String& toAtEndOfDurationString) override;
+    bool calculateFromAndToValues(const String& fromString, const String& toString) override;
+    bool calculateFromAndByValues(const String& fromString, const String& byString) override;
+    void calculateAnimatedValue(float percentage, unsigned repeatCount, SVGSMILElement* resultElement) override;
+    void applyResultsToTarget() override;
+    Optional<float> calculateDistance(const String& fromString, const String& toString) override;
 
     enum RotateMode {
         RotateAngle,
@@ -53,24 +56,19 @@ private:
         RotateAutoReverse
     };
     RotateMode rotateMode() const;
+    void buildTransformForProgress(AffineTransform*, float percentage);
+
+    bool m_hasToPointAtEndOfDuration;
 
-    FloatSize m_animatedTranslation;
-    float m_animatedAngle;
+    void updateAnimationMode() override;
 
     // Note: we do not support percentage values for to/from coords as the spec implies we should (opera doesn't either)
     FloatPoint m_fromPoint;
-    float m_fromAngle;
     FloatPoint m_toPoint;
-    float m_toAngle;
-
-    unsigned m_baseIndexInTransformList;
+    FloatPoint m_toPointAtEndOfDuration;
 
     Path m_path;
-    Vector<float> m_keyPoints;
-    float m_angle;
+    Path m_animationPath;
 };
     
 } // namespace WebCore
-
-#endif // ENABLE(SVG)
-#endif // SVGAnimateMotionElement_h