Class GenericRegion

java.lang.Object
org.apache.pdfbox.jbig2.segments.GenericRegion
All Implemented Interfaces:
Region, SegmentData

public class GenericRegion extends Object implements Region
This class represents a generic region segment.
Parsing is done as described in 7.4.5.
Decoding procedure is done as described in 6.2.5.7 and 7.4.6.4.
  • Field Details

    • subInputStream

      private SubInputStream subInputStream
    • dataHeaderOffset

      private long dataHeaderOffset
    • dataHeaderLength

      private long dataHeaderLength
    • dataOffset

      private long dataOffset
    • dataLength

      private long dataLength
    • regionInfo

      private RegionSegmentInformation regionInfo
      Region segment information field, 7.4.1
    • useExtTemplates

      private boolean useExtTemplates
      Generic region segment flags, 7.4.6.2
    • isTPGDon

      private boolean isTPGDon
    • gbTemplate

      private byte gbTemplate
    • isMMREncoded

      private boolean isMMREncoded
    • gbAtX

      private short[] gbAtX
      Generic region segment AT flags, 7.4.6.3
    • gbAtY

      private short[] gbAtY
    • gbAtOverride

      private boolean[] gbAtOverride
    • override

      private boolean override
      If true, AT pixels are not on their nominal location and have to be overridden
    • regionBitmap

      private Bitmap regionBitmap
      Decoded data as pixel values (use row stride/width to wrap line)
    • arithDecoder

      private ArithmeticDecoder arithDecoder
    • cx

      private CX cx
    • mmrDecompressor

      private MMRDecompressor mmrDecompressor
  • Constructor Details

    • GenericRegion

      public GenericRegion()
    • GenericRegion

      public GenericRegion(SubInputStream subInputStream)
  • Method Details

    • parseHeader

      private void parseHeader() throws IOException, InvalidHeaderValueException
      Throws:
      IOException
      InvalidHeaderValueException
    • readGbAtPixels

      private void readGbAtPixels(int amountOfGbAt) throws IOException
      Throws:
      IOException
    • computeSegmentDataStructure

      private void computeSegmentDataStructure() throws IOException
      Throws:
      IOException
    • getRegionBitmap

      public Bitmap getRegionBitmap() throws IOException
      The procedure is described in 6.2.5.7, page 17.
      Specified by:
      getRegionBitmap in interface Region
      Returns:
      The decoded Bitmap of this region.
      Throws:
      IOException - if an underlying IO operation fails
    • decodeSLTP

      private int decodeSLTP() throws IOException
      Throws:
      IOException
    • decodeLine

      private void decodeLine(int lineNumber, int width, int rowStride, int paddedWidth) throws IOException
      Throws:
      IOException
    • copyLineAbove

      private void copyLineAbove(int lineNumber)
      Each pixel gets the value from the corresponding pixel of the row above. Line 0 cannot get copied values (source will be -1, doesn't exist).
      Parameters:
      lineNumber - - Coordinate of the row that should be set.
    • decodeTemplate0a

      private void decodeTemplate0a(int lineNumber, int width, int rowStride, int paddedWidth, int byteIndex, int idx) throws IOException
      Throws:
      IOException
    • decodeTemplate0b

      private void decodeTemplate0b(int lineNumber, int width, int rowStride, int paddedWidth, int byteIndex, int idx) throws IOException
      Throws:
      IOException
    • decodeTemplate1

      private void decodeTemplate1(int lineNumber, int width, int rowStride, int paddedWidth, int byteIndex, int idx) throws IOException
      Throws:
      IOException
    • decodeTemplate2

      private void decodeTemplate2(int lineNumber, int width, int rowStride, int paddedWidth, int byteIndex, int idx) throws IOException
      Throws:
      IOException
    • decodeTemplate3

      private void decodeTemplate3(int lineNumber, int width, int rowStride, int paddedWidth, int byteIndex, int idx) throws IOException
      Throws:
      IOException
    • updateOverrideFlags

      private void updateOverrideFlags()
    • setOverrideFlag

      private void setOverrideFlag(int index)
    • overrideAtTemplate0a

      private int overrideAtTemplate0a(int context, int x, int y, int result, int minorX, int toShift) throws IOException
      Throws:
      IOException
    • overrideAtTemplate0b

      private int overrideAtTemplate0b(int context, int x, int y, int result, int minorX, int toShift) throws IOException
      Throws:
      IOException
    • overrideAtTemplate1

      private int overrideAtTemplate1(int context, int x, int y, int result, int minorX) throws IOException
      Throws:
      IOException
    • overrideAtTemplate2

      private int overrideAtTemplate2(int context, int x, int y, int result, int minorX) throws IOException
      Throws:
      IOException
    • overrideAtTemplate3

      private int overrideAtTemplate3(int context, int x, int y, int result, int minorX) throws IOException
      Throws:
      IOException
    • getPixel

      private byte getPixel(int x, int y) throws IOException
      Throws:
      IOException
    • setParameters

      protected void setParameters(boolean isMMREncoded, long dataOffset, long dataLength, int gbh, int gbw)
      Parameters:
      isMMREncoded - the data is MMR encoded
      dataOffset - the offset
      dataLength - the length of the data
      gbh - bitmap height
      gbw - bitmap width
    • setParameters

      protected void setParameters(boolean isMMREncoded, byte sdTemplate, boolean isTPGDon, boolean useSkip, short[] sdATX, short[] sdATY, int symWidth, int hcHeight, CX cx, ArithmeticDecoder arithmeticDecoder)
      Parameters:
      isMMREncoded - the data is MMR encoded
      sdTemplate - sd template
      isTPGDon - is TPGDon
      useSkip - use skip
      sdATX - x values gbA pixels
      sdATY - y values gbA pixels
      symWidth - bitmap width
      hcHeight - bitmap height
      cx - context for the arithmetic decoder
      arithmeticDecoder - the arithmetic decode to be used Used by SymbolDictionary.
    • setParameters

      protected void setParameters(boolean isMMREncoded, long dataOffset, long dataLength, int gbh, int gbw, byte gbTemplate, boolean isTPGDon, boolean useSkip, short[] gbAtX, short[] gbAtY)
      Parameters:
      isMMREncoded - the data is MMR encoded
      dataOffset - the offset
      dataLength - the length of the data
      gbh - bitmap height
      gbw - bitmap width
      gbTemplate - gb template
      isTPGDon - is TPGDon
      useSkip - use skip
      gbAtX - x values of gbA pixels
      gbAtY - y values of gbA pixels
    • resetBitmap

      protected void resetBitmap()
      Simply sets the memory-critical bitmap of this region to null.
    • init

      public void init(SegmentHeader header, SubInputStream sis) throws InvalidHeaderValueException, IOException
      Description copied from interface: SegmentData
      Parse the stream and read information of header.
      Specified by:
      init in interface SegmentData
      Parameters:
      header - - The segments' header (to make referred-to segments available in data part).
      sis - - Wrapped ImageInputStream into SubInputStream.
      Throws:
      InvalidHeaderValueException - if the segment header value is invalid
      IOException - if an underlying IO operation fails
    • getRegionInfo

      public RegionSegmentInformation getRegionInfo()
      Description copied from interface: Region
      Simply returns the RegionSegmentInformation.
      Specified by:
      getRegionInfo in interface Region
      Returns:
      The RegionSegmentInformation.
    • useExtTemplates

      protected boolean useExtTemplates()
    • isTPGDon

      protected boolean isTPGDon()
    • getGbTemplate

      protected byte getGbTemplate()
    • isMMREncoded

      protected boolean isMMREncoded()
    • getGbAtX

      protected short[] getGbAtX()
    • getGbAtY

      protected short[] getGbAtY()