internal void ParseSVGLinesToPath(string urlToFile) { svgParser parser = new svgParser(); Assets.Scripts.classes.SvgLineFile.Svg svg = parser.ParseSVGLine(urlToFile); List <Coords> coordsForId = new List <Coords>(); Coords coord = new Coords(); foreach (Assets.Scripts.classes.SvgLineFile.G letter in svg.G) { foreach (Assets.Scripts.classes.SvgLineFile.Line line in letter.Line) { coord = new Coords(); coord.X = float.Parse(line.X1 == null ? "0" : line.X1); coord.Y = float.Parse(line.Y1 == null ? "0" : line.Y1); coordsForId.Add(coord); coord = new Coords(); coord.X = float.Parse(line.X2 == null ? "0" : line.X2); coord.Y = float.Parse(line.Y2 == null ? "0" : line.Y2); coordsForId.Add(coord); } CreateSVGClassObject(letter.Id); svgPaths.Add(letter.Id, coordsForId); svgClassesToShow.Add(letter.Id); } }
internal void ParseSVGToPath(string urlToFile) { if (string.IsNullOrEmpty(urlToFile)) { return; } svgPaths.Clear(); svgClassesToShow.Clear(); svgParser parser = new svgParser(); SvgClass svg = parser.Parse(urlToFile); foreach (SvgPath svgPath in svg.SvgPath.Where(x => x.D.Length > 10)) { SVG = new SVGData(); SVG.Path(svgPath.D); Mesh.Fill(SVG); List <Coords> coordsForId = new List <Coords>(); float minX = Mesh.MeshData.Vertices.Min(x => x.x); float minY = Mesh.MeshData.Vertices.Min(y => y.y); float maxX = Mesh.MeshData.Vertices.Max(x => x.x); float maxY = Mesh.MeshData.Vertices.Max(y => y.y); float midX = (maxX - minX); float midY = (maxY - minY); for (int i = 0; i < Mesh.MeshData.Vertices.Count; i++) { Coords coord = new Coords { X = Mesh.MeshData.Vertices[i].x - midX, Y = Mesh.MeshData.Vertices[i].y - midY, Z = Mesh.MeshData.Vertices[i].z }; coordsForId.Add(coord); } if (svgPath.Class == null) { svgPath.Class = svgPath.Id; } else if (svgPath.Class.Length == 0) { svgPath.Class = svgPath.Id; } if (string.IsNullOrEmpty(svgPath.Class)) { svgPath.Class = (svgClassesToShow.Count + 1).ToString(); } CreateSVGClassObject(svgPath.Class); svgPaths.Add(svgPath.Class, coordsForId); svgClassesToShow.Add(svgPath.Class); } }