|
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 "SkSVGPath.h" |
|
11 #include "SkSVGParser.h" |
|
12 |
|
13 const SkSVGAttribute SkSVGPath::gAttributes[] = { |
|
14 SVG_ATTRIBUTE(d) |
|
15 }; |
|
16 |
|
17 DEFINE_SVG_INFO(Path) |
|
18 |
|
19 void SkSVGPath::translate(SkSVGParser& parser, bool defState) { |
|
20 parser._startElement("path"); |
|
21 INHERITED::translate(parser, defState); |
|
22 bool hasMultiplePaths = false; |
|
23 const char* firstZ = strchr(f_d.c_str(), 'z'); |
|
24 if (firstZ != NULL) { |
|
25 firstZ++; // skip over 'z' |
|
26 while (*firstZ == ' ') |
|
27 firstZ++; |
|
28 hasMultiplePaths = *firstZ != '\0'; |
|
29 } |
|
30 if (hasMultiplePaths) { |
|
31 SkString& fillRule = parser.getPaintLast(SkSVGPaint::kFillRule); |
|
32 if (fillRule.size() > 0) |
|
33 parser._addAttribute("fillType", fillRule.equals("evenodd") ? "evenOdd" : "winding"); |
|
34 } |
|
35 SVG_ADD_ATTRIBUTE(d); |
|
36 parser._endElement(); |
|
37 } |