// Copyright 2016 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_SQUARE_INK_DROP_RIPPLE_H_ #define UI_VIEWS_ANIMATION_SQUARE_INK_DROP_RIPPLE_H_ #include <memory> #include <string> #include "base/callback_list.h" #include "base/time/time.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/compositor/layer.h" #include "ui/compositor/layer_animator.h" #include "ui/gfx/animation/tween.h" #include "ui/gfx/geometry/point.h" #include "ui/gfx/geometry/size.h" #include "ui/gfx/geometry/transform.h" #include "ui/views/animation/ink_drop_ripple.h" #include "ui/views/animation/ink_drop_state.h" #include "ui/views/views_export.h" namespace ui { class Layer; } // namespace ui namespace views { class CircleLayerDelegate; class InkDropHost; class RectangleLayerDelegate; namespace test { class SquareInkDropRippleTestApi; } // namespace test // An ink drop ripple that smoothly animates between a circle and a rounded // rectangle of different sizes for each of the different InkDropStates. The // final frame for each InkDropState will be bounded by either a |large_size_| // rectangle or a |small_size_| rectangle. // // The valid InkDropState transitions are defined below: // // {All InkDropStates} => HIDDEN // HIDDEN => ACTION_PENDING // HIDDEN, ACTION_PENDING => ACTION_TRIGGERED // ACTION_PENDING => ALTERNATE_ACTION_PENDING // ALTERNATE_ACTION_PENDING => ALTERNATE_ACTION_TRIGGERED // {All InkDropStates} => ACTIVATED // {All InkDropStates} => DEACTIVATED // class VIEWS_EXPORT SquareInkDropRipple : public InkDropRipple { … }; } // namespace views #endif // UI_VIEWS_ANIMATION_SQUARE_INK_DROP_RIPPLE_H_