diff options
author | jvanverth@google.com <jvanverth@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-09-03 19:46:16 +0000 |
---|---|---|
committer | jvanverth@google.com <jvanverth@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-09-03 19:46:16 +0000 |
commit | 25f72ed03485f58998846d80858d64b5a3c40c7f (patch) | |
tree | ab723233852f59d445cc3fd64e009d4abcf46c5b | |
parent | 5b2e2640ed345c4670b99b349f62eb6f9446ec1e (diff) |
Fix Matrix44Test and double-to-float conversion in SVD code
git-svn-id: http://skia.googlecode.com/svn/trunk@11067 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r-- | src/core/SkMatrix.cpp | 8 | ||||
-rw-r--r-- | tests/Matrix44Test.cpp | 4 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/core/SkMatrix.cpp b/src/core/SkMatrix.cpp index e3e43ca690..263b2efe36 100644 --- a/src/core/SkMatrix.cpp +++ b/src/core/SkMatrix.cpp @@ -2060,7 +2060,7 @@ bool SkDecomposeUpper2x2(const SkMatrix& matrix, // Now we need to compute eigenvalues of S (our scale factors) // and eigenvectors (bases for our rotation) // From this, should be able to reconstruct S as U*W*U^T - if (SkScalarNearlyZero(Sb)) { + if (SkScalarNearlyZero(SkDoubleToScalar(Sb))) { // already diagonalized cos1 = SK_Scalar1; sin1 = 0; @@ -2080,7 +2080,7 @@ bool SkDecomposeUpper2x2(const SkMatrix& matrix, w2 = 0.5*(trace + discriminant); } - cos1 = Sb; sin1 = w1 - Sa; + cos1 = SkDoubleToScalar(Sb); sin1 = SkDoubleToScalar(w1 - Sa); SkScalar reciplen = SK_Scalar1/SkScalarSqrt(cos1*cos1 + sin1*sin1); cos1 *= reciplen; sin1 *= reciplen; @@ -2094,8 +2094,8 @@ bool SkDecomposeUpper2x2(const SkMatrix& matrix, } if (NULL != scale) { - scale->fX = w1; - scale->fY = w2; + scale->fX = SkDoubleToScalar(w1); + scale->fY = SkDoubleToScalar(w2); } if (NULL != rotation1) { rotation1->fX = cos1; diff --git a/tests/Matrix44Test.cpp b/tests/Matrix44Test.cpp index 6c29a55966..67af60df90 100644 --- a/tests/Matrix44Test.cpp +++ b/tests/Matrix44Test.cpp @@ -513,10 +513,10 @@ static void TestMatrix44(skiatest::Reporter* reporter) { // test mixed-valued matrix inverse mat.reset(); - mat.setScale(1.0e-11, 3.0, 1.0e+11); + mat.setScale(1.0e-10, 3.0, 1.0e+10); rot.setRotateDegreesAbout(0, 0, -1, 90); mat.postConcat(rot); - mat.postTranslate(1.0e+11, 3.0, 1.0e-11); + mat.postTranslate(1.0e+10, 3.0, 1.0e-10); REPORTER_ASSERT(reporter, mat.invert(NULL)); mat.invert(&inverse); iden1.setConcat(mat, inverse); |