Chromium Code Reviews| Index: cc/animation/transform_operation.cc |
| diff --git a/cc/animation/transform_operation.cc b/cc/animation/transform_operation.cc |
| index ea3b0b2fc3a56e21c29919464cc95ae98122f944..384c88ae6d0674dae761110e89e0f20cd837c952 100644 |
| --- a/cc/animation/transform_operation.cc |
| +++ b/cc/animation/transform_operation.cc |
| @@ -12,7 +12,7 @@ |
| #include "ui/gfx/vector3d_f.h" |
| namespace { |
| -const double kAngleEpsilon = 1e-4; |
| +const SkMScalar kAngleEpsilon = 1e-4; |
| } |
| namespace cc { |
| @@ -27,10 +27,10 @@ static bool IsOperationIdentity(const TransformOperation* operation) { |
| static bool ShareSameAxis(const TransformOperation* from, |
| const TransformOperation* to, |
| - double* axis_x, |
| - double* axis_y, |
| - double* axis_z, |
| - double* angle_from) { |
| + SkMScalar* axis_x, |
| + SkMScalar* axis_y, |
| + SkMScalar* axis_z, |
| + SkMScalar* angle_from) { |
| if (IsOperationIdentity(from) && IsOperationIdentity(to)) |
| return false; |
| @@ -50,20 +50,20 @@ static bool ShareSameAxis(const TransformOperation* from, |
| return true; |
| } |
| - double length_2 = from->rotate.axis.x * from->rotate.axis.x + |
| - from->rotate.axis.y * from->rotate.axis.y + |
| - from->rotate.axis.z * from->rotate.axis.z; |
| - double other_length_2 = to->rotate.axis.x * to->rotate.axis.x + |
| - to->rotate.axis.y * to->rotate.axis.y + |
| - to->rotate.axis.z * to->rotate.axis.z; |
| + SkMScalar length_2 = from->rotate.axis.x * from->rotate.axis.x + |
| + from->rotate.axis.y * from->rotate.axis.y + |
| + from->rotate.axis.z * from->rotate.axis.z; |
| + SkMScalar other_length_2 = to->rotate.axis.x * to->rotate.axis.x + |
| + to->rotate.axis.y * to->rotate.axis.y + |
| + to->rotate.axis.z * to->rotate.axis.z; |
| if (length_2 <= kAngleEpsilon || other_length_2 <= kAngleEpsilon) |
| return false; |
| - double dot = to->rotate.axis.x * from->rotate.axis.x + |
| - to->rotate.axis.y * from->rotate.axis.y + |
| - to->rotate.axis.z * from->rotate.axis.z; |
| - double error = std::abs(1.0 - (dot * dot) / (length_2 * other_length_2)); |
| + SkMScalar dot = to->rotate.axis.x * from->rotate.axis.x + |
| + to->rotate.axis.y * from->rotate.axis.y + |
| + to->rotate.axis.z * from->rotate.axis.z; |
| + SkMScalar error = std::abs(1.0 - (dot * dot) / (length_2 * other_length_2)); |
|
danakj
2013/09/09 17:57:45
s/1.0/SK_MScalar1/?
enne (OOO)
2013/09/10 22:32:32
Done.
|
| bool result = error < kAngleEpsilon; |
| if (result) { |
| *axis_x = to->rotate.axis.x; |
| @@ -76,7 +76,9 @@ static bool ShareSameAxis(const TransformOperation* from, |
| return result; |
| } |
| -static double BlendDoubles(double from, double to, double progress) { |
| +static SkMScalar BlendSkMScalars(SkMScalar from, |
| + SkMScalar to, |
| + double progress) { |
| return from * (1 - progress) + to * progress; |
|
danakj
2013/09/09 17:57:45
this should be doing SkDoubleToMScalar() on its re
enne (OOO)
2013/09/10 22:32:32
progress here should really just be an SkMScalar.
|
| } |
| @@ -97,26 +99,26 @@ bool TransformOperation::BlendTransformOperations( |
| switch (interpolation_type) { |
| case TransformOperation::TransformOperationTranslate: { |
| - double from_x = IsOperationIdentity(from) ? 0 : from->translate.x; |
| - double from_y = IsOperationIdentity(from) ? 0 : from->translate.y; |
| - double from_z = IsOperationIdentity(from) ? 0 : from->translate.z; |
| - double to_x = IsOperationIdentity(to) ? 0 : to->translate.x; |
| - double to_y = IsOperationIdentity(to) ? 0 : to->translate.y; |
| - double to_z = IsOperationIdentity(to) ? 0 : to->translate.z; |
| - result->Translate3d(BlendDoubles(from_x, to_x, progress), |
| - BlendDoubles(from_y, to_y, progress), |
| - BlendDoubles(from_z, to_z, progress)); |
| + SkMScalar from_x = IsOperationIdentity(from) ? 0 : from->translate.x; |
| + SkMScalar from_y = IsOperationIdentity(from) ? 0 : from->translate.y; |
| + SkMScalar from_z = IsOperationIdentity(from) ? 0 : from->translate.z; |
| + SkMScalar to_x = IsOperationIdentity(to) ? 0 : to->translate.x; |
| + SkMScalar to_y = IsOperationIdentity(to) ? 0 : to->translate.y; |
| + SkMScalar to_z = IsOperationIdentity(to) ? 0 : to->translate.z; |
| + result->Translate3d(BlendSkMScalars(from_x, to_x, progress), |
| + BlendSkMScalars(from_y, to_y, progress), |
| + BlendSkMScalars(from_z, to_z, progress)); |
| break; |
| } |
| case TransformOperation::TransformOperationRotate: { |
| - double axis_x = 0; |
| - double axis_y = 0; |
| - double axis_z = 1; |
| - double from_angle = 0; |
| - double to_angle = IsOperationIdentity(to) ? 0 : to->rotate.angle; |
| + SkMScalar axis_x = 0; |
| + SkMScalar axis_y = 0; |
| + SkMScalar axis_z = 1; |
| + SkMScalar from_angle = 0; |
| + SkMScalar to_angle = IsOperationIdentity(to) ? 0 : to->rotate.angle; |
| if (ShareSameAxis(from, to, &axis_x, &axis_y, &axis_z, &from_angle)) { |
| result->RotateAbout(gfx::Vector3dF(axis_x, axis_y, axis_z), |
| - BlendDoubles(from_angle, to_angle, progress)); |
| + BlendSkMScalars(from_angle, to_angle, progress)); |
| } else { |
| gfx::Transform to_matrix; |
| if (!IsOperationIdentity(to)) |
| @@ -131,33 +133,35 @@ bool TransformOperation::BlendTransformOperations( |
| break; |
| } |
| case TransformOperation::TransformOperationScale: { |
| - double from_x = IsOperationIdentity(from) ? 1 : from->scale.x; |
| - double from_y = IsOperationIdentity(from) ? 1 : from->scale.y; |
| - double from_z = IsOperationIdentity(from) ? 1 : from->scale.z; |
| - double to_x = IsOperationIdentity(to) ? 1 : to->scale.x; |
| - double to_y = IsOperationIdentity(to) ? 1 : to->scale.y; |
| - double to_z = IsOperationIdentity(to) ? 1 : to->scale.z; |
| - result->Scale3d(BlendDoubles(from_x, to_x, progress), |
| - BlendDoubles(from_y, to_y, progress), |
| - BlendDoubles(from_z, to_z, progress)); |
| + SkMScalar from_x = IsOperationIdentity(from) ? 1 : from->scale.x; |
| + SkMScalar from_y = IsOperationIdentity(from) ? 1 : from->scale.y; |
| + SkMScalar from_z = IsOperationIdentity(from) ? 1 : from->scale.z; |
| + SkMScalar to_x = IsOperationIdentity(to) ? 1 : to->scale.x; |
| + SkMScalar to_y = IsOperationIdentity(to) ? 1 : to->scale.y; |
| + SkMScalar to_z = IsOperationIdentity(to) ? 1 : to->scale.z; |
| + result->Scale3d(BlendSkMScalars(from_x, to_x, progress), |
| + BlendSkMScalars(from_y, to_y, progress), |
| + BlendSkMScalars(from_z, to_z, progress)); |
| break; |
| } |
| case TransformOperation::TransformOperationSkew: { |
| - double from_x = IsOperationIdentity(from) ? 0 : from->skew.x; |
| - double from_y = IsOperationIdentity(from) ? 0 : from->skew.y; |
| - double to_x = IsOperationIdentity(to) ? 0 : to->skew.x; |
| - double to_y = IsOperationIdentity(to) ? 0 : to->skew.y; |
| - result->SkewX(BlendDoubles(from_x, to_x, progress)); |
| - result->SkewY(BlendDoubles(from_y, to_y, progress)); |
| + SkMScalar from_x = IsOperationIdentity(from) ? 0 : from->skew.x; |
| + SkMScalar from_y = IsOperationIdentity(from) ? 0 : from->skew.y; |
| + SkMScalar to_x = IsOperationIdentity(to) ? 0 : to->skew.x; |
| + SkMScalar to_y = IsOperationIdentity(to) ? 0 : to->skew.y; |
| + result->SkewX(BlendSkMScalars(from_x, to_x, progress)); |
| + result->SkewY(BlendSkMScalars(from_y, to_y, progress)); |
| break; |
| } |
| case TransformOperation::TransformOperationPerspective: { |
| - double from_perspective_depth = IsOperationIdentity(from) ? |
| - std::numeric_limits<double>::max() : from->perspective_depth; |
| - double to_perspective_depth = IsOperationIdentity(to) ? |
| - std::numeric_limits<double>::max() : to->perspective_depth; |
| - result->ApplyPerspectiveDepth( |
| - BlendDoubles(from_perspective_depth, to_perspective_depth, progress)); |
| + SkMScalar from_perspective_depth = |
| + IsOperationIdentity(from) ? std::numeric_limits<SkMScalar>::max() |
| + : from->perspective_depth; |
| + SkMScalar to_perspective_depth = IsOperationIdentity(to) |
| + ? std::numeric_limits<SkMScalar>::max() |
| + : to->perspective_depth; |
| + result->ApplyPerspectiveDepth(BlendSkMScalars( |
| + from_perspective_depth, to_perspective_depth, progress)); |
| break; |
| } |
| case TransformOperation::TransformOperationMatrix: { |
| @@ -226,7 +230,7 @@ bool TransformOperation::BlendedBoundsForBox(const gfx::BoxF& box, |
| switch (interpolation_type) { |
| case TransformOperation::TransformOperationTranslate: { |
| - double from_x, from_y, from_z; |
| + SkMScalar from_x, from_y, from_z; |
| if (is_identity_from) { |
| from_x = from_y = from_z = 0.0; |
| } else { |
| @@ -234,7 +238,7 @@ bool TransformOperation::BlendedBoundsForBox(const gfx::BoxF& box, |
| from_y = from->translate.y; |
| from_z = from->translate.z; |
| } |
| - double to_x, to_y, to_z; |
| + SkMScalar to_x, to_y, to_z; |
| if (is_identity_to) { |
| to_x = to_y = to_z = 0.0; |
| } else { |
| @@ -243,18 +247,18 @@ bool TransformOperation::BlendedBoundsForBox(const gfx::BoxF& box, |
| to_z = to->translate.z; |
| } |
| *bounds = box; |
| - *bounds += gfx::Vector3dF(BlendDoubles(from_x, to_x, min_progress), |
| - BlendDoubles(from_y, to_y, min_progress), |
| - BlendDoubles(from_z, to_z, min_progress)); |
| + *bounds += gfx::Vector3dF(BlendSkMScalars(from_x, to_x, min_progress), |
| + BlendSkMScalars(from_y, to_y, min_progress), |
| + BlendSkMScalars(from_z, to_z, min_progress)); |
| gfx::BoxF bounds_max = box; |
| - bounds_max += gfx::Vector3dF(BlendDoubles(from_x, to_x, max_progress), |
| - BlendDoubles(from_y, to_y, max_progress), |
| - BlendDoubles(from_z, to_z, max_progress)); |
| + bounds_max += gfx::Vector3dF(BlendSkMScalars(from_x, to_x, max_progress), |
| + BlendSkMScalars(from_y, to_y, max_progress), |
| + BlendSkMScalars(from_z, to_z, max_progress)); |
| bounds->Union(bounds_max); |
| return true; |
| } |
| case TransformOperation::TransformOperationScale: { |
| - double from_x, from_y, from_z; |
| + SkMScalar from_x, from_y, from_z; |
| if (is_identity_from) { |
| from_x = from_y = from_z = 1.0; |
| } else { |
| @@ -262,7 +266,7 @@ bool TransformOperation::BlendedBoundsForBox(const gfx::BoxF& box, |
| from_y = from->scale.y; |
| from_z = from->scale.z; |
| } |
| - double to_x, to_y, to_z; |
| + SkMScalar to_x, to_y, to_z; |
| if (is_identity_to) { |
| to_x = to_y = to_z = 1.0; |
| } else { |
| @@ -271,14 +275,14 @@ bool TransformOperation::BlendedBoundsForBox(const gfx::BoxF& box, |
| to_z = to->scale.z; |
| } |
| *bounds = box; |
| - ApplyScaleToBox(BlendDoubles(from_x, to_x, min_progress), |
| - BlendDoubles(from_y, to_y, min_progress), |
| - BlendDoubles(from_z, to_z, min_progress), |
| + ApplyScaleToBox(BlendSkMScalars(from_x, to_x, min_progress), |
|
danakj
2013/09/09 17:57:45
These values should be SkMScalarToFloat()'d
enne (OOO)
2013/09/10 22:32:32
Done.
|
| + BlendSkMScalars(from_y, to_y, min_progress), |
| + BlendSkMScalars(from_z, to_z, min_progress), |
| bounds); |
| gfx::BoxF bounds_max = box; |
| - ApplyScaleToBox(BlendDoubles(from_x, to_x, max_progress), |
| - BlendDoubles(from_y, to_y, max_progress), |
| - BlendDoubles(from_z, to_z, max_progress), |
| + ApplyScaleToBox(BlendSkMScalars(from_x, to_x, max_progress), |
|
danakj
2013/09/09 17:57:45
As should these.
enne (OOO)
2013/09/10 22:32:32
Done.
|
| + BlendSkMScalars(from_y, to_y, max_progress), |
| + BlendSkMScalars(from_z, to_z, max_progress), |
| &bounds_max); |
| if (!bounds->IsEmpty() && !bounds_max.IsEmpty()) { |
| bounds->Union(bounds_max); |