| Index: cc/base/math_util.cc
|
| diff --git a/cc/base/math_util.cc b/cc/base/math_util.cc
|
| index 919a172f199d026957e6f978acd63a9845615bc4..40b8d11c68c517ee84bd3212450a7ea8fc7d9897 100644
|
| --- a/cc/base/math_util.cc
|
| +++ b/cc/base/math_util.cc
|
| @@ -108,15 +108,15 @@ gfx::Rect MathUtil::MapClippedRect(const gfx::Transform& transform,
|
|
|
| gfx::RectF MathUtil::MapClippedRect(const gfx::Transform& transform,
|
| const gfx::RectF& src_rect) {
|
| - if (transform.IsIdentityOrTranslation())
|
| + if (transform.IsIdentityOrTranslation()) {
|
| return src_rect +
|
| - gfx::Vector2dF(
|
| - static_cast<float>(transform.matrix().getDouble(0, 3)),
|
| - static_cast<float>(transform.matrix().getDouble(1, 3)));
|
| + gfx::Vector2dF(SkMScalarToFloat(transform.matrix().get(0, 3)),
|
| + SkMScalarToFloat(transform.matrix().get(1, 3)));
|
| + }
|
|
|
| // Apply the transform, but retain the result in homogeneous coordinates.
|
|
|
| - double quad[4 * 2]; // input: 4 x 2D points
|
| + SkMScalar quad[4 * 2]; // input: 4 x 2D points
|
| quad[0] = src_rect.x();
|
| quad[1] = src_rect.y();
|
| quad[2] = src_rect.right();
|
| @@ -126,7 +126,7 @@ gfx::RectF MathUtil::MapClippedRect(const gfx::Transform& transform,
|
| quad[6] = src_rect.x();
|
| quad[7] = src_rect.bottom();
|
|
|
| - double result[4 * 4]; // output: 4 x 4D homogeneous points
|
| + SkMScalar result[4 * 4]; // output: 4 x 4D homogeneous points
|
| transform.matrix().map2(quad, 4, result);
|
|
|
| HomogeneousCoordinate hc0(result[0], result[1], result[2], result[3]);
|
| @@ -140,9 +140,8 @@ gfx::RectF MathUtil::ProjectClippedRect(const gfx::Transform& transform,
|
| const gfx::RectF& src_rect) {
|
| if (transform.IsIdentityOrTranslation()) {
|
| return src_rect +
|
| - gfx::Vector2dF(
|
| - static_cast<float>(transform.matrix().getDouble(0, 3)),
|
| - static_cast<float>(transform.matrix().getDouble(1, 3)));
|
| + gfx::Vector2dF(SkMScalarToFloat(transform.matrix().get(0, 3)),
|
| + SkMScalarToFloat(transform.matrix().get(1, 3)));
|
| }
|
|
|
| // Perform the projection, but retain the result in homogeneous coordinates.
|
| @@ -330,8 +329,8 @@ gfx::QuadF MathUtil::MapQuad(const gfx::Transform& transform,
|
| if (transform.IsIdentityOrTranslation()) {
|
| gfx::QuadF mapped_quad(q);
|
| mapped_quad +=
|
| - gfx::Vector2dF(static_cast<float>(transform.matrix().getDouble(0, 3)),
|
| - static_cast<float>(transform.matrix().getDouble(1, 3)));
|
| + gfx::Vector2dF(SkMScalarToFloat(transform.matrix().get(0, 3)),
|
| + SkMScalarToFloat(transform.matrix().get(1, 3)));
|
| *clipped = false;
|
| return mapped_quad;
|
| }
|
| @@ -467,7 +466,8 @@ gfx::RectF MathUtil::ScaleRectProportional(const gfx::RectF& input_outer_rect,
|
| }
|
|
|
| static inline float ScaleOnAxis(double a, double b, double c) {
|
| - return std::sqrt(a * a + b * b + c * c);
|
| + // Do the sqrt as a double to not lose precision.
|
| + return static_cast<float>(std::sqrt(a * a + b * b + c * c));
|
| }
|
|
|
| gfx::Vector2dF MathUtil::ComputeTransform2dScaleComponents(
|
|
|