SVGAnimateElement.h revision f486d19d62f1bc33246748b14b14a9dfa617b57f
18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
2dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Copyright (C) 2004, 2005 Nikolas Zimmermann <zimmermann@kde.org>
3dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Copyright (C) 2004, 2005 Rob Buis <buis@kde.org>
4dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Copyright (C) 2008 Apple Inc. All rights reserved.
5dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *
6dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * This library is free software; you can redistribute it and/or
7dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * modify it under the terms of the GNU Library General Public
8dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * License as published by the Free Software Foundation; either
9dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * version 2 of the License, or (at your option) any later version.
10dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *
11dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * This library is distributed in the hope that it will be useful,
12dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * but WITHOUT ANY WARRANTY; without even the implied warranty of
13dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Library General Public License for more details.
15dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch *
16dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * You should have received a copy of the GNU Library General Public License
17dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * along with this library; see the file COPYING.LIB.  If not, write to
18dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch * Boston, MA 02110-1301, USA.
20dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch */
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef SVGAnimateElement_h
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define SVGAnimateElement_h
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG) && ENABLE(SVG_ANIMATION)
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Color.h"
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "SVGAnimationElement.h"
29f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include "SVGPathByteStream.h"
30f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include <wtf/OwnPtr.h>
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    class SVGPathSegList;
34dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    class SVGPointList;
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    class SVGAnimateElement : public SVGAnimationElement {
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    public:
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        SVGAnimateElement(const QualifiedName&, Document*);
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual ~SVGAnimateElement();
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    protected:
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void resetToBaseValue(const String&);
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool calculateFromAndToValues(const String& fromString, const String& toString);
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual bool calculateFromAndByValues(const String& fromString, const String& byString);
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void calculateAnimatedValue(float percentage, unsigned repeat, SVGSMILElement* resultElement);
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual void applyResultsToTarget();
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        virtual float calculateDistance(const String& fromString, const String& toString);
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    private:
50dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        enum PropertyType { NumberProperty, ColorProperty, StringProperty, PathProperty, PointsProperty };
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        PropertyType determinePropertyType(const String& attribute) const;
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        PropertyType m_propertyType;
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        double m_fromNumber;
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        double m_toNumber;
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        double m_animatedNumber;
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        String m_numberUnit;
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        Color m_fromColor;
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        Color m_toColor;
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        Color m_animatedColor;
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        String m_fromString;
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        String m_toString;
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        String m_animatedString;
64f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick        OwnPtr<SVGPathByteStream> m_fromPath;
65f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick        OwnPtr<SVGPathByteStream> m_toPath;
66f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick        OwnPtr<SVGPathByteStream> m_animatedPath;
67f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick        SVGPathByteStream* m_animatedPathPointer;
68dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        RefPtr<SVGPointList> m_fromPoints;
69dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        RefPtr<SVGPointList> m_toPoints;
70dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block        RefPtr<SVGPointList> m_animatedPoints;
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    };
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ENABLE(SVG)
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // SVGAnimateElement_h
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// vim:ts=4:noet
79