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

Side by Side Diff: ash/rotator/screen_rotation_animator.cc

Issue 2550933002: Make all LayerAnimationElement::Create*Element return unique_ptr (Closed)
Patch Set: More change and typo fix Created 4 years 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "ash/rotator/screen_rotation_animator.h" 5 #include "ash/rotator/screen_rotation_animator.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 // layer was added as a child to |root_window|'s layer so that it will be 189 // layer was added as a child to |root_window|'s layer so that it will be
190 // rendered. 190 // rendered.
191 // TODO(bruthig): Add a NOT_DRAWN layer in between the root_window's layer and 191 // TODO(bruthig): Add a NOT_DRAWN layer in between the root_window's layer and
192 // its current children so that we only need to initiate two 192 // its current children so that we only need to initiate two
193 // LayerAnimationSequences. One for the new layers and one for the old layer. 193 // LayerAnimationSequences. One for the new layers and one for the old layer.
194 for (ui::Layer* child_layer : root_window->layer()->children()) { 194 for (ui::Layer* child_layer : root_window->layer()->children()) {
195 // Skip the cloned layer because it has a different animation. 195 // Skip the cloned layer because it has a different animation.
196 if (child_layer == layer_cleanup_observer->GetRootLayer()) 196 if (child_layer == layer_cleanup_observer->GetRootLayer())
197 continue; 197 continue;
198 198
199 std::unique_ptr<ScreenRotationAnimation> screen_rotation( 199 std::unique_ptr<ScreenRotationAnimation> screen_rotation =
200 new ScreenRotationAnimation( 200 base::MakeUnique<ScreenRotationAnimation>(
201 child_layer, kRotationDegrees * rotation_factor, 201 child_layer, kRotationDegrees * rotation_factor,
202 0 /* end_degrees */, child_layer->opacity(), 202 0 /* end_degrees */, child_layer->opacity(),
203 1.0f /* target_opacity */, pivot, duration, tween_type)); 203 1.0f /* target_opacity */, pivot, duration, tween_type);
204 204
205 ui::LayerAnimator* animator = child_layer->GetAnimator(); 205 ui::LayerAnimator* animator = child_layer->GetAnimator();
206 animator->set_preemption_strategy( 206 animator->set_preemption_strategy(
207 ui::LayerAnimator::REPLACE_QUEUED_ANIMATIONS); 207 ui::LayerAnimator::REPLACE_QUEUED_ANIMATIONS);
208 std::unique_ptr<ui::LayerAnimationSequence> animation_sequence( 208 std::unique_ptr<ui::LayerAnimationSequence> animation_sequence =
209 new ui::LayerAnimationSequence(screen_rotation.release())); 209 base::MakeUnique<ui::LayerAnimationSequence>(
210 std::move(screen_rotation));
210 animator->StartAnimation(animation_sequence.release()); 211 animator->StartAnimation(animation_sequence.release());
211 } 212 }
212 213
213 // The old layer will also be transformed into the new orientation. We will 214 // The old layer will also be transformed into the new orientation. We will
214 // translate it so that the old layer's center point aligns with the new 215 // translate it so that the old layer's center point aligns with the new
215 // orientation's center point and use that center point as the pivot for the 216 // orientation's center point and use that center point as the pivot for the
216 // rotation animation. 217 // rotation animation.
217 gfx::Transform translate_transform; 218 gfx::Transform translate_transform;
218 translate_transform.Translate( 219 translate_transform.Translate(
219 (rotated_screen_bounds.width() - original_screen_bounds.width()) / 2, 220 (rotated_screen_bounds.width() - original_screen_bounds.width()) / 2,
220 (rotated_screen_bounds.height() - original_screen_bounds.height()) / 2); 221 (rotated_screen_bounds.height() - original_screen_bounds.height()) / 2);
221 layer_cleanup_observer->GetRootLayer()->SetTransform(translate_transform); 222 layer_cleanup_observer->GetRootLayer()->SetTransform(translate_transform);
222 223
223 std::unique_ptr<ScreenRotationAnimation> screen_rotation( 224 std::unique_ptr<ScreenRotationAnimation> screen_rotation =
224 new ScreenRotationAnimation( 225 base::MakeUnique<ScreenRotationAnimation>(
225 layer_cleanup_observer->GetRootLayer(), 226 layer_cleanup_observer->GetRootLayer(),
226 old_layer_initial_rotation_degrees * rotation_factor, 227 old_layer_initial_rotation_degrees * rotation_factor,
227 (old_layer_initial_rotation_degrees - kRotationDegrees) * 228 (old_layer_initial_rotation_degrees - kRotationDegrees) *
228 rotation_factor, 229 rotation_factor,
229 layer_cleanup_observer->GetRootLayer()->opacity(), 230 layer_cleanup_observer->GetRootLayer()->opacity(),
230 0.0f /* target_opacity */, pivot, duration, tween_type)); 231 0.0f /* target_opacity */, pivot, duration, tween_type);
231 232
232 ui::LayerAnimator* animator = 233 ui::LayerAnimator* animator =
233 layer_cleanup_observer->GetRootLayer()->GetAnimator(); 234 layer_cleanup_observer->GetRootLayer()->GetAnimator();
234 animator->set_preemption_strategy( 235 animator->set_preemption_strategy(
235 ui::LayerAnimator::REPLACE_QUEUED_ANIMATIONS); 236 ui::LayerAnimator::REPLACE_QUEUED_ANIMATIONS);
236 std::unique_ptr<ui::LayerAnimationSequence> animation_sequence( 237 std::unique_ptr<ui::LayerAnimationSequence> animation_sequence =
237 new ui::LayerAnimationSequence(screen_rotation.release())); 238 base::MakeUnique<ui::LayerAnimationSequence>(std::move(screen_rotation));
238 // Add an observer so that the cloned layers can be cleaned up with the 239 // Add an observer so that the cloned layers can be cleaned up with the
239 // animation completes/aborts. 240 // animation completes/aborts.
240 animation_sequence->AddObserver(layer_cleanup_observer.release()); 241 animation_sequence->AddObserver(layer_cleanup_observer.release());
241 animator->StartAnimation(animation_sequence.release()); 242 animator->StartAnimation(animation_sequence.release());
242 } 243 }
243 244
244 } // namespace 245 } // namespace
245 246
246 ScreenRotationAnimator::ScreenRotationAnimator(int64_t display_id) 247 ScreenRotationAnimator::ScreenRotationAnimator(int64_t display_id)
247 : display_id_(display_id) {} 248 : display_id_(display_id) {}
(...skipping 12 matching lines...) Expand all
260 const display::Display::Rotation current_rotation = 261 const display::Display::Rotation current_rotation =
261 GetCurrentRotation(display_id_); 262 GetCurrentRotation(display_id_);
262 263
263 if (current_rotation == new_rotation) 264 if (current_rotation == new_rotation)
264 return; 265 return;
265 266
266 RotateScreen(display_id_, new_rotation, source); 267 RotateScreen(display_id_, new_rotation, source);
267 } 268 }
268 269
269 } // namespace ash 270 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698