package a2geek.apple2.image.encoder.encode; import a2geek.apple2.image.encoder.A2Image; /** * PackBits. The following text is from Wikipedia: *
* 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. *
* Looking at the bits, setup is:
*
%0nnn nnnn | 1 + n literal bytes of data |
%1nnn nnnn | One byte of data repeated 1 - n times. |
%1000 0000 | No operation (used to flag END OF FILE; this is a variance) |