| Index: ui/base/animation/tween.cc
|
| diff --git a/ui/base/animation/tween.cc b/ui/base/animation/tween.cc
|
| index 515ae576ed5c20189c4be94d40b47ea49ad293cc..a16bb1862e79983f667410741babd7bd5758b9c1 100644
|
| --- a/ui/base/animation/tween.cc
|
| +++ b/ui/base/animation/tween.cc
|
| @@ -11,7 +11,10 @@
|
| #endif
|
|
|
| #include "base/logging.h"
|
| -#include "ui/gfx/rect.h"
|
| +
|
| +#if !defined(OS_MACOSX)
|
| +#include "ui/gfx/interpolated_transform.h"
|
| +#endif
|
|
|
| namespace ui {
|
|
|
| @@ -83,4 +86,42 @@ gfx::Rect Tween::ValueBetween(double value,
|
| target_bounds.height()));
|
| }
|
|
|
| +#if !defined(OS_MACOSX)
|
| +// static
|
| +Transform Tween::ValueBetween(double value,
|
| + const Transform& start_transform,
|
| + const Transform& end_transform) {
|
| + Transform to_return;
|
| + gfx::Point start_translation, end_translation;
|
| + float start_rotation, end_rotation;
|
| + gfx::Point3f start_scale, end_scale;
|
| + if (InterpolatedTransform::FactorTRS(start_transform,
|
| + &start_translation,
|
| + &start_rotation,
|
| + &start_scale) &&
|
| + InterpolatedTransform::FactorTRS(end_transform,
|
| + &end_translation,
|
| + &end_rotation,
|
| + &end_scale)) {
|
| + to_return.SetScale(ValueBetween(value, start_scale.x(), end_scale.x()),
|
| + ValueBetween(value, start_scale.y(), end_scale.y()));
|
| + to_return.ConcatRotate(ValueBetween(value, start_rotation, end_rotation));
|
| + to_return.ConcatTranslate(
|
| + ValueBetween(value, start_translation.x(), end_translation.x()),
|
| + ValueBetween(value, start_translation.y(), end_translation.y()));
|
| + } else {
|
| + for (int row = 0; row < 4; ++row) {
|
| + for (int col = 0; col < 4; ++col) {
|
| + to_return.matrix().set(row, col,
|
| + ValueBetween(value,
|
| + start_transform.matrix().get(row, col),
|
| + end_transform.matrix().get(row, col)));
|
| + }
|
| + }
|
| + }
|
| +
|
| + return to_return;
|
| +}
|
| +#endif
|
| +
|
| } // namespace ui
|
|
|