| 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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 class KeyframeEffectOptions; | 48 class KeyframeEffectOptions; |
| 49 class PropertyHandle; | 49 class PropertyHandle; |
| 50 class SampledEffect; | 50 class SampledEffect; |
| 51 | 51 |
| 52 // Represents the effect of an Animation on an Element's properties. | 52 // Represents the effect of an Animation on an Element's properties. |
| 53 // http://w3c.github.io/web-animations/#keyframe-effect | 53 // http://w3c.github.io/web-animations/#keyframe-effect |
| 54 class CORE_EXPORT KeyframeEffect final : public KeyframeEffectReadOnly { | 54 class CORE_EXPORT KeyframeEffect final : public KeyframeEffectReadOnly { |
| 55 DEFINE_WRAPPERTYPEINFO(); | 55 DEFINE_WRAPPERTYPEINFO(); |
| 56 | 56 |
| 57 public: | 57 public: |
| 58 enum Priority { DefaultPriority, TransitionPriority }; | |
| 59 | |
| 60 static KeyframeEffect* create(Element*, | 58 static KeyframeEffect* create(Element*, |
| 61 EffectModel*, | 59 EffectModel*, |
| 62 const Timing&, | 60 const Timing&, |
| 63 Priority = DefaultPriority, | 61 KeyframeEffectReadOnly::Priority = |
| 62 KeyframeEffectReadOnly::DefaultPriority, |
| 64 EventDelegate* = nullptr); | 63 EventDelegate* = nullptr); |
| 65 // Web Animations API Bindings constructors. | 64 // Web Animations API Bindings constructors. |
| 66 static KeyframeEffect* create( | 65 static KeyframeEffect* create( |
| 67 ExecutionContext*, | 66 ExecutionContext*, |
| 68 Element*, | 67 Element*, |
| 69 const DictionarySequenceOrDictionary& effectInput, | 68 const DictionarySequenceOrDictionary& effectInput, |
| 70 double duration, | 69 double duration, |
| 71 ExceptionState&); | 70 ExceptionState&); |
| 72 static KeyframeEffect* create( | 71 static KeyframeEffect* create( |
| 73 ExecutionContext*, | 72 ExecutionContext*, |
| 74 Element*, | 73 Element*, |
| 75 const DictionarySequenceOrDictionary& effectInput, | 74 const DictionarySequenceOrDictionary& effectInput, |
| 76 const KeyframeEffectOptions& timingInput, | 75 const KeyframeEffectOptions& timingInput, |
| 77 ExceptionState&); | 76 ExceptionState&); |
| 78 static KeyframeEffect* create( | 77 static KeyframeEffect* create( |
| 79 ExecutionContext*, | 78 ExecutionContext*, |
| 80 Element*, | 79 Element*, |
| 81 const DictionarySequenceOrDictionary& effectInput, | 80 const DictionarySequenceOrDictionary& effectInput, |
| 82 ExceptionState&); | 81 ExceptionState&); |
| 83 | 82 |
| 84 ~KeyframeEffect() override; | 83 ~KeyframeEffect() override; |
| 85 | 84 |
| 86 bool isKeyframeEffect() const override { return true; } | 85 bool isKeyframeEffect() const override { return true; } |
| 87 | 86 |
| 88 bool affects(PropertyHandle) const; | 87 bool affects(PropertyHandle) const; |
| 89 const EffectModel* model() const { return m_model.get(); } | 88 const EffectModel* model() const { return m_model.get(); } |
| 90 EffectModel* model() { return m_model.get(); } | 89 EffectModel* model() { return m_model.get(); } |
| 91 void setModel(EffectModel* model) { m_model = model; } | 90 void setModel(EffectModel* model) { m_model = model; } |
| 92 Priority getPriority() const { return m_priority; } | |
| 93 Element* target() const { return m_target; } | 91 Element* target() const { return m_target; } |
| 94 | 92 |
| 95 void notifySampledEffectRemovedFromAnimationStack(); | 93 void notifySampledEffectRemovedFromAnimationStack(); |
| 96 | 94 |
| 97 bool isCandidateForAnimationOnCompositor(double animationPlaybackRate) const; | 95 bool isCandidateForAnimationOnCompositor(double animationPlaybackRate) const; |
| 98 // Must only be called once. | 96 // Must only be called once. |
| 99 bool maybeStartAnimationOnCompositor(int group, | 97 bool maybeStartAnimationOnCompositor(int group, |
| 100 double startTime, | 98 double startTime, |
| 101 double timeOffset, | 99 double timeOffset, |
| 102 double animationPlaybackRate); | 100 double animationPlaybackRate); |
| 103 bool hasActiveAnimationsOnCompositor() const; | 101 bool hasActiveAnimationsOnCompositor() const; |
| 104 bool hasActiveAnimationsOnCompositor(CSSPropertyID) const; | 102 bool hasActiveAnimationsOnCompositor(CSSPropertyID) const; |
| 105 bool cancelAnimationOnCompositor(); | 103 bool cancelAnimationOnCompositor(); |
| 106 void restartAnimationOnCompositor(); | 104 void restartAnimationOnCompositor(); |
| 107 void cancelIncompatibleAnimationsOnCompositor(); | 105 void cancelIncompatibleAnimationsOnCompositor(); |
| 108 void pauseAnimationForTestingOnCompositor(double pauseTime); | 106 void pauseAnimationForTestingOnCompositor(double pauseTime); |
| 109 | 107 |
| 110 void attachCompositedLayers(); | 108 void attachCompositedLayers(); |
| 111 | 109 |
| 112 void setCompositorAnimationIdsForTesting( | 110 void setCompositorAnimationIdsForTesting( |
| 113 const Vector<int>& compositorAnimationIds) { | 111 const Vector<int>& compositorAnimationIds) { |
| 114 m_compositorAnimationIds = compositorAnimationIds; | 112 m_compositorAnimationIds = compositorAnimationIds; |
| 115 } | 113 } |
| 116 | 114 |
| 117 AnimationEffectTiming* timing() override; | 115 AnimationEffectTiming* timing() override; |
| 118 | 116 |
| 119 DECLARE_VIRTUAL_TRACE(); | 117 DECLARE_VIRTUAL_TRACE(); |
| 120 | 118 |
| 121 void downgradeToNormal() { m_priority = DefaultPriority; } | |
| 122 | |
| 123 protected: | 119 protected: |
| 124 void applyEffects(); | 120 void applyEffects(); |
| 125 void clearEffects(); | 121 void clearEffects(); |
| 126 void updateChildrenAndEffects() const override; | 122 void updateChildrenAndEffects() const override; |
| 127 void attach(Animation*) override; | 123 void attach(Animation*) override; |
| 128 void detach() override; | 124 void detach() override; |
| 129 void specifiedTimingChanged() override; | 125 void specifiedTimingChanged() override; |
| 130 double calculateTimeToEffectChange(bool forwards, | 126 double calculateTimeToEffectChange(bool forwards, |
| 131 double inheritedTime, | 127 double inheritedTime, |
| 132 double timeToNextIteration) const override; | 128 double timeToNextIteration) const override; |
| 133 virtual bool hasIncompatibleStyle(); | 129 virtual bool hasIncompatibleStyle(); |
| 134 bool hasMultipleTransformProperties() const; | 130 bool hasMultipleTransformProperties() const; |
| 135 | 131 |
| 136 private: | 132 private: |
| 137 KeyframeEffect(Element*, | 133 KeyframeEffect(Element*, |
| 138 EffectModel*, | 134 EffectModel*, |
| 139 const Timing&, | 135 const Timing&, |
| 140 Priority, | 136 KeyframeEffectReadOnly::Priority, |
| 141 EventDelegate*); | 137 EventDelegate*); |
| 142 | 138 |
| 143 Priority m_priority; | |
| 144 Vector<int> m_compositorAnimationIds; | 139 Vector<int> m_compositorAnimationIds; |
| 145 | 140 |
| 146 friend class AnimationAnimationV8Test; | 141 friend class AnimationAnimationV8Test; |
| 147 }; | 142 }; |
| 148 | 143 |
| 149 DEFINE_TYPE_CASTS(KeyframeEffect, | 144 DEFINE_TYPE_CASTS(KeyframeEffect, |
| 150 AnimationEffectReadOnly, | 145 AnimationEffectReadOnly, |
| 151 animationNode, | 146 animationNode, |
| 152 animationNode->isKeyframeEffect(), | 147 animationNode->isKeyframeEffect(), |
| 153 animationNode.isKeyframeEffect()); | 148 animationNode.isKeyframeEffect()); |
| 154 | 149 |
| 155 } // namespace blink | 150 } // namespace blink |
| 156 | 151 |
| 157 #endif // KeyframeEffect_h | 152 #endif // KeyframeEffect_h |
| OLD | NEW |