- /*
 - * @(#)JPEGImageDecoder.java 1.3 01/11/29
 - *
 - * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
 - * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 - */
 - /**********************************************************************
 - **********************************************************************
 - **********************************************************************
 - *** COPYRIGHT (c) 1997-1998 Eastman Kodak Company. ***
 - *** As an unpublished work pursuant to Title 17 of the United ***
 - *** States Code. All rights reserved. ***
 - **********************************************************************
 - **********************************************************************
 - **********************************************************************/
 - package com.sun.image.codec.jpeg;
 - /**
 - * JPEGImageDecoder Interface
 - *
 - * JPEGImageDecoder decompresses an JPEG InputStream into a Raster or
 - * a BufferedImage depending upon the method invoked. Decoding the
 - * JPEG input stream is controlled by the parameters in the
 - * JPEGDecodeParam object. If no JPEGDecodeParam object has been
 - * specified then one is created to contain information about a
 - * decompressed JPEG stream.<P>
 - *
 - * The JPEGDecodeParam object is updated with information from the
 - * file header during decompression. If the input stream contains
 - * tables only information (no image data), the JPEGDecodeParam object
 - * will be updated and NULL returned for the output image. If the
 - * input stream contains only image data, the parameters and tables in
 - * the current JPEGDecodeParam object will be used to decode in
 - * decoding the JPEG stream. If no tables are set in the
 - * JPEGDecodeParam object, an exception will be thrown.<P>
 - *
 - * ColorSpace comments: First off JPEG by specification is color
 - * blind! That said, some color space conversion is done in the name
 - * of better compression ratios. If a BufferedImage is requested
 - * common color conversions will be applied. Some updates to the
 - * standard color space designations have been made to allow this
 - * decoder to handle alpha channels. See the JPEGDecodeParam
 - * description for more details on additional color space
 - * designations ( @see JPEGDecodeParam ).<P>
 - *
 - * This decoder can process interchange, abbreviated and progressive
 - * jpeg streams. However, progressive jpeg streams are treated as
 - * interchange streams. They return once with the entire image in the
 - * image buffer.
 - */
 - import java.io.InputStream;
 - import java.io.IOException;
 - import java.awt.Point;
 - import java.awt.color.ColorSpace;
 - import java.awt.image.BufferedImage;
 - import java.awt.image.ColorModel;
 - import java.awt.image.DirectColorModel;
 - import java.awt.image.DataBuffer;
 - import java.awt.image.DataBufferByte;
 - import java.awt.image.DataBufferInt;
 - import java.awt.image.Raster;
 - import java.awt.image.SampleModel;
 - import java.awt.image.WritableRaster;
 - /**
 - * This interface describes a JPEG data stream decoder. This decoder
 - * takes an InputStream that contains JPEG encoded image data. The
 - * JPEGImageDecoder will decode the JPEG image data according to the
 - * parameters set in a JPEGDecodeParam object. The resulting image
 - * data is returned in either a Raster or a BufferedImage.
 - * <p>
 - * Note that the classes in the com.sun.image.codec.jpeg package are not
 - * part of the core Java APIs. They are a part of Sun's JDK and JRE
 - * distributions. Although other licensees may choose to distribute these
 - * classes, developers cannot depend on their availability in non-Sun
 - * implementations. We expect that equivalent functionality will eventually
 - * be available in a core API or standard extension.
 - * <p>
 - *
 - * @see JPEGCodec
 - * @see JPEGDecoderParam
 - * @see Raster
 - * @see BufferedImage
 - * @version 4 December 1997
 - */
 - public interface JPEGImageDecoder {
 - /**
 - * Returns the JPEGDecodeParam object that resulted from the most
 - * recent decoding event.
 - */
 - public JPEGDecodeParam getJPEGDecodeParam();
 - /**
 - * Sets the JPEGDecodeParam object used to determine the features
 - * of the decompression performed on the JPEG encoded data. This
 - * is ussually only needed for decoding abbreviated JPEG data
 - * streams.
 - * @param jdp JPEGDecodeParam object
 - */
 - public void setJPEGDecodeParam(JPEGDecodeParam jdp);
 - /**
 - * Get the input stream that decoding will occur from.
 - * @return The stream that the decoder is currently assciated with.
 - */
 - public InputStream getInputStream();
 - /**
 - * Decode the JPEG stream that was passed as part of
 - * construction. The JPEG decompression will be performed
 - * according to the current settings of the JPEGDecodeParam
 - * object. For a tables only stream this will return null.
 - * @return Raster containg the image data. Colorspace and other
 - * pertinent information can be obtained from the
 - * JPEGDecodeParam object.
 - * @exception ImageFormatException if irregularities in the JPEG
 - * stream or an unknown condition is encountered.
 - */
 - public Raster decodeAsRaster()
 - throws IOException, ImageFormatException;
 - /**
 - * Decodes the current JPEG data stream. The result of decoding
 - * this InputStream is a BufferedImage the ColorModel associated
 - * with this BufferedImage is determined based on the encoded
 - * COLOR_ID of the JPEGDecodeParam object. For a tables only
 - * stream this will return null.
 - * @return BufferedImage containing the image data.
 - * @exception ImageFormatException if irregularities in the JPEG
 - * stream or an unknown condition is encountered.
 - */
 - public BufferedImage decodeAsBufferedImage()
 - throws IOException, ImageFormatException;
 - } // end class JPEGImageDecoder