01: /*
02: * $RCSfile: ImageDecoder.java,v $
03: *
04: * Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved.
05: *
06: * Use is subject to license terms.
07: *
08: * $Revision: 1.1 $
09: * $Date: 2005/02/11 04:55:30 $
10: * $State: Exp $
11: */
12: package com.sun.media.jai.codec;
13:
14: import java.awt.image.Raster;
15: import java.awt.image.RenderedImage;
16: import java.io.InputStream;
17: import java.io.IOException;
18:
19: /**
20: * An interface describing objects that transform an InputStream into a
21: * BufferedImage or Raster.
22: *
23: * <p><b> This interface is not a committed part of the JAI API. It may
24: * be removed or changed in future releases of JAI.</b>
25: */
26: public interface ImageDecoder {
27:
28: /**
29: * Returns the current parameters as an instance of the
30: * ImageDecodeParam interface. Concrete implementations of this
31: * interface will return corresponding concrete implementations of
32: * the ImageDecodeParam interface. For example, a JPEGImageDecoder
33: * will return an instance of JPEGDecodeParam.
34: */
35: ImageDecodeParam getParam();
36:
37: /**
38: * Sets the current parameters to an instance of the
39: * ImageDecodeParam interface. Concrete implementations
40: * of ImageDecoder may throw a RuntimeException if the
41: * param argument is not an instance of the appropriate
42: * subclass or subinterface. For example, a JPEGImageDecoder
43: * will expect param to be an instance of JPEGDecodeParam.
44: */
45: void setParam(ImageDecodeParam param);
46:
47: /** Returns the SeekableStream associated with this ImageDecoder. */
48: SeekableStream getInputStream();
49:
50: /** Returns the number of pages present in the current stream. */
51: int getNumPages() throws IOException;
52:
53: /**
54: * Returns a Raster that contains the decoded contents of the
55: * SeekableStream associated with this ImageDecoder. Only
56: * the first page of a multi-page image is decoded.
57: */
58: Raster decodeAsRaster() throws IOException;
59:
60: /**
61: * Returns a Raster that contains the decoded contents of the
62: * SeekableStream associated with this ImageDecoder.
63: * The given page of a multi-page image is decoded. If
64: * the page does not exist, an IOException will be thrown.
65: * Page numbering begins at zero.
66: *
67: * @param page The page to be decoded.
68: */
69: Raster decodeAsRaster(int page) throws IOException;
70:
71: /**
72: * Returns a RenderedImage that contains the decoded contents of the
73: * SeekableStream associated with this ImageDecoder. Only
74: * the first page of a multi-page image is decoded.
75: */
76: RenderedImage decodeAsRenderedImage() throws IOException;
77:
78: /**
79: * Returns a RenderedImage that contains the decoded contents of the
80: * SeekableStream associated with this ImageDecoder.
81: * The given page of a multi-page image is decoded. If
82: * the page does not exist, an IOException will be thrown.
83: * Page numbering begins at zero.
84: *
85: * @param page The page to be decoded.
86: */
87: RenderedImage decodeAsRenderedImage(int page) throws IOException;
88: }
|