Example #1
0
        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);
        }