public class TIFFDirectory extends Object implements Cloneable
TIFFDirectory
instance corresponds
to an IFD and contains a set of TIFFField
s each of which
corresponds to an IFD Entry in the IFD.
When reading, a TIFFDirectory
may be created by passing
the value returned by ImageReader.getImageMetadata()
to createFromMetadata()
. The TIFFField
s in the directory may then
be obtained using the accessor methods provided in this class.
When writing, an IIOMetadata
object for use by one of the
ImageWriter
may be
created from a TIFFDirectory
by getAsMetadata()
.
The TIFFDirectory
itself may be created by construction or
from the IIOMetadata
object returned by
ImageWriter.getDefaultImageMetadata()
. The TIFFField
s in the
directory may be set using the mutator methods provided in this class.
A TIFFDirectory
is aware of the tag numbers in the
group of TIFFTagSet
s associated with it. When
a TIFFDirectory
is created from a native image metadata
object, these tag sets are derived from the tagSets attribute
of the TIFFIFD node.
A TIFFDirectory
might also have a parent TIFFTag
.
This will occur if the directory represents an IFD other than the root
IFD of the image. The parent tag is the tag of the IFD Entry which is a
pointer to the IFD represented by this TIFFDirectory
. The
TIFFTag.isIFDPointer()
method of this parent TIFFTag
must return true
. When a TIFFDirectory
is
created from a native image metadata object, the parent tag set is set
from the parentTagName attribute of the corresponding
TIFFIFD node. Note that a TIFFDirectory
instance
which has a non-null
parent tag will be contained in the
data field of a TIFFField
instance which has a tag field
equal to the contained directory's parent tag.
As an example consider an EXIF image. The TIFFDirectory
instance corresponding to the EXIF IFD in the EXIF stream would have parent
tag TAG_EXIF_IFD_POINTER
and would include EXIFTIFFTagSet
in its group of known tag sets.
The TIFFDirectory
corresponding to this EXIF IFD will be
contained in the data field of a TIFFField
which will in turn
be contained in the TIFFDirectory
corresponding to the primary
IFD of the EXIF image which will itself have a null
-valued
parent tag.
Note that this implementation is not synchronized. If multiple
threads use a TIFFDirectory
instance concurrently, and at
least one of the threads modifies the directory, for example, by adding
or removing TIFFField
s or TIFFTagSet
s, it
must be synchronized externally.
IIOMetadata
,
TIFFField
,
TIFFTag
,
TIFFTagSet
Modifier and Type | Field and Description |
---|---|
private Map |
highFields
A mapping of
Integer tag numbers to TIFFField s
for fields which are not low tag numbered. |
private TIFFField[] |
lowFields
The fields in this directory which have a low tag number.
|
private static int |
MAX_LOW_FIELD_TAG_NUM
The largest low-valued tag number in the TIFF 6.0 specification.
|
private int |
numLowFields
The number of low tag numbered fields in the directory.
|
private TIFFTag |
parentTag
The parent
TIFFTag of this directory. |
private List |
tagSets
The
TIFFTagSets associated with this directory. |
Constructor and Description |
---|
TIFFDirectory(TIFFTagSet[] tagSets,
TIFFTag parentTag)
Constructs a
TIFFDirectory which is aware of a given
group of TIFFTagSet s. |
Modifier and Type | Method and Description |
---|---|
void |
addTagSet(TIFFTagSet tagSet)
Adds an element to the group of
TIFFTagSet s of which this
directory is aware. |
void |
addTIFFField(TIFFField f)
Adds a TIFF field to the directory.
|
Object |
clone()
Clones the directory and all the fields contained therein.
|
boolean |
containsTIFFField(int tagNumber)
Determines whether a TIFF field with the given tag number is
contained in this directory.
|
static TIFFDirectory |
createFromMetadata(IIOMetadata tiffImageMetadata)
Creates a
TIFFDirectory instance from the contents of
an image metadata object. |
IIOMetadata |
getAsMetadata()
Converts the directory to a metadata object.
|
private static TIFFIFD |
getDirectoryAsIFD(TIFFDirectory dir)
Converts a
TIFFDirectory to a TIFFIFD . |
int |
getNumTIFFFields()
Returns the number of
TIFFField s in this directory. |
TIFFTag |
getParentTag()
Returns the parent
TIFFTag of this directory if one
has been defined or null otherwise. |
TIFFTag |
getTag(int tagNumber)
Returns the
TIFFTag which has tag number equal to
tagNumber or null if no such tag
exists in the TIFFTagSet s associated with this
directory. |
TIFFTagSet[] |
getTagSets()
Returns the
TIFFTagSet s of which this directory is aware. |
TIFFField |
getTIFFField(int tagNumber)
Retrieves a TIFF field from the directory.
|
TIFFField[] |
getTIFFFields()
Retrieves all TIFF fields from the directory.
|
void |
removeTagSet(TIFFTagSet tagSet)
Removes an element from the group of
TIFFTagSet s of which this
directory is aware. |
void |
removeTIFFField(int tagNumber)
Removes a TIFF field from the directory.
|
void |
removeTIFFFields()
Removes all TIFF fields from the directory.
|
private static final int MAX_LOW_FIELD_TAG_NUM
private List tagSets
TIFFTagSets
associated with this directory.private TIFFTag parentTag
TIFFTag
of this directory.private TIFFField[] lowFields
private int numLowFields
private Map highFields
Integer
tag numbers to TIFFField
s
for fields which are not low tag numbered.public TIFFDirectory(TIFFTagSet[] tagSets, TIFFTag parentTag)
TIFFDirectory
which is aware of a given
group of TIFFTagSet
s. An optional parent TIFFTag
may also be specified.tagSets
- The TIFFTagSets
associated with this
directory.parentTag
- The parent TIFFTag
of this directory;
may be null
.IllegalArgumentException
- if tagSets
is
null
.public static TIFFDirectory createFromMetadata(IIOMetadata tiffImageMetadata) throws IIOInvalidTreeException
TIFFDirectory
instance from the contents of
an image metadata object. The supplied object must support an image
metadata format supported by the TIFF ImageWriter
plug-in. This will usually be either the TIFF native image metadata
format com_sun_media_imageio_plugins_tiff_1.0 or the Java
Image I/O standard metadata format javax_imageio_1.0.tiffImageMetadata
- A metadata object which supports a compatible
image metadata format.TIFFDirectory
populated from the contents of
the supplied metadata object.IllegalArgumentException
- if tiffImageMetadata
is null
.IllegalArgumentException
- if tiffImageMetadata
does not support a compatible image metadata format.IIOInvalidTreeException
- if the supplied metadata object
cannot be parsed.private static TIFFIFD getDirectoryAsIFD(TIFFDirectory dir)
TIFFDirectory
to a TIFFIFD
.public TIFFTagSet[] getTagSets()
TIFFTagSet
s of which this directory is aware.TIFFTagSet
s associated with this
TIFFDirectory
.public void addTagSet(TIFFTagSet tagSet)
TIFFTagSet
s of which this
directory is aware.tagSet
- The TIFFTagSet
to add.IllegalArgumentException
- if tagSet
is
null
.public void removeTagSet(TIFFTagSet tagSet)
TIFFTagSet
s of which this
directory is aware.tagSet
- The TIFFTagSet
to remove.IllegalArgumentException
- if tagSet
is
null
.public TIFFTag getParentTag()
TIFFTag
of this directory if one
has been defined or null
otherwise.TIFFTag
of this
TIFFDiectory
or null
.public TIFFTag getTag(int tagNumber)
TIFFTag
which has tag number equal to
tagNumber
or null
if no such tag
exists in the TIFFTagSet
s associated with this
directory.tagNumber
- The tag number of interest.TIFFTag
or null
.public int getNumTIFFFields()
TIFFField
s in this directory.TIFFField
s in this
TIFFDirectory
.public boolean containsTIFFField(int tagNumber)
TIFFTag
with tag number equal to
tagNumber
is present in this TIFFDirectory
.public void addTIFFField(TIFFField f)
f
- The field to add.IllegalArgumentException
- if f
is null
.public TIFFField getTIFFField(int tagNumber)
tagNumber
- The tag number of the tag associated with the field.TIFFField
with the requested tag number of
null
if no such field is present.public void removeTIFFField(int tagNumber)
tagNumber
- The tag number of the tag associated with the field.public TIFFField[] getTIFFFields()
public void removeTIFFFields()
public IIOMetadata getAsMetadata()
TIFFDirectory
.Copyright © 2017 Open Microscopy Environment