private void writeIFDEntry(FileChannel channel, IFDEntry ifd, int start) throws IOException { channel.position(start); ByteBuffer buffer = ByteBuffer.allocate(12); buffer.putShort((short) ifd.tag.getCode()); buffer.putShort((short) ifd.type.code); buffer.putInt(ifd.count); int size = ifd.count * ifd.type.size; if (size <= 4) { int done = writeValues(buffer, ifd); for (int k = 0; k < 4 - done; k++) // fill out to 4 bytes buffer.put((byte) 0); buffer.flip(); channel.write(buffer); } else { // write offset buffer.putInt(nextOverflowData); buffer.flip(); channel.write(buffer); // write data channel.position(nextOverflowData); //System.out.println(" write offset = "+ifd.tag.getName()); ByteBuffer vbuffer = ByteBuffer.allocate(size); writeValues(vbuffer, ifd); vbuffer.flip(); channel.write(vbuffer); nextOverflowData += size; } }
private void writeIFDEntry(FileChannel channel, IFDEntry ifd, int start) throws IOException { channel.position(start); ByteBuffer buffer = ByteBuffer.allocate(12); buffer.putShort((short) ifd.tag.getCode()); buffer.putShort((short) ifd.type.code); buffer.putInt(ifd.count); int size = ifd.count * ifd.type.size; if (size <= 4) { int done = writeValues(buffer, ifd); for (int k = 0; k < 4 - done; k++) // fill out to 4 bytes buffer.put((byte) 0); buffer.flip(); channel.write(buffer); } else { // write offset buffer.putInt(nextOverflowData); buffer.flip(); channel.write(buffer); // write data channel.position(nextOverflowData); //System.out.println(" write offset = "+ifd.tag.getName()); ByteBuffer vbuffer = ByteBuffer.allocate(size); writeValues(vbuffer, ifd); vbuffer.flip(); channel.write(vbuffer); nextOverflowData += size; } }
private void writeIFDEntry(FileChannel channel, IFDEntry ifd, int start) throws IOException { channel.position(start); ByteBuffer buffer = ByteBuffer.allocate(12); buffer.putShort((short) ifd.tag.getCode()); buffer.putShort((short) ifd.type.code); buffer.putInt(ifd.count); int size = ifd.count * ifd.type.size; if (size <= 4) { int done = writeValues(buffer, ifd); for (int k = 0; k < 4 - done; k++) // fill out to 4 bytes buffer.put((byte) 0); buffer.flip(); channel.write(buffer); } else { // write offset buffer.putInt(nextOverflowData); buffer.flip(); channel.write(buffer); // write data channel.position(nextOverflowData); //System.out.println(" write offset = "+ifd.tag.getName()); ByteBuffer vbuffer = ByteBuffer.allocate(size); writeValues(vbuffer, ifd); vbuffer.flip(); channel.write(vbuffer); nextOverflowData += size; } }