Class SegmentHeader


  • public class SegmentHeader
    extends java.lang.Object
    The basic class for all JBIG2 segments.
    • Field Detail

      • SEGMENT_TYPE_MAP

        private static final java.util.Map<java.lang.Integer,​java.lang.Class<? extends SegmentData>> SEGMENT_TYPE_MAP
      • segmentNr

        private int segmentNr
      • segmentType

        private int segmentType
      • retainFlag

        private byte retainFlag
      • pageAssociation

        private int pageAssociation
      • pageAssociationFieldSize

        private byte pageAssociationFieldSize
      • segmentHeaderLength

        private long segmentHeaderLength
      • segmentDataLength

        private long segmentDataLength
      • segmentDataStartOffset

        private long segmentDataStartOffset
      • segmentData

        private java.lang.ref.Reference<SegmentData> segmentData
    • Constructor Detail

      • SegmentHeader

        public SegmentHeader​(JBIG2Document document,
                             SubInputStream sis,
                             long offset,
                             int organisationType)
                      throws java.io.IOException
        Throws:
        java.io.IOException
    • Method Detail

      • parse

        private void parse​(JBIG2Document document,
                           javax.imageio.stream.ImageInputStream subInputStream,
                           long offset,
                           int organisationType)
                    throws java.io.IOException
        Parameters:
        document -
        subInputStream -
        organisationType -
        offset - - The offset where the segment header starts
        Throws:
        java.io.IOException
      • readSegmentNumber

        private void readSegmentNumber​(javax.imageio.stream.ImageInputStream subInputStream)
                                throws java.io.IOException
        7.2.2 Segment number
        Parameters:
        subInputStream -
        Throws:
        java.io.IOException
      • readSegmentHeaderFlag

        private void readSegmentHeaderFlag​(javax.imageio.stream.ImageInputStream subInputStream)
                                    throws java.io.IOException
        7.2.3 Segment header flags
        Parameters:
        subInputStream -
        Throws:
        java.io.IOException
      • readAmountOfReferredToSegments

        private int readAmountOfReferredToSegments​(javax.imageio.stream.ImageInputStream subInputStream)
                                            throws java.io.IOException
        7.2.4 Amount of referred-to segments
        Parameters:
        subInputStream -
        Returns:
        The amount of referred-to segments.
        Throws:
        java.io.IOException
      • readReferredToSegmentsNumbers

        private int[] readReferredToSegmentsNumbers​(javax.imageio.stream.ImageInputStream subInputStream,
                                                    int countOfRTS)
                                             throws java.io.IOException
        7.2.5 Referred-to segments numbers

        Gathers all segment numbers of referred-to segments. The segments itself are stored in the rtSegments array.

        Parameters:
        subInputStream - - Wrapped source data input stream.
        countOfRTS - - The amount of referred-to segments.
        Returns:
        An array with the segment number of all referred-to segments.
        Throws:
        java.io.IOException
      • readSegmentPageAssociation

        private void readSegmentPageAssociation​(JBIG2Document document,
                                                javax.imageio.stream.ImageInputStream subInputStream,
                                                int countOfRTS,
                                                int[] rtsNumbers)
                                         throws java.io.IOException
        7.2.6 Segment page association
        Parameters:
        document -
        subInputStream -
        countOfRTS -
        rtsNumbers -
        Throws:
        java.io.IOException
      • readSegmentDataLength

        private void readSegmentDataLength​(javax.imageio.stream.ImageInputStream subInputStream)
                                    throws java.io.IOException
        7.2.7 Segment data length

        Contains the length of the data part in bytes.

        Parameters:
        subInputStream -
        Throws:
        java.io.IOException
      • readDataStartOffset

        private void readDataStartOffset​(javax.imageio.stream.ImageInputStream subInputStream,
                                         int organisationType)
                                  throws java.io.IOException
        Sets the offset only if organization type is SEQUENTIAL. If random, data starts after segment headers and can be determined when all segment headers are parsed and allocated.
        Parameters:
        subInputStream -
        organisationType -
        Throws:
        java.io.IOException
      • readSegmentHeaderLength

        private void readSegmentHeaderLength​(javax.imageio.stream.ImageInputStream subInputStream,
                                             long offset)
                                      throws java.io.IOException
        Throws:
        java.io.IOException
      • getSegmentNr

        public int getSegmentNr()
      • getSegmentType

        public int getSegmentType()
      • getSegmentHeaderLength

        public long getSegmentHeaderLength()
      • getSegmentDataLength

        public long getSegmentDataLength()
      • getSegmentDataStartOffset

        public long getSegmentDataStartOffset()
      • setSegmentDataStartOffset

        public void setSegmentDataStartOffset​(long segmentDataStartOffset)
      • getPageAssociation

        public int getPageAssociation()
      • getRetainFlag

        public short getRetainFlag()
      • getDataInputStream

        public SubInputStream getDataInputStream()
        Creates and returns a new SubInputStream that provides the data part of this segment. It is a clipped view of the source input stream.
        Returns:
        The SubInputStream that represents the data part of the segment.
      • getSegmentData

        public SegmentData getSegmentData()
        Retrieves the segments' data part.
        Returns:
        Retrieved SegmentData instance.
      • cleanSegmentData

        public void cleanSegmentData()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object