Beispiel #1
0
        public void EnsureValidShapeAsDiv()
        {
            var element = new DxfToSvgConverter().Convert(new DxfFile(), new DxfToSvgConverterOptions(new ConverterDxfRect(), new ConverterSvgRect(), svgId: "test-id"));

            Assert.Equal("div", element.Name.LocalName);
            Assert.Equal("test-id", element.Attribute("id").Value);
            var children = element.Elements().ToList();

            Assert.Equal(4, children.Count);

            var css = children[0];

            Assert.Equal("style", css.Name.LocalName);

            var details = children[1];

            Assert.Equal("details", details.Name.LocalName);

            var svg = children[2];

            Assert.Equal("svg", svg.Name.LocalName);

            var script = children[3];

            Assert.Equal("script", script.Name.LocalName);
            Assert.Equal("text/javascript", script.Attribute("type").Value);
            Assert.Contains("function", script.Value);
            Assert.DoesNotContain(">", script.Value);
        }
Beispiel #2
0
        public void EnsureValidShapeAsBareSvg()
        {
            // svg starts with 5 levels of `g`
            var element = new DxfToSvgConverter().Convert(new DxfFile(), new DxfToSvgConverterOptions(new ConverterDxfRect(), new ConverterSvgRect()));

            Assert.Equal("svg", element.Name.LocalName);
            var g = element.Elements().Single();

            for (int i = 0; i < 5; i++)
            {
                Assert.Equal("g", g.Name.LocalName);
                g = g.Elements().Single();
            }
        }
Beispiel #3
0
        public override async Task Plot(Drawing drawing, ViewPort viewPort, Stream outputStream, Func <string, Task <byte[]> > contentResolver)
        {
            var converter    = new DxfToSvgConverter();
            var fileSettings = new DxfFileSettings()
            {
                FileVersion = DxfFileVersion.R2004,
            };
            var dxfFile       = DxfFileHandler.ToDxfFile(drawing, viewPort, fileSettings);
            var plotViewPort  = ViewModel.ViewPort;
            var viewPortWidth = ViewModel.DisplayWidth / ViewModel.DisplayHeight * plotViewPort.ViewHeight;
            var dxfRect       = new ConverterDxfRect(plotViewPort.BottomLeft.X, plotViewPort.BottomLeft.X + viewPortWidth, plotViewPort.BottomLeft.Y, plotViewPort.BottomLeft.Y + plotViewPort.ViewHeight);
            var svgRect       = new ConverterSvgRect(ViewModel.DisplayWidth, ViewModel.DisplayHeight);
            var options       = new DxfToSvgConverterOptions(dxfRect, svgRect, imageHrefResolver: DxfToSvgConverterOptions.CreateDataUriResolver(contentResolver));
            var xml           = await converter.Convert(dxfFile, options);

            xml.Attribute("width").Value  = $"{ViewModel.OutputWidth}";
            xml.Attribute("height").Value = $"{ViewModel.OutputHeight}";

            var writerSettings = new XmlWriterSettings()
            {
                Indent      = true,
                IndentChars = "  "
            };

            using (var writer = XmlWriter.Create(outputStream, writerSettings))
            {
                if (ViewModel.PlotAsDocument)
                {
                    var doc = new XDocument(
                        new XDocumentType("svg", "-//W3C//DTD SVG 1.1//EN", "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd", null),
                        xml);
                    doc.WriteTo(writer);
                }
                else
                {
                    xml.WriteTo(writer);
                }

                writer.Flush();
            }
        }