Browse Source

Support for SVG fill-rule

Chlumsky 1 year ago
parent
commit
f04dc6acd3
1 changed files with 3 additions and 0 deletions
  1. 3 0
      ext/import-svg.cpp

+ 3 - 0
ext/import-svg.cpp

@@ -519,6 +519,9 @@ static void gatherPaths(SkPath &fullPath, int &flags, tinyxml2::XMLElement *pare
                 curPath.close();
                 curPath.close();
             } else
             } else
                 continue;
                 continue;
+            const char *fillRule = cur->Attribute("fill-rule");
+            if (fillRule && !strcmp(fillRule, "evenodd"))
+                curPath.setFillType(SkPathFillType::kEvenOdd);
             curPath.transform(combineTransformation(flags, transformation, cur->Attribute("transform"), cur->Attribute("transform-origin")));
             curPath.transform(combineTransformation(flags, transformation, cur->Attribute("transform"), cur->Attribute("transform-origin")));
             if (Op(fullPath, curPath, kUnion_SkPathOp, &fullPath))
             if (Op(fullPath, curPath, kUnion_SkPathOp, &fullPath))
                 flags |= SVG_IMPORT_SUCCESS_FLAG;
                 flags |= SVG_IMPORT_SUCCESS_FLAG;