private void readPixels(EndianBinaryReader reader, ushort width, ushort height, DmfFile file)
        {
            int totalPixels = width * height;
            uint xLocation = 1;
            uint yLocation = 1;
            for (int i = 0; i < totalPixels; i++)
            {
                short altitude = reader.ReadInt16();
                byte peakRoughness = reader.ReadByte();
                byte fractalRoughness = reader.ReadByte();
                byte cliffStrength = reader.ReadByte();
                byte erosionStrength = reader.ReadByte();
                byte autoLakeStrength = reader.ReadByte();
                byte climateId = reader.ReadByte();
                byte specialTypeId = reader.ReadByte();
                byte specialTypeParam = reader.ReadByte();

                file.addPixel(new DmfPixelInfo(xLocation, yLocation, altitude, peakRoughness, fractalRoughness, cliffStrength, erosionStrength, autoLakeStrength, climateId, specialTypeId, specialTypeParam));

                xLocation++;
                if (xLocation > width)
                {
                    xLocation = 1;
                    yLocation++;
                }
            }

            debugLine("pixel count: " + file.pixels.Count());
        }
        private DmfFile readDmfFile(EndianBinaryReader reader)
        {
            validateFile(reader);

            ushort width = BitConverter.ToUInt16(reader.ReadBytes(2), 0);
            debugLine("width: " + width);
            ushort height = BitConverter.ToUInt16(reader.ReadBytes(2), 0);
            debugLine("width: " + height);
            byte wrapFlag = reader.ReadByte();
            DmfFile file = new DmfFile(width, height, wrapFlag == 1 ? true : false);
            readPixels(reader, width, height, file);
            return file;
        }
        public void saveFile(string fileName, DmfFile file)
        {
            Stream fs = null;
            EndianBinaryWriter writer = null;
            try
            {
                debugLine("file name: " + fileName);
                fs = Util.openStream(fileName, FileFormat.UNCOMPRESSED, FileMode.Create);
                writer = Util.createEndianBinaryWriterForStream(fs);

                writeDmfFile(writer, file);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (writer != null)
                {
                    writer.Close();
                }
            }
        }
 public void saveDmfFile(string fileName, DmfFile file)
 {
     dmfManager.saveFile(fileName, file);
 }
        private void writeDmfFile(EndianBinaryWriter writer, DmfFile file)
        {
            writer.Write(Util.StringToByteArray("L3DT", 4));
            ushort fileType = 200;
            writer.Write(fileType);

            writer.Write(file.width);
            writer.Write(file.height);
            byte wrapFlag = file.wrapFlag == true ? (byte)1 : (byte)0;
            writer.Write(wrapFlag);

            foreach (DmfPixelInfo pixel in file.pixels)
            {
                writer.Write(pixel.altitude);
                writer.Write(pixel.peakRoughness);
                writer.Write(pixel.fractalRoughness);
                writer.Write(pixel.cliffStrength);
                writer.Write(pixel.erosionStrength);
                writer.Write(pixel.autoLakeStrength);
                writer.Write(pixel.climateId);
                writer.Write(pixel.specialTypeId);
                writer.Write(pixel.specialTypeParam);
            }
        }