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; }
public GpxReader(MemoryStream stream, IGpxTrackPointReader <TTrackPoint> trackPointReader) { reader = XmlReader.Create(stream, new XmlReaderSettings() { Async = false }); this.trackPointReader = trackPointReader; }
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)); }
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); }