Home | History | Annotate | Download | only in svg
      1 /*
      2     Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox (at) kde.org>
      3                   2004, 2005 Rob Buis <buis (at) kde.org>
      4     Copyright (C) 2008 Apple Inc. All rights reserved.
      5 
      6     This library is free software; you can redistribute it and/or
      7     modify it under the terms of the GNU Library General Public
      8     License as published by the Free Software Foundation; either
      9     version 2 of the License, or (at your option) any later version.
     10 
     11     This library is distributed in the hope that it will be useful,
     12     but WITHOUT ANY WARRANTY; without even the implied warranty of
     13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14     Library General Public License for more details.
     15 
     16     You should have received a copy of the GNU Library General Public License
     17     along with this library; see the file COPYING.LIB.  If not, write to
     18     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     19     Boston, MA 02110-1301, USA.
     20 */
     21 
     22 #ifndef SVGAnimateElement_h
     23 #define SVGAnimateElement_h
     24 
     25 #if ENABLE(SVG) && ENABLE(SVG_ANIMATION)
     26 
     27 #include "Color.h"
     28 #include "SVGAnimationElement.h"
     29 
     30 namespace WebCore {
     31     class SVGPathSegList;
     32 
     33     class SVGAnimateElement : public SVGAnimationElement {
     34     public:
     35         SVGAnimateElement(const QualifiedName&, Document*);
     36         virtual ~SVGAnimateElement();
     37 
     38     protected:
     39         virtual void resetToBaseValue(const String&);
     40         virtual bool calculateFromAndToValues(const String& fromString, const String& toString);
     41         virtual bool calculateFromAndByValues(const String& fromString, const String& byString);
     42         virtual void calculateAnimatedValue(float percentage, unsigned repeat, SVGSMILElement* resultElement);
     43         virtual void applyResultsToTarget();
     44         virtual float calculateDistance(const String& fromString, const String& toString);
     45 
     46     private:
     47         enum PropertyType { NumberProperty, ColorProperty, StringProperty, PathProperty };
     48         PropertyType determinePropertyType(const String& attribute) const;
     49         PropertyType m_propertyType;
     50 
     51         double m_fromNumber;
     52         double m_toNumber;
     53         double m_animatedNumber;
     54         String m_numberUnit;
     55         Color m_fromColor;
     56         Color m_toColor;
     57         Color m_animatedColor;
     58         String m_fromString;
     59         String m_toString;
     60         String m_animatedString;
     61         RefPtr<SVGPathSegList> m_fromPath;
     62         RefPtr<SVGPathSegList> m_toPath;
     63         RefPtr<SVGPathSegList> m_animatedPath;
     64     };
     65 
     66 } // namespace WebCore
     67 
     68 #endif // ENABLE(SVG)
     69 #endif // SVGAnimateElement_h
     70 
     71 // vim:ts=4:noet
     72