| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CC_ANIMATION_ANIMATION_DELEGATE_H_ |
| #define CC_ANIMATION_ANIMATION_DELEGATE_H_ |
| |
| #include "base/time/time.h" |
| #include "cc/animation/animation_curve.h" |
| #include "cc/animation/keyframe_model.h" |
| |
| namespace cc { |
| |
| class CC_ANIMATION_EXPORT AnimationDelegate { |
| public: |
| // TODO(yigu): The Notify* methods will be called multiple times per |
| // animation (once for effect/property pairing). |
| // Ideally, we would only notify start once (e.g., wait on all effects to |
| // start before notifying delegate) this way effect becomes an internal |
| // details of the animation. Perhaps we can do that at some point maybe as |
| // part of https://bugs.chromium.org/p/chromium/issues/detail?id=810003 |
| virtual void NotifyAnimationStarted(base::TimeTicks monotonic_time, |
| int target_property, |
| int group) = 0; |
| virtual void NotifyAnimationFinished(base::TimeTicks monotonic_time, |
| int target_property, |
| int group) = 0; |
| |
| virtual void NotifyAnimationAborted(base::TimeTicks monotonic_time, |
| int target_property, |
| int group) = 0; |
| |
| virtual void NotifyAnimationTakeover( |
| base::TimeTicks monotonic_time, |
| int target_property, |
| base::TimeTicks animation_start_time, |
| std::unique_ptr<AnimationCurve> curve) = 0; |
| |
| protected: |
| virtual ~AnimationDelegate() {} |
| }; |
| |
| } // namespace cc |
| |
| #endif // CC_ANIMATION_ANIMATION_DELEGATE_H_ |