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 != nullptr) { 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 } 38