Index: ui/views/animation/ink_drop_hover.h |
diff --git a/ui/views/animation/ink_drop_hover.h b/ui/views/animation/ink_drop_hover.h |
index 00ed198be34f32297592b20b59532f54d49774d2..1df74c2fc5adc27046fbc4c172f8f826015da127 100644 |
--- a/ui/views/animation/ink_drop_hover.h |
+++ b/ui/views/animation/ink_drop_hover.h |
@@ -10,7 +10,9 @@ |
#include "base/time/time.h" |
#include "third_party/skia/include/core/SkColor.h" |
#include "ui/gfx/geometry/point.h" |
+#include "ui/gfx/geometry/point_f.h" |
#include "ui/gfx/geometry/size.h" |
+#include "ui/gfx/transform.h" |
#include "ui/views/views_export.h" |
namespace ui { |
@@ -31,6 +33,8 @@ class VIEWS_EXPORT InkDropHover { |
SkColor color); |
~InkDropHover(); |
+ void set_explode_size(const gfx::Size& size) { explode_size_ = size; } |
+ |
// Returns true if the hover animation is either in the process of fading |
// in or is fully visible. |
bool IsFadingInOrVisible() const; |
@@ -38,8 +42,9 @@ class VIEWS_EXPORT InkDropHover { |
// Fades in the hover visual over the given |duration|. |
void FadeIn(const base::TimeDelta& duration); |
- // Fades out the hover visual over the given |duration|. |
- void FadeOut(const base::TimeDelta& duration); |
+ // Fades out the hover visual over the given |duration|. If |explode| is true |
+ // then the hover will animate a size increase in addition to the fade out. |
+ void FadeOut(const base::TimeDelta& duration, bool explode); |
// The root Layer that can be added in to a Layer tree. |
ui::Layer* layer() { return layer_.get(); } |
@@ -47,16 +52,32 @@ class VIEWS_EXPORT InkDropHover { |
private: |
enum HoverAnimationType { FADE_IN, FADE_OUT }; |
- // Animates a fade in/out as specified by |animation_type| over the given |
+ // Animates a fade in/out as specified by |animation_type| combined with a |
+ // transformation from the |initial_size| to the |target_size| over the given |
// |duration|. |
void AnimateFade(HoverAnimationType animation_type, |
- const base::TimeDelta& duration); |
+ const base::TimeDelta& duration, |
+ const gfx::Size& initial_size, |
+ const gfx::Size& target_size); |
+ |
+ // Calculates the Transform to apply to |layer_| for the given |size|. |
+ gfx::Transform CalculateTransform(const gfx::Size& size) const; |
// The callback that will be invoked when a fade in/out animation is complete. |
bool AnimationEndedCallback( |
HoverAnimationType animation_type, |
const ui::CallbackLayerAnimationObserver& observer); |
+ // The size of the hover shape when fully faded in. |
+ gfx::Size size_; |
+ |
+ // The target size of the hover shape when it expands during a fade out |
+ // animation. |
+ gfx::Size explode_size_; |
+ |
+ // The center point of the hover shape in the parent Layer's coordinate space. |
+ gfx::PointF center_point_; |
+ |
// True if the last animation to be initiated was a FADE_IN, and false |
// otherwise. |
bool last_animation_initiated_was_fade_in_; |