Example #1
0
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendLine(ObjectHeader);
            //PATT   10SY00095NIL
            sb.AppendLine(string.Format("PATT{0}", RleParser.AddLength(string.Format("{0}{1:00000;-0000}{2}", ObjectType, ObjectId, RleParser.Nil))));
            //PATD   55NODATA04RSTGCON0000300326000200000000048000240000000000
            sb.AppendLine(string.Format("PATD{0}", RleParser.AddLength(string.Format("{0}{1}{2}{3:00000;-0000}{4:00000;-0000}{5:00000;-0000}{6:00000;-0000}{7:00000;-0000}{8:00000;-0000}{9:00000;-0000}{10:00000;-0000}", Code, 'R', Value2, Value3, Value4, OffsetX, OffsetY, Width, Height, HotspotX, HotspotY))));
            //PXPO   22area of no chart data
            sb.AppendLine(string.Format("PXPO{0}", RleParser.AddTermAndLength(string.Format("{0}", Description))));
            //PCRF    6ACHGRD
            StringBuilder sb1 = new StringBuilder();

            foreach (var color in Colors)
            {
                sb1.Append(String.Format("{0}{1}", color.Key, color.Value.Code));
            }
            sb.AppendLine(String.Format("PCRF{0}", RleParser.AddLength(sb1.ToString())));
            //PBTM   49@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
            foreach (var s in BitmapData.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
            {
                sb.AppendLine(String.Format("PBTM{0}", RleParser.AddTermAndLength(s)));
            }
            sb.Append(ObjectFooter);
            return(sb.ToString());
        }
Example #2
0
        public ColorTable(string palettedata)
        {
            Colors = new Dictionary <string, ColorRecord>();
            string[] lines = palettedata.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
            foreach (var line in lines)
            {
                if (line.StartsWith("COLS"))
                {
                    COLS     = RleParser.StripLenFromString(line.Substring(4).Trim()).Trim(RleParser.Term); //TODO: what does it mean?
                    Name     = line.Trim(RleParser.Term).Substring(line.LastIndexOf("NIL") + 3);
                    ObjectId = Convert.ToInt32(COLS.Substring(2, 5));
                }
                if (line.StartsWith("CCIE"))
                {
                    // Yxy -> XYZ conversion
                    double x = double.Parse(
                        RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(
                            5).Split(RleParser.Term)[0], CultureInfo.InvariantCulture);
                    double y = double.Parse(line.Trim().Split(RleParser.Term)[1],
                                            CultureInfo.InvariantCulture);
                    double Y = double.Parse(line.Trim().Split(RleParser.Term)[2],
                                            CultureInfo.InvariantCulture);

                    CIEYxy color = new CIEYxy(Y, x, y);
                    Colors.Add(RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(0, 5),
                               new ColorRecord(RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(0, 5),
                                               line.Trim().Split(RleParser.Term)[3], color
                                               ));
                }
            }
        }
Example #3
0
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendLine(ObjectHeader);
            //SYMB   10SY00095NIL
            sb.AppendLine(string.Format("SYMB{0}", RleParser.AddLength(string.Format("{0}{1:00000;-0000}{2}", ObjectType, ObjectId, RleParser.Nil))));
            //SYMD   39NMKREG12R000150001500031000310000000000
            //         39ARPONE01V|05033|02167|00394|00000|04828|02167
            sb.AppendLine(string.Format("SYMD{0}", RleParser.AddLength(string.Format("{0}{1}{2:00000;-0000}{3:00000;-0000}{4:00000;-0000}{5:00000;-0000}{6:00000;-0000}{7:00000;-0000}", Code, SymbolType, OffsetX, OffsetY, Width, Height, HotspotX, HotspotY))));
            //SXPO   32notice mark, special attention
            sb.AppendLine(string.Format("SXPO{0}", RleParser.AddTermAndLength(string.Format("{0}", Description))));
            //SCRF   18ACHBLKBCHREDCCHWHT
            StringBuilder sb1 = new StringBuilder();

            foreach (var color in Colors)
            {
                sb1.Append(String.Format("{0}{1}", color.Key, color.Value.Code));
            }
            sb.AppendLine(String.Format("SCRF{0}", RleParser.AddLength(sb1.ToString())));
            //SVCT   32AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
            foreach (var s in BitmapData.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
            {
                sb.AppendLine(String.Format("SVCT{0}", RleParser.AddLength(s)));
            }
            sb.Append(ObjectFooter);
            return(sb.ToString());
        }
