public void Read() {
if ( this.read ) {
throw new InvalidOperationException("already attempted a Read() on this Jbig2 File");
}
this.read = true;
ReadFileHeader();
// Annex D
if ( this.sequential ) {
// D.1
do {
JBIG2Segment tmp = ReadHeader();
ReadSegment(tmp);
segments[tmp.segmentNumber] = tmp;
} while ( this.ra.FilePointer < this.ra.Length);
} else {
// D.2
JBIG2Segment tmp;
do {
tmp = ReadHeader();
segments[tmp.segmentNumber] = tmp;
} while ( tmp.type != END_OF_FILE );
foreach (int ss in segments.Keys) {
ReadSegment((JBIG2Segment)segments[ss]);
}
}
}