예제 #1
0
파일: ReaderTests.cs 프로젝트: macias/Gpx
        private static GpxTrack readTrack<TTrackPoint>(string path, IGpxTrackPointReader<TTrackPoint> trackPointReader = null)
            where TTrackPoint : GpxTrackPoint, new()
        {
            GpxTrack track = null;

            using (GpxIOFactory.CreateReader(path, trackPointReader, out IGpxReader reader, out _))
            {
                while (reader.Read(out GpxObjectType type))
                {
                    switch (type)
                    {
                        case GpxObjectType.Metadata:
                            break;
                        case GpxObjectType.WayPoint:
                            break;
                        case GpxObjectType.Route:
                            break;
                        case GpxObjectType.Track:
                            {
                                if (track == null)
                                    track = reader.Track;
                                else
                                    throw new InvalidOperationException("Track is already read");
                                break;
                            }
                    }
                }
            }

            if (track == null)
                throw new NullReferenceException("Track was not read");

            return track;

        }
예제 #2
0
 public GpxReader(MemoryStream stream, IGpxTrackPointReader <TTrackPoint> trackPointReader)
 {
     reader = XmlReader.Create(stream, new XmlReaderSettings()
     {
         Async = false
     });
     this.trackPointReader = trackPointReader;
 }
예제 #3
0
파일: GpxIOFactory.cs 프로젝트: macias/Gpx
        public static IDisposable CreateReader <TTrackPoint>(string filepath, IGpxTrackPointReader <TTrackPoint> trackPointReader,
                                                             out IGpxReader reader, out IStreamProgress streamProgress)
            where TTrackPoint : GpxTrackPoint, new()
        {
            var         stream = new MemoryStream(System.IO.File.ReadAllBytes(filepath));
            IDisposable result = CreateReader(stream, trackPointReader, out reader, out streamProgress);

            return(new Disposable(result, stream));
        }
예제 #4
0
파일: GpxIOFactory.cs 프로젝트: macias/Gpx
        public static IDisposable CreateReader <TTrackPoint>(MemoryStream stream, IGpxTrackPointReader <TTrackPoint> trackPointReader,
                                                             out IGpxReader reader, out IStreamProgress streamProgress)
            where TTrackPoint : GpxTrackPoint, new()
        {
            var result = new GpxReader <TTrackPoint>(stream, trackPointReader ?? new NopTrackPointReader <TTrackPoint>());

            streamProgress = new StreamProgress(stream);
            reader         = result;
            return(result);
        }