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"); } }
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); } } } }
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); }