Exemplo n.º 1
0
    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);
        }
    }
Exemplo n.º 2
0
    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);
        }
    }