Example #1
0
        public void MultipleCallsToNewPacketWithoutCloseThrowInvalidOperationException()
        {
            PacketCesiumWriter unused = m_writer.OpenPacket(m_outputStream);
            var exception             = Assert.Throws <InvalidOperationException>(() => m_writer.OpenPacket(m_outputStream));

            StringAssert.Contains("already opened", exception.Message);
        }
 public void TestCesiumPropertyWriterSetUp()
 {
     StringWriter = new StringWriter();
     OutputStream = new CesiumOutputStream(StringWriter);
     Writer       = new CesiumStreamWriter();
     Packet       = Writer.OpenPacket(OutputStream);
 }
Example #3
0
        public void AvailabilityValueWritesAvailabilityProperty()
        {
            JulianDate start = new JulianDate(new GregorianDate(2012, 4, 2, 1, 2, 3));
            JulianDate stop  = new JulianDate(new GregorianDate(2012, 4, 3, 1, 2, 3));

            m_output.WriteStartSequence();
            using (PacketCesiumWriter packet = m_writer.OpenPacket(m_output))
            {
                packet.WriteAvailability(start, stop);
            }
            using (PacketCesiumWriter packet = m_writer.OpenPacket(m_output))
            {
                packet.WriteAvailability(new TimeInterval(start, stop));
            }
            using (PacketCesiumWriter packet = m_writer.OpenPacket(m_output))
            {
                var intervals = new List <TimeInterval>();
                intervals.Add(new TimeInterval(start, stop));
                intervals.Add(new TimeInterval(start.AddDays(2.0), stop.AddDays(2.0)));
                packet.WriteAvailability(intervals);
            }
            m_output.WriteEndSequence();

            Assert.AreEqual("[{\"availability\":\"20120402T010203Z/20120403T010203Z\"}," +
                            "{\"availability\":\"20120402T010203Z/20120403T010203Z\"}," +
                            "{\"availability\":[\"20120402T010203Z/20120403T010203Z\",\"20120404T010203Z/20120405T010203Z\"]}]",
                            m_sw.ToString());
        }
Example #4
0
 public void DisposeClosesPacket()
 {
     using (PacketCesiumWriter packet = m_writer.OpenPacket(m_output))
     {
     }
     Assert.AreEqual("{}", m_sw.ToString());
 }
Example #5
0
        private void WritePacket(int index)
        {
            ShapePart part = simplifiedRings[index];

            using (PacketCesiumWriter packetWriter = m_document.CesiumStreamWriter.OpenPacket(m_document.CesiumOutputStream))
            {
                packetWriter.WriteId(Guid.NewGuid().ToString());

                using (PolygonCesiumWriter polygonWriter = packetWriter.OpenPolygonProperty())
                {
                    using (MaterialCesiumWriter materialWriter = polygonWriter.OpenMaterialProperty())
                    {
                        using (SolidColorMaterialCesiumWriter colorWriter = materialWriter.OpenSolidColorProperty())
                        {
                            colorWriter.WriteColorProperty(m_color);
                        }
                    }
                }

                using (PositionListCesiumWriter positionWriter = packetWriter.OpenVertexPositionsProperty())
                {
                    PolygonShape        polygon   = (PolygonShape)m_shape;
                    List <Cartographic> positions = new List <Cartographic>();
                    for (int i = 0; i < part.Count; i++)
                    {
                        positions.Add(part[i]);
                    }
                    positionWriter.WriteCartographicRadians(positions);
                }
            }
        }
Example #6
0
        /// <summary>
        /// Writes the polyline to its <see cref="CzmlDocument"/>.
        /// </summary>
        public override void Write()
        {
            PolylineShape polyline = (PolylineShape)m_shape;

            for (int i = 0; i < polyline.Count; i++)
            {
                ShapePart part = polyline[i];
                using (PacketCesiumWriter packetWriter = m_document.CesiumStreamWriter.OpenPacket(m_document.CesiumOutputStream))
                {
                    packetWriter.WriteId(Guid.NewGuid().ToString());
                    using (PolylineCesiumWriter polylineWriter = packetWriter.OpenPolylineProperty())
                    {
                        using (var materialWriter = polylineWriter.OpenMaterialProperty())
                            using (var colorWriter = materialWriter.OpenSolidColorProperty())
                            {
                                colorWriter.WriteColorProperty(m_color);
                            }

                        List <Cartographic> positions = new List <Cartographic>();
                        for (int x = 0; x < part.Count; x++)
                        {
                            positions.Add(part[x]);
                        }
                        polylineWriter.WritePositionsPropertyCartographicRadians(positions);
                    }
                }
            }
        }
