package org.mitallast.dt1; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.ByteOrder; public class DtReader { private RandomAccessFile file; public DtReader(RandomAccessFile file) { this.file = file; } public FileHeader getFileHeader() throws IOException { FileHeader fileHeader = new FileHeader(); ByteBuffer buffer = ByteBuffer.allocate(FileHeader.BYTE_COUNT); buffer.order(ByteOrder.LITTLE_ENDIAN); file.seek(0); file.read(buffer.array()); fileHeader.fromByteBuffer(buffer); return fileHeader; } public BlockHeader getBlockHeader(int ptr) throws IOException { BlockHeader blockHeader = new BlockHeader(); ByteBuffer buffer = ByteBuffer.allocate(BlockHeader.BYTE_COUNT); buffer.order(ByteOrder.LITTLE_ENDIAN); file.seek(ptr); file.read(buffer.array()); blockHeader.fromByteBuffer(buffer); return blockHeader; } public SubBlockHeader getSubBlockHeader(int ptr) throws IOException { SubBlockHeader subBlockHeader = new SubBlockHeader(); ByteBuffer buffer = ByteBuffer.allocate(SubBlockHeader.BYTE_COUNT); buffer.order(ByteOrder.LITTLE_ENDIAN); file.seek(ptr); file.read(buffer.array()); subBlockHeader.fromByteBuffer(buffer); return subBlockHeader; } public byte[] getTile(int ptr, int length) throws IOException { file.seek(ptr); byte[] data = new byte[length]; file.read(data); return data; } }