| Index: experimental/svg/model/SkSVGDOM.cpp
 | 
| diff --git a/experimental/svg/model/SkSVGDOM.cpp b/experimental/svg/model/SkSVGDOM.cpp
 | 
| index 13d67b9cfe134a37417c097e35eccdd8acfc7732..9b67484fbc571ce5a6619c4ac64cb50a20cb742b 100644
 | 
| --- a/experimental/svg/model/SkSVGDOM.cpp
 | 
| +++ b/experimental/svg/model/SkSVGDOM.cpp
 | 
| @@ -7,7 +7,6 @@
 | 
|  
 | 
|  #include "SkCanvas.h"
 | 
|  #include "SkDOM.h"
 | 
| -#include "SkParse.h"
 | 
|  #include "SkParsePath.h"
 | 
|  #include "SkString.h"
 | 
|  #include "SkSVGAttributeParser.h"
 | 
| @@ -24,53 +23,6 @@
 | 
|  
 | 
|  namespace {
 | 
|  
 | 
| -const char* ParseScalarPair(const char* str, SkScalar v[2]) {
 | 
| -    str = SkParse::FindScalar(str, v);
 | 
| -    if (str) {
 | 
| -        const char* second = SkParse::FindScalar(str, v + 1);
 | 
| -        if (!second) {
 | 
| -            v[1] = v[0];
 | 
| -        } else {
 | 
| -            str = second;
 | 
| -        }
 | 
| -    }
 | 
| -
 | 
| -    return str;
 | 
| -}
 | 
| -
 | 
| -SkMatrix ParseTransform(const char* str) {
 | 
| -    SkMatrix m = SkMatrix::I();
 | 
| -
 | 
| -    // FIXME: real parser
 | 
| -    if (!strncmp(str, "matrix(", 7)) {
 | 
| -        SkScalar values[6];
 | 
| -        str = SkParse::FindScalars(str + 7, values, 6);
 | 
| -        if (str) {
 | 
| -            m.setAffine(values);
 | 
| -        }
 | 
| -    } else if (!strncmp(str, "scale(", 6)) {
 | 
| -        SkScalar values[2];
 | 
| -        str = ParseScalarPair(str + 6, values);
 | 
| -        if (str) {
 | 
| -            m.setScale(values[0], values[1]);
 | 
| -        }
 | 
| -    } else if (!strncmp(str, "translate(", 10)) {
 | 
| -        SkScalar values[2];
 | 
| -        str = ParseScalarPair(str + 10, values);
 | 
| -        if (str) {
 | 
| -            m.setTranslate(values[0], values[1]);
 | 
| -        }
 | 
| -    } else if (!strncmp(str, "rotate(", 7)) {
 | 
| -        SkScalar value;
 | 
| -        str = SkParse::FindScalar(str + 7, &value);
 | 
| -        if (str) {
 | 
| -            m.setRotate(value);
 | 
| -        }
 | 
| -    }
 | 
| -
 | 
| -    return m;
 | 
| -}
 | 
| -
 | 
|  bool SetPaintAttribute(const sk_sp<SkSVGNode>& node, SkSVGAttribute attr,
 | 
|                         const char* stringValue) {
 | 
|      SkSVGColorType color;
 | 
| @@ -96,7 +48,13 @@ bool SetPathDataAttribute(const sk_sp<SkSVGNode>& node, SkSVGAttribute attr,
 | 
|  
 | 
|  bool SetTransformAttribute(const sk_sp<SkSVGNode>& node, SkSVGAttribute attr,
 | 
|                             const char* stringValue) {
 | 
| -    node->setAttribute(attr, SkSVGTransformValue(ParseTransform(stringValue)));
 | 
| +    SkSVGTransformType transform;
 | 
| +    SkSVGAttributeParser parser(stringValue);
 | 
| +    if (!parser.parseTransform(&transform)) {
 | 
| +        return false;
 | 
| +    }
 | 
| +
 | 
| +    node->setAttribute(attr, SkSVGTransformValue(transform));
 | 
|      return true;
 | 
|  }
 | 
|  
 | 
| 
 |