Example #7
0
        public void NewPacketWritesObjectLiteral()
        {
            PacketCesiumWriter packet = m_writer.OpenPacket(m_output);

            packet.Close();

            Assert.AreEqual("{}", m_sw.ToString());
        }
Example #8
0
        public void TestPositionProperty()
        {
            PacketCesiumWriter   packet   = m_writer.OpenPacket(m_outputStream);
            PositionCesiumWriter position = packet.OpenPositionProperty();

            Assert.IsNotNull(position);
            Assert.AreEqual("{\"position\":", m_stringWriter.ToString());
        }
Example #9
0
        public void IdValueWritesIdProperty()
        {
            PacketCesiumWriter packet = m_writer.OpenPacket(m_output);

            packet.WriteId("foo");
            packet.Close();
            Assert.AreEqual("{\"id\":\"foo\"}", m_sw.ToString());
        }
Example #10
0
        public void TestIdProperty()
        {
            PacketCesiumWriter packet = m_writer.OpenPacket(m_outputStream);

            packet.WriteId("foo");
            packet.Close();
            Assert.AreEqual("{\"id\":\"foo\"}", m_stringWriter.ToString());
        }
Example #11
0
        public void TestDescriptionProperty()
        {
            PacketCesiumWriter packet = m_writer.OpenPacket(m_outputStream);

            packet.WriteDescriptionProperty("blah");
            packet.Close();
            Assert.AreEqual("{\"description\":\"blah\"}", m_stringWriter.ToString());
        }
Example #12
0
        public void OpensObjectLiteralOnOpenAndClosesItOnClose()
        {
            PacketCesiumWriter packet = new PacketCesiumWriter();

            packet.Open(m_outputStream);
            Assert.AreEqual("{", m_stringWriter.ToString());
            packet.Close();
            Assert.AreEqual("{}", m_stringWriter.ToString());
        }
        public void TestDeleteProperty()
        {
            PacketCesiumWriter packet = m_writer.OpenPacket(m_output);

            packet.WriteId("foo");
            packet.WriteDelete(true);
            packet.Close();
            Assert.AreEqual("{\"id\":\"foo\",\"delete\":true}", m_sw.ToString());
        }
Example #14
0
        /// <summary>
        /// Writes the availability intervals from either the TimeSpan or TimeStamp elements from the kml document.
        /// </summary>
        /// <param name="timePrimitiveParentElement">The parent element that contains the kml TimePrimitive element.</param>
        /// <param name="packetWriter">The packet writer.</param>
        /// <param name="docNamespace">The namespace of the kml document.</param>
        public static void WriteAvailability(XElement timePrimitiveParentElement, PacketCesiumWriter packetWriter, XNamespace docNamespace)
        {
            TimeInterval interval = GetInterval(timePrimitiveParentElement, docNamespace);

            if (interval != null)
            {
                packetWriter.WriteAvailability(interval);
            }
        }
Example #15
0
        public void BillboardWritesBillboardProperty()
        {
            PacketCesiumWriter packet = m_writer.OpenPacket(m_output);

            using (BillboardCesiumWriter billboard = packet.OpenBillboardProperty())
            {
                Assert.IsNotNull(billboard);
            }
            Assert.AreEqual("{\"billboard\":", m_sw.ToString());
        }
Example #16
0
        public void SuccessiveCallsToNewPacketReturnSameInstance()
        {
            m_output.WriteStartSequence();
            PacketCesiumWriter packet1 = m_writer.OpenPacket(m_output);

            packet1.Close();
            PacketCesiumWriter packet2 = m_writer.OpenPacket(m_output);

            packet2.Close();
            m_output.WriteEndSequence();
            Assert.AreSame(packet1, packet2);
        }
