Package org.apache.pdfbox.jbig2
Class SegmentHeader
- java.lang.Object
-
- org.apache.pdfbox.jbig2.SegmentHeader
-
public class SegmentHeader extends java.lang.ObjectThe basic class for all JBIG2 segments.
-
-
Field Summary
Fields Modifier and Type Field Description private intpageAssociationprivate bytepageAssociationFieldSizeprivate byteretainFlagprivate SegmentHeader[]rtSegmentsprivate static java.util.Map<java.lang.Integer,java.lang.Class<? extends SegmentData>>SEGMENT_TYPE_MAPprivate java.lang.ref.Reference<SegmentData>segmentDataprivate longsegmentDataLengthprivate longsegmentDataStartOffsetprivate longsegmentHeaderLengthprivate intsegmentNrprivate intsegmentTypeprivate SubInputStreamsubInputStream
-
Constructor Summary
Constructors Constructor Description SegmentHeader(JBIG2Document document, SubInputStream sis, long offset, int organisationType)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcleanSegmentData()SubInputStreamgetDataInputStream()Creates and returns a newSubInputStreamthat provides the data part of this segment.intgetPageAssociation()shortgetRetainFlag()SegmentHeader[]getRtSegments()SegmentDatagetSegmentData()Retrieves the segments' data part.longgetSegmentDataLength()longgetSegmentDataStartOffset()longgetSegmentHeaderLength()intgetSegmentNr()intgetSegmentType()private voidparse(JBIG2Document document, javax.imageio.stream.ImageInputStream subInputStream, long offset, int organisationType)private intreadAmountOfReferredToSegments(javax.imageio.stream.ImageInputStream subInputStream)7.2.4 Amount of referred-to segmentsprivate voidreadDataStartOffset(javax.imageio.stream.ImageInputStream subInputStream, int organisationType)Sets the offset only if organization type is SEQUENTIAL.private int[]readReferredToSegmentsNumbers(javax.imageio.stream.ImageInputStream subInputStream, int countOfRTS)7.2.5 Referred-to segments numbersprivate voidreadSegmentDataLength(javax.imageio.stream.ImageInputStream subInputStream)7.2.7 Segment data lengthprivate voidreadSegmentHeaderFlag(javax.imageio.stream.ImageInputStream subInputStream)7.2.3 Segment header flagsprivate voidreadSegmentHeaderLength(javax.imageio.stream.ImageInputStream subInputStream, long offset)private voidreadSegmentNumber(javax.imageio.stream.ImageInputStream subInputStream)7.2.2 Segment numberprivate voidreadSegmentPageAssociation(JBIG2Document document, javax.imageio.stream.ImageInputStream subInputStream, int countOfRTS, int[] rtsNumbers)7.2.6 Segment page associationvoidsetSegmentDataStartOffset(long segmentDataStartOffset)java.lang.StringtoString()
-
-
-
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
-
rtSegments
private SegmentHeader[] rtSegments
-
segmentHeaderLength
private long segmentHeaderLength
-
segmentDataLength
private long segmentDataLength
-
segmentDataStartOffset
private long segmentDataStartOffset
-
subInputStream
private final SubInputStream subInputStream
-
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.IOException7.2.2 Segment number- Parameters:
subInputStream-- Throws:
java.io.IOException
-
readSegmentHeaderFlag
private void readSegmentHeaderFlag(javax.imageio.stream.ImageInputStream subInputStream) throws java.io.IOException7.2.3 Segment header flags- Parameters:
subInputStream-- Throws:
java.io.IOException
-
readAmountOfReferredToSegments
private int readAmountOfReferredToSegments(javax.imageio.stream.ImageInputStream subInputStream) throws java.io.IOException7.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.IOException7.2.5 Referred-to segments numbersGathers all segment numbers of referred-to segments. The segments itself are stored in the
rtSegmentsarray.- 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.IOException7.2.7 Segment data lengthContains 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.IOExceptionSets 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)
-
getRtSegments
public SegmentHeader[] getRtSegments()
-
getPageAssociation
public int getPageAssociation()
-
getRetainFlag
public short getRetainFlag()
-
getDataInputStream
public SubInputStream getDataInputStream()
Creates and returns a newSubInputStreamthat provides the data part of this segment. It is a clipped view of the source input stream.- Returns:
- The
SubInputStreamthat represents the data part of the segment.
-
getSegmentData
public SegmentData getSegmentData()
Retrieves the segments' data part.- Returns:
- Retrieved
SegmentDatainstance.
-
cleanSegmentData
public void cleanSegmentData()
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-