예제 #1
0
        public GTrack Read(Stream MapStream)
        {
            var data                 = ReadBytes(MapStream, _recordLength);
            var number               = data[0];
            var childrenCount        = data[1];
            var childrenStartAddress = SubInt(data, 2, 3);

            if (childrenStartAddress == 0xffffff)
            {
                return(null);
            }

            var track = new GTrack(number);

            if (childrenCount > 0)
            {
                if (childrenStartAddress == 0)
                {
                    throw new IndexOutOfRangeException();
                }

                var previousPosition = MapStream.Position;
                MapStream.Seek(childrenStartAddress, SeekOrigin.Begin);
                for (var i = 0; i < childrenCount; i++)
                {
                    var obj = _objectReader.Read(MapStream);
                    track.Objects.Add(obj);
                }

                MapStream.Seek(previousPosition, SeekOrigin.Begin);
            }

            return(track);
        }
 private string TrackName(GTrack Track)
 {
     if (Track.Number <= 15)
         return string.Format("{0}П", Track.Number);
     return string.Format("{0}Н", Track.Number - 15);
 }
 protected double PrintTrack(DrawingContext dc, GTrack Track)
 {
     var postLabel = new FormattedText(string.Format("Путь {0}", Track.Number), CultureInfo.CurrentCulture, FlowDirection.LeftToRight,
                                       new Typeface("Verdana"), 10, mainBrush);
     dc.DrawText(postLabel, new Point());
     return postLabel.Height;
 }