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(); } }
public static void Do(string[] args) { if (args.Length == 0) { Console.WriteLine("usage: reticlename (for M855)"); Console.WriteLine(" reticlename 55 (for M193)"); return; } XmlDocument document = new XmlDocument(); document.Load($@"..\..\..\..\data\reticle\{args[0]}.reticle"); BallisticXmlDeserializer ds = new BallisticXmlDeserializer(); var reticle = ds.Deserialize <ReticleDefinition>(document.DocumentElement); TrajectoryPoint[] trajectoryPoints; if (args.Length > 1 && args[1] == "55") { trajectoryPoints = Debug1.M193(false, DistanceUnit.Yard.New(10)); } else { trajectoryPoints = Debug1.M855(false, DistanceUnit.Yard.New(10)); } Draw(reticle, args[0], trajectoryPoints); }
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 T BallisticXmlDeserialize <T>(this Stream stream) where T : class { XmlDocument document = new XmlDocument(); document.Load(stream); var xmlDeseralizer = new BallisticXmlDeserializer(); return(xmlDeseralizer.Deserialize <T>(document.DocumentElement)); }
public void ReadLegacy_Incomplete() { var entry = BallisticXmlDeserializer.ReadLegacyAmmunitionLibraryEntry("<ammo-info-ex table=\"G1\" bc=\"0.297\" bullet-weight=\"7.70000g\" muzzle-velocity=\"730.00000m/s\" name=\"7N23\" />"); entry.Should().NotBeNull(); entry.Ammunition.Should().NotBeNull(); entry.Name.Should().Be("7N23"); entry.AmmunitionType.Should().BeNull(); entry.Source.Should().BeNull(); entry.Caliber.Should().BeNull(); entry.BarrelLength.Should().BeNull(); entry.Ammunition.BallisticCoefficient.Should().Be(new BallisticCoefficient(0.297, DragTableId.G1)); entry.Ammunition.Weight.Should().Be(new Measurement <WeightUnit>(7.7, WeightUnit.Gram)); entry.Ammunition.MuzzleVelocity.Should().Be(new Measurement <VelocityUnit>(730, VelocityUnit.MetersPerSecond)); entry.Ammunition.BulletLength.Should().BeNull(); entry.Ammunition.BulletDiameter.Should().BeNull(); }
public void ReadLegacy_Metric() { var entry = BallisticXmlDeserializer.ReadLegacyAmmunitionLibraryEntry("<ammo-info-ex table=\"G1\" bc=\"0.297\" bullet-weight=\"7.70000g\" muzzle-velocity=\"730.00000m/s\" barrel-length=\"410.00000mm\" name=\"7N23\" source=\"GRAU\" caliber=\"7.62x39mm M43\" bullet-type=\"FMJ\" bullet-diameter=\"7.85mm\" bullet-length=\"26mm\" />"); entry.Should().NotBeNull(); entry.Ammunition.Should().NotBeNull(); entry.Name.Should().Be("7N23"); entry.AmmunitionType.Should().Be("FMJ"); entry.Source.Should().Be("GRAU"); entry.Caliber.Should().Be("7.62x39mm M43"); entry.BarrelLength.Should().Be(new Measurement <DistanceUnit>(410, DistanceUnit.Millimeter)); entry.Ammunition.BallisticCoefficient.Should().Be(new BallisticCoefficient(0.297, DragTableId.G1)); entry.Ammunition.Weight.Should().Be(new Measurement <WeightUnit>(7.7, WeightUnit.Gram)); entry.Ammunition.MuzzleVelocity.Should().Be(new Measurement <VelocityUnit>(730, VelocityUnit.MetersPerSecond)); entry.Ammunition.BulletLength.Should().Be(new Measurement <DistanceUnit>(26, DistanceUnit.Millimeter)); entry.Ammunition.BulletDiameter.Should().Be(new Measurement <DistanceUnit>(7.85, DistanceUnit.Millimeter)); }
public void ReadLegacy_Imperial() { var entry = BallisticXmlDeserializer.ReadLegacyAmmunitionLibraryEntry("<ammo-info-ex table=\"G7\" bc=\"0.305\" bullet-weight=\"250.00000000gr\" muzzle-velocity=\"2960.00000000ft/s\" barrel-length=\"24.00000000in\" bullet-length=\"1.55000000in\" bullet-diameter=\"0.33800000in\" name=\".338 Lapua 250gr\" source=\"Lapua/Litz\" caliber=\".338 Lapua Magnum\" bullet-type=\"FMJ\" />"); entry.Should().NotBeNull(); entry.Ammunition.Should().NotBeNull(); entry.Name.Should().Be(".338 Lapua 250gr"); entry.AmmunitionType.Should().Be("FMJ"); entry.Source.Should().Be("Lapua/Litz"); entry.Caliber.Should().Be(".338 Lapua Magnum"); entry.BarrelLength.Should().Be(new Measurement <DistanceUnit>(24, DistanceUnit.Inch)); entry.Ammunition.BallisticCoefficient.Should().Be(new BallisticCoefficient(0.305, DragTableId.G7)); entry.Ammunition.Weight.Should().Be(new Measurement <WeightUnit>(250, WeightUnit.Grain)); entry.Ammunition.MuzzleVelocity.Should().Be(new Measurement <VelocityUnit>(2960, VelocityUnit.FeetPerSecond)); entry.Ammunition.BulletLength.Should().Be(new Measurement <DistanceUnit>(1.55, DistanceUnit.Inch)); entry.Ammunition.BulletDiameter.Should().Be(new Measurement <DistanceUnit>(0.338, DistanceUnit.Inch)); }
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]); }