Class GenericRegion

  • All Implemented Interfaces:
    Region, SegmentData

    public class GenericRegion
    extends java.lang.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 Detail

      • dataHeaderOffset

        private long dataHeaderOffset
      • dataHeaderLength

        private long dataHeaderLength
      • dataOffset

        private long dataOffset
      • dataLength

        private long dataLength
      • 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)
      • cx

        private CX cx
    • Constructor Detail

      • GenericRegion

        public GenericRegion()
      • GenericRegion

        public GenericRegion​(SubInputStream subInputStream)
    • Method Detail

      • readGbAtPixels

        private void readGbAtPixels​(int amountOfGbAt)
                             throws java.io.IOException
        Throws:
        java.io.IOException
      • computeSegmentDataStructure

        private void computeSegmentDataStructure()
                                          throws java.io.IOException
        Throws:
        java.io.IOException
      • getRegionBitmap

        public Bitmap getRegionBitmap()
                               throws java.io.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:
        java.io.IOException - if an underlying IO operation fails
      • decodeSLTP

        private int decodeSLTP()
                        throws java.io.IOException
        Throws:
        java.io.IOException
      • decodeLine

        private void decodeLine​(int lineNumber,
                                int width,
                                int rowStride,
                                int paddedWidth)
                         throws java.io.IOException
        Throws:
        java.io.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 java.io.IOException
        Throws:
        java.io.IOException
      • decodeTemplate0b

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

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

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

        private void decodeTemplate3​(int lineNumber,
                                     int width,
                                     int rowStride,
                                     int paddedWidth,
                                     int byteIndex,
                                     int idx)
                              throws java.io.IOException
        Throws:
        java.io.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 java.io.IOException
        Throws:
        java.io.IOException
      • overrideAtTemplate0b

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

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

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

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

        private byte getPixel​(int x,
                              int y)
                       throws java.io.IOException
        Throws:
        java.io.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,
                         java.io.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
        java.io.IOException - if an underlying IO operation fails
      • useExtTemplates

        protected boolean useExtTemplates()
      • isTPGDon

        protected boolean isTPGDon()
      • getGbTemplate

        protected byte getGbTemplate()
      • isMMREncoded

        protected boolean isMMREncoded()
      • getGbAtX

        protected short[] getGbAtX()
      • getGbAtY

        protected short[] getGbAtY()