// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef UI_VIEWS_ANIMATION_BOUNDS_ANIMATOR_H_ #define UI_VIEWS_ANIMATION_BOUNDS_ANIMATOR_H_ #include <map> #include <memory> #include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/observer_list.h" #include "ui/gfx/animation/animation_container.h" #include "ui/gfx/animation/animation_container_observer.h" #include "ui/gfx/animation/tween.h" #include "ui/gfx/geometry/rect.h" #include "ui/views/animation/animation_delegate_views.h" #include "ui/views/views_export.h" namespace gfx { class SlideAnimation; } namespace views { class BoundsAnimatorObserver; class View; // Bounds animator is responsible for animating the bounds of a view from the // the views current location and size to a target position and size. To use // BoundsAnimator invoke AnimateViewTo for the set of views you want to // animate. // // BoundsAnimator internally creates an animation for each view. If you need // a specific animation invoke SetAnimationForView after invoking AnimateViewTo. // You can attach an AnimationDelegate to the individual animation for a view // by way of SetAnimationDelegate. Additionally you can attach an observer to // the BoundsAnimator that is notified when all animations are complete. // // There is an option to apply transforms on the view instead of repainting and // relayouting each animation tick. This should be used if the size of the view // is not changing. It can be considered, but may have funny looking visuals for // other cases, depending on the content. If layers are not present, they are // created and destroyed as necessary. class VIEWS_EXPORT BoundsAnimator : public AnimationDelegateViews { … }; } // namespace views #endif // UI_VIEWS_ANIMATION_BOUNDS_ANIMATOR_H_