| 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 29 matching lines...) Expand all Loading... |
| 40 #include "platform/animation/TimingFunction.h" | 40 #include "platform/animation/TimingFunction.h" |
| 41 #include "wtf/HashMap.h" | 41 #include "wtf/HashMap.h" |
| 42 #include "wtf/HashSet.h" | 42 #include "wtf/HashSet.h" |
| 43 #include "wtf/PassOwnPtr.h" | 43 #include "wtf/PassOwnPtr.h" |
| 44 #include "wtf/PassRefPtr.h" | 44 #include "wtf/PassRefPtr.h" |
| 45 #include "wtf/RefCounted.h" | 45 #include "wtf/RefCounted.h" |
| 46 #include "wtf/Vector.h" | 46 #include "wtf/Vector.h" |
| 47 | 47 |
| 48 namespace WebCore { | 48 namespace WebCore { |
| 49 | 49 |
| 50 class Element; |
| 50 class KeyframeEffectModelTest; | 51 class KeyframeEffectModelTest; |
| 51 | 52 |
| 52 class KeyframeEffectModelBase : public AnimationEffect { | 53 class KeyframeEffectModelBase : public AnimationEffect { |
| 53 public: | 54 public: |
| 54 // FIXME: Implement accumulation. | 55 // FIXME: Implement accumulation. |
| 55 | 56 |
| 56 typedef WillBeHeapVector<OwnPtrWillBeMember<Keyframe::PropertySpecificKeyfra
me> > PropertySpecificKeyframeVector; | 57 typedef WillBeHeapVector<OwnPtrWillBeMember<Keyframe::PropertySpecificKeyfra
me> > PropertySpecificKeyframeVector; |
| 57 class PropertySpecificKeyframeGroup : public NoBaseWillBeGarbageCollected<Pr
opertySpecificKeyframeGroup> { | 58 class PropertySpecificKeyframeGroup : public NoBaseWillBeGarbageCollected<Pr
opertySpecificKeyframeGroup> { |
| 58 public: | 59 public: |
| 59 void appendKeyframe(PassOwnPtrWillBeRawPtr<Keyframe::PropertySpecificKey
frame>); | 60 void appendKeyframe(PassOwnPtrWillBeRawPtr<Keyframe::PropertySpecificKey
frame>); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 87 // AnimationEffect implementation. | 88 // AnimationEffect implementation. |
| 88 virtual PassOwnPtrWillBeRawPtr<WillBeHeapVector<RefPtrWillBeMember<Interpola
tion> > > sample(int iteration, double fraction, double iterationDuration) const
OVERRIDE; | 89 virtual PassOwnPtrWillBeRawPtr<WillBeHeapVector<RefPtrWillBeMember<Interpola
tion> > > sample(int iteration, double fraction, double iterationDuration) const
OVERRIDE; |
| 89 | 90 |
| 90 virtual bool isKeyframeEffectModel() const OVERRIDE { return true; } | 91 virtual bool isKeyframeEffectModel() const OVERRIDE { return true; } |
| 91 | 92 |
| 92 virtual bool isAnimatableValueKeyframeEffectModel() const { return false; } | 93 virtual bool isAnimatableValueKeyframeEffectModel() const { return false; } |
| 93 virtual bool isStringKeyframeEffectModel() const { return false; } | 94 virtual bool isStringKeyframeEffectModel() const { return false; } |
| 94 | 95 |
| 95 virtual void trace(Visitor*) OVERRIDE; | 96 virtual void trace(Visitor*) OVERRIDE; |
| 96 | 97 |
| 98 // FIXME: This is a hack used to resolve CSSValues to AnimatableValues while
we have a valid handle on an element. |
| 99 // This should be removed once StringKeyframes no longer uses InterpolableAn
imatableValues. |
| 100 void forceConversionsToAnimatableValues(Element* element) |
| 101 { |
| 102 ensureKeyframeGroups(); |
| 103 ensureInterpolationEffect(element); |
| 104 } |
| 105 |
| 97 protected: | 106 protected: |
| 98 static KeyframeVector normalizedKeyframes(const KeyframeVector& keyframes); | 107 static KeyframeVector normalizedKeyframes(const KeyframeVector& keyframes); |
| 99 | 108 |
| 100 // Lazily computes the groups of property-specific keyframes. | 109 // Lazily computes the groups of property-specific keyframes. |
| 101 void ensureKeyframeGroups() const; | 110 void ensureKeyframeGroups() const; |
| 102 void ensureInterpolationEffect() const; | 111 void ensureInterpolationEffect(Element* = 0) const; |
| 103 | 112 |
| 104 KeyframeVector m_keyframes; | 113 KeyframeVector m_keyframes; |
| 105 // The spec describes filtering the normalized keyframes at sampling time | 114 // The spec describes filtering the normalized keyframes at sampling time |
| 106 // to get the 'property-specific keyframes'. For efficiency, we cache the | 115 // to get the 'property-specific keyframes'. For efficiency, we cache the |
| 107 // property-specific lists. | 116 // property-specific lists. |
| 108 typedef WillBeHeapHashMap<CSSPropertyID, OwnPtrWillBeMember<PropertySpecific
KeyframeGroup> > KeyframeGroupMap; | 117 typedef WillBeHeapHashMap<CSSPropertyID, OwnPtrWillBeMember<PropertySpecific
KeyframeGroup> > KeyframeGroupMap; |
| 109 mutable OwnPtrWillBeMember<KeyframeGroupMap> m_keyframeGroups; | 118 mutable OwnPtrWillBeMember<KeyframeGroupMap> m_keyframeGroups; |
| 110 mutable RefPtrWillBeMember<InterpolationEffect> m_interpolationEffect; | 119 mutable RefPtrWillBeMember<InterpolationEffect> m_interpolationEffect; |
| 111 | 120 |
| 112 friend class KeyframeEffectModelTest; | 121 friend class KeyframeEffectModelTest; |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 161 | 170 |
| 162 template <> | 171 template <> |
| 163 inline bool KeyframeEffectModel<AnimatableValueKeyframe>::isAnimatableValueKeyfr
ameEffectModel() const { return true; } | 172 inline bool KeyframeEffectModel<AnimatableValueKeyframe>::isAnimatableValueKeyfr
ameEffectModel() const { return true; } |
| 164 | 173 |
| 165 template <> | 174 template <> |
| 166 inline bool KeyframeEffectModel<StringKeyframe>::isStringKeyframeEffectModel() c
onst { return true; } | 175 inline bool KeyframeEffectModel<StringKeyframe>::isStringKeyframeEffectModel() c
onst { return true; } |
| 167 | 176 |
| 168 } // namespace WebCore | 177 } // namespace WebCore |
| 169 | 178 |
| 170 #endif // KeyframeEffectModel_h | 179 #endif // KeyframeEffectModel_h |
| OLD | NEW |