Example #4
0
        //"convyr","CATCON2|CONRAD1|","LS(SOLD,3,CHGRD);SY(RACNSP01);TE('clr %4.1lf','VERCLR',3,1,2,'15110',1,0,CHBLK,11)","8","O","DISPLAYBASE","12210"
        //0 - "convyr",
        //1 - "CATCON2|CONRAD1|",
        //2 - "LS(SOLD,3,CHGRD);SY(RACNSP01);TE('clr %4.1lf','VERCLR',3,1,2,'15110',1,0,CHBLK,11)",
        //3 - "8",
        //4 - "O",
        //5 - "DISPLAYBASE",
        //6 - "12210"
        //-----------------------
        //0001    500540
        //LUPT   29LU00540NILCOALNEL00007OLINES
        //ATTC    1
        //INST   13CS(QUAPOS01)
        //DISC   12DISPLAYBASE
        //LUCM    612410
        //****    0
        public static string LuptStringToRle(string ltline, int objectId, string symbolization)
        {
            try
            {
                //29LU00540NILCOALNEL00007OLINES
                string        LUPT       = "LU{0}NIL{1}{2}{3}{4}{5}";
                string[]      components = ltline.Replace("\",\"", "~").Replace("\"", string.Empty).Split('~');
                StringBuilder retstr     = new StringBuilder();
                retstr.AppendLine(ObjectHeader);
                //LUPT
                int x;
                Int32.TryParse(components[3], out x);

                string lupt = String.Format(LUPT, objectId.ToString("00000;-0000"), components[0], SymbolizationToSymbolizationLetter(symbolization),
                                            x.ToString("00000;-0000"), components[4],
                                            symbolization);
                retstr.Append("LUPT   ").Append(lupt.Length).AppendLine(lupt);
                //ATTC    1
                string attc;
                if (components[1].Length > 1 && !components[1].Contains("|")) //ENC tables from th PDF don't contain the attribute separators so we have to "invent them"
                {
                    string        attrstr = components[1];
                    StringBuilder sb      = new StringBuilder();
                    while (attrstr.Length > 0)
                    {
                        sb.Append(attrstr.Substring(0, 6));
                        attrstr = attrstr.Substring(6);
                        while (attrstr.Length > 0 && !Char.IsLetter(attrstr[0]))
                        {
                            sb.Append(attrstr[0]);
                            attrstr = attrstr.Substring(1);
                        }
                        sb.Append(RleParser.Term);
                    }
                    attc = sb.ToString();
                }
                else
                {
                    attc = components[1].Replace('|', RleParser.Term);
                }
                if (attc.Length == 0)
                {
                    attc = RleParser.Term.ToString();
                }
                retstr.AppendLine(String.Format("ATTC{0}", RleParser.AddLength(attc)));
                //INST
                retstr.AppendLine(String.Format("INST{0}", RleParser.AddTermAndLength(components[2])));
                //DISC
                retstr.AppendLine(String.Format("DISC{0}", RleParser.AddTermAndLength(components[5])));
                //LUCM
                retstr.AppendLine(String.Format("LUCM{0}", RleParser.AddTermAndLength(components[6])));
                retstr.Append(ObjectFooter);
                return(retstr.ToString());
            }
            catch
            {
                return(string.Empty);
            }
        }
Example #5
0
        private void FillObjectFromText(string objecttext)
        {
            string[] lines = objecttext.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
            foreach (var line in lines)
            {
                switch (line.Substring(0, 4))
                {
                case "0001":
                    break;

                case "####":
                    break;

                case "LUPT":
                    LUPT     = RleParser.StripLenFromString(line.Substring(4).Trim()).Trim(RleParser.Term); //TODO: what does it mean?
                    ObjectId = Convert.ToInt32(LUPT.Substring(2, 5));
                    Code     = RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(10, 6);
                    //replaced by smarter property - SymbolizationLetter = RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(16, 1);
                    DisplayPriority = RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(21, 1);
                    if (line.Length > 31)
                    {
                        Radar = RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(22, 1);
                    }
                    if (line.Length > 32)
                    {
                        Symbolization =
                            RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(23).Trim(RleParser.Term);
                    }
                    break;

                case "ATTC":
                    AttributeCombination = RleParser.StripLenFromString(line.Substring(4).Trim()).Replace(RleParser.Term, '|');
                    if (AttributeCombination == "|")
                    {
                        AttributeCombination = string.Empty;
                    }
                    break;

                case "INST":
                    SymbolizationInstructions = RleParser.StripLenFromString(line.Substring(4).Trim()).Trim(RleParser.Term);
                    break;

                case "DISC":
                    ImoDisplayCategory = RleParser.StripLenFromString(line.Substring(4).Trim()).Trim(RleParser.Term);
                    break;

                case "LUCM":
                    ViewingGroup = RleParser.StripLenFromString(line.Substring(4).Trim()).Trim(RleParser.Term);
                    break;

                default:
                    //Debug.WriteLine(line);
                    break;
                }
            }
        }
        public void CanParseBasicRle()
        {
            var rle           = @"
x = 3, y = 3, rule = B3/S23
2bo$o$2o!
";
            var actualBoard   = RleParser.FromRle(rle);
            var expectedBoard = new[] { new Coordinate(3, 3), new Coordinate(1, 2), new Coordinate(1, 1), new Coordinate(2, 1) };

            actualBoard.Should().BeEquivalentTo(expectedBoard);
        }
        public void CanHandleSingleBoardLineSpreadOverMultipleTextFileLines()
        {
            var rle           = @"
x = 3, y = 3, rule = B3/S23
2b
o$o$2o!
";
            var actualBoard   = RleParser.FromRle(rle);
            var expectedBoard = new[] { new Coordinate(3, 3), new Coordinate(1, 2), new Coordinate(1, 1), new Coordinate(2, 1) };

            actualBoard.Should().BeEquivalentTo(expectedBoard);
        }
