in src/main/java/org/apache/commons/imaging/formats/tiff/TiffImageMetadata.java [248:287]
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;
}