// 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_FLOOD_FILL_INK_DROP_RIPPLE_H_ #define UI_VIEWS_ANIMATION_FLOOD_FILL_INK_DROP_RIPPLE_H_ #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/insets.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_painted_layer_delegates.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; namespace test { class FloodFillInkDropRippleTestApi; } // namespace test // An ink drop ripple that starts as a small circle and flood fills a rectangle // of the size determined by |host_size| and |clip_insets| (if provided). The // circle is clipped to this rectangle's bounds. // Constructors take |host_size| and |clip_insets| and calculate the effective // bounds of the flood fill based on them. This way, the ripple's bounds are // defined relative to the host size and can be recalculated whenever the host // size is changed. // // 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 FloodFillInkDropRipple : public InkDropRipple { … }; } // namespace views #endif // UI_VIEWS_ANIMATION_FLOOD_FILL_INK_DROP_RIPPLE_H_