Example #17
0
        /// <summary>
        /// Writes the point to its <see cref="CzmlDocument"/>.
        /// </summary>
        public override void Write()
        {
            using (PacketCesiumWriter packetWriter = m_document.CesiumStreamWriter.OpenPacket(m_document.CesiumOutputStream))
            {
                packetWriter.WriteId(Guid.NewGuid().ToString());
                PointShape point = (PointShape)m_shape;
                using (PositionCesiumWriter position = packetWriter.OpenPositionProperty())
                {
                    position.WriteCartographicRadians(point.Position);
                }

                using (PointCesiumWriter pointWriter = packetWriter.OpenPointProperty())
                {
                    pointWriter.WriteColorProperty(m_color);
                }
            }
        }
Example #18
0
        /// <summary>
        /// Writes each point to its <see cref="CzmlDocument"/> as a separate packet.
        /// </summary>
        private void WritePacket(int index)
        {
            using (PacketCesiumWriter packetWriter = m_document.CesiumStreamWriter.OpenPacket(m_document.CesiumOutputStream))
            {
                packetWriter.WriteId(Guid.NewGuid().ToString());
                MultiPointShape multipoint = (MultiPointShape)m_shape;
                using (PositionCesiumWriter position = packetWriter.OpenPositionProperty())
                {
                    position.WriteCartographicRadians(multipoint[index]);
                }

                using (PointCesiumWriter pointWriter = packetWriter.OpenPointProperty())
                {
                    pointWriter.WriteColorProperty(m_color);
                }
            }
        }
Example #19
0
 /// <summary>
 /// Writes a new polyline packet for each part of the shape.
 /// </summary>
 /// <param name="part">The <see cref="ShapePart"/> of the <see cref="PolylineShape"/> to write</param>
 private void WritePacket(ShapePart part)
 {
     using (PacketCesiumWriter packetWriter = m_document.CesiumStreamWriter.OpenPacket(m_document.CesiumOutputStream))
     {
         packetWriter.WriteId(Guid.NewGuid().ToString());
         using (PositionListCesiumWriter position = packetWriter.OpenVertexPositionsProperty())
         {
             PolylineShape       polyline  = (PolylineShape)m_shape;
             List <Cartographic> positions = new List <Cartographic>();
             for (int i = 0; i < part.Count; i++)
             {
                 positions.Add(part[i]);
             }
             position.WriteCartographicRadians(positions);
         }
         using (PolylineCesiumWriter polylineWriter = packetWriter.OpenPolylineProperty())
         {
             polylineWriter.WriteColorProperty(m_color);
         }
     }
 }
Example #20
0
 /// <summary>
 /// Writes the czml packet of the given coordinate in the series.
 /// </summary>
 /// <param name="index">The index of the coordinate to write as a packet.</param>
 public void WritePacket(int index)
 {
     if (index < m_coordinates.Length)
     {
         using (PacketCesiumWriter packetWriter = m_document.CesiumStreamWriter.OpenPacket(m_document.CesiumOutputStream))
         {
             packetWriter.WriteId(m_id + index);
             using (PolylineCesiumWriter polyline = packetWriter.OpenPolylineProperty())
             {
                 polyline.WriteColorProperty(ColorFromHSV(0.6 - (m_coordinates[index].Height * 0.5), 1.0, 1.0));
             }
             using (PositionListCesiumWriter vertexPositions = packetWriter.OpenVertexPositionsProperty())
             {
                 Cartographic[] positions = new Cartographic[] {
                     new Cartographic(m_coordinates[index].Longitude, m_coordinates[index].Latitude, 0.0),
                     new Cartographic(m_coordinates[index].Longitude, m_coordinates[index].Latitude, m_coordinates[index].Height * m_scalar)
                 };
                 vertexPositions.WriteCartographicDegrees(positions);
             }
         }
     }
 }
