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

Side by Side Diff: ui/gfx/interpolated_transform.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 (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 #ifndef M_PI 9 #ifndef M_PI
10 #define M_PI 3.14159265358979323846 10 #define M_PI 3.14159265358979323846
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 gfx::Transform InterpolatedTransform::Interpolate(float t) const { 89 gfx::Transform InterpolatedTransform::Interpolate(float t) const {
90 if (reversed_) 90 if (reversed_)
91 t = 1.0f - t; 91 t = 1.0f - t;
92 gfx::Transform result = InterpolateButDoNotCompose(t); 92 gfx::Transform result = InterpolateButDoNotCompose(t);
93 if (child_.get()) { 93 if (child_.get()) {
94 result.ConcatTransform(child_->Interpolate(t)); 94 result.ConcatTransform(child_->Interpolate(t));
95 } 95 }
96 return result; 96 return result;
97 } 97 }
98 98
99 void InterpolatedTransform::SetChild(InterpolatedTransform* child) { 99 void InterpolatedTransform::SetChild(
100 child_.reset(child); 100 std::unique_ptr<InterpolatedTransform> child) {
101 child_ = std::move(child);
101 } 102 }
102 103
103 inline float InterpolatedTransform::ValueBetween(float time, 104 inline float InterpolatedTransform::ValueBetween(float time,
104 float start_value, 105 float start_value,
105 float end_value) const { 106 float end_value) const {
106 // can't handle NaN 107 // can't handle NaN
107 DCHECK(time == time && start_time_ == start_time_ && end_time_ == end_time_); 108 DCHECK(time == time && start_time_ == start_time_ && end_time_ == end_time_);
108 if (time != time || start_time_ != start_time_ || end_time_ != end_time_) 109 if (time != time || start_time_ != start_time_ || end_time_ != end_time_)
109 return start_value; 110 return start_value;
110 111
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 return transform_; 292 return transform_;
292 } 293 }
293 294
294 InterpolatedConstantTransform::~InterpolatedConstantTransform() {} 295 InterpolatedConstantTransform::~InterpolatedConstantTransform() {}
295 296
296 /////////////////////////////////////////////////////////////////////////////// 297 ///////////////////////////////////////////////////////////////////////////////
297 // InterpolatedTransformAboutPivot 298 // InterpolatedTransformAboutPivot
298 // 299 //
299 300
300 InterpolatedTransformAboutPivot::InterpolatedTransformAboutPivot( 301 InterpolatedTransformAboutPivot::InterpolatedTransformAboutPivot(
301 const gfx::Point& pivot, 302 const gfx::Point& pivot,
302 InterpolatedTransform* transform) 303 std::unique_ptr<InterpolatedTransform> transform)
303 : InterpolatedTransform() { 304 : InterpolatedTransform() {
304 Init(pivot, transform); 305 Init(pivot, std::move(transform));
305 } 306 }
306 307
307 InterpolatedTransformAboutPivot::InterpolatedTransformAboutPivot( 308 InterpolatedTransformAboutPivot::InterpolatedTransformAboutPivot(
308 const gfx::Point& pivot, 309 const gfx::Point& pivot,
309 InterpolatedTransform* transform, 310 std::unique_ptr<InterpolatedTransform> transform,
310 float start_time, 311 float start_time,
311 float end_time) 312 float end_time)
312 : InterpolatedTransform() { 313 : InterpolatedTransform() {
313 Init(pivot, transform); 314 Init(pivot, std::move(transform));
314 } 315 }
315 316
316 InterpolatedTransformAboutPivot::~InterpolatedTransformAboutPivot() {} 317 InterpolatedTransformAboutPivot::~InterpolatedTransformAboutPivot() {}
317 318
318 gfx::Transform 319 gfx::Transform
319 InterpolatedTransformAboutPivot::InterpolateButDoNotCompose(float t) const { 320 InterpolatedTransformAboutPivot::InterpolateButDoNotCompose(float t) const {
320 if (transform_.get()) { 321 if (transform_.get()) {
321 return transform_->Interpolate(t); 322 return transform_->Interpolate(t);
322 } 323 }
323 return gfx::Transform(); 324 return gfx::Transform();
324 } 325 }
325 326
326 void InterpolatedTransformAboutPivot::Init(const gfx::Point& pivot, 327 void InterpolatedTransformAboutPivot::Init(
327 InterpolatedTransform* xform) { 328 const gfx::Point& pivot,
329 std::unique_ptr<InterpolatedTransform> xform) {
328 gfx::Transform to_pivot; 330 gfx::Transform to_pivot;
329 gfx::Transform from_pivot; 331 gfx::Transform from_pivot;
330 to_pivot.Translate(SkIntToMScalar(-pivot.x()), SkIntToMScalar(-pivot.y())); 332 to_pivot.Translate(SkIntToMScalar(-pivot.x()), SkIntToMScalar(-pivot.y()));
331 from_pivot.Translate(SkIntToMScalar(pivot.x()), SkIntToMScalar(pivot.y())); 333 from_pivot.Translate(SkIntToMScalar(pivot.x()), SkIntToMScalar(pivot.y()));
332 334
333 std::unique_ptr<InterpolatedTransform> pre_transform( 335 std::unique_ptr<InterpolatedTransform> pre_transform =
334 new InterpolatedConstantTransform(to_pivot)); 336 base::MakeUnique<InterpolatedConstantTransform>(to_pivot);
335 std::unique_ptr<InterpolatedTransform> post_transform( 337 std::unique_ptr<InterpolatedTransform> post_transform =
336 new InterpolatedConstantTransform(from_pivot)); 338 base::MakeUnique<InterpolatedConstantTransform>(from_pivot);
337 339
338 pre_transform->SetChild(xform); 340 xform->SetChild(std::move(post_transform));
339 xform->SetChild(post_transform.release()); 341 pre_transform->SetChild(std::move(xform));
340 transform_ = std::move(pre_transform); 342 transform_ = std::move(pre_transform);
341 } 343 }
342 344
343 InterpolatedMatrixTransform::InterpolatedMatrixTransform( 345 InterpolatedMatrixTransform::InterpolatedMatrixTransform(
344 const gfx::Transform& start_transform, 346 const gfx::Transform& start_transform,
345 const gfx::Transform& end_transform) 347 const gfx::Transform& end_transform)
346 : InterpolatedTransform() { 348 : InterpolatedTransform() {
347 Init(start_transform, end_transform); 349 Init(start_transform, end_transform);
348 } 350 }
349 351
(...skipping 21 matching lines...) Expand all
371 373
372 void InterpolatedMatrixTransform::Init(const gfx::Transform& start_transform, 374 void InterpolatedMatrixTransform::Init(const gfx::Transform& start_transform,
373 const gfx::Transform& end_transform) { 375 const gfx::Transform& end_transform) {
374 bool success = gfx::DecomposeTransform(&start_decomp_, start_transform); 376 bool success = gfx::DecomposeTransform(&start_decomp_, start_transform);
375 DCHECK(success); 377 DCHECK(success);
376 success = gfx::DecomposeTransform(&end_decomp_, end_transform); 378 success = gfx::DecomposeTransform(&end_decomp_, end_transform);
377 DCHECK(success); 379 DCHECK(success);
378 } 380 }
379 381
380 } // namespace ui 382 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698