Class SegmentHeader

java.lang.Object
org.apache.pdfbox.jbig2.SegmentHeader

public class SegmentHeader extends Object
The basic class for all JBIG2 segments.
  • Field Details

    • SEGMENT_TYPE_MAP

      private static final Map<Integer,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
    • rtSegments

      private SegmentHeader[] rtSegments
    • segmentHeaderLength

      private long segmentHeaderLength
    • segmentDataLength

      private long segmentDataLength
    • segmentDataStartOffset

      private long segmentDataStartOffset
    • subInputStream

      private final SubInputStream subInputStream
    • segmentData

      private Reference<SegmentData> segmentData
  • Constructor Details

  • Method Details

    • parse

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

      private void readSegmentNumber(ImageInputStream subInputStream) throws IOException
      7.2.2 Segment number
      Parameters:
      subInputStream -
      Throws:
      IOException
    • readSegmentHeaderFlag

      private void readSegmentHeaderFlag(ImageInputStream subInputStream) throws IOException
      7.2.3 Segment header flags
      Parameters:
      subInputStream -
      Throws:
      IOException
    • readAmountOfReferredToSegments

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

      private int[] readReferredToSegmentsNumbers(ImageInputStream subInputStream, int countOfRTS) throws 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:
      IOException
    • readSegmentPageAssociation

      private void readSegmentPageAssociation(JBIG2Document document, ImageInputStream subInputStream, int countOfRTS, int[] rtsNumbers) throws IOException
      7.2.6 Segment page association
      Parameters:
      document -
      subInputStream -
      countOfRTS -
      rtsNumbers -
      Throws:
      IOException
    • readSegmentDataLength

      private void readSegmentDataLength(ImageInputStream subInputStream) throws IOException
      7.2.7 Segment data length

      Contains the length of the data part in bytes.

      Parameters:
      subInputStream -
      Throws:
      IOException
    • readDataStartOffset

      private void readDataStartOffset(ImageInputStream subInputStream, int organisationType) throws 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:
      IOException
    • readSegmentHeaderLength

      private void readSegmentHeaderLength(ImageInputStream subInputStream, long offset) throws IOException
      Throws:
      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)
    • getRtSegments

      public SegmentHeader[] getRtSegments()
    • 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 String toString()
      Overrides:
      toString in class Object