Beispiel #1
0
        /// <summary>
        /// 解析普通文本文档
        /// </summary>
        /// <param name="fs"></param>
        /// <param name="encoding"></param>
        /// <returns></returns>
        private static RuleDataModel CreatFromTextFile(Stream fs, Encoding encoding)
        {
            List <string> lines = new List <string>();

            fs.Position = 0L;
            using (StreamReader streamReader = new StreamReader(fs, encoding))
            {
                while (streamReader.Peek() >= 0)
                {
                    string str = streamReader.ReadLine();
                    if (!string.IsNullOrEmpty(str))
                    {
                        lines.Add(str);
                    }
                }
            }


            RuleDataModel data = new RuleDataModel()
            {
                OriginalFilePath = "",
                FileHander       = lines[0],
                FgLarge          = LineDataModel.CreatFromLineString(lines[1])
            };

            for (int i = 2; i < lines.Count; i++)
            {
                data.TextData.Add(LineDataModel.CreatFromLineString(lines[i]));
            }
            fs.Close();
            return(data);
        }
Beispiel #2
0
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            IDataModel    idm      = (IDataModel)value;
            LineDataModel linemode = null;

            try
            {
                if (idm.LengthProperty * idm.ScaleProperty < 300)
                {
                    return(string.Empty);
                }
                switch (idm.Type)
                {
                case DataType.Single:
                    return(string.Empty);

                case DataType.Station:
                    return(string.Empty);

                case DataType.Bridge:
                    return(string.Empty);

                case DataType.Tunel:
                    return(string.Empty);

                case DataType.Podu:
                {
                    linemode = (LineDataModel)idm;
                    return(linemode.AngleProperty.ToString("F1"));
                }

                case DataType.Quxian:
                {
                    linemode = (LineDataModel)idm;
                    return(string.Format("{0}", linemode.RadioProperty.ToString("F0")));
                }

                case DataType.Break:
                    return(string.Empty);

                case DataType.Position:
                    return(string.Empty);

                default:
                    return(string.Empty);
                }
            }

            catch
            {
                return("Error");
            }
        }
Beispiel #3
0
        private List <LineDataModel> CreateData(int count)
        {
            List <LineDataModel> data = new List <LineDataModel>();
            Random rd = new Random();

            for (int i = 0; i < count; i++)
            {
                LineDataModel ldm = new LineDataModel();
                ldm.dataUnit = DataUnit.M;
                ldm.Times    = 1F;
                ldm.Values   = rd.Next(-20, 20);
                data.Add(ldm);
            }
            return(data);
        }
Beispiel #4
0
        /// <summary>
        /// 解析被ZLIB压缩的文本内容
        /// </summary>
        /// <param name="fs"></param>
        /// <param name="br"></param>
        /// <returns></returns>
        private static RuleDataModel CreatFromeZlibFile(FileStream fs, BinaryReader br)
        {
            List <string> lines      = new List <string>();
            var           dataLength = br.ReadInt32();

            fs.Position = fs.Length - dataLength;
            int b1 = br.ReadByte();
            int b2 = br.ReadByte();

            if ((0x78 != b1 && 0x58 != b1) || 0 != (b1 << 8 | b2) % 31)
            {
                throw new InvalidDataException("Data not recoginzed as zlib-compressed stream");
            }
            using (var deStream = new DeflateStream(new MemoryStream(br.ReadBytes(dataLength - 2)), CompressionMode.Decompress, true))
            {
                using (var sr = new StreamReader(deStream, Encoding.Unicode))
                {
                    while (sr.Peek() >= 0)
                    {
                        string str = sr.ReadLine();
                        if (!string.IsNullOrEmpty(str))
                        {
                            lines.Add(str);
                        }
                    }
                }
            }

            RuleDataModel data = new RuleDataModel()
            {
                OriginalFilePath = fs.Name,
                FileHander       = lines[0],
                FgLarge          = LineDataModel.CreatFromLineString(lines[1])
            };

            for (int i = 2; i < lines.Count; i++)
            {
                data.TextData.Add(LineDataModel.CreatFromLineString(lines[i]));
            }
            br.Close();
            fs.Close();
            return(data);
        }