Index: experimental/svg/model/SkSVGDOM.cpp |
diff --git a/experimental/svg/model/SkSVGDOM.cpp b/experimental/svg/model/SkSVGDOM.cpp |
index 6e4bc49a9f803ad7138df33d990f62600fa4173c..4ae5fedd3e2d1ec0579af9ee696106a5d2347695 100644 |
--- a/experimental/svg/model/SkSVGDOM.cpp |
+++ b/experimental/svg/model/SkSVGDOM.cpp |
@@ -14,6 +14,7 @@ |
#include "SkSVGG.h" |
#include "SkSVGNode.h" |
#include "SkSVGPath.h" |
+#include "SkSVGPoly.h" |
#include "SkSVGRect.h" |
#include "SkSVGRenderContext.h" |
#include "SkSVGSVG.h" |
@@ -122,6 +123,18 @@ bool SetLineJoinAttribute(const sk_sp<SkSVGNode>& node, SkSVGAttribute attr, |
return true; |
} |
+bool SetPointsAttribute(const sk_sp<SkSVGNode>& node, SkSVGAttribute attr, |
+ const char* stringValue) { |
+ SkSVGPointsType points; |
+ SkSVGAttributeParser parser(stringValue); |
+ if (!parser.parsePoints(&points)) { |
+ return false; |
+ } |
+ |
+ node->setAttribute(attr, SkSVGPointsValue(points)); |
+ return true; |
+} |
+ |
SkString TrimmedString(const char* first, const char* last) { |
SkASSERT(first); |
SkASSERT(last); |
@@ -204,6 +217,7 @@ SortedDictionaryEntry<AttrParseInfo> gAttributeParseInfo[] = { |
{ "fill" , { SkSVGAttribute::kFill , SetPaintAttribute }}, |
{ "fill-opacity" , { SkSVGAttribute::kFillOpacity , SetNumberAttribute }}, |
{ "height" , { SkSVGAttribute::kHeight , SetLengthAttribute }}, |
+ { "points" , { SkSVGAttribute::kPoints , SetPointsAttribute }}, |
{ "rx" , { SkSVGAttribute::kRx , SetLengthAttribute }}, |
{ "ry" , { SkSVGAttribute::kRy , SetLengthAttribute }}, |
{ "stroke" , { SkSVGAttribute::kStroke , SetPaintAttribute }}, |
@@ -220,10 +234,12 @@ SortedDictionaryEntry<AttrParseInfo> gAttributeParseInfo[] = { |
}; |
SortedDictionaryEntry<sk_sp<SkSVGNode>(*)()> gTagFactories[] = { |
- { "g" , []() -> sk_sp<SkSVGNode> { return SkSVGG::Make(); }}, |
- { "path", []() -> sk_sp<SkSVGNode> { return SkSVGPath::Make(); }}, |
- { "rect", []() -> sk_sp<SkSVGNode> { return SkSVGRect::Make(); }}, |
- { "svg" , []() -> sk_sp<SkSVGNode> { return SkSVGSVG::Make(); }}, |
+ { "g" , []() -> sk_sp<SkSVGNode> { return SkSVGG::Make(); }}, |
+ { "path" , []() -> sk_sp<SkSVGNode> { return SkSVGPath::Make(); }}, |
+ { "polygon" , []() -> sk_sp<SkSVGNode> { return SkSVGPoly::MakePolygon(); }}, |
+ { "polyline", []() -> sk_sp<SkSVGNode> { return SkSVGPoly::MakePolyline(); }}, |
+ { "rect" , []() -> sk_sp<SkSVGNode> { return SkSVGRect::Make(); }}, |
+ { "svg" , []() -> sk_sp<SkSVGNode> { return SkSVGSVG::Make(); }}, |
}; |
struct ConstructionContext { |