more float/double precision tweaks



git-svn-id: http://skia.googlecode.com/svn/trunk@355 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/core/SkMatrix.cpp b/src/core/SkMatrix.cpp
index 65e09bf..f7d6ca0 100644
--- a/src/core/SkMatrix.cpp
+++ b/src/core/SkMatrix.cpp
@@ -23,6 +23,10 @@
 
 #ifdef SK_SCALAR_IS_FLOAT
     #define kMatrix22Elem   SK_Scalar1
+
+    static inline float SkDoubleToFloat(double x) {
+        return static_cast<float>(x);
+    }
 #else
     #define kMatrix22Elem   SK_Fract1
 #endif
@@ -455,13 +459,7 @@
 #ifdef SK_SCALAR_IS_FLOAT
     static inline int fixmuladdmul(float a, float b, float c, float d,
                                    float* result) {
-        *result = a * b + c * d;
-        return true;
-    }
-
-    static inline int fixmuladdmulshiftmul(float a, float b, float c, float d,
-                           int /*shift not used*/, float scale, float* result) {
-        *result = (a * b + c * d) * scale;
+        *result = SkDoubleToFloat((double)a * b + (double)c * d);
         return true;
     }
 
@@ -489,34 +487,6 @@
         return false;
     }
 
-    static inline bool fixmuladdmulshiftmul(SkFixed a, SkFixed b, SkFixed c,
-                        SkFixed d, int shift, SkFixed scale, SkFixed* result) {
-        Sk64    tmp1, tmp2;
-        tmp1.setMul(a, b);
-        tmp2.setMul(c, d);
-        tmp1.add(tmp2);
-
-        int32_t hi = SkAbs32(tmp1.fHi);
-        int afterShift = 16;
-        if (hi >> 15) {
-            int clz = 17 - SkCLZ(hi);
-            SkASSERT(clz > 0 && clz <= 16);
-            afterShift -= clz;
-            shift += clz;
-        }
-
-        tmp1.roundRight(shift + 16);
-        SkASSERT(tmp1.is32());
-
-        tmp1.setMul(tmp1.get32(), scale);
-        tmp1.roundRight(afterShift);
-        if (tmp1.is32()) {
-            *result = tmp1.get32();
-            return true;
-        }
-        return false;
-    }
-
     static inline SkFixed fracmuladdmul(SkFixed a, SkFract b, SkFixed c,
                                         SkFract d) {
         Sk64 tmp1, tmp2;
@@ -690,9 +660,6 @@
         }
         return 1.0 / det;
     }
-    static inline float SkDoubleToFloat(double x) {
-        return static_cast<float>(x);
-    }
     // we declar a,b,c,d to all be doubles, because we want to perform
     // double-precision muls and subtract, even though the original values are
     // from the matrix, which are floats.