Make SkMatrix44::invert() check for finite 1/det instead of magic value

Previously we were checking to see if the magnitude of
determinant of the matrix to be inverted was less than 
1.0e-8, which is a magic number possibly plucked from 
Graphics Gems. After some discussion, it's been determined 
(ha) that we can simply check to see if 1/det is finite and 
if so proceed.

BUG=222926

Committed: http://code.google.com/p/skia/source/detail?r=10758

R=reed@google.com, shawnsingh@chromium.org

Author: jvanverth@google.com

Review URL: https://chromiumcodereview.appspot.com/22904003

git-svn-id: http://skia.googlecode.com/svn/trunk@10818 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tests/Matrix44Test.cpp b/tests/Matrix44Test.cpp
index b2c7071..7e31840 100644
--- a/tests/Matrix44Test.cpp
+++ b/tests/Matrix44Test.cpp
@@ -403,6 +403,33 @@
     iden2.setConcat(inverse, mat);
     REPORTER_ASSERT(reporter, is_identity(iden2));
 
+    // test tiny-valued matrix inverse
+    mat.reset();
+    mat.setScale(1.0e-12, 1.0e-12, 1.0e-12);
+    rot.setRotateDegreesAbout(0, 0, -1, 90);
+    mat.postConcat(rot);
+    mat.postTranslate(1.0e-12, 1.0e-12, 1.0e-12);
+    REPORTER_ASSERT(reporter, mat.invert(NULL));
+    mat.invert(&inverse);
+    iden1.setConcat(mat, inverse);
+    REPORTER_ASSERT(reporter, is_identity(iden1));
+    
+    // test mixed-valued matrix inverse
+    mat.reset();
+    mat.setScale(1.0e-11, 3.0, 1.0e+11);
+    rot.setRotateDegreesAbout(0, 0, -1, 90);
+    mat.postConcat(rot);
+    mat.postTranslate(1.0e+11, 3.0, 1.0e-11);
+    REPORTER_ASSERT(reporter, mat.invert(NULL));
+    mat.invert(&inverse);
+    iden1.setConcat(mat, inverse);
+    REPORTER_ASSERT(reporter, is_identity(iden1));
+    
+    // test degenerate matrix
+    mat.reset();
+    mat.set3x3(1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0);
+    REPORTER_ASSERT(reporter, !mat.invert(NULL));
+    
     // test rol/col Major getters
     {
         mat.setTranslate(2, 3, 4);