2007-01-02 Eric Seidel <eric@webkit.org>
[WebKit-https.git] / WebCore / ksvg2 / svg / SVGAnimateColorElement.h
1 /*
2     Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox@kde.org>
3                   2004, 2005, 2006 Rob Buis <buis@kde.org>
4     Copyright (C) 2007 Eric Seidel <eric@webkit.org>
5
6     This file is part of the KDE project
7
8     This library is free software; you can redistribute it and/or
9     modify it under the terms of the GNU Library General Public
10     License as published by the Free Software Foundation; either
11     version 2 of the License, or (at your option) any later version.
12
13     This library is distributed in the hope that it will be useful,
14     but WITHOUT ANY WARRANTY; without even the implied warranty of
15     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16     Library General Public License for more details.
17
18     You should have received a copy of the GNU Library General Public License
19     along with this library; see the file COPYING.LIB.  If not, write to
20     the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21     Boston, MA 02111-1307, USA.
22 */
23
24 #ifndef SVGAnimateColorElement_H
25 #define SVGAnimateColorElement_H
26 #ifdef SVG_SUPPORT
27
28 #include "SVGAnimationElement.h"
29 #include <wtf/RefPtr.h>
30
31 namespace WebCore {
32
33     class SVGColor;
34
35     class SVGAnimateColorElement : public SVGAnimationElement {
36     public:
37         SVGAnimateColorElement(const QualifiedName&, Document*);
38         virtual ~SVGAnimateColorElement();
39
40         void applyAnimationToValue(Color& currentColor);
41
42         // Helper
43         Color addColorsAndClamp(const Color&, const Color&);
44         Color clampColor(int r, int g, int b) const; // deprecated
45         void calculateColor(double time, int &r, int &g, int &b) const;
46
47         Color color() const;
48         Color initialColor() const;
49
50     protected:
51         virtual const SVGElement* contextElement() const { return this; }
52         void storeInitialValue();
53         virtual void resetValues();
54         
55         virtual bool updateCurrentValue(double timePercentage);
56         virtual bool handleStartCondition();
57         virtual void updateLastValueWithCurrent();
58
59     private:
60         Color m_lastColor;
61         Color m_currentColor;
62         Color m_initialColor;
63
64         RefPtr<SVGColor> m_toColor;
65         RefPtr<SVGColor> m_fromColor;
66
67         int m_currentItem;
68         int m_redDiff;
69         int m_greenDiff;
70         int m_blueDiff;
71     };
72
73 } // namespace WebCore
74
75 #endif // SVG_SUPPORT
76 #endif // KSVG_SVGAnimateColorElementImpl_H
77
78 // vim:ts=4:noet