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" 3028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#include "SVGPointList.h" 31f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include <wtf/OwnPtr.h> 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 345ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 35f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochclass SVGPathSegList; 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 37f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochclass SVGAnimateElement : public SVGAnimationElement { 38f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochpublic: 39f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch static PassRefPtr<SVGAnimateElement> create(const QualifiedName&, Document*); 405ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 41f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual ~SVGAnimateElement(); 425ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 43f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochprotected: 44f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch SVGAnimateElement(const QualifiedName&, Document*); 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 46f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual void resetToBaseValue(const String&); 47f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual bool calculateFromAndToValues(const String& fromString, const String& toString); 48f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual bool calculateFromAndByValues(const String& fromString, const String& byString); 49f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual void calculateAnimatedValue(float percentage, unsigned repeat, SVGSMILElement* resultElement); 50f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual void applyResultsToTarget(); 51f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch virtual float calculateDistance(const String& fromString, const String& toString); 52f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 53f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochprivate: 5481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // If we have 'currentColor' or 'inherit' as animation value, we need to grab the value during the animation 5581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // since the value can be animated itself. 5681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch enum AnimatedPropertyValueType { 5781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch RegularPropertyValue, 5881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch CurrentColorValue, 5981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch InheritValue 6081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch }; 6181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 6281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual bool hasValidAttributeType() const; 6381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch AnimatedAttributeType determineAnimatedAttributeType(SVGElement*) const; 6481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch AnimatedAttributeType m_animatedAttributeType; 65f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 6681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch AnimatedPropertyValueType m_fromPropertyValueType; 6781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch AnimatedPropertyValueType m_toPropertyValueType; 68f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch double m_fromNumber; 69f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch double m_toNumber; 70f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch double m_animatedNumber; 71f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch String m_numberUnit; 72f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch Color m_fromColor; 73f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch Color m_toColor; 74f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch Color m_animatedColor; 75f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch String m_fromString; 76f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch String m_toString; 77f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch String m_animatedString; 78f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch OwnPtr<SVGPathByteStream> m_fromPath; 79f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch OwnPtr<SVGPathByteStream> m_toPath; 80f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch OwnPtr<SVGPathByteStream> m_animatedPath; 81f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch SVGPathByteStream* m_animatedPathPointer; 82f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch SVGPointList m_fromPoints; 83f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch SVGPointList m_toPoints; 84f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch SVGPointList m_animatedPoints; 85f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch}; 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ENABLE(SVG) 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // SVGAnimateElement_h 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// vim:ts=4:noet 93