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()); }
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 )); } } }
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()); }
//"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); } }
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); }
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()); }
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); }
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); } } }
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); } } }
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)))); }