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); }
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(); } }
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(); } }