Initial SVG model

A minimal subset needed to render tiger.svg: <svg>, <g>, <path>, 'd', 'fill'/'stroke' (color-only), 'transform'.

R=reed@google.com,robertphillips@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2164193002

Review-Url: https://codereview.chromium.org/2164193002
diff --git a/experimental/svg/model/SkSVGTransformableNode.h b/experimental/svg/model/SkSVGTransformableNode.h
new file mode 100644
index 0000000..c345e85
--- /dev/null
+++ b/experimental/svg/model/SkSVGTransformableNode.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2016 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkSVGTransformableNode_DEFINED
+#define SkSVGTransformableNode_DEFINED
+
+#include "SkMatrix.h"
+#include "SkSVGNode.h"
+
+class SkSVGTransformableNode : public SkSVGNode {
+public:
+    virtual ~SkSVGTransformableNode() = default;
+
+    void setTransform(const SkMatrix& m) { fMatrix = m; }
+
+protected:
+    SkSVGTransformableNode(SkSVGTag);
+
+    void onSetAttribute(SkSVGAttribute, const SkSVGValue&) override;
+
+    const SkMatrix& onLocalMatrix() const override { return fMatrix; }
+
+private:
+    // FIXME: should be sparse
+    SkMatrix fMatrix;
+
+    typedef SkSVGNode INHERITED;
+};
+
+#endif // SkSVGTransformableNode_DEFINED