private static void Draw(ReticleDefinition reticle, string baseName, TrajectoryPoint[] trajectory) { const double svgWidth = 10; double svgHeight = Math.Round(reticle.Size.Y / reticle.Size.X * svgWidth, 2); var canvas = SvgCanvasFactory.Create("reticle", $"{svgWidth}in", $"{svgHeight}in"); var controller = new ReticleDrawController(reticle, canvas); controller.DrawReticle(); controller.DrawBulletDropCompensator(trajectory, DistanceUnit.Yard.New(100), false, DistanceUnit.Yard, "black"); var svg = SvgCanvasFactory.ToSvg(canvas); const int pngWidth = 1024; int pngHeight = (int)((reticle.Size.Y / reticle.Size.X) * pngWidth); XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(svg); var svgDocument = SvgDocument.Open(xmlDocument); var bm = svgDocument.Draw(pngWidth, pngHeight); var bm1 = new Bitmap(pngWidth, pngHeight); Graphics g = Graphics.FromImage(bm1); g.FillRectangle(Brushes.White, 0, 0, pngWidth, pngHeight); g.DrawImage(bm, 0, 0); bm1.Save($"{baseName}.png", ImageFormat.Png); xmlDocument.Save($"{baseName}.svg"); xmlDocument = new XmlDocument(); BallisticXmlSerializer serializer = new BallisticXmlSerializer(xmlDocument); xmlDocument.AppendChild(serializer.Serialize(reticle)); xmlDocument.Save($"{baseName}.reticle"); }
public void SerializeToFile() { var tempFileName = Path.GetTempFileName(); try { FlatteningContainer container = new FlatteningContainer() { Value1 = new Implementation1() { Name = "123" }, Value2 = new Implementation2() { ID = 456 }, }; BallisticXmlSerializer.SerializeToFile(container, tempFileName); File.Exists(tempFileName).Should().BeTrue(); var container1 = BallisticXmlDeserializer.ReadFromFile <FlatteningContainer>(tempFileName); container1.Value1?.Name.Should().Be("123"); container1.Value2?.ID.Should().Be(456); } finally { if (File.Exists(tempFileName)) { File.Delete(tempFileName); } File.Exists(tempFileName).Should().BeFalse(); } }
private static void Draw(ReticleDefinition reticle, string baseName) { var canvas = SvgCanvasFactory.Create("reticle", "2in", "2in"); var controller = new ReticleDrawController(reticle, canvas); controller.DrawReticle(); var svg = SvgCanvasFactory.ToSvg(canvas); XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(svg); var svgDocument = SvgDocument.Open(xmlDocument); var bm = svgDocument.Draw(1024, 1024); var bm1 = new Bitmap(1024, 1024); Graphics g = Graphics.FromImage(bm1); g.FillRectangle(Brushes.White, 0, 0, 1024, 1024); g.DrawImage(bm, 0, 0); bm1.Save($"{baseName}.png", ImageFormat.Png); xmlDocument.Save($"{baseName}.svg"); xmlDocument = new XmlDocument(); BallisticXmlSerializer serializer = new BallisticXmlSerializer(xmlDocument); xmlDocument.AppendChild(serializer.Serialize(reticle)); xmlDocument.Save($"{baseName}.reticle"); xmlDocument = new XmlDocument(); xmlDocument.Load($"{baseName}.reticle"); BallisticXmlDeserializer deserializer = new BallisticXmlDeserializer(); _ = deserializer.Deserialize <ReticleDefinition>(xmlDocument.DocumentElement); }
public static void BallisticXmlSerialize <T>(this T value, Stream stream) where T : class { var xmlSeralizer = new BallisticXmlSerializer(); xmlSeralizer.Document.AppendChild(xmlSeralizer.Serialize(value)); xmlSeralizer.Document.Save(stream); }
public void SerializeStream1() { FlatteningContainer container = new FlatteningContainer() { Value1 = new Implementation1() { Name = "123" }, Value2 = new Implementation2() { ID = 456 }, }; using MemoryStream ms = new MemoryStream(); BallisticXmlSerializer.SerializeToStream(container, ms); using MemoryStream ms1 = new MemoryStream(ms.ToArray()); var container1 = BallisticXmlDeserializer.ReadFromStream <FlatteningContainer>(ms1); container1.Value1?.Name.Should().Be("123"); container1.Value2?.ID.Should().Be(456); }
public static void Do(String[] args) { var le = BallisticXmlDeserializer.ReadLegacyAmmunitionLibraryEntryFromFile(args[0]); BallisticXmlSerializer.SerializeToFile <AmmunitionLibraryEntry>(le, args[1]); }