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

Side by Side Diff: ui/gfx/interpolated_transform.cc

Issue 2550933002: Make all LayerAnimationElement::Create*Element return unique_ptr (Closed)
Patch Set: Complete inclusion 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/gfx/interpolated_transform.h" 5 #include "ui/gfx/interpolated_transform.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/memory/ptr_util.h"
10
9 #ifndef M_PI 11 #ifndef M_PI
10 #define M_PI 3.14159265358979323846 12 #define M_PI 3.14159265358979323846
11 #endif 13 #endif
12 14
13 #include "base/logging.h" 15 #include "base/logging.h"
14 #include "ui/gfx/animation/tween.h" 16 #include "ui/gfx/animation/tween.h"
15 17
16 namespace { 18 namespace {
17 19
18 static const double EPSILON = 1e-6; 20 static const double EPSILON = 1e-6;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 gfx::Transform InterpolatedTransform::Interpolate(float t) const { 91 gfx::Transform InterpolatedTransform::Interpolate(float t) const {
90 if (reversed_) 92 if (reversed_)
91 t = 1.0f - t; 93 t = 1.0f - t;
92 gfx::Transform result = InterpolateButDoNotCompose(t); 94 gfx::Transform result = InterpolateButDoNotCompose(t);
93 if (child_.get()) { 95 if (child_.get()) {
94 result.ConcatTransform(child_->Interpolate(t)); 96 result.ConcatTransform(child_->Interpolate(t));
95 } 97 }
96 return result; 98 return result;
97 } 99 }
98 100
99 void InterpolatedTransform::SetChild(InterpolatedTransform* child) { 101 void InterpolatedTransform::SetChild(
100 child_.reset(child); 102 std::unique_ptr<InterpolatedTransform> child) {
103 child_ = std::move(child);
101 } 104 }
102 105
103 inline float InterpolatedTransform::ValueBetween(float time, 106 inline float InterpolatedTransform::ValueBetween(float time,
104 float start_value, 107 float start_value,
105 float end_value) const { 108 float end_value) const {
106 // can't handle NaN 109 // can't handle NaN
107 DCHECK(time == time && start_time_ == start_time_ && end_time_ == end_time_); 110 DCHECK(time == time && start_time_ == start_time_ && end_time_ == end_time_);
108 if (time != time || start_time_ != start_time_ || end_time_ != end_time_) 111 if (time != time || start_time_ != start_time_ || end_time_ != end_time_)
109 return start_value; 112 return start_value;
110 113
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 return transform_; 294 return transform_;
292 } 295 }
293 296
294 InterpolatedConstantTransform::~InterpolatedConstantTransform() {} 297 InterpolatedConstantTransform::~InterpolatedConstantTransform() {}
295 298
296 /////////////////////////////////////////////////////////////////////////////// 299 ///////////////////////////////////////////////////////////////////////////////
297 // InterpolatedTransformAboutPivot 300 // InterpolatedTransformAboutPivot
298 // 301 //
299 302
300 InterpolatedTransformAboutPivot::InterpolatedTransformAboutPivot( 303 InterpolatedTransformAboutPivot::InterpolatedTransformAboutPivot(
301 const gfx::Point& pivot, 304 const gfx::Point& pivot,
302 InterpolatedTransform* transform) 305 std::unique_ptr<InterpolatedTransform> transform)
303 : InterpolatedTransform() { 306 : InterpolatedTransform() {
304 Init(pivot, transform); 307 Init(pivot, std::move(transform));
305 } 308 }
306 309
307 InterpolatedTransformAboutPivot::InterpolatedTransformAboutPivot( 310 InterpolatedTransformAboutPivot::InterpolatedTransformAboutPivot(
308 const gfx::Point& pivot, 311 const gfx::Point& pivot,
309 InterpolatedTransform* transform, 312 std::unique_ptr<InterpolatedTransform> transform,
310 float start_time, 313 float start_time,
311 float end_time) 314 float end_time)
312 : InterpolatedTransform() { 315 : InterpolatedTransform() {
313 Init(pivot, transform); 316 Init(pivot, std::move(transform));
314 } 317 }
315 318
316 InterpolatedTransformAboutPivot::~InterpolatedTransformAboutPivot() {} 319 InterpolatedTransformAboutPivot::~InterpolatedTransformAboutPivot() {}
317 320
318 gfx::Transform 321 gfx::Transform
319 InterpolatedTransformAboutPivot::InterpolateButDoNotCompose(float t) const { 322 InterpolatedTransformAboutPivot::InterpolateButDoNotCompose(float t) const {
320 if (transform_.get()) { 323 if (transform_.get()) {
321 return transform_->Interpolate(t); 324 return transform_->Interpolate(t);
322 } 325 }
323 return gfx::Transform(); 326 return gfx::Transform();
324 } 327 }
325 328
326 void InterpolatedTransformAboutPivot::Init(const gfx::Point& pivot, 329 void InterpolatedTransformAboutPivot::Init(
327 InterpolatedTransform* xform) { 330 const gfx::Point& pivot,
331 std::unique_ptr<InterpolatedTransform> xform) {
328 gfx::Transform to_pivot; 332 gfx::Transform to_pivot;
329 gfx::Transform from_pivot; 333 gfx::Transform from_pivot;
330 to_pivot.Translate(SkIntToMScalar(-pivot.x()), SkIntToMScalar(-pivot.y())); 334 to_pivot.Translate(SkIntToMScalar(-pivot.x()), SkIntToMScalar(-pivot.y()));
331 from_pivot.Translate(SkIntToMScalar(pivot.x()), SkIntToMScalar(pivot.y())); 335 from_pivot.Translate(SkIntToMScalar(pivot.x()), SkIntToMScalar(pivot.y()));
332 336
333 std::unique_ptr<InterpolatedTransform> pre_transform( 337 std::unique_ptr<InterpolatedTransform> pre_transform =
334 new InterpolatedConstantTransform(to_pivot)); 338 base::MakeUnique<InterpolatedConstantTransform>(to_pivot);
335 std::unique_ptr<InterpolatedTransform> post_transform( 339 std::unique_ptr<InterpolatedTransform> post_transform =
336 new InterpolatedConstantTransform(from_pivot)); 340 base::MakeUnique<InterpolatedConstantTransform>(from_pivot);
337 341
338 pre_transform->SetChild(xform); 342 xform->SetChild(std::move(post_transform));
339 xform->SetChild(post_transform.release()); 343 pre_transform->SetChild(std::move(xform));
340 transform_ = std::move(pre_transform); 344 transform_ = std::move(pre_transform);
341 } 345 }
342 346
343 InterpolatedMatrixTransform::InterpolatedMatrixTransform( 347 InterpolatedMatrixTransform::InterpolatedMatrixTransform(
344 const gfx::Transform& start_transform, 348 const gfx::Transform& start_transform,
345 const gfx::Transform& end_transform) 349 const gfx::Transform& end_transform)
346 : InterpolatedTransform() { 350 : InterpolatedTransform() {
347 Init(start_transform, end_transform); 351 Init(start_transform, end_transform);
348 } 352 }
349 353
(...skipping 21 matching lines...) Expand all
371 375
372 void InterpolatedMatrixTransform::Init(const gfx::Transform& start_transform, 376 void InterpolatedMatrixTransform::Init(const gfx::Transform& start_transform,
373 const gfx::Transform& end_transform) { 377 const gfx::Transform& end_transform) {
374 bool success = gfx::DecomposeTransform(&start_decomp_, start_transform); 378 bool success = gfx::DecomposeTransform(&start_decomp_, start_transform);
375 DCHECK(success); 379 DCHECK(success);
376 success = gfx::DecomposeTransform(&end_decomp_, end_transform); 380 success = gfx::DecomposeTransform(&end_decomp_, end_transform);
377 DCHECK(success); 381 DCHECK(success);
378 } 382 }
379 383
380 } // namespace ui 384 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698