package org.libtiff.jai.codec;
/*
* XTIFF: eXtensible TIFF libraries for JAI.
*
* The contents of this file are subject to the JAVA ADVANCED IMAGING
* SAMPLE INPUT-OUTPUT CODECS AND WIDGET HANDLING SOURCE CODE License
* Version 1.0 (the "License"); You may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.sun.com/software/imaging/JAI/index.html
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is JAVA ADVANCED IMAGING SAMPLE INPUT-OUTPUT CODECS
* AND WIDGET HANDLING SOURCE CODE.
* The Initial Developer of the Original Code is: Sun Microsystems, Inc..
* Portions created by: Niles Ritter
* are Copyright (C): Niles Ritter, GeoTIFF.org, 1999,2000.
* All Rights Reserved.
* Contributor(s): Niles Ritter
*/
import java.io.IOException;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
import java.util.TreeMap;
import java.util.Iterator;
// Warning: media libraries subject to change
import com.sun.media.jai.codec.SeekableStream;
/**
* A class representing the factory for constructing a XTIFFDirectory,
* and the corresponding XTIFFFields. If you are creating extensions
* to those classes, extend this class as well. See the GeoTIFF package
* for an example of how to do this.
*
* @see XTIFFField
* @see XTIFFDirectory
*/
public class XTIFFFactory extends Object
implements java.io.Serializable
{
/**
* Default constructor
*/
public XTIFFFactory() {}
/**
* Constructs an XTIFFDirectoryFactory from a SeekableStream.
* The directory parameter specifies which directory to read from
* the linked list present in the stream; directory 0 is normally
* read but it is possible to store multiple images in a single
* TIFF file by maintaing multiple directories.
*
* @param stream a SeekableStream to read from.
* @param directory the index of the directory to read.
*/
public XTIFFDirectory createDirectory(SeekableStream stream, int directory)
throws IOException {
return new XTIFFDirectory(stream,directory);
}
/**
* Constructs a XTIFFDirectory by reading a SeekableStream.
* The ifd_offset parameter specifies the stream offset from which
* to begin reading; this mechanism is sometimes used to store
* private IFDs within a TIFF file that are not part of the normal
* sequence of IFDs.
*
* @param stream a SeekableStream to read from.
* @param ifd_offset the long byte offset of the directory.
*/
public XTIFFDirectory createDirectory(SeekableStream stream,
long ifd_offset)
throws IOException {
return new XTIFFDirectory(stream,ifd_offset);
}
/**
* Constructs an empty XTIFFDirectory for encoding
*/
public XTIFFDirectory createDirectory() {
return new XTIFFDirectory();
}
/**
* Constructs an XTIFFField from values
* @param tag the TIFF tag listed in XTIFF
* @param type the TIFF field type listed in XTIFFField
* @param count the number of values in array obj
* @param obj the array of values
* @see XTIFFField
*/
public XTIFFField createField(int tag, int type, int count, Object obj) {
return new XTIFFField(tag,type,count,obj);
}
}