Class T4AndT6Compression
- java.lang.Object
-
- org.apache.commons.imaging.common.itu_t4.T4AndT6Compression
-
public final class T4AndT6Compression extends java.lang.Object
-
-
Field Summary
Fields Modifier and Type Field Description static int
BLACK
private static HuffmanTree<java.lang.Integer>
BLACK_RUN_LENGTHS
private static HuffmanTree<T4_T6_Tables.Entry>
CONTROL_CODES
static int
WHITE
private static HuffmanTree<java.lang.Integer>
WHITE_RUN_LENGTHS
-
Constructor Summary
Constructors Modifier Constructor Description private
T4AndT6Compression()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static int
changingElementAt(int[] line, int position)
private static void
compress1DLine(BitInputStreamFlexible inputStream, BitArrayOutputStream outputStream, int[] referenceLine, int width)
static byte[]
compressModifiedHuffman(byte[] uncompressed, int width, int height)
Compressed with the "Modified Huffman" encoding of section 10 in the TIFF6 specification.private static int
compressT(int a0, int a1, int b1, BitArrayOutputStream outputStream, int codingA0Color, int[] codingLine)
static byte[]
compressT4_1D(byte[] uncompressed, int width, int height, boolean hasFill)
static byte[]
compressT4_2D(byte[] uncompressed, int width, int height, boolean hasFill, int parameterK)
static byte[]
compressT6(byte[] uncompressed, int width, int height)
static byte[]
decompressModifiedHuffman(byte[] compressed, int width, int height)
Decompresses the "Modified Huffman" encoding of section 10 in the TIFF6 specification.static byte[]
decompressT4_1D(byte[] compressed, int width, int height, boolean hasFill)
Decompresses T.4 1D encoded data.static byte[]
decompressT4_2D(byte[] compressed, int width, int height, boolean hasFill)
Decompressed T.4 2D encoded data.static byte[]
decompressT6(byte[] compressed, int width, int height)
Decompress T.6 encoded data.private static void
fillRange(BitArrayOutputStream outputStream, int[] referenceRow, int a0, int end, int color)
private static boolean
isEOL(T4_T6_Tables.Entry entry, boolean hasFill)
private static T4_T6_Tables.Entry
lowerBound(T4_T6_Tables.Entry[] entries, int value)
private static int
nextChangingElement(int[] line, int currentColour, int start)
private static int
readTotalRunLength(BitInputStreamFlexible bitStream, int color)
private static void
writeRunLength(BitArrayOutputStream bitStream, int runLength, int color)
-
-
-
Field Detail
-
WHITE_RUN_LENGTHS
private static final HuffmanTree<java.lang.Integer> WHITE_RUN_LENGTHS
-
BLACK_RUN_LENGTHS
private static final HuffmanTree<java.lang.Integer> BLACK_RUN_LENGTHS
-
CONTROL_CODES
private static final HuffmanTree<T4_T6_Tables.Entry> CONTROL_CODES
-
WHITE
public static final int WHITE
- See Also:
- Constant Field Values
-
BLACK
public static final int BLACK
- See Also:
- Constant Field Values
-
-
Method Detail
-
compress1DLine
private static void compress1DLine(BitInputStreamFlexible inputStream, BitArrayOutputStream outputStream, int[] referenceLine, int width) throws ImageWriteException
- Throws:
ImageWriteException
-
compressModifiedHuffman
public static byte[] compressModifiedHuffman(byte[] uncompressed, int width, int height) throws ImageWriteException
Compressed with the "Modified Huffman" encoding of section 10 in the TIFF6 specification. No EOLs, no RTC, rows are padded to end on a byte boundary.- Parameters:
uncompressed
- uncompressed byte datawidth
- image widthheight
- image height- Returns:
- the compressed data
- Throws:
ImageWriteException
- if it fails to write the compressed data
-
decompressModifiedHuffman
public static byte[] decompressModifiedHuffman(byte[] compressed, int width, int height) throws ImageReadException
Decompresses the "Modified Huffman" encoding of section 10 in the TIFF6 specification. No EOLs, no RTC, rows are padded to end on a byte boundary.- Parameters:
compressed
- compressed byte datawidth
- image widthheight
- image height- Returns:
- the compressed data
- Throws:
ImageReadException
- if it fails to read the compressed data
-
compressT4_1D
public static byte[] compressT4_1D(byte[] uncompressed, int width, int height, boolean hasFill) throws ImageWriteException
- Throws:
ImageWriteException
-
decompressT4_1D
public static byte[] decompressT4_1D(byte[] compressed, int width, int height, boolean hasFill) throws ImageReadException
Decompresses T.4 1D encoded data. EOL at the beginning and after each row, can be preceded by fill bits to fit on a byte boundary, no RTC.- Parameters:
compressed
- compressed byte datawidth
- image widthheight
- image heighthasFill
- used to check the end of line- Returns:
- the decompressed data
- Throws:
ImageReadException
- if it fails to read the compressed data
-
compressT
private static int compressT(int a0, int a1, int b1, BitArrayOutputStream outputStream, int codingA0Color, int[] codingLine)
-
compressT4_2D
public static byte[] compressT4_2D(byte[] uncompressed, int width, int height, boolean hasFill, int parameterK) throws ImageWriteException
- Throws:
ImageWriteException
-
decompressT4_2D
public static byte[] decompressT4_2D(byte[] compressed, int width, int height, boolean hasFill) throws ImageReadException
Decompressed T.4 2D encoded data. EOL at the beginning and after each row, can be preceded by fill bits to fit on a byte boundary, and is succeeded by a tag bit determining whether the next line is encoded using 1D or 2D. No RTC.- Parameters:
compressed
- compressed byte datawidth
- image widthheight
- image heighthasFill
- used to check the end of line- Returns:
- the decompressed data
- Throws:
ImageReadException
- if it fails to read the compressed data
-
compressT6
public static byte[] compressT6(byte[] uncompressed, int width, int height) throws ImageWriteException
- Throws:
ImageWriteException
-
decompressT6
public static byte[] decompressT6(byte[] compressed, int width, int height) throws ImageReadException
Decompress T.6 encoded data. No EOLs, except for 2 consecutive ones at the end (the EOFB, end of fax block). No RTC. No fill bits anywhere. All data is 2D encoded.- Parameters:
compressed
- compressed byte datawidth
- image widthheight
- image height- Returns:
- the decompressed data
- Throws:
ImageReadException
- if it fails to read the compressed data
-
isEOL
private static boolean isEOL(T4_T6_Tables.Entry entry, boolean hasFill)
-
writeRunLength
private static void writeRunLength(BitArrayOutputStream bitStream, int runLength, int color)
-
lowerBound
private static T4_T6_Tables.Entry lowerBound(T4_T6_Tables.Entry[] entries, int value)
-
readTotalRunLength
private static int readTotalRunLength(BitInputStreamFlexible bitStream, int color) throws ImageReadException
- Throws:
ImageReadException
-
changingElementAt
private static int changingElementAt(int[] line, int position)
-
nextChangingElement
private static int nextChangingElement(int[] line, int currentColour, int start)
-
fillRange
private static void fillRange(BitArrayOutputStream outputStream, int[] referenceRow, int a0, int end, int color)
-
-