< prev index next >

src/java.desktop/share/classes/javax/imageio/plugins/jpeg/JPEGImageReadParam.java

Print this page

        

*** 29,65 **** /** * This class adds the ability to set JPEG quantization and Huffman * tables when using the built-in JPEG reader plug-in. An instance of * this class will be returned from the ! * <code>getDefaultImageReadParam</code> methods of the built-in JPEG ! * <code>ImageReader</code>. * * <p> The sole purpose of these additions is to allow the * specification of tables for use in decoding abbreviated streams. * The built-in JPEG reader will also accept an ordinary ! * <code>ImageReadParam</code>, which is sufficient for decoding * non-abbreviated streams. * * <p> While tables for abbreviated streams are often obtained by * first reading another abbreviated stream containing only the * tables, in some applications the tables are fixed ahead of time. * This class allows the tables to be specified directly from client * code. If no tables are specified either in the stream or in a ! * <code>JPEGImageReadParam</code>, then the stream is presumed to use * the "standard" visually lossless tables. See {@link JPEGQTable JPEGQTable} * and {@link JPEGHuffmanTable JPEGHuffmanTable} for more information * on the default tables. * ! * <p> The default <code>JPEGImageReadParam</code> returned by the ! * <code>getDefaultReadParam</code> method of the builtin JPEG reader * contains no tables. Default tables may be obtained from the table * classes {@link JPEGQTable JPEGQTable} and * {@link JPEGHuffmanTable JPEGHuffmanTable}. * * <p> If a stream does contain tables, the tables given in a ! * <code>JPEGImageReadParam</code> are ignored. Furthermore, if the * first image in a stream does contain tables and subsequent ones do * not, then the tables given in the first image are used for all the * abbreviated images. Once tables have been read from a stream, they * can be overridden only by tables subsequently read from the same * stream. In order to specify new tables, the {@link --- 29,65 ---- /** * This class adds the ability to set JPEG quantization and Huffman * tables when using the built-in JPEG reader plug-in. An instance of * this class will be returned from the ! * {@code getDefaultImageReadParam} methods of the built-in JPEG ! * {@code ImageReader}. * * <p> The sole purpose of these additions is to allow the * specification of tables for use in decoding abbreviated streams. * The built-in JPEG reader will also accept an ordinary ! * {@code ImageReadParam}, which is sufficient for decoding * non-abbreviated streams. * * <p> While tables for abbreviated streams are often obtained by * first reading another abbreviated stream containing only the * tables, in some applications the tables are fixed ahead of time. * This class allows the tables to be specified directly from client * code. If no tables are specified either in the stream or in a ! * {@code JPEGImageReadParam}, then the stream is presumed to use * the "standard" visually lossless tables. See {@link JPEGQTable JPEGQTable} * and {@link JPEGHuffmanTable JPEGHuffmanTable} for more information * on the default tables. * ! * <p> The default {@code JPEGImageReadParam} returned by the ! * {@code getDefaultReadParam} method of the builtin JPEG reader * contains no tables. Default tables may be obtained from the table * classes {@link JPEGQTable JPEGQTable} and * {@link JPEGHuffmanTable JPEGHuffmanTable}. * * <p> If a stream does contain tables, the tables given in a ! * {@code JPEGImageReadParam} are ignored. Furthermore, if the * first image in a stream does contain tables and subsequent ones do * not, then the tables given in the first image are used for all the * abbreviated images. Once tables have been read from a stream, they * can be overridden only by tables subsequently read from the same * stream. In order to specify new tables, the {@link
*** 81,122 **** private JPEGQTable[] qTables = null; private JPEGHuffmanTable[] DCHuffmanTables = null; private JPEGHuffmanTable[] ACHuffmanTables = null; /** ! * Constructs a <code>JPEGImageReadParam</code>. */ public JPEGImageReadParam() { super(); } /** ! * Returns <code>true</code> if tables are currently set. * ! * @return <code>true</code> if tables are present. */ public boolean areTablesSet() { return (qTables != null); } /** * Sets the quantization and Huffman tables to use in decoding * abbreviated streams. There may be a maximum of 4 tables of * each type. These tables are ignored once tables are * encountered in the stream. All arguments must be ! * non-<code>null</code>. The two arrays of Huffman tables must * have the same number of elements. The table specifiers in the * frame and scan headers in the stream are assumed to be * equivalent to indices into these arrays. The argument arrays * are copied by this method. * * @param qTables an array of quantization table objects. * @param DCHuffmanTables an array of Huffman table objects. * @param ACHuffmanTables an array of Huffman table objects. * * @exception IllegalArgumentException if any of the arguments ! * is <code>null</code>, has more than 4 elements, or if the * numbers of DC and AC tables differ. * * @see #unsetDecodeTables */ public void setDecodeTables(JPEGQTable[] qTables, --- 81,122 ---- private JPEGQTable[] qTables = null; private JPEGHuffmanTable[] DCHuffmanTables = null; private JPEGHuffmanTable[] ACHuffmanTables = null; /** ! * Constructs a {@code JPEGImageReadParam}. */ public JPEGImageReadParam() { super(); } /** ! * Returns {@code true} if tables are currently set. * ! * @return {@code true} if tables are present. */ public boolean areTablesSet() { return (qTables != null); } /** * Sets the quantization and Huffman tables to use in decoding * abbreviated streams. There may be a maximum of 4 tables of * each type. These tables are ignored once tables are * encountered in the stream. All arguments must be ! * non-{@code null}. The two arrays of Huffman tables must * have the same number of elements. The table specifiers in the * frame and scan headers in the stream are assumed to be * equivalent to indices into these arrays. The argument arrays * are copied by this method. * * @param qTables an array of quantization table objects. * @param DCHuffmanTables an array of Huffman table objects. * @param ACHuffmanTables an array of Huffman table objects. * * @exception IllegalArgumentException if any of the arguments ! * is {@code null}, has more than 4 elements, or if the * numbers of DC and AC tables differ. * * @see #unsetDecodeTables */ public void setDecodeTables(JPEGQTable[] qTables,
*** 149,177 **** this.ACHuffmanTables = null; } /** * Returns a copy of the array of quantization tables set on the ! * most recent call to <code>setDecodeTables</code>, or ! * <code>null</code> if tables are not currently set. * ! * @return an array of <code>JPEGQTable</code> objects, or ! * <code>null</code>. * * @see #setDecodeTables */ public JPEGQTable[] getQTables() { return (qTables != null) ? qTables.clone() : null; } /** * Returns a copy of the array of DC Huffman tables set on the ! * most recent call to <code>setDecodeTables</code>, or ! * <code>null</code> if tables are not currently set. * ! * @return an array of <code>JPEGHuffmanTable</code> objects, or ! * <code>null</code>. * * @see #setDecodeTables */ public JPEGHuffmanTable[] getDCHuffmanTables() { return (DCHuffmanTables != null) --- 149,177 ---- this.ACHuffmanTables = null; } /** * Returns a copy of the array of quantization tables set on the ! * most recent call to {@code setDecodeTables}, or ! * {@code null} if tables are not currently set. * ! * @return an array of {@code JPEGQTable} objects, or ! * {@code null}. * * @see #setDecodeTables */ public JPEGQTable[] getQTables() { return (qTables != null) ? qTables.clone() : null; } /** * Returns a copy of the array of DC Huffman tables set on the ! * most recent call to {@code setDecodeTables}, or ! * {@code null} if tables are not currently set. * ! * @return an array of {@code JPEGHuffmanTable} objects, or ! * {@code null}. * * @see #setDecodeTables */ public JPEGHuffmanTable[] getDCHuffmanTables() { return (DCHuffmanTables != null)
*** 179,193 **** : null; } /** * Returns a copy of the array of AC Huffman tables set on the ! * most recent call to <code>setDecodeTables</code>, or ! * <code>null</code> if tables are not currently set. * ! * @return an array of <code>JPEGHuffmanTable</code> objects, or ! * <code>null</code>. * * @see #setDecodeTables */ public JPEGHuffmanTable[] getACHuffmanTables() { return (ACHuffmanTables != null) --- 179,193 ---- : null; } /** * Returns a copy of the array of AC Huffman tables set on the ! * most recent call to {@code setDecodeTables}, or ! * {@code null} if tables are not currently set. * ! * @return an array of {@code JPEGHuffmanTable} objects, or ! * {@code null}. * * @see #setDecodeTables */ public JPEGHuffmanTable[] getACHuffmanTables() { return (ACHuffmanTables != null)
< prev index next >