Exemple #1
0
        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();
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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));
        }
Exemple #8
0
        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);
        }
Exemple #9
0
        public static void Do(String[] args)
        {
            var le = BallisticXmlDeserializer.ReadLegacyAmmunitionLibraryEntryFromFile(args[0]);

            BallisticXmlSerializer.SerializeToFile <AmmunitionLibraryEntry>(le, args[1]);
        }