| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/views/animation/flood_fill_ink_drop_animation.h" | 5 #include "ui/views/animation/flood_fill_ink_drop_animation.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "third_party/skia/include/core/SkColor.h" | 10 #include "third_party/skia/include/core/SkColor.h" |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 ? 1 | 100 ? 1 |
| 101 : views::InkDropAnimation::kSlowAnimationDurationFactor) * | 101 : views::InkDropAnimation::kSlowAnimationDurationFactor) * |
| 102 kAnimationDurationInMs[state]); | 102 kAnimationDurationInMs[state]); |
| 103 } | 103 } |
| 104 | 104 |
| 105 } // namespace | 105 } // namespace |
| 106 | 106 |
| 107 namespace views { | 107 namespace views { |
| 108 | 108 |
| 109 FloodFillInkDropAnimation::FloodFillInkDropAnimation( | 109 FloodFillInkDropAnimation::FloodFillInkDropAnimation( |
| 110 const gfx::Size& size, | 110 const gfx::Rect& clip_bounds, |
| 111 const gfx::Point& center_point, | 111 const gfx::Point& center_point, |
| 112 SkColor color) | 112 SkColor color) |
| 113 : size_(size), | 113 : clip_bounds_(clip_bounds), |
| 114 center_point_(center_point), | 114 center_point_(center_point), |
| 115 root_layer_(ui::LAYER_NOT_DRAWN), | 115 root_layer_(ui::LAYER_NOT_DRAWN), |
| 116 circle_layer_delegate_(color, | 116 circle_layer_delegate_( |
| 117 std::max(size_.width(), size_.height()) / 2.f), | 117 color, |
| 118 std::max(clip_bounds_.width(), clip_bounds_.height()) / 2.f), |
| 118 ink_drop_state_(InkDropState::HIDDEN) { | 119 ink_drop_state_(InkDropState::HIDDEN) { |
| 119 root_layer_.set_name("FloodFillInkDropAnimation:ROOT_LAYER"); | 120 root_layer_.set_name("FloodFillInkDropAnimation:ROOT_LAYER"); |
| 120 root_layer_.SetMasksToBounds(true); | 121 root_layer_.SetMasksToBounds(true); |
| 121 root_layer_.SetBounds(gfx::Rect(size_)); | 122 root_layer_.SetBounds(clip_bounds); |
| 122 | 123 |
| 123 const gfx::Vector2dF translate_vector = | 124 const int painted_size_length = |
| 124 center_point_ - root_layer_.bounds().CenterPoint(); | 125 2 * std::max(clip_bounds_.width(), clip_bounds_.height()); |
| 125 gfx::Transform transfrom; | |
| 126 transfrom.Translate(translate_vector.x(), translate_vector.y()); | |
| 127 root_layer_.SetTransform(transfrom); | |
| 128 | |
| 129 const int painted_size_length = 2 * std::max(size_.width(), size_.height()); | |
| 130 | 126 |
| 131 painted_layer_.SetBounds(gfx::Rect(painted_size_length, painted_size_length)); | 127 painted_layer_.SetBounds(gfx::Rect(painted_size_length, painted_size_length)); |
| 132 painted_layer_.SetFillsBoundsOpaquely(false); | 128 painted_layer_.SetFillsBoundsOpaquely(false); |
| 133 painted_layer_.set_delegate(&circle_layer_delegate_); | 129 painted_layer_.set_delegate(&circle_layer_delegate_); |
| 134 painted_layer_.SetVisible(true); | 130 painted_layer_.SetVisible(true); |
| 135 painted_layer_.SetOpacity(1.0); | 131 painted_layer_.SetOpacity(1.0); |
| 136 painted_layer_.SetMasksToBounds(false); | 132 painted_layer_.SetMasksToBounds(false); |
| 137 painted_layer_.set_name("FloodFillInkDropAnimation:PAINTED_LAYER"); | 133 painted_layer_.set_name("FloodFillInkDropAnimation:PAINTED_LAYER"); |
| 138 | 134 |
| 139 root_layer_.Add(&painted_layer_); | 135 root_layer_.Add(&painted_layer_); |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 306 animator->StartAnimation(animation_sequence); | 302 animator->StartAnimation(animation_sequence); |
| 307 } | 303 } |
| 308 | 304 |
| 309 gfx::Transform FloodFillInkDropAnimation::CalculateTransform( | 305 gfx::Transform FloodFillInkDropAnimation::CalculateTransform( |
| 310 float target_radius) const { | 306 float target_radius) const { |
| 311 const float target_scale = target_radius / circle_layer_delegate_.radius(); | 307 const float target_scale = target_radius / circle_layer_delegate_.radius(); |
| 312 const gfx::Point drawn_center_point = | 308 const gfx::Point drawn_center_point = |
| 313 ToRoundedPoint(circle_layer_delegate_.GetCenterPoint()); | 309 ToRoundedPoint(circle_layer_delegate_.GetCenterPoint()); |
| 314 | 310 |
| 315 gfx::Transform transform = gfx::Transform(); | 311 gfx::Transform transform = gfx::Transform(); |
| 316 transform.Translate(root_layer_.bounds().CenterPoint().x(), | 312 transform.Translate(center_point_.x(), center_point_.y()); |
| 317 root_layer_.bounds().CenterPoint().y()); | |
| 318 transform.Scale(target_scale, target_scale); | 313 transform.Scale(target_scale, target_scale); |
| 319 transform.Translate(-drawn_center_point.x(), -drawn_center_point.y()); | 314 transform.Translate(-drawn_center_point.x() - root_layer_.bounds().x(), |
| 315 -drawn_center_point.y() - root_layer_.bounds().y()); |
| 320 | 316 |
| 321 return transform; | 317 return transform; |
| 322 } | 318 } |
| 323 | 319 |
| 324 gfx::Transform FloodFillInkDropAnimation::GetMaxSizeTargetTransform() const { | 320 gfx::Transform FloodFillInkDropAnimation::GetMaxSizeTargetTransform() const { |
| 325 // TODO(estade): get rid of this 2, but make the fade out start before the | 321 // TODO(estade): get rid of this 2, but make the fade out start before the |
| 326 // active/action transform is done. | 322 // active/action transform is done. |
| 327 return CalculateTransform( | 323 return CalculateTransform( |
| 328 gfx::Vector2dF(size_.width(), size_.height()).Length() / 2); | 324 gfx::Vector2dF(clip_bounds_.width(), clip_bounds_.height()).Length() / 2); |
| 329 } | 325 } |
| 330 | 326 |
| 331 } // namespace views | 327 } // namespace views |
| OLD | NEW |