• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
DEFINE_SVG_INFO(Path)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