com.twelvemonkeys.io.enc
Class PackBitsDecoder
java.lang.Object
com.twelvemonkeys.io.enc.PackBitsDecoder
- All Implemented Interfaces:
- Decoder
public final class PackBitsDecoder
- extends Object
- implements Decoder
Decoder implementation for Apple PackBits run-length encoding.
From Wikipedia, the free encyclopedia
PackBits is a fast, simple compression scheme for run-length encoding of
data.
Apple introduced the PackBits format with the release of MacPaint on the
Macintosh computer. This compression scheme is one of the types of
compression that can be used in TIFF-files.
A PackBits data stream consists of packets of one byte of header followed by
data. The header is a signed byte; the data can be signed, unsigned, or
packed (such as MacPaint pixels).
| Header byte | Data |
| 0 to 127 | 1 + n literal bytes of data |
| 0 to -127 | One byte of data, repeated 1 - n times in
the decompressed output |
| -128 | No operation |
Note that interpreting 0 as positive or negative makes no difference in the
output. Runs of two bytes adjacent to non-runs are typically written as
literal data.
See Understanding PackBits
- Version:
- $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/main/java/com/twelvemonkeys/io/enc/PackBitsDecoder.java#1 $
- Author:
- Harald Kuhr
|
Constructor Summary |
PackBitsDecoder()
Creates a PackBitsDecoder. |
PackBitsDecoder(boolean pDisableNoop)
Creates a PackBitsDecoder, with optional compatibility mode. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
PackBitsDecoder
public PackBitsDecoder()
- Creates a
PackBitsDecoder.
PackBitsDecoder
public PackBitsDecoder(boolean pDisableNoop)
- Creates a
PackBitsDecoder, with optional compatibility mode.
As some implementations of PackBits-like encoders treat -128 as length of
a compressed run, instead of a no-op, it's possible to disable no-ops for compatibility.
Should be used with caution, even though, most known encoders never write no-ops in the compressed streams.
- Parameters:
pDisableNoop - true if -128 should be treated as a compressed run, and not a no-op
decode
public int decode(InputStream stream,
ByteBuffer buffer)
throws IOException
- Decodes bytes from the given input stream, to the given buffer.
- Specified by:
decode in interface Decoder
- Parameters:
stream - the stream to decode frombuffer - a byte array, minimum 128 (or 129 if no-op is disabled) bytes long
- Returns:
- The number of bytes decoded
- Throws:
IOException
DecodeException - if encoded data is corrupt.
EOFException - if a premature end-of-file is encountered.
Copyright © 2015. All Rights Reserved.