public SvgDocument ProduceSvg(DrawingElement rootElement) { if (rootElement == null) { return(new SvgDocument { FontFamily = "Arial", FontSize = SvgTextHeight }); } rootElement.SortDescendentsByZOrder(); rootElement.Arrange(); rootElement.UpdateConnectedElements(); rootElement.ArrangeMargins(); var drawing = rootElement.Draw(); var svgDocument = new SvgDocument { FontFamily = "Arial", FontSize = SvgTextHeight }; var styles = GetTextResource("drawing.css"); if (!string.IsNullOrEmpty(styles)) { var styleElement = new NonSvgElement("style") { Content = "\n" + styles }; svgDocument.Children.Add(styleElement); } var script = GetTextResource("drawing.js"); if (!string.IsNullOrEmpty(script)) { svgDocument.CustomAttributes.Add("onload", "init(evt)"); var scriptElement = new NonSvgElement("script"); scriptElement.CustomAttributes.Add("type", "text/ecmascript"); scriptElement.Content = "\n" + script; svgDocument.Children.Add(scriptElement); } svgDocument.Children.Add(drawing); svgDocument.Width = rootElement.Left + rootElement.Width; svgDocument.Height = rootElement.Top + rootElement.Height; svgDocument.ViewBox = new SvgViewBox(0, 0, svgDocument.Width, svgDocument.Height); return(svgDocument); }