PngDecodingDataStream(InputStream stream) throws IOException { super(); this.stream = stream; nextBitIndex = MAX_BIT + 1; adlerValue = 1; lzBlockReader = new PngLzBlockReader(this); readCompressedDataHeader(); lzBlockReader.readNextBlockHeader(); }
void assertCompressedDataAtEnd() throws IOException { assertBlockAtEnd(); while (!isLastBlock) { readNextBlockHeader(); assertBlockAtEnd(); } }
/** * This method should be called when the image decoder thinks * that all of the compressed image data has been read. This * method will ensure that the next data value is an end of * block marker. If there are more blocks after this one, * the method will read them and ensure that they are empty. */ void assertImageDataAtEnd() throws IOException { lzBlockReader.assertCompressedDataAtEnd(); }
byte getNextByte() throws IOException { if (compressionType == UNCOMPRESSED) { if (uncompressedBytesRemaining == 0) { readNextBlockHeader(); return getNextByte(); } uncompressedBytesRemaining--; return stream.getNextIdatByte(); } else { return getNextCompressedByte(); } }
@Override public int read() throws IOException { byte nextDecodedByte = lzBlockReader.getNextByte(); updateAdler(nextDecodedByte); return nextDecodedByte & 0xFF; }
private void readCompressedDataHeader() throws IOException { byte headerByte1 = getNextIdatByte(); byte headerByte2 = getNextIdatByte(); int number = ((headerByte1 & 0xFF) << 8) | (headerByte2 & 0xFF); if (number % 31 != 0) error(); int compressionMethod = headerByte1 & 0x0F; if (compressionMethod != 8) error(); int windowSizeHint = (headerByte1 & 0xF0) >> 4; if (windowSizeHint > 7) error(); int windowSize = (1 << (windowSizeHint + 8)); lzBlockReader.setWindowSize(windowSize); int dictionary = (headerByte2 & (1 << 5)); if (dictionary != 0) error(); // int compressionLevel = (headerByte2 & 0xC0) >> 6; }
byte getNextByte() throws IOException { if (compressionType == UNCOMPRESSED) { if (uncompressedBytesRemaining == 0) { readNextBlockHeader(); return getNextByte(); } uncompressedBytesRemaining--; return stream.getNextIdatByte(); } else { return getNextCompressedByte(); } }
@Override public int read() throws IOException { byte nextDecodedByte = lzBlockReader.getNextByte(); updateAdler(nextDecodedByte); return nextDecodedByte & 0xFF; }
private void readCompressedDataHeader() throws IOException { byte headerByte1 = getNextIdatByte(); byte headerByte2 = getNextIdatByte(); int number = ((headerByte1 & 0xFF) << 8) | (headerByte2 & 0xFF); if (number % 31 != 0) error(); int compressionMethod = headerByte1 & 0x0F; if (compressionMethod != 8) error(); int windowSizeHint = (headerByte1 & 0xF0) >> 4; if (windowSizeHint > 7) error(); int windowSize = (1 << (windowSizeHint + 8)); lzBlockReader.setWindowSize(windowSize); int dictionary = (headerByte2 & (1 << 5)); if (dictionary != 0) error(); // int compressionLevel = (headerByte2 & 0xC0) >> 6; }
byte getNextByte() throws IOException { if (compressionType == UNCOMPRESSED) { if (uncompressedBytesRemaining == 0) { readNextBlockHeader(); return getNextByte(); } uncompressedBytesRemaining--; return stream.getNextIdatByte(); } else { return getNextCompressedByte(); } }
PngDecodingDataStream(InputStream stream) throws IOException { super(); this.stream = stream; nextBitIndex = MAX_BIT + 1; adlerValue = 1; lzBlockReader = new PngLzBlockReader(this); readCompressedDataHeader(); lzBlockReader.readNextBlockHeader(); }
void assertCompressedDataAtEnd() throws IOException { assertBlockAtEnd(); while (!isLastBlock) { readNextBlockHeader(); assertBlockAtEnd(); } }
/** * This method should be called when the image decoder thinks * that all of the compressed image data has been read. This * method will ensure that the next data value is an end of * block marker. If there are more blocks after this one, * the method will read them and ensure that they are empty. */ void assertImageDataAtEnd() throws IOException { lzBlockReader.assertCompressedDataAtEnd(); }
@Override public int read() throws IOException { byte nextDecodedByte = lzBlockReader.getNextByte(); updateAdler(nextDecodedByte); return nextDecodedByte & 0xFF; }
private void readCompressedDataHeader() throws IOException { byte headerByte1 = getNextIdatByte(); byte headerByte2 = getNextIdatByte(); int number = ((headerByte1 & 0xFF) << 8) | (headerByte2 & 0xFF); if (number % 31 != 0) error(); int compressionMethod = headerByte1 & 0x0F; if (compressionMethod != 8) error(); int windowSizeHint = (headerByte1 & 0xF0) >> 4; if (windowSizeHint > 7) error(); int windowSize = (1 << (windowSizeHint + 8)); lzBlockReader.setWindowSize(windowSize); int dictionary = (headerByte2 & (1 << 5)); if (dictionary != 0) error(); // int compressionLevel = (headerByte2 & 0xC0) >> 6; }
byte getNextByte() throws IOException { if (compressionType == UNCOMPRESSED) { if (uncompressedBytesRemaining == 0) { readNextBlockHeader(); return getNextByte(); } uncompressedBytesRemaining--; return stream.getNextIdatByte(); } else { return getNextCompressedByte(); } }
PngDecodingDataStream(InputStream stream) throws IOException { super(); this.stream = stream; nextBitIndex = MAX_BIT + 1; adlerValue = 1; lzBlockReader = new PngLzBlockReader(this); readCompressedDataHeader(); lzBlockReader.readNextBlockHeader(); }
void assertCompressedDataAtEnd() throws IOException { assertBlockAtEnd(); while (!isLastBlock) { readNextBlockHeader(); assertBlockAtEnd(); } }
/** * This method should be called when the image decoder thinks * that all of the compressed image data has been read. This * method will ensure that the next data value is an end of * block marker. If there are more blocks after this one, * the method will read them and ensure that they are empty. */ void assertImageDataAtEnd() throws IOException { lzBlockReader.assertCompressedDataAtEnd(); }
@Override public int read() throws IOException { byte nextDecodedByte = lzBlockReader.getNextByte(); updateAdler(nextDecodedByte); return nextDecodedByte & 0xFF; }