Example #8
0
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendLine(ObjectHeader);
            //COLS   21CS00002NILDAY_BRIGHT
            sb.AppendLine(string.Format("COLS{0}", RleParser.AddTermAndLength(string.Format("{0}{1:00000;-0000}{2}{3}", ObjectType, ObjectId, RleParser.Nil, Name))));
            foreach (var color in Colors.Values)
            {
                sb.AppendLine(color.ToString());
            }
            sb.Append(ObjectFooter);
            return(sb.ToString());
        }
Example #9
0
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendLine(ObjectHeader);
            sb.AppendLine(string.Format("PATT{0}", RleParser.AddLength(string.Format("{0}{1:00000;-0000}{2}", ObjectType, ObjectId, RleParser.Nil))));
            sb.AppendLine(string.Format("PATD{0}", RleParser.AddLength(string.Format("{0}{1}{2}{3:00000;-0000}{4:00000;-0000}{5:00000;-0000}{6:00000;-0000}{7:00000;-0000}{8:00000;-0000}{9:00000;-0000}{10:00000;-0000}", Code, SymbolType, Value2, Value3, Value4, OffsetX, OffsetY, Width, Height, HotspotX, HotspotY))));
            sb.AppendLine(string.Format("PXPO{0}", RleParser.AddTermAndLength(string.Format("{0}", Description))));
            StringBuilder sb1 = new StringBuilder();

            foreach (var color in Colors)
            {
                sb1.Append(String.Format("{0}{1}", color.Key, color.Value.Code));
            }
            sb.AppendLine(String.Format("PCRF{0}", RleParser.AddLength(sb1.ToString())));
            foreach (var s in BitmapData.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
            {
                sb.AppendLine(String.Format("PVCT{0}", RleParser.AddLength(s)));
            }
            sb.Append(ObjectFooter);
            return(sb.ToString());
        }
        public void CanHandleBlankRows()
        {
            var rle           = @"
x = 8, y = 10, rule = B3/S23
2bo$o$2o3$3bo2$5bo2$7bo!
";
            var actualBoard   = RleParser.FromRle(rle);
            var expectedBoard = new[] {
                new Coordinate(3, 10),
                new Coordinate(1, 9),
                new Coordinate(1, 8), new Coordinate(2, 8),


                new Coordinate(4, 5),

                new Coordinate(6, 3),

                new Coordinate(8, 1)
            };

            actualBoard.Should().BeEquivalentTo(expectedBoard);
        }
        public void CanWriteOutRle()
        {
            var board = new[] {
                new Coordinate(3, 10),
                new Coordinate(1, 9),
                new Coordinate(1, 8), new Coordinate(2, 8),


                new Coordinate(4, 5),

                new Coordinate(6, 3),

                new Coordinate(8, 1)
            };

            var actualRle   = RleParser.ToRle(board).Trim();
            var expectedRle = @"
x = 8, y = 10, rule = B3/S23
2bo$o$2o3$3bo2$5bo2$7bo!
".Trim();

            actualRle.Should().Be(expectedRle);
        }
