| 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 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 return m_keyframeGroups->get(property)->keyframes(); | 84 return m_keyframeGroups->get(property)->keyframes(); |
| 85 } | 85 } |
| 86 | 86 |
| 87 using KeyframeGroupMap = HashMap<PropertyHandle, std::unique_ptr<PropertySpe
cificKeyframeGroup>>; | 87 using KeyframeGroupMap = HashMap<PropertyHandle, std::unique_ptr<PropertySpe
cificKeyframeGroup>>; |
| 88 const KeyframeGroupMap& getPropertySpecificKeyframeGroups() const | 88 const KeyframeGroupMap& getPropertySpecificKeyframeGroups() const |
| 89 { | 89 { |
| 90 ensureKeyframeGroups(); | 90 ensureKeyframeGroups(); |
| 91 return *m_keyframeGroups; | 91 return *m_keyframeGroups; |
| 92 } | 92 } |
| 93 | 93 |
| 94 // EffectModel implementation. | |
| 95 bool sample(int iteration, double fraction, double iterationDuration, Vector
<RefPtr<Interpolation>>&) const override; | |
| 96 | |
| 97 bool isKeyframeEffectModel() const override { return true; } | 94 bool isKeyframeEffectModel() const override { return true; } |
| 98 | 95 |
| 99 virtual bool isAnimatableValueKeyframeEffectModel() const { return false; } | 96 virtual bool isAnimatableValueKeyframeEffectModel() const { return false; } |
| 100 virtual bool isStringKeyframeEffectModel() const { return false; } | 97 virtual bool isStringKeyframeEffectModel() const { return false; } |
| 101 | 98 |
| 102 bool hasSyntheticKeyframes() const | 99 bool hasSyntheticKeyframes() const |
| 103 { | 100 { |
| 104 ensureKeyframeGroups(); | 101 ensureKeyframeGroups(); |
| 105 return m_hasSyntheticKeyframes; | 102 return m_hasSyntheticKeyframes; |
| 106 } | 103 } |
| 107 | 104 |
| 108 bool needsCompositorKeyframesSnapshot() const { return m_needsCompositorKeyf
ramesSnapshot; } | 105 bool needsCompositorKeyframesSnapshot() const { return m_needsCompositorKeyf
ramesSnapshot; } |
| 109 bool snapshotNeutralCompositorKeyframes(Element&, const ComputedStyle& oldSt
yle, const ComputedStyle& newStyle, const ComputedStyle* parentStyle) const; | 106 bool snapshotNeutralCompositorKeyframes(Element&, const ComputedStyle& oldSt
yle, const ComputedStyle& newStyle, const ComputedStyle* parentStyle) const; |
| 110 bool snapshotAllCompositorKeyframes(Element&, const ComputedStyle& baseStyle
, const ComputedStyle* parentStyle) const; | 107 bool snapshotAllCompositorKeyframes(Element&, const ComputedStyle& baseStyle
, const ComputedStyle* parentStyle) const; |
| 111 | 108 |
| 112 static KeyframeVector normalizedKeyframesForInspector(const KeyframeVector&
keyframes) { return normalizedKeyframes(keyframes); } | 109 static KeyframeVector normalizedKeyframesForInspector(const KeyframeVector&
keyframes) { return normalizedKeyframes(keyframes); } |
| 113 | 110 |
| 114 bool affects(PropertyHandle property) const override | 111 bool affects(PropertyHandle property) const override |
| 115 { | 112 { |
| 116 ensureKeyframeGroups(); | 113 ensureKeyframeGroups(); |
| 117 return m_keyframeGroups->contains(property); | 114 return m_keyframeGroups->contains(property); |
| 118 } | 115 } |
| 119 | 116 |
| 120 bool isTransformRelatedEffect() const override; | |
| 121 | |
| 122 protected: | 117 protected: |
| 123 KeyframeEffectModelBase(PassRefPtr<TimingFunction> defaultKeyframeEasing) | 118 KeyframeEffectModelBase(PassRefPtr<TimingFunction> defaultKeyframeEasing) |
| 124 : m_lastIteration(0) | 119 : m_defaultKeyframeEasing(defaultKeyframeEasing) |
| 125 , m_lastFraction(std::numeric_limits<double>::quiet_NaN()) | |
| 126 , m_lastIterationDuration(0) | |
| 127 , m_defaultKeyframeEasing(defaultKeyframeEasing) | |
| 128 , m_hasSyntheticKeyframes(false) | 120 , m_hasSyntheticKeyframes(false) |
| 129 , m_needsCompositorKeyframesSnapshot(true) | 121 , m_needsCompositorKeyframesSnapshot(true) |
| 130 { | 122 { |
| 131 } | 123 } |
| 132 | 124 |
| 125 void sampleImpl(int iteration, double fraction, double iterationDuration, Ve
ctor<RefPtr<Interpolation>>&) const final; |
| 126 |
| 133 static KeyframeVector normalizedKeyframes(const KeyframeVector& keyframes); | 127 static KeyframeVector normalizedKeyframes(const KeyframeVector& keyframes); |
| 134 | 128 |
| 135 // Lazily computes the groups of property-specific keyframes. | 129 // Lazily computes the groups of property-specific keyframes. |
| 136 void ensureKeyframeGroups() const; | 130 void ensureKeyframeGroups() const; |
| 137 void ensureInterpolationEffectPopulated() const; | 131 void ensureInterpolationEffectPopulated() const; |
| 138 | 132 |
| 139 KeyframeVector m_keyframes; | 133 KeyframeVector m_keyframes; |
| 140 // The spec describes filtering the normalized keyframes at sampling time | 134 // The spec describes filtering the normalized keyframes at sampling time |
| 141 // to get the 'property-specific keyframes'. For efficiency, we cache the | 135 // to get the 'property-specific keyframes'. For efficiency, we cache the |
| 142 // property-specific lists. | 136 // property-specific lists. |
| 143 mutable std::unique_ptr<KeyframeGroupMap> m_keyframeGroups; | 137 mutable std::unique_ptr<KeyframeGroupMap> m_keyframeGroups; |
| 144 mutable InterpolationEffect m_interpolationEffect; | 138 mutable InterpolationEffect m_interpolationEffect; |
| 145 mutable int m_lastIteration; | |
| 146 mutable double m_lastFraction; | |
| 147 mutable double m_lastIterationDuration; | |
| 148 RefPtr<TimingFunction> m_defaultKeyframeEasing; | 139 RefPtr<TimingFunction> m_defaultKeyframeEasing; |
| 149 | 140 |
| 150 mutable bool m_hasSyntheticKeyframes; | 141 mutable bool m_hasSyntheticKeyframes; |
| 151 mutable bool m_needsCompositorKeyframesSnapshot; | 142 mutable bool m_needsCompositorKeyframesSnapshot; |
| 152 | 143 |
| 153 friend class KeyframeEffectModelTest; | 144 friend class KeyframeEffectModelTest; |
| 154 }; | 145 }; |
| 155 | 146 |
| 156 // Time independent representation of an Animation's keyframes. | 147 // Time independent representation of an Animation's keyframes. |
| 157 template <class Keyframe> | 148 template <class Keyframe> |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 | 202 |
| 212 template <> | 203 template <> |
| 213 inline bool KeyframeEffectModel<AnimatableValueKeyframe>::isAnimatableValueKeyfr
ameEffectModel() const { return true; } | 204 inline bool KeyframeEffectModel<AnimatableValueKeyframe>::isAnimatableValueKeyfr
ameEffectModel() const { return true; } |
| 214 | 205 |
| 215 template <> | 206 template <> |
| 216 inline bool KeyframeEffectModel<StringKeyframe>::isStringKeyframeEffectModel() c
onst { return true; } | 207 inline bool KeyframeEffectModel<StringKeyframe>::isStringKeyframeEffectModel() c
onst { return true; } |
| 217 | 208 |
| 218 } // namespace blink | 209 } // namespace blink |
| 219 | 210 |
| 220 #endif // KeyframeEffectModel_h | 211 #endif // KeyframeEffectModel_h |
| OLD | NEW |