Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("Usage AlphaTab.ScoreDump.exe Path");
                return;
            }

            // we need to use english culture to have correct string variants of floating points (dot as decimal separator)
            Thread.CurrentThread.CurrentCulture   = new CultureInfo("en-us");
            Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-us");

            // load score
            Score score = ScoreLoader.LoadScore(args[0]);

            // render score with svg engine
            Settings settings = Settings.Defaults;

            settings.Engine = "svg";
            ScoreRenderer renderer = new ScoreRenderer(settings);

            // get iterate tracks
            for (int i = 0; i < 1; i++)
            {
                Track track = score.Tracks[i];
                // render track
                Console.WriteLine("Rendering track {0} - {1}", i + 1, track.Name);
                var       totalWidth  = 0;
                var       totalHeight = 0;
                XDocument merged      = null;
                var       currentY    = 0f;
                renderer.PreRender += r =>
                {
                    // append the svg close tag which would be part of the RenderFinished event
                    var svgString = r.RenderResult.ToString() + "</svg>";
                    merged = XDocument.Parse(svgString);
                };
                renderer.PartialRenderFinished += r =>
                {
                    var subSvg  = XDocument.Parse(r.RenderResult.ToString());
                    var subRoot = subSvg.Root;
                    subRoot.SetAttributeValue("x", "0px");
                    subRoot.SetAttributeValue("y", ((int)currentY) + "px");
                    merged.Root.Add(subRoot);
                    currentY += r.Height;
                };
                renderer.RenderFinished += r =>
                {
                    totalWidth  = (int)r.TotalWidth;
                    totalHeight = (int)r.TotalHeight;
                };
                renderer.Render(track);

                merged.Root.SetAttributeValue("width", totalWidth + "px");
                merged.Root.SetAttributeValue("height", totalHeight + "px");


                var svg       = new StringWriter();
                var xmlWriter = new EntitizingXmlWriter(svg);
                merged.Save(xmlWriter);

                FileInfo info = new FileInfo(args[0]);
                string   path = Path.Combine(info.DirectoryName, Path.GetFileNameWithoutExtension(info.Name) + "-" + i + ".svg");
                File.WriteAllText(path, svg.ToString());
            }
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("Usage AlphaTab.ScoreDump.exe Path");
                return;
            }

            // we need to use english culture to have correct string variants of floating points (dot as decimal separator)
            Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us");
            Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-us");

            // load score
            Score score = ScoreLoader.LoadScore(args[0]);

            // render score with svg engine
            Settings settings = Settings.Defaults;
            settings.Engine = "svg";
            ScoreRenderer renderer = new ScoreRenderer(settings);

            // get iterate tracks
            for (int i = 0; i < 1; i++)
            {
                Track track = score.Tracks[i];
                // render track
                Console.WriteLine("Rendering track {0} - {1}", i + 1, track.Name);
                var totalWidth = 0;
                var totalHeight = 0;
                XDocument merged = null;
                var currentY = 0f;
                renderer.PreRender += r =>
                {
                    // append the svg close tag which would be part of the RenderFinished event
                    var svgString = r.RenderResult.ToString() + "</svg>";
                    merged = XDocument.Parse(svgString);
                };
                renderer.PartialRenderFinished += r =>
                {
                    var subSvg = XDocument.Parse(r.RenderResult.ToString());
                    var subRoot = subSvg.Root;
                    subRoot.SetAttributeValue("x", "0px");
                    subRoot.SetAttributeValue("y", ((int)currentY) + "px");
                    merged.Root.Add(subRoot);
                    currentY += r.Height;
                };
                renderer.RenderFinished += r =>
                {
                    totalWidth = (int)r.TotalWidth;
                    totalHeight = (int)r.TotalHeight;
                };
                renderer.Render(track);

                merged.Root.SetAttributeValue("width", totalWidth + "px");
                merged.Root.SetAttributeValue("height", totalHeight + "px");

                var svg = new StringWriter();
                var xmlWriter = new EntitizingXmlWriter(svg);
                merged.Save(xmlWriter);

                FileInfo info = new FileInfo(args[0]);
                string path = Path.Combine(info.DirectoryName, Path.GetFileNameWithoutExtension(info.Name) + "-" + i + ".svg");
                File.WriteAllText(path, svg.ToString());
            }
        }