package org.hwo.image.tiff; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.lang.reflect.Array; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.ShortBuffer; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import org.hwo.image.ImageFile; import org.hwo.image.UnsupportedFormatException; public class TiffFile implements ImageFile { ByteBuffer sourceBuffer; boolean bigEndian; LinkedList ifds; List pages; public TiffFile() { reset(); } @Override public ImageFile newInstance() { return new TiffFile(); } @Override public void reset() { bigEndian = false; ifds = new LinkedList(); pages = new LinkedList(); sourceBuffer = null; } @Override public void load(File imageFile) { if (!identify(imageFile)) throw new UnsupportedFormatException(); Integer firstIFD = sourceBuffer.getInt(0x0004); sourceBuffer.position(firstIFD); ifds.add(0, new IFD(this)); reorderPages(); } private void reorderPages() { System.err.println("Testing Page Order"); if (ifds.size() == 0) // Keine Seiten vorhanden return; if (ifds.get(0).getPageNumber() == -1) // Keine Seitenzahlen angegeben return; System.err.println("Reorder..."); IFD[] ifdsOrdered = new IFD[ ifds.size() ]; for (int n=0; n