use real strtof and snprintf to parse and dump floats



git-svn-id: http://skia.googlecode.com/svn/trunk@369 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/utils/SkParse.cpp b/src/utils/SkParse.cpp
index e740280..df66910 100644
--- a/src/utils/SkParse.cpp
+++ b/src/utils/SkParse.cpp
@@ -206,11 +206,20 @@
     return str;
 }
 
-const char* SkParse::FindScalar(const char str[], SkScalar* value)
-{
+const char* SkParse::FindScalar(const char str[], SkScalar* value) {
     SkASSERT(str);
     str = skip_ws(str);
-
+#ifdef SK_SCALAR_IS_FLOAT
+    char* stop;
+    float v = ::strtof(str, &stop);
+    if (str == stop) {
+        return NULL;
+    }
+    if (value) {
+        *value = v;
+    }
+    return stop;
+#else
     int sign = 0;
     if (*str == '-')
     {
@@ -251,6 +260,7 @@
         n = (n ^ sign) - sign;  // apply the sign
         *value = SkFixedToScalar(n);
     }
+#endif
     return str;
 }
 
diff --git a/src/utils/SkParsePath.cpp b/src/utils/SkParsePath.cpp
index df98436..2e8921d 100644
--- a/src/utils/SkParsePath.cpp
+++ b/src/utils/SkParsePath.cpp
@@ -181,8 +181,14 @@
 #include "SkStream.h"
 
 static void write_scalar(SkWStream* stream, SkScalar value) {
+#ifdef SK_SCALAR_IS_FLOAT
+    char buffer[64];
+    int len = snprintf(buffer, sizeof(buffer), "%g", value);
+    char* stop = buffer + len;
+#else
     char    buffer[SkStrAppendScalar_MaxSize];
     char*   stop = SkStrAppendScalar(buffer, value);
+#endif
     stream->write(buffer, stop - buffer);
 }
 
@@ -191,10 +197,7 @@
     stream->write(&verb, 1);
     write_scalar(stream, data[0]);
     for (int i = 1; i < count; i++) {
-        if (data[i] >= 0) {
-            // can skip the separater if data[i] is negative
-            stream->write(" ", 1);
-        }
+        stream->write(" ", 1);
         write_scalar(stream, data[i]);
     }
 }