aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/svg/parser/SkSVGPolyline.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/svg/parser/SkSVGPolyline.cpp')
-rw-r--r--src/svg/parser/SkSVGPolyline.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/svg/parser/SkSVGPolyline.cpp b/src/svg/parser/SkSVGPolyline.cpp
new file mode 100644
index 0000000000..83dad488a5
--- /dev/null
+++ b/src/svg/parser/SkSVGPolyline.cpp
@@ -0,0 +1,43 @@
+
+/*
+ * Copyright 2006 The Android Open Source Project
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+
+#include "SkSVGPolyline.h"
+#include "SkSVGParser.h"
+
+enum {
+ kCliipRule,
+ kFillRule,
+ kPoints
+};
+
+const SkSVGAttribute SkSVGPolyline::gAttributes[] = {
+ SVG_LITERAL_ATTRIBUTE(clip-rule, f_clipRule),
+ SVG_LITERAL_ATTRIBUTE(fill-rule, f_fillRule),
+ SVG_ATTRIBUTE(points)
+};
+
+DEFINE_SVG_INFO(Polyline)
+
+void SkSVGPolyline::addAttribute(SkSVGParser& , int attrIndex,
+ const char* attrValue, size_t attrLength) {
+ if (attrIndex != kPoints)
+ return;
+ f_points.set("[");
+ f_points.append(attrValue, attrLength);
+ SkSVGParser::ConvertToArray(f_points);
+}
+
+void SkSVGPolyline::translate(SkSVGParser& parser, bool defState) {
+ parser._startElement("polyline");
+ INHERITED::translate(parser, defState);
+ SVG_ADD_ATTRIBUTE(points);
+ if (f_fillRule.size() > 0)
+ parser._addAttribute("fillType", f_fillRule.equals("evenodd") ? "evenOdd" : "winding");
+ parser._endElement();
+}