Package org.apache.pdfbox.jbig2
Class SegmentHeader
- java.lang.Object
-
- org.apache.pdfbox.jbig2.SegmentHeader
-
public class SegmentHeader extends java.lang.Object
The basic class for all JBIG2 segments.
-
-
Field Summary
Fields Modifier and Type Field Description private int
pageAssociation
private byte
pageAssociationFieldSize
private byte
retainFlag
private SegmentHeader[]
rtSegments
private static java.util.Map<java.lang.Integer,java.lang.Class<? extends SegmentData>>
SEGMENT_TYPE_MAP
private java.lang.ref.Reference<SegmentData>
segmentData
private long
segmentDataLength
private long
segmentDataStartOffset
private long
segmentHeaderLength
private int
segmentNr
private int
segmentType
private SubInputStream
subInputStream
-
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 void
cleanSegmentData()
SubInputStream
getDataInputStream()
Creates and returns a newSubInputStream
that provides the data part of this segment.int
getPageAssociation()
short
getRetainFlag()
SegmentHeader[]
getRtSegments()
SegmentData
getSegmentData()
Retrieves the segments' data part.long
getSegmentDataLength()
long
getSegmentDataStartOffset()
long
getSegmentHeaderLength()
int
getSegmentNr()
int
getSegmentType()
private void
parse(JBIG2Document document, javax.imageio.stream.ImageInputStream subInputStream, long offset, int organisationType)
private int
readAmountOfReferredToSegments(javax.imageio.stream.ImageInputStream subInputStream)
7.2.4 Amount of referred-to segmentsprivate void
readDataStartOffset(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 void
readSegmentDataLength(javax.imageio.stream.ImageInputStream subInputStream)
7.2.7 Segment data lengthprivate void
readSegmentHeaderFlag(javax.imageio.stream.ImageInputStream subInputStream)
7.2.3 Segment header flagsprivate void
readSegmentHeaderLength(javax.imageio.stream.ImageInputStream subInputStream, long offset)
private void
readSegmentNumber(javax.imageio.stream.ImageInputStream subInputStream)
7.2.2 Segment numberprivate void
readSegmentPageAssociation(JBIG2Document document, javax.imageio.stream.ImageInputStream subInputStream, int countOfRTS, int[] rtsNumbers)
7.2.6 Segment page associationvoid
setSegmentDataStartOffset(long segmentDataStartOffset)
java.lang.String
toString()
-
-
-
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.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 numbersGathers 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 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.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)
-
getRtSegments
public SegmentHeader[] getRtSegments()
-
getPageAssociation
public int getPageAssociation()
-
getRetainFlag
public short getRetainFlag()
-
getDataInputStream
public SubInputStream getDataInputStream()
Creates and returns a newSubInputStream
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 classjava.lang.Object
-
-