Index: experimental/svg/model/SkSVGNode.h |
diff --git a/experimental/svg/model/SkSVGNode.h b/experimental/svg/model/SkSVGNode.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..de180146b783b0b49e4e56d18bb7e889997eeacd |
--- /dev/null |
+++ b/experimental/svg/model/SkSVGNode.h |
@@ -0,0 +1,56 @@ |
+/* |
+ * 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 SkSVGNode_DEFINED |
+#define SkSVGNode_DEFINED |
+ |
+#include "SkRefCnt.h" |
+#include "SkSVGAttribute.h" |
+ |
+class SkCanvas; |
+class SkMatrix; |
+class SkSVGRenderContext; |
+class SkSVGValue; |
+ |
+enum class SkSVGTag { |
+ g, |
+ path, |
+ svg |
+}; |
+ |
+class SkSVGNode : public SkRefCnt { |
+public: |
+ virtual ~SkSVGNode(); |
+ |
+ SkSVGTag tag() const { return fTag; } |
+ |
+ virtual void appendChild(sk_sp<SkSVGNode>) = 0; |
+ |
+ void render(SkCanvas*) const; |
+ void render(SkCanvas*, const SkSVGRenderContext&) const; |
+ |
+ void setAttribute(SkSVGAttribute, const SkSVGValue&); |
+ |
+protected: |
+ SkSVGNode(SkSVGTag); |
+ |
+ virtual void onRender(SkCanvas*, const SkSVGRenderContext&) const = 0; |
+ |
+ virtual void onSetAttribute(SkSVGAttribute, const SkSVGValue&); |
+ |
+ virtual const SkMatrix& onLocalMatrix() const; |
+ |
+private: |
+ SkSVGTag fTag; |
+ |
+ // FIXME: this should be sparse |
+ SkSVGPresentationAttributes fPresentationAttributes; |
+ |
+ typedef SkRefCnt INHERITED; |
+}; |
+ |
+#endif // SkSVGNode_DEFINED |