Example #21
0
        public void TestAvailabilityProperty()
        {
            JulianDate start = new GregorianDate(2012, 4, 2, 1, 2, 3).ToJulianDate();
            JulianDate stop  = new GregorianDate(2012, 4, 3, 1, 2, 3).ToJulianDate();

            m_outputStream.WriteStartSequence();
            using (PacketCesiumWriter packet = m_writer.OpenPacket(m_outputStream))
            {
                packet.WriteAvailability(start, stop);
            }

            using (PacketCesiumWriter packet = m_writer.OpenPacket(m_outputStream))
            {
                packet.WriteAvailability(new TimeInterval(start, stop));
            }

            using (PacketCesiumWriter packet = m_writer.OpenPacket(m_outputStream))
            {
                var intervals = new List <TimeInterval>
                {
                    new TimeInterval(start, stop),
                    new TimeInterval(start.AddDays(2.0), stop.AddDays(2.0))
                };
                packet.WriteAvailability(intervals);
            }

            m_outputStream.WriteEndSequence();

            const string expected =
                "[" +
                "{\"availability\":\"20120402T010203Z/20120403T010203Z\"}," +
                "{\"availability\":\"20120402T010203Z/20120403T010203Z\"}," +
                "{\"availability\":[\"20120402T010203Z/20120403T010203Z\",\"20120404T010203Z/20120405T010203Z\"]}" +
                "]";

            Assert.AreEqual(expected, m_stringWriter.ToString());
        }
Example #22
0
        public void MultipleCallsToNewPacketWithoutCloseThrowInvalidOperationException()
        {
            PacketCesiumWriter packet = m_writer.OpenPacket(m_output);

            packet = m_writer.OpenPacket(m_output);
        }
        public void Sandbox()
        {
            JulianDate date = new JulianDate(2451545.0);

            using (StringWriter sw = new StringWriter())
            {
                CesiumOutputStream output = new CesiumOutputStream(sw);
                output.PrettyFormatting = true;
                CesiumStreamWriter writer = new CesiumStreamWriter();

                using (PacketCesiumWriter packet = writer.OpenPacket(output))
                {
                    packet.WriteId("MyID");
                    packet.WriteAvailability(date, date.AddDays(1.0));

                    using (PositionCesiumWriter position = packet.OpenPositionProperty())
                        using (CesiumIntervalListWriter <PositionCesiumWriter> intervalList = position.OpenMultipleIntervals())
                        {
                            using (PositionCesiumWriter interval = intervalList.OpenInterval())
                            {
                                interval.WriteInterval(new TimeInterval(date, date.AddDays(1.0)));
                                interval.WriteCartesian(new Cartesian(1.0, 2.0, 3.0));
                            }

                            using (PositionCesiumWriter interval = intervalList.OpenInterval(date.AddDays(1.0), date.AddDays(2.0)))
                            {
                                var dates     = new List <JulianDate>();
                                var positions = new List <Cartographic>();

                                dates.Add(date.AddDays(1.0));
                                positions.Add(Cartographic.Zero);

                                dates.Add(date.AddDays(1.5));
                                positions.Add(new Cartographic(1.0, 0.0, 0.0));

                                dates.Add(date.AddDays(2.0));
                                positions.Add(new Cartographic(0.0, 1.0, 0.0));

                                interval.WriteCartographicRadians(dates, positions);
                            }
                        }
                    using (OrientationCesiumWriter orientation = packet.OpenOrientationProperty())
                        using (CesiumIntervalListWriter <OrientationCesiumWriter> intervalList = orientation.OpenMultipleIntervals())
                        {
                            using (OrientationCesiumWriter interval = intervalList.OpenInterval())
                            {
                                interval.WriteAxes("MyMadeUpAxes");
                                interval.WriteInterval(new TimeInterval(date, date.AddDays(1.0)));
                                interval.WriteUnitQuaternion(new UnitQuaternion(1, 0, 0, 0));
                            }
                            using (OrientationCesiumWriter interval = intervalList.OpenInterval())
                            {
                                interval.WriteInterpolationAlgorithm(CesiumInterpolationAlgorithm.Linear);
                                interval.WriteInterpolationDegree(1);

                                var dates        = new List <JulianDate>();
                                var orientations = new List <UnitQuaternion>();

                                dates.Add(date.AddDays(1.0));
                                orientations.Add(UnitQuaternion.Identity);

                                dates.Add(date.AddDays(1.5));
                                orientations.Add(new UnitQuaternion(0.0, 1.0, 0.0, 0.0));

                                dates.Add(date.AddDays(2.0));
                                orientations.Add(new UnitQuaternion(0.0, 0.0, 1.0, 0.0));

                                interval.WriteUnitQuaternion(dates, orientations);
                            }
                        }
                }

                Console.WriteLine(sw.ToString());
            }
        }