| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 #ifndef KeyframeEffectModel_h | 31 #ifndef KeyframeEffectModel_h |
| 32 #define KeyframeEffectModel_h | 32 #define KeyframeEffectModel_h |
| 33 | 33 |
| 34 #include "core/animation/AnimatableValue.h" | 34 #include "core/animation/AnimatableValue.h" |
| 35 #include "core/animation/AnimationEffect.h" | 35 #include "core/animation/AnimationEffect.h" |
| 36 #include "core/animation/InterpolationEffect.h" |
| 36 #include "wtf/HashMap.h" | 37 #include "wtf/HashMap.h" |
| 37 #include "wtf/HashSet.h" | 38 #include "wtf/HashSet.h" |
| 38 #include "wtf/PassOwnPtr.h" | 39 #include "wtf/PassOwnPtr.h" |
| 39 #include "wtf/PassRefPtr.h" | 40 #include "wtf/PassRefPtr.h" |
| 40 #include "wtf/RefCounted.h" | 41 #include "wtf/RefCounted.h" |
| 41 #include "wtf/Vector.h" | 42 #include "wtf/Vector.h" |
| 42 | 43 |
| 43 namespace WebCore { | 44 namespace WebCore { |
| 44 | 45 |
| 45 typedef HashSet<CSSPropertyID> PropertySet; | 46 typedef HashSet<CSSPropertyID> PropertySet; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 return adoptRef(new KeyframeEffectModel(keyframes)); | 86 return adoptRef(new KeyframeEffectModel(keyframes)); |
| 86 } | 87 } |
| 87 | 88 |
| 88 virtual bool affects(CSSPropertyID property) OVERRIDE | 89 virtual bool affects(CSSPropertyID property) OVERRIDE |
| 89 { | 90 { |
| 90 ensureKeyframeGroups(); | 91 ensureKeyframeGroups(); |
| 91 return m_keyframeGroups->contains(property); | 92 return m_keyframeGroups->contains(property); |
| 92 } | 93 } |
| 93 | 94 |
| 94 // AnimationEffect implementation. | 95 // AnimationEffect implementation. |
| 95 virtual PassOwnPtr<CompositableValueList> sample(int iteration, double fract
ion) const OVERRIDE; | 96 virtual PassOwnPtr<Vector<RefPtr<Interpolation> > > sample(int iteration, do
uble fraction) const OVERRIDE; |
| 96 | 97 |
| 97 // FIXME: Implement setFrames() | 98 // FIXME: Implement setFrames() |
| 98 const KeyframeVector& getFrames() const { return m_keyframes; } | 99 const KeyframeVector& getFrames() const { return m_keyframes; } |
| 99 | 100 |
| 100 virtual bool isKeyframeEffectModel() const OVERRIDE { return true; } | 101 virtual bool isKeyframeEffectModel() const OVERRIDE { return true; } |
| 101 | 102 |
| 102 PropertySet properties() const; | 103 PropertySet properties() const; |
| 103 | 104 |
| 104 class PropertySpecificKeyframe { | 105 class PropertySpecificKeyframe { |
| 105 public: | 106 public: |
| (...skipping 23 matching lines...) Expand all Loading... |
| 129 | 130 |
| 130 const PropertySpecificKeyframeVector& getPropertySpecificKeyframes(CSSProper
tyID id) const | 131 const PropertySpecificKeyframeVector& getPropertySpecificKeyframes(CSSProper
tyID id) const |
| 131 { | 132 { |
| 132 ensureKeyframeGroups(); | 133 ensureKeyframeGroups(); |
| 133 return m_keyframeGroups->get(id)->keyframes(); | 134 return m_keyframeGroups->get(id)->keyframes(); |
| 134 } | 135 } |
| 135 | 136 |
| 136 private: | 137 private: |
| 137 KeyframeEffectModel(const KeyframeVector& keyframes); | 138 KeyframeEffectModel(const KeyframeVector& keyframes); |
| 138 | 139 |
| 140 KeyframeEffectModel(PassRefPtr<InterpolationEffect> interpolationEffect); |
| 141 |
| 139 KeyframeVector normalizedKeyframes() const; | 142 KeyframeVector normalizedKeyframes() const; |
| 140 // Lazily computes the groups of property-specific keyframes. | 143 // Lazily computes the groups of property-specific keyframes. |
| 141 void ensureKeyframeGroups() const; | 144 void ensureKeyframeGroups() const; |
| 145 void ensureInterpolationEffect() const; |
| 142 | 146 |
| 143 KeyframeVector m_keyframes; | 147 KeyframeVector m_keyframes; |
| 144 // The spec describes filtering the normalized keyframes at sampling time | 148 // The spec describes filtering the normalized keyframes at sampling time |
| 145 // to get the 'property-specific keyframes'. For efficiency, we cache the | 149 // to get the 'property-specific keyframes'. For efficiency, we cache the |
| 146 // property-specific lists. | 150 // property-specific lists. |
| 147 typedef HashMap<CSSPropertyID, OwnPtr<PropertySpecificKeyframeGroup> > Keyfr
ameGroupMap; | 151 typedef HashMap<CSSPropertyID, OwnPtr<PropertySpecificKeyframeGroup> > Keyfr
ameGroupMap; |
| 148 mutable OwnPtr<KeyframeGroupMap> m_keyframeGroups; | 152 mutable OwnPtr<KeyframeGroupMap> m_keyframeGroups; |
| 153 |
| 154 mutable RefPtr<InterpolationEffect> m_interpolationEffect; |
| 149 }; | 155 }; |
| 150 | 156 |
| 151 DEFINE_TYPE_CASTS(KeyframeEffectModel, AnimationEffect, value, value->isKeyframe
EffectModel(), value.isKeyframeEffectModel()); | 157 DEFINE_TYPE_CASTS(KeyframeEffectModel, AnimationEffect, value, value->isKeyframe
EffectModel(), value.isKeyframeEffectModel()); |
| 152 | 158 |
| 153 } // namespace WebCore | 159 } // namespace WebCore |
| 154 | 160 |
| 155 #endif // KeyframeEffectModel_h | 161 #endif // KeyframeEffectModel_h |
| OLD | NEW |