public void Read(BinaryReaderWriter br) { blocks.Clear(); // 0x0 Used = br.ReadByte() == 0x01; // 0x01 Name = br.ReadString(8); // 0x09 Typ = br.ReadString(3); // 0x0c Filesize = br.Read4UInt(); // 0x10 Flag = br.ReadByte(); // 0x11 Part = br.ReadByte(); // 0x12 Unknown = br.ReadBytes(14); // 0x20 for (int i = 0; i < MaxBlockNumberCount; i++) { UInt16 no = br.Read2AsUShort(); if (no != 0xffff) { blocks.Add(no); } } }
public void Read(BinaryReaderWriter br) { Typ = (char)br.ReadByte(); UInt16 len = br.Read2AsUShort(); // Anzahl der noch folgenden Bytes long end = br.BaseStream.Position + len; switch (Typ) { case 'L': // MapBlock ProductID = br.Read2AsUShort(); FamilyID = br.Read2AsUShort(); MapNumber = br.Read4UInt(); while (br.BaseStream.Position < end - 9) // seriesName, mapDescription, areaName { Name.Add(br.ReadString()); } Unknown0 = br.Read4UInt(); Unknown1 = br.Read4UInt(); break; case 'P': // ProductBlock ProductID = br.Read2AsUShort(); FamilyID = br.Read2AsUShort(); Unknown2 = br.Read2AsUShort(); Unknown3 = br.Read2AsUShort(); Unknown4 = br.Read2AsUShort(); break; case 'F': // vereinfachter MapBlock ? ProductID = br.Read2AsUShort(); FamilyID = br.Read2AsUShort(); while (br.BaseStream.Position < end) // description (nur 1x?) { Name.Add(br.ReadString()); } break; case 'V': while (br.BaseStream.Position < end - 1) { Name.Add(br.ReadString()); } Unknown5 = br.ReadByte(); break; default: break; } }
/// <summary> /// liest den allgemeinen Header ab <see cref="HeaderOffset"/> ein /// <para>Ist der eingelesene Typ nicht der erwartete Typ, wird eine Exception ausgelöst.</para> /// </summary> /// <param name="br"></param> /// <param name="expectedtyp">Extension des erwarteten Typs z.B. 'LBL', sonst null</param> protected void ReadCommonHeader(BinaryReaderWriter br, string expectedtyp = null) { br.Seek(HeaderOffset); Headerlength = br.Read2AsUShort(); GarminTyp = br.ReadString(10); // z.B. "GARMIN RGN" if (GarminTyp.Length != 10 || GarminTyp.Substring(0, 7) != "GARMIN ") { throw new Exception("Das ist kein Garmin-SUB-File."); } if (!string.IsNullOrEmpty(expectedtyp) && GarminTyp.Substring(7) != expectedtyp) { throw new Exception("Das ist nicht der erwartete Dateityp (" + expectedtyp + ")."); } Unknown_0x0C = br.ReadByte(); Locked = br.ReadByte(); try { CreationDate = new DateTime(br.Read2AsShort(), br.ReadByte(), // "echter" Monat br.ReadByte(), br.ReadByte(), br.ReadByte(), br.ReadByte()); } catch { // Datum/Uhrzeit nicht erkannt } }
void Decode_DescriptionBlock(BinaryReaderWriter br, DataBlock block) { if (br != null && block != null && block.Length > 0) { br.Seek(block.Offset); Description = br.ReadString((int)block.Length); } }
/// <summary> /// liest die Blockdaten ein /// </summary> /// <param name="br"></param> public void ReadData(BinaryReaderWriter br) { Mapnumber = br.Read4UInt(); ParentMapnumber = br.Read4UInt(); north = br.Read4Int(); east = br.Read4Int(); south = br.Read4Int(); west = br.Read4Int(); Description = br.ReadString(); }
void Decode_Copyright(BinaryReaderWriter br, DataBlock block) { Copyright.Clear(); if (br != null) { br.Seek(block.Offset); while (br.Position < block.Offset + block.Length) { Copyright.Add(br.ReadString()); } } }
protected string GetNTLabel(BinaryReaderWriter br, uint offset) { br.Seek(NT_PointLabelblock.Offset + offset); return(br.ReadString()); //List<char> chars = new List<char>(); //char c; //do { // c = br.ReadChar(); // if (c != 0x0) chars.Add(c); //} while (c != 0x0); //return new string(chars.ToArray()); }
public Text(BinaryReaderWriter br) : this() { Language = (LanguageCode)br.ReadByte(); Txt = br.ReadString(0, Encoding.Default); //List<char> chars = new List<char>(); //char c; //do { // c = br.ReadChar(); // if (c != 0x0) // chars.Add(c); //} while (c != 0x0); //Txt = new string(chars.ToArray()); }
/// <summary> /// liest die Blockdaten ein /// </summary> /// <param name="br"></param> public new void ReadData(BinaryReaderWriter br) { base.ReadData(br); int readlen = 6 * 4 + Description.Length + 1; // in der Basisklasse gelesen Unknown1 = br.Read2AsUShort(); SubCount = br.Read2AsUShort(); readlen += 4; DataSize.Clear(); for (int i = 0; i < SubCount; i++) { DataSize.Add(br.Read4UInt()); readlen += 4; } if (blh.Length - readlen < 7) { return; } HasCopyright = br.ReadByte(); Unknown2 = br.ReadByte(); Unknown3 = br.ReadByte(); Unknown4 = br.ReadByte(); Unknown5 = br.ReadByte(); Unknown6 = br.ReadByte(); Unknown7 = br.ReadByte(); readlen += 7; Name.Clear(); for (int i = 0; i < SubCount; i++) { Name.Add(br.ReadString()); readlen += Name[Name.Count - 1].Length + 1; } if (blh.Length - readlen < 2) { return; } Unknown8 = br.ReadByte(); Unknown9 = br.ReadByte(); }
public void Read(BinaryReaderWriter br) { byte b = br.ReadByte(); CopyrightCode = CopyrightCodes.Unknown; try { CopyrightCode = (CopyrightCodes)b; } catch { } b = br.ReadByte(); WhereCode = WhereCodes.Unknown; try { WhereCode = (WhereCodes)b; } catch { } ExtraProperties = br.Read2AsUShort(); Copyright = br.ReadString(); }
/// <summary> /// liest die Blockdaten ein /// </summary> /// <param name="br"></param> public void ReadData(BinaryReaderWriter br) { Unknown1 = br.ReadByte(); Text = br.ReadString(); }
/// <summary> /// liest die Blockdaten (Segmente) ein /// </summary> /// <param name="br"></param> public void ReadData(BinaryReaderWriter br) { ProductID = br.Read2AsUShort(); FamilyID = br.Read2AsUShort(); TDBVersion = br.Read2AsUShort(); MapSeriesName = br.ReadString(); ProductVersion = br.Read2AsUShort(); MapFamilyName = br.ReadString(); if (TDBVersion >= 407) { Unknown1 = br.ReadByte(); MaxCoordbits4Overview = br.ReadByte(); Unknown2 = br.ReadByte(); Unknown3 = br.ReadByte(); Unknown4 = br.ReadByte(); Unknown5 = br.ReadByte(); Unknown6 = br.ReadByte(); Unknown7 = br.ReadByte(); Unknown8 = br.ReadByte(); Unknown9 = br.ReadByte(); HighestRoutable = br.ReadByte(); Unknown10 = br.ReadByte(); Unknown11 = br.ReadByte(); Unknown12 = br.ReadByte(); Unknown13 = br.ReadByte(); Unknown14 = br.ReadByte(); Unknown15 = br.ReadByte(); Unknown16 = br.ReadByte(); Unknown17 = br.ReadByte(); Unknown18 = br.ReadByte(); Unknown19 = br.ReadByte(); Unknown20 = br.ReadByte(); Unknown21 = br.ReadByte(); Unknown22 = br.ReadByte(); Unknown23 = br.ReadByte(); Unknown24 = br.ReadByte(); Unknown25 = br.ReadByte(); Unknown26 = br.ReadByte(); Unknown27 = br.ReadByte(); Unknown28 = br.ReadByte(); CodePage = br.Read4UInt(); Unknown29 = br.Read4UInt(); Routable = br.ReadByte(); HasProfileInformation = br.ReadByte(); HasDEM = br.ReadByte(); if (TDBVersion >= 411) { Unknown30 = br.ReadByte(); Unknown31 = br.ReadByte(); Unknown32 = br.ReadByte(); Unknown33 = br.ReadByte(); Unknown34 = br.ReadByte(); Unknown35 = br.ReadByte(); Unknown36 = br.ReadByte(); Unknown37 = br.ReadByte(); Unknown38 = br.ReadByte(); Unknown39 = br.ReadByte(); Unknown40 = br.ReadByte(); Unknown41 = br.ReadByte(); Unknown42 = br.ReadByte(); Unknown43 = br.ReadByte(); Unknown44 = br.ReadByte(); Unknown45 = br.ReadByte(); Unknown46 = br.ReadByte(); Unknown47 = br.ReadByte(); Unknown48 = br.ReadByte(); Unknown49 = br.ReadByte(); } } }