gnu.javax.imageio.png

Class PNGChunk

Known Direct Subclasses:
PNGData, PNGGamma, PNGHeader, PNGICCProfile, PNGPalette, PNGPhys, PNGTime

public class PNGChunk
extends Object

Class to load and validate a generic PNG chunk.

Field Summary

static int
TYPE_DATA
static int
TYPE_END
static int
TYPE_GAMMA
static int
TYPE_HEADER
(recognized) PNG chunk types.
static int
TYPE_PALETTE
static int
TYPE_PHYS
static int
TYPE_PROFILE
static int
TYPE_TIME
protected byte[]
data
The chunk data

Constructor Summary

PNGChunk(int type)
Constructor for creating new chunks.
PNGChunk(int type, byte[] data, int crc)
Constructor for reading a generic chunk.

Method Summary

static byte[]
getInt(int intValue)
Convenience method.
int
getType()
Returns the chunk type.
boolean
isEmpty()
Return whether the chunk contains any data.
boolean
isValidChunk()
Validates the chunk
static PNGChunk
readChunk(InputStream in, boolean strict)
Loads a chunk from an InputStream.
String
toString()
Convert this Object to a human-readable String.
void
writeChunk(OutputStream out)
Writes a PNG chunk to an output stream, performing the CRC calculation as well.

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

TYPE_DATA

public static final int TYPE_DATA
Field Value:
1229209940

TYPE_END

public static final int TYPE_END
Field Value:
1229278788

TYPE_GAMMA

public static final int TYPE_GAMMA
Field Value:
1732332865

TYPE_HEADER

public static final int TYPE_HEADER
(recognized) PNG chunk types.
Field Value:
1229472850

TYPE_PALETTE

public static final int TYPE_PALETTE
Field Value:
1347179589

TYPE_PHYS

public static final int TYPE_PHYS
Field Value:
1883789683

TYPE_PROFILE

public static final int TYPE_PROFILE
Field Value:
1766015824

TYPE_TIME

public static final int TYPE_TIME
Field Value:
1950960965

data

protected byte[] data
The chunk data

Constructor Details

PNGChunk

protected PNGChunk(int type)
Constructor for creating new chunks. (only used by subclasses - creating a generic chunk is rather useless)

PNGChunk

protected PNGChunk(int type,
                   byte[] data,
                   int crc)
Constructor for reading a generic chunk.

Method Details

getInt

public static byte[] getInt(int intValue)
Convenience method. Cast an int to four bytes (big endian). (Now why doesn't java have a simple way of doing this?)

getType

public int getType()
Returns the chunk type.

isEmpty

public boolean isEmpty()
Return whether the chunk contains any data.

isValidChunk

public boolean isValidChunk()
Validates the chunk

readChunk

public static PNGChunk readChunk(InputStream in,
                                 boolean strict)
            throws IOException,
                   PNGException
Loads a chunk from an InputStream. Does not perform validation, but will throw an IOException if the read fails.
Parameters:
in - - th einputstream to read from
strict - - if true, a PNGException is thrown on all invalid chunks, if false, only critical chunks will throw PNGExceptions.

toString

public String toString()
Convert this Object to a human-readable String. There are no limits placed on how long this String should be or what it should contain. We suggest you make it as intuitive as possible to be able to place it into System.out.println() and such.

It is typical, but not required, to ensure that this method never completes abruptly with a RuntimeException.

This method will be called when performing string concatenation with this object. If the result is null, string concatenation will instead use "null".

The default implementation returns getClass().getName() + "@" + Integer.toHexString(hashCode()).

Overrides:
toString in interface Object
Returns:
the String representing this Object, which may be null

writeChunk

public void writeChunk(OutputStream out)
            throws IOException
Writes a PNG chunk to an output stream, performing the CRC calculation as well.

PNGChunk.java -- Generic PNG chunk Copyright (C) 2006 Free Software Foundation This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.