public void GenerateSvg(Keyboard keyboard, string path, SvgGenerationOptions options = null) => SvgGenerator.GenerateSvg(keyboard, path, options ?? new SvgGenerationOptions());
// What to do when the user wants to export a TeX file private void exportHandler(object sender, EventArgs e) { Stream stream; SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Scalable Vector Graphics (*.svg)|*.svg|TeX files (*.tex)|*.tex"; saveFileDialog.RestoreDirectory = true; if(saveFileDialog.ShowDialog() == DialogResult.OK) { if((stream = saveFileDialog.OpenFile()) != null) { string name = saveFileDialog.FileName; string ext = Path.GetExtension(saveFileDialog.FileName).ToLower(); switch(ext){ case ".tex": LatexGenerator lg = new LatexGenerator(); using (StreamWriter writer = new StreamWriter(stream)) { lg.FileWriter = writer; writer.WriteLine("\\documentclass{article}"); writer.WriteLine("\\usepackage{tikz}"); writer.WriteLine("\\begin{document}"); writer.WriteLine("\\begin{tikzpicture}"); writer.WriteLine("\\begin{scope}[yscale= -3, xscale= 3]"); foreach(Shape s in this.shapes) { s.OutputApi = lg; s.Draw(); } writer.WriteLine("\\end{scope}"); writer.WriteLine("\\end{tikzpicture}"); writer.WriteLine("\\end{document}"); } break; default: //save as svg by default SvgGenerator sg = new SvgGenerator(); using (StreamWriter writer = new StreamWriter(stream)) { sg.FileWriter = writer; writer.WriteLine("<?xml version=\"1.0\" standalone=\"no\"?>"); writer.WriteLine("<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">"); writer.WriteLine("<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">"); foreach (Shape s in this.shapes) { s.OutputApi = sg; s.Draw(); } writer.WriteLine("</svg>"); } break; } } } }