Class MMRDecompressor
java.lang.Object
org.apache.pdfbox.jbig2.decoder.mmr.MMRDecompressor
A decompressor for MMR compression.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final class
private final class
A class encapsulating the compressed raw data. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static MMRDecompressor.Code[]
private MMRDecompressor.RunData
private static final int
private static final int
private int
private static MMRDecompressor.Code[]
private static final int
private static final int
private static MMRDecompressor.Code[]
private int
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static MMRDecompressor.Code[]
createLittleEndianTable
(int[][] codes) For little endian, the tables are structured like this:private void
private void
fillBitmap
(Bitmap result, int line, int[] currentOffsets, int count) private static final void
private final int
uncompress1D
(MMRDecompressor.RunData runData, int[] runOffsets, int width) private final int
uncompress2D
(MMRDecompressor.RunData runData, int[] referenceOffsets, int refRunLength, int[] runOffsets, int width)
-
Field Details
-
width
private int width -
height
private int height -
FIRST_LEVEL_TABLE_SIZE
private static final int FIRST_LEVEL_TABLE_SIZE- See Also:
-
FIRST_LEVEL_TABLE_MASK
private static final int FIRST_LEVEL_TABLE_MASK- See Also:
-
SECOND_LEVEL_TABLE_SIZE
private static final int SECOND_LEVEL_TABLE_SIZE- See Also:
-
SECOND_LEVEL_TABLE_MASK
private static final int SECOND_LEVEL_TABLE_MASK- See Also:
-
whiteTable
-
blackTable
-
modeTable
-
data
-
-
Constructor Details
-
MMRDecompressor
-
-
Method Details
-
initTables
private static final void initTables() -
uncompress2D
private final int uncompress2D(MMRDecompressor.RunData runData, int[] referenceOffsets, int refRunLength, int[] runOffsets, int width) -
uncompress
-
detectAndSkipEOL
private void detectAndSkipEOL() -
fillBitmap
-
uncompress1D
-
createLittleEndianTable
For little endian, the tables are structured like this:v--------v length = FIRST_LEVEL_TABLE_LENGTH v-----v length = SECOND_LEVEL_TABLE_LENGTH A code word which fits into the first level table (length=3) [Cccvvvvv] A code word which needs the second level table also (length=10) [Cccccccc] -> [ccvvv] "C" denotes the first code word bit "c" denotes a code word bit "v" denotes a variant bit
-