public void Write(BinaryReaderWriter wr) { wr.Write(Used); if (Used) { wr.WriteString(Name, null, false); wr.WriteString(Typ, null, false); wr.Write(Filesize); wr.Write(Flag); wr.Write(Part); wr.Write(Unknown); if (blocks.Count > 0) { for (int i = 0; i < (BlockSize - 32) / 2; i++) { if (i < blocks.Count) { wr.Write((UInt16)(blocks[i] < 0xffff ? blocks[i] : 0xffff)); } else { wr.Write((UInt16)0xffff); } } } } else { for (int i = 1; i < BlockSize; i++) { wr.Write((byte)0x00); } } }
public void Write(BinaryReaderWriter wr) { wr.Write((byte)CopyrightCode); wr.Write((byte)WhereCode); wr.Write(ExtraProperties); wr.WriteString(Copyright); }
void Encode_DescriptionBlock(BinaryReaderWriter bw) { if (bw != null) { bw.WriteString(Description); } }
/// <summary> /// schreibt den Blockheader und die Blockdaten /// </summary> /// <param name="wr"></param> public void Write(BinaryReaderWriter wr) { blh.Length = (ushort)(1 + // Unknown1 Text.Length + 1); // 0-Byte blh.Write(wr); wr.Write(Unknown1); wr.WriteString(Text); }
void Encode_Copyright(BinaryReaderWriter bw) { if (bw != null) { foreach (string txt in Copyright) { bw.WriteString(txt); } } }
/// <summary> /// schreibt den allgemeinen Header /// </summary> /// <param name="wr"></param> /// <param name="typ">nur angeben wenn der akt. <see cref="GarminTyp"/> überschrieben werden soll</param> protected void WriteCommonHeader(BinaryReaderWriter wr, string typ = null) { wr.Seek(HeaderOffset); wr.Write(Headerlength); if (!string.IsNullOrEmpty(typ)) { GarminTyp = "GARMIN " + typ; } wr.WriteString(GarminTyp, null, false); wr.Write(Unknown_0x0C); wr.Write(Locked); wr.Write((Int16)(CreationDate.Year)); wr.Write((byte)(CreationDate.Month)); wr.Write((byte)(CreationDate.Day)); wr.Write((byte)(CreationDate.Hour)); wr.Write((byte)(CreationDate.Minute)); wr.Write((byte)(CreationDate.Second)); }
/// <summary> /// schreibt den Blockheader und die Blockdaten /// </summary> /// <param name="wr"></param> public void Write(BinaryReaderWriter wr) { if (blh.Length == 0) { blh.Length = (ushort)(4 + // Mapnumber 4 + // ParentMapnumber 4 + 4 + 4 + 4 + // 4x Koordinaten Description.Length + 1 // Description + 0-Byte ); } blh.Write(wr); wr.Write(Mapnumber); wr.Write(ParentMapnumber); wr.Write(north); wr.Write(east); wr.Write(south); wr.Write(west); wr.WriteString(Description); }
/// <summary> /// schreibt den Blockheader und die Blockdaten /// </summary> /// <param name="wr"></param> public new void Write(BinaryReaderWriter wr) { BinaryReaderWriter wrtmp = new BinaryReaderWriter(); base.Write(wrtmp); SubCount = (UInt16)DataSize.Count; //Unknown1 = (UInt16)(SubCount + 1); wrtmp.Write(Unknown1); wrtmp.Write(SubCount); for (int i = 0; i < DataSize.Count; i++) { wrtmp.Write(DataSize[i]); } wrtmp.Write(HasCopyright); wrtmp.Write(Unknown2); wrtmp.Write(Unknown3); wrtmp.Write(Unknown4); wrtmp.Write(Unknown5); wrtmp.Write(Unknown6); wrtmp.Write(Unknown7); for (int i = 0; i < Name.Count; i++) { wrtmp.WriteString(Name[i]); } wrtmp.Write(Unknown8); wrtmp.Write(Unknown9); wrtmp.Seek(1); wrtmp.Write((short)(wrtmp.Length - 3)); // Länge des Datenbereiches schreiben wrtmp.Seek(0); wr.Write(wrtmp.ToArray()); wrtmp.Dispose(); }
public void Write(BinaryReaderWriter wr) { wr.Write((byte)Typ); UInt16 len = 0; if (Typ == 'L') { len = (UInt16)(12 + Name.Count); foreach (var item in Name) { len += (UInt16)item.Length; } wr.Write(len); wr.Write(ProductID); wr.Write(FamilyID); wr.Write(MapNumber); foreach (var item in Name) { wr.WriteString(item); } wr.Write(Unknown0); wr.Write(Unknown1); } else if (Typ == 'F') { len = (UInt16)(8 + Name.Count); foreach (var item in Name) { len += (UInt16)item.Length; } wr.Write(len); wr.Write(ProductID); wr.Write(FamilyID); foreach (var item in Name) { wr.WriteString(item); } } else if (Typ == 'P') { len = (UInt16)14; wr.Write(len); wr.Write(ProductID); wr.Write(FamilyID); wr.Write(Unknown2); wr.Write(Unknown3); wr.Write(Unknown4); } else if (Typ == 'V') { len = (UInt16)Name.Count; foreach (var item in Name) { len += (UInt16)item.Length; } wr.Write(len); foreach (var item in Name) { wr.WriteString(item); } } }
/// <summary> /// schreibt den Blockheader und die Blockdaten /// </summary> /// <param name="wr"></param> public void Write(BinaryReaderWriter wr) { if (TDBVersion == 411) { blh.Length = (UInt16)(0x4d + MapSeriesName.Length + MapFamilyName.Length); } else if (TDBVersion == 407) { blh.Length = (UInt16)(0x33 + MapSeriesName.Length + MapFamilyName.Length); } else { TDBVersion = 300; blh.Length = (UInt16)(0xa + MapSeriesName.Length + MapFamilyName.Length); } blh.Write(wr); wr.Write(ProductID); wr.Write(FamilyID); wr.Write(TDBVersion); wr.WriteString(MapSeriesName); wr.Write(ProductVersion); wr.WriteString(MapFamilyName); if (TDBVersion >= 407) { wr.Write(Unknown1); wr.Write(MaxCoordbits4Overview); wr.Write(Unknown2); wr.Write(Unknown3); wr.Write(Unknown4); wr.Write(Unknown5); wr.Write(Unknown6); wr.Write(Unknown7); wr.Write(Unknown8); wr.Write(Unknown9); wr.Write(HighestRoutable); wr.Write(Unknown10); wr.Write(Unknown11); wr.Write(Unknown12); wr.Write(Unknown13); wr.Write(Unknown14); wr.Write(Unknown15); wr.Write(Unknown16); wr.Write(Unknown17); wr.Write(Unknown18); wr.Write(Unknown19); wr.Write(Unknown20); wr.Write(Unknown21); wr.Write(Unknown22); wr.Write(Unknown23); wr.Write(Unknown24); wr.Write(Unknown25); wr.Write(Unknown26); wr.Write(Unknown27); wr.Write(Unknown28); wr.Write(CodePage); wr.Write(Unknown29); wr.Write(Routable); wr.Write(HasProfileInformation); wr.Write(HasDEM); if (TDBVersion >= 411) { wr.Write(Unknown30); wr.Write(Unknown31); wr.Write(Unknown32); wr.Write(Unknown33); wr.Write(Unknown34); wr.Write(Unknown35); wr.Write(Unknown36); wr.Write(Unknown37); wr.Write(Unknown38); wr.Write(Unknown39); wr.Write(Unknown40); wr.Write(Unknown41); wr.Write(Unknown42); wr.Write(Unknown43); wr.Write(Unknown44); wr.Write(Unknown45); wr.Write(Unknown46); wr.Write(Unknown47); wr.Write(Unknown48); wr.Write(Unknown49); } } }