Esempio n. 1
0
        public HfzFile loadFile(string fileName, FileFormat format)
        {
            HfzFile file = new HfzFile();

            Stream fs = null;
            EndianBinaryReader reader = null;
            try
            {
                debugLine("File format: " + format + ", file name: " + fileName);
                //create a file stream to work with during load
                fs = Util.openStream(fileName, format, FileMode.Open);
                reader = Util.createEndianBinaryReaderForStream(fs);

                HfzHeader header = hfzReadHeader(reader);
                file.header = header;
                Dictionary<short, HfzTile> tiles = readTiles(header, reader);
                file.mapData = tiles;
            }
            catch(Exception ex)
            {
                throw ex;
            }
            finally
            {
                reader.Close();
                if (debug)
                {
                    writeLog.Close();
                }
            }

            return file;
        }
 public Hf2HeightMap(string filename)
 {
     L3dtFileManager.L3dtFileManager hfzManager = new L3dtFileManager.L3dtFileManager();
     if (filename.EndsWith(".hf2.gz") || filename.EndsWith(".hfz"))
     {
         this.file = hfzManager.loadHfzFile(filename, FileFormat.COMPRESSED);
     }
     else if (filename.EndsWith(".hf2"))
     {
         this.file = hfzManager.loadHfzFile(filename, FileFormat.UNCOMPRESSED);
     }
     else
     {
         throw new Exception("Not a HF2 map file");
     }
 }
Esempio n. 3
0
        public void saveFile(string fileName, FileFormat format, HfzFile file)
        {
            HfzHeader fh = validateHeader(file);

            // initiate the writing procedure
            EndianBinaryWriter fileWriter = null;

            try
            {
                // open file for writing
                Stream stream = Util.openStream(fileName, format, FileMode.Create);
                fileWriter = Util.createEndianBinaryWriterForStream(stream);

                hfzWriteHeader(ref fileWriter, fh);

                // writing tiles
                List<short> keys = file.getTileKeys();
                foreach (short key in keys)
                {
                    hfzWriteTile(ref fileWriter, fh, file.getTileData(key));
                }

                fileWriter.Close();
            }
            catch(Exception ex)
            {
                throw new Exception("Error writing file " + fileName, ex);
            }
            finally
            {
                // close file
                if (fileWriter != null)
                {
                    fileWriter.Close();
                    if (format == FileFormat.COMPRESSED)
                    {
                        Util.compressFile(fileName);
                    }
                }
            }
        }
Esempio n. 4
0
 private HfzHeader validateHeader(HfzFile file)
 {
     Epsilon epsilon = new Epsilon(1E-3);
     HfzHeader header = file.header;
     if(header != null)
     {
         float precis = header.Precis;
         ushort tileSize = header.TileSize;
         UInt32 nx = header.nx;
         UInt32 ny = header.ny;
         if(!RealExtensions.LE(precis, 0.0, epsilon))
         {
             if (tileSize < 8 || tileSize > 65535)
             {
                 throw new Exception("Invalid tilesize: " + tileSize);
             }
             else
             {
                 if (nx <= 0 || ny <= 0)
                 {
                     throw new Exception("Invalid mapsize: " + nx + "," + ny);
                 }
             }
         }
         else
         {
             throw new Exception("Invalid precis: " + precis);
         }
     }
     else
     {
         throw new Exception("No header found in file");
     }
     return header;
 }
 public void saveHfzFile(string fileName, FileFormat format, HfzFile file)
 {
     hfzManager.saveFile(fileName, format, file);
 }
 public override void Dispose()
 {
     this.file = null;
 }
        private static void checkAllPixels(HfzFile file, int expectedCount)
        {
            int count = 0;
            for (uint i = 1; i <= file.header.nx; i++)
            {
                for (uint j = 1; j <= file.header.ny; j++)
                {
                    file.getPixelAt(i, j);
                    count++;
                }
            }

            Assert.AreEqual(expectedCount, count);
        }