|
1 |
|
2 /* |
|
3 * Copyright 2006 The Android Open Source Project |
|
4 * |
|
5 * Use of this source code is governed by a BSD-style license that can be |
|
6 * found in the LICENSE file. |
|
7 */ |
|
8 |
|
9 |
|
10 #include "SkSVGPolyline.h" |
|
11 #include "SkSVGParser.h" |
|
12 |
|
13 enum { |
|
14 kCliipRule, |
|
15 kFillRule, |
|
16 kPoints |
|
17 }; |
|
18 |
|
19 const SkSVGAttribute SkSVGPolyline::gAttributes[] = { |
|
20 SVG_LITERAL_ATTRIBUTE(clip-rule, f_clipRule), |
|
21 SVG_LITERAL_ATTRIBUTE(fill-rule, f_fillRule), |
|
22 SVG_ATTRIBUTE(points) |
|
23 }; |
|
24 |
|
25 DEFINE_SVG_INFO(Polyline) |
|
26 |
|
27 void SkSVGPolyline::addAttribute(SkSVGParser& , int attrIndex, |
|
28 const char* attrValue, size_t attrLength) { |
|
29 if (attrIndex != kPoints) |
|
30 return; |
|
31 f_points.set("["); |
|
32 f_points.append(attrValue, attrLength); |
|
33 SkSVGParser::ConvertToArray(f_points); |
|
34 } |
|
35 |
|
36 void SkSVGPolyline::translate(SkSVGParser& parser, bool defState) { |
|
37 parser._startElement("polyline"); |
|
38 INHERITED::translate(parser, defState); |
|
39 SVG_ADD_ATTRIBUTE(points); |
|
40 if (f_fillRule.size() > 0) |
|
41 parser._addAttribute("fillType", f_fillRule.equals("evenodd") ? "evenOdd" : "winding"); |
|
42 parser._endElement(); |
|
43 } |