// Copyright 2015 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CC_ANIMATION_ANIMATION_H_ #define CC_ANIMATION_ANIMATION_H_ #include <memory> #include <string> #include <vector> #include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/time/time.h" #include "cc/animation/animation_export.h" #include "cc/animation/element_animations.h" #include "cc/animation/keyframe_model.h" #include "cc/base/protected_sequence_synchronizer.h" #include "cc/paint/element_id.h" #include "ui/gfx/animation/keyframe/animation_curve.h" namespace cc { class AnimationDelegate; class AnimationEvents; class AnimationHost; class AnimationTimeline; class KeyframeEffect; struct AnimationEvent; // An Animation is responsible for managing animating properties for a set of // targets. Each target is represented by a KeyframeEffect and can be animating // multiple properties on that target; see the KeyframeEffect class. // // A particular Animation may not own all the KeyframeEffects for a given // target. Animation is only a grouping mechanism for related effects, and the // grouping relationship is defined by the client. It is also the client's // responsibility to deal with any conflicts that arise from animating the same // property of the same target across multiple Animations. // // Each Animation has a copy on the impl thread, and will take care of // synchronizing to/from the impl thread when requested. // // There is a 1:1 relationship between Animation and KeyframeEffect. class CC_ANIMATION_EXPORT Animation : public base::RefCounted<Animation>, public ProtectedSequenceSynchronizer { … }; } // namespace cc #endif // CC_ANIMATION_ANIMATION_H_