Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(207)

Side by Side Diff: ui/views/animation/flood_fill_ink_drop_animation.h

Issue 1937103003: Rename of InkDropAnimation classes to InkDropRipple. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed test_ink_drop_animation_observer.h from views.gyp and doc update. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef UI_VIEWS_ANIMATION_FLOOD_FILL_INK_DROP_ANIMATION_H_
6 #define UI_VIEWS_ANIMATION_FLOOD_FILL_INK_DROP_ANIMATION_H_
7
8 #include <memory>
9 #include <string>
10
11 #include "base/macros.h"
12 #include "base/time/time.h"
13 #include "third_party/skia/include/core/SkColor.h"
14 #include "ui/compositor/layer.h"
15 #include "ui/compositor/layer_animator.h"
16 #include "ui/gfx/animation/tween.h"
17 #include "ui/gfx/geometry/point.h"
18 #include "ui/gfx/geometry/size.h"
19 #include "ui/gfx/transform.h"
20 #include "ui/views/animation/ink_drop_animation.h"
21 #include "ui/views/animation/ink_drop_painted_layer_delegates.h"
22 #include "ui/views/animation/ink_drop_state.h"
23 #include "ui/views/views_export.h"
24
25 namespace ui {
26 class Layer;
27 } // namespace ui
28
29 namespace views {
30 class CircleLayerDelegate;
31
32 namespace test {
33 class FloodFillInkDropAnimationTestApi;
34 } // namespace test
35
36 // An ink drop animation that starts as a small circle and flood fills a
37 // rectangle of the given size. The circle is clipped to the rectangles bounds.
38 //
39 // The valid InkDropState transitions are defined below:
40 //
41 // {All InkDropStates} => HIDDEN
42 // HIDDEN => ACTION_PENDING
43 // HIDDEN, ACTION_PENDING => ACTION_TRIGGERED
44 // ACTION_PENDING => ALTERNATE_ACTION_PENDING
45 // ALTERNATE_ACTION_PENDING => ALTERNATE_ACTION_TRIGGERED
46 // {All InkDropStates} => ACTIVATED
47 // {All InkDropStates} => DEACTIVATED
48 //
49 class VIEWS_EXPORT FloodFillInkDropAnimation : public InkDropAnimation {
50 public:
51 FloodFillInkDropAnimation(const gfx::Rect& clip_bounds,
52 const gfx::Point& center_point,
53 SkColor color);
54 ~FloodFillInkDropAnimation() override;
55
56 // InkDropAnimation:
57 void SnapToActivated() override;
58 ui::Layer* GetRootLayer() override;
59 bool IsVisible() const override;
60
61 private:
62 friend class test::FloodFillInkDropAnimationTestApi;
63
64 // InkDropAnimation:
65 void AnimateStateChange(InkDropState old_ink_drop_state,
66 InkDropState new_ink_drop_state,
67 ui::LayerAnimationObserver* observer) override;
68 void SetStateToHidden() override;
69 void AbortAllAnimations() override;
70
71 // Animates the |painted_layer_| to the specified |transform|. The animation
72 // will be configured with the given |duration|, |tween|, and
73 // |preemption_strategy| values. The |observer| will be added to all
74 // LayerAnimationSequences if not null.
75 void AnimateToTransform(
76 const gfx::Transform& transform,
77 base::TimeDelta duration,
78 ui::LayerAnimator::PreemptionStrategy preemption_strategy,
79 gfx::Tween::Type tween,
80 ui::LayerAnimationObserver* observer);
81
82 // Sets the opacity of the ink drop. Note that this does not perform any
83 // animation.
84 void SetOpacity(float opacity);
85
86 // Animates the |painted_layer_| to the specified |opacity|. The animation
87 // will be configured with the given |duration|, |tween|, and
88 // |preemption_strategy| values. The |observer| will be added to all
89 // LayerAnimationSequences if not null.
90 void AnimateToOpacity(
91 float opacity,
92 base::TimeDelta duration,
93 ui::LayerAnimator::PreemptionStrategy preemption_strategy,
94 gfx::Tween::Type tween,
95 ui::LayerAnimationObserver* observer);
96
97 // Returns the Transform to be applied to the |painted_layer_| for the given
98 // |target_radius|.
99 gfx::Transform CalculateTransform(float target_radius) const;
100
101 // Returns the target Transform for when the ink drop is fully shown.
102 gfx::Transform GetMaxSizeTargetTransform() const;
103
104 // The clip bounds.
105 const gfx::Rect clip_bounds_;
106
107 // The point where the Center of the ink drop's circle should be drawn.
108 gfx::Point center_point_;
109
110 // The root layer that parents the animating layer. The root layer is used to
111 // manipulate opacity and clipping bounds, and it child is used to manipulate
112 // the different shape of the ink drop.
113 ui::Layer root_layer_;
114
115 // ui::LayerDelegate to paint the |painted_layer_|.
116 CircleLayerDelegate circle_layer_delegate_;
117
118 // Child ui::Layer of |root_layer_|. Used to manipulate the different size
119 // and shape of the ink drop.
120 ui::Layer painted_layer_;
121
122 // The current ink drop state.
123 InkDropState ink_drop_state_;
124
125 DISALLOW_COPY_AND_ASSIGN(FloodFillInkDropAnimation);
126 };
127
128 } // namespace views
129
130 #endif // UI_VIEWS_ANIMATION_FLOOD_FILL_INK_DROP_ANIMATION_H_
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/download/download_item_view_md.cc ('k') | ui/views/animation/flood_fill_ink_drop_animation.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698