Example #12
0
        public VectorSymbol(string vectordata, ColorTable colortable) : base()
        {
            this.ColorTable = colortable;
            string[] lines = vectordata.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
            foreach (var line in lines)
            {
                try
                {
                    switch (line.Substring(0, 4))
                    {
                    case "SYMB":
                        SYMB = RleParser.StripLenFromString(line.Substring(4).Trim()).Trim(RleParser.Term);
                        //TODO: what does it mean? - means ID
                        ObjectId = Convert.ToInt32(SYMB.Substring(2, 5));
                        break;

                    case "SYMD":
                        Code       = RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(0, 8);
                        SymbolType = RleParser.StripLenFromString(line.Substring(4).Trim())[8];
                        OffsetX    =
                            Convert.ToInt32(RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(9, 5));
                        OffsetY =
                            Convert.ToInt32(RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(14, 5));
                        Width =
                            Convert.ToInt32(RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(19, 5));
                        Height =
                            Convert.ToInt32(RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(24, 5));
                        HotspotX =
                            Convert.ToInt32(RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(29, 5));
                        HotspotY =
                            Convert.ToInt32(RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(34, 5));
                        break;

                    case "SXPO":
                        Description = RleParser.StripLenFromString(line.Substring(4).Trim()).Trim(RleParser.Term);
                        break;

                    case "SCRF":
                        string pal = RleParser.StripLenFromString(line.Substring(4).Trim()).Trim(RleParser.Term);
                        while (pal.Length > 0)
                        {
                            try
                            {
                                Colors.Add(pal[0], colortable.Colors[pal.Substring(1, 5)]);
                            }
                            catch (Exception e)
                            {
                                _isvalid = false;
                                Debug.Print(
                                    "Symbol {0}. The requested color {1} doesn't exist in the palette.",
                                    this.Code,
                                    pal.Substring(1, 5));
                            }

                            pal = pal.Substring(6);
                        }
                        break;

                    case "SVCT":
                        AddLine(RleParser.StripLenFromString(line.Substring(4).Trim()).Trim(RleParser.Term));
                        break;
                    }
                }
                catch (Exception ex)
                {
                    Debug.Print("Error while parsing object: {0}", vectordata);
                }
            }
        }
Example #13
0
        public VectorPattern(string vectordata, ColorTable colortable)
            : base()
        {
            this.ColorTable = colortable;
            string[] lines = vectordata.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
            foreach (var line in lines)
            {
                try
                {
                    switch (line.Substring(0, 4))
                    {
                    case "PATT":
                        PATT = RleParser.StripLenFromString(line.Substring(4).Trim()).Trim(RleParser.Term);
                        //TODO: what does it mean? - means ID
                        ObjectId = Convert.ToInt32(PATT.Substring(2, 5));
                        break;

                    case "PATD":
                        Code       = RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(0, 8);
                        SymbolType = RleParser.StripLenFromString(line.Substring(4).Trim())[8];
                        Value2     = RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(9, 6);
                        Value3     =
                            Convert.ToInt32(RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(15, 5));
                        Value4 =
                            Convert.ToInt32(RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(20, 5));
                        OffsetX =
                            Convert.ToInt32(RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(25, 5));
                        OffsetY =
                            Convert.ToInt32(RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(30, 5));
                        Width =
                            Convert.ToInt32(RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(35, 5));
                        Height =
                            Convert.ToInt32(RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(40, 5));
                        HotspotX =
                            Convert.ToInt32(RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(45, 5));
                        HotspotY =
                            Convert.ToInt32(
                                RleParser.StripLenFromString(line.Substring(4).Trim()).Substring(50).Trim(
                                    RleParser.Term));
                        //TODO: it looks shorter, should be 55 in total, but is just 54!
                        break;

                    case "PXPO":
                        Description = RleParser.StripLenFromString(line.Substring(4).Trim()).Trim(RleParser.Term);
                        break;

                    case "PCRF":
                        string pal = RleParser.StripLenFromString(line.Substring(4).Trim()).Trim(RleParser.Term);
                        while (pal.Length > 0)
                        {
                            try
                            {
                                Colors.Add(pal[0], colortable.Colors[pal.Substring(1, 5)]);
                            }
                            catch (Exception e)
                            {
                                Debug.Print(
                                    "Symbol {0}. The requested color {1} doesn't exist in the palette.",
                                    this.Code,
                                    pal.Substring(1, 5));
                            }
                            pal = pal.Substring(6);
                        }
                        break;

                    case "PVCT":
                        AddLine(RleParser.StripLenFromString(line.Substring(4).Trim()).Trim(RleParser.Term));
                        break;
                    }
                }
                catch (Exception ex)
                {
                    Debug.Print("Error while parsing object: {0}", vectordata);
                }
            }
        }
Example #14
0
 public override string ToString()
 {
     return(string.Format("CCIE{0}", RleParser.AddTermAndLength(string.Format(CultureInfo.InvariantCulture, "{0}{1:0.0000}{2}{3:0.0000}{4}{5:0.00}{6}{7}", Code, Yxy.x, RleParser.Term, Yxy.y, RleParser.Term, Yxy.Y, RleParser.Term, Name))));
 }