< prev index next >
src/java.desktop/share/classes/com/sun/imageio/plugins/tiff/TIFFIFD.java
Print this page
*** 539,564 ****
}
}
}
// Stream position initially at beginning, left at end
! // if ignoreUnknownFields is true, do not load fields for which
// a tag cannot be found in an allowed TagSet.
public void initialize(ImageInputStream stream, boolean isPrimaryIFD,
! boolean ignoreUnknownFields) throws IOException {
removeTIFFFields();
long streamLength = stream.length();
boolean haveStreamLength = streamLength != -1;
List<TIFFTagSet> tagSetList = getTagSetList();
boolean ensureEssentialTags = false;
TIFFTagSet baselineTagSet = null;
! if (isPrimaryIFD && ignoreUnknownFields
! && !tagSetList.contains(BaselineTIFFTagSet.getInstance())) {
ensureEssentialTags = true;
initializeEssentialTags();
baselineTagSet = BaselineTIFFTagSet.getInstance();
}
--- 539,570 ----
}
}
}
// Stream position initially at beginning, left at end
! // if readUnknownTags is false, do not load fields for which
// a tag cannot be found in an allowed TagSet.
public void initialize(ImageInputStream stream, boolean isPrimaryIFD,
! boolean ignoreMetadata, boolean readUnknownTags) throws IOException {
removeTIFFFields();
long streamLength = stream.length();
boolean haveStreamLength = streamLength != -1;
List<TIFFTagSet> tagSetList = getTagSetList();
+ // Configure essential tag variables if this is the primary IFD and
+ // either all metadata are being ignored, or metadata are not being
+ // ignored but both unknown tags are being ignored and the tag set
+ // list does not contain the baseline tags.
boolean ensureEssentialTags = false;
TIFFTagSet baselineTagSet = null;
! if (isPrimaryIFD &&
! (ignoreMetadata ||
! (!readUnknownTags &&
! !tagSetList.contains(BaselineTIFFTagSet.getInstance())))) {
ensureEssentialTags = true;
initializeEssentialTags();
baselineTagSet = BaselineTIFFTagSet.getInstance();
}
*** 588,600 ****
if (tag == null && ensureEssentialTags
&& essentialTags.contains(tagNumber)) {
tag = baselineTagSet.getTag(tagNumber);
}
! // Ignore unknown fields, fields with unknown type, and fields
// with count out of int range.
! if((tag == null && ignoreUnknownFields)
|| (tag != null && !tag.isDataTypeOK(type))
|| longCount > Integer.MAX_VALUE) {
// Skip the value/offset so as to leave the stream
// position at the start of the next IFD entry.
stream.skipBytes(4);
--- 594,609 ----
if (tag == null && ensureEssentialTags
&& essentialTags.contains(tagNumber)) {
tag = baselineTagSet.getTag(tagNumber);
}
! // Ignore non-essential fields, unknown fields unless forcibly
! // being read, fields with unknown type, and fields
// with count out of int range.
! if((ignoreMetadata &&
! (!ensureEssentialTags || !essentialTags.contains(tagNumber)))
! || (tag == null && !readUnknownTags)
|| (tag != null && !tag.isDataTypeOK(type))
|| longCount > Integer.MAX_VALUE) {
// Skip the value/offset so as to leave the stream
// position at the start of the next IFD entry.
stream.skipBytes(4);
*** 699,709 ****
if (tag.isIFDPointer()) {
List<TIFFTagSet> tagSets = new ArrayList<TIFFTagSet>(1);
tagSets.add(tag.getTagSet());
TIFFIFD subIFD = new TIFFIFD(tagSets);
! subIFD.initialize(stream, false, ignoreUnknownFields);
TIFFField f = new TIFFField(tag, type, e.offset, subIFD);
addTIFFField(f);
} else {
if (tagNumber == BaselineTIFFTagSet.TAG_STRIP_BYTE_COUNTS
|| tagNumber == BaselineTIFFTagSet.TAG_TILE_BYTE_COUNTS
--- 708,719 ----
if (tag.isIFDPointer()) {
List<TIFFTagSet> tagSets = new ArrayList<TIFFTagSet>(1);
tagSets.add(tag.getTagSet());
TIFFIFD subIFD = new TIFFIFD(tagSets);
! subIFD.initialize(stream, false, ignoreMetadata,
! readUnknownTags);
TIFFField f = new TIFFField(tag, type, e.offset, subIFD);
addTIFFField(f);
} else {
if (tagNumber == BaselineTIFFTagSet.TAG_STRIP_BYTE_COUNTS
|| tagNumber == BaselineTIFFTagSet.TAG_TILE_BYTE_COUNTS
< prev index next >