Exemplo n.º 1
0
 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);
         }
     }
 }
Exemplo n.º 2
0
 public void Write(BinaryReaderWriter wr)
 {
     wr.Write((byte)CopyrightCode);
     wr.Write((byte)WhereCode);
     wr.Write(ExtraProperties);
     wr.WriteString(Copyright);
 }
Exemplo n.º 3
0
 void Encode_DescriptionBlock(BinaryReaderWriter bw)
 {
     if (bw != null)
     {
         bw.WriteString(Description);
     }
 }
Exemplo n.º 4
0
 /// <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);
 }
Exemplo n.º 5
0
 void Encode_Copyright(BinaryReaderWriter bw)
 {
     if (bw != null)
     {
         foreach (string txt in Copyright)
         {
             bw.WriteString(txt);
         }
     }
 }
Exemplo n.º 6
0
        /// <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));
        }
Exemplo n.º 7
0
 /// <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);
 }
Exemplo n.º 8
0
            /// <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();
            }
Exemplo n.º 9
0
            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);
                    }
                }
            }
Exemplo n.º 10
0
            /// <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);
                    }
                }
            }