示例#1
0
        public override void Write(BinaryReaderWriter bw, uint headeroffset = 0, UInt16 headerlength = 0x29, uint gapoffset = 0, uint dataoffset = 0, bool setsectiondata = true)
        {
            HeaderOffset = headeroffset;
            if (headerlength > 0)
            {
                Headerlength = headerlength;
            }
            CreationDate = DateTime.Now;
            GapOffset    = gapoffset;
            DataOffset   = dataoffset;

            PtrZoomlevel = Headerlength;
            for (int z = 0; z < ZoomlevelCount; z++)
            {
                ZoomLevel[z].CalculateStructureLength();
                ZoomLevel[z].ZoomlevelItem.PtrSubtileTable = PtrZoomlevel;
                PtrZoomlevel += (uint)ZoomLevel[z].GetTablelength();
                ZoomLevel[z].ZoomlevelItem.PtrHeightdata = PtrZoomlevel;
                PtrZoomlevel += (uint)ZoomLevel[z].GetDatalength();
            }

            Encode_Header(bw);

            bw.Seek(headerlength);

            for (int z = 0; z < ZoomlevelCount; z++)
            {
                // Subtile-Tabelle schreiben
                for (int i = 0; i < ZoomLevel[z].Subtiles.Count; i++)
                {
                    ZoomlevelTableitem zti = ZoomLevel[z].ZoomlevelItem;
                    ZoomLevel[z].Subtiles[i].Tableitem.Write(bw, zti.Structure_OffsetSize, zti.Structure_BaseheightSize, zti.Structure_DiffSize, zti.Structure_CodingtypeSize);
                }
                // Subtile-Daten schreiben
                for (int i = 0; i < ZoomLevel[z].Subtiles.Count; i++)
                {
                    bw.Write(ZoomLevel[z].Subtiles[i].Data);
                }
            }

            // Zoomleveltabelle schreiben
            for (int z = 0; z < ZoomlevelCount; z++)
            {
                ZoomLevel[z].ZoomlevelItem.Write(bw);
            }

            bw.Flush();
        }
示例#2
0
 public Zoomlevel()
 {
     ZoomlevelItem = new ZoomlevelTableitem();
     Subtiles      = new List <Subtile>();
 }