Exemple #1
0
        public override void ReadHeader(BinaryReaderWriter br)
        {
            base.ReadCommonHeader(br, Type);

            if (Unknown_0x0C != 0x01) // Bedeutung unklar
            {
                throw new Exception("Das ist keine Garmin-TYP-Datei.");
            }

            Headertyp htyp = Headertyp.Unknown;

            Codepage = br.Read2AsUShort();
            // Infos zu den Datenblöcken für POI, Polyline und Polygon einlesen (Offset, Länge)
            // (eigentlich uninteressant, da auf die Daten über die entsprechenden Tabellen zugegriffen wird)
            PointDatablock.Read(br);
            PolylineDatablock.Read(br);
            PolygoneDatablock.Read(br);

            FamilyID  = br.Read2AsUShort();
            ProductID = br.Read2AsUShort();

            // Infos zu den Tabellen für POI, Polyline und Polygon einlesen (Offset, Länge, Länge der Tabelleneinträge)
            PointTableBlock             = new TypDataBlockWithRecordsize(br);
            PolylineTableBlock          = new TypDataBlockWithRecordsize(br);
            PolygoneTableBlock          = new TypDataBlockWithRecordsize(br);
            PolygoneDraworderTableBlock = new TypDataBlockWithRecordsize(br);

            htyp = Headertyp.Standard;

            // ev. kommt noch NT-Zeugs
            if (Headerlength > 0x5b) // Extra icons
            {
                htyp = Headertyp.Type_6E;

                // spez. Daten für NT1-Punkte
                NT_PointTableBlock = new TypDataBlockWithRecordsize(br);
                nt_unknown_0x65    = br.ReadByte();        // sollte wohl immer 0x1F sein (?), auch 0x0D
                NT_PointDatablock.Read(br);

                if (Headerlength > 0x6e)         // Extra POI Labels
                {
                    htyp = Headertyp.Type_9C;

                    nt_unknown_0x6E = br.Read4UInt();     // 0
                    NT_PointLabelblock.Read(br);          // Block-Offset und -Länge
                    nt_unknown_0x7A = br.Read4UInt();     // 6    Datensatzlänge?
                    nt_unknown_0x7E = br.Read4UInt();     // 0x1B
                    NT_LabelblockTable1.Read(br);
                    nt_unknown_0x8A = br.Read4UInt();     // 6
                    nt_unknown_0x8E = br.Read4UInt();     // 0x1B
                    NT_LabelblockTable2.Read(br);
                    nt_unknown_0x9A = br.Read2AsUShort(); // 0x12

                    if (Headerlength > 0x9C)              // Indexing a selection of POIs
                    {
                        htyp = Headertyp.Type_A4;

                        br.ReadBytes(nt_unknown_0x9C); // scheint nochmal der gleiche Datenblock wie LabelblockTable2 zu sein

                        if (Headerlength > 0xA4)       // Active Routing
                        {
                            htyp = Headertyp.Type_AE;

                            br.ReadBytes(nt_unknown_0xA4);

                            if (Headerlength > 0xAE)
                            {
                                htyp = Headertyp.Unknown;

                                nt_unknown_0xA4 = br.ReadBytes(Headerlength - (int)br.Position); // Rest einlesen
                            }
                        }
                    }
                }
            }
            _HeaderTyp = htyp;
        }
Exemple #2
0
 /// <summary>
 /// liest die Blockdaten
 /// </summary>
 /// <param name="br"></param>
 public new void Read(BinaryReaderWriter br)
 {
     Offset     = br.Read4UInt();
     Recordsize = br.Read2AsUShort();
     Length     = br.Read4UInt();
 }
Exemple #3
0
            /// <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();
                    }
                }
            }