in src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageMetadata.java [279:322]
public TiffField findField(final TagInfo tagInfo, final boolean exactDirectoryMatch)
throws ImagingException {
// Please keep this method in sync with TiffField's getTag()
final Integer tagCount = TiffTags.getTagCount(tagInfo.tag);
final int tagsMatching = tagCount == null ? 0 : tagCount;
final List<? extends ImageMetadataItem> directories = getDirectories();
if (exactDirectoryMatch
|| tagInfo.directoryType != TiffDirectoryType.EXIF_DIRECTORY_UNKNOWN) {
for (final ImageMetadataItem directory1 : directories) {
final Directory directory = (Directory) directory1;
if (directory.type == tagInfo.directoryType.directoryType) {
final TiffField field = directory.findField(tagInfo);
if (field != null) {
return field;
}
}
}
if (exactDirectoryMatch || tagsMatching > 1) {
return null;
}
for (final ImageMetadataItem directory1 : directories) {
final Directory directory = (Directory) directory1;
if ((tagInfo.directoryType.isImageDirectory()
&& directory.type >= 0) || (!tagInfo.directoryType.isImageDirectory()
&& directory.type < 0)) {
final TiffField field = directory.findField(tagInfo);
if (field != null) {
return field;
}
}
}
}
for (final ImageMetadataItem directory1 : directories) {
final Directory directory = (Directory) directory1;
final TiffField field = directory.findField(tagInfo);
if (field != null) {
return field;
}
}
return null;
}