public abstract class ReaderWrapper extends Object implements IFormatReader
Modifier and Type | Field and Description |
---|---|
protected IFormatReader |
reader
FormatReader used to read the file.
|
CAN_GROUP, CANNOT_GROUP, MUST_GROUP
Constructor and Description |
---|
ReaderWrapper()
Constructs a reader wrapper around a new image reader.
|
ReaderWrapper(IFormatReader r)
Constructs a reader wrapper around the given reader.
|
Modifier and Type | Method and Description |
---|---|
void |
close() |
void |
close(boolean fileOnly)
Closes the currently open file.
|
int |
coreIndexToSeries(int index)
Returns the series corresponding to the specified core index.
|
ReaderWrapper |
duplicate(Class<? extends IFormatReader> imageReaderClass)
Performs a deep copy of the reader, including nested wrapped readers.
|
private ReaderWrapper |
duplicateRecurse(Class<? extends IFormatReader> imageReaderClass) |
int |
fileGroupOption(String id)
Returns an int indicating that we cannot, must, or might group the files
in a given dataset.
|
short[][] |
get16BitLookupTable()
Gets the 16-bit color lookup table associated with
the most recently opened image.
|
byte[][] |
get8BitLookupTable()
Gets the 8-bit color lookup table associated with
the most recently opened image.
|
FileInfo[] |
getAdvancedSeriesUsedFiles(boolean noPixels)
Returns an array of FileInfo objects representing the files needed to
open the current series.
|
FileInfo[] |
getAdvancedUsedFiles(boolean noPixels)
Returns an array of FileInfo objects representing the files needed
to open this dataset.
|
int |
getBitsPerPixel()
Gets the number of valid bits per pixel.
|
int |
getCoreIndex()
Return the index into CoreMetadata of the current resolution/series.
|
List<CoreMetadata> |
getCoreMetadataList()
Obtains the core metadata values for the current file.
|
String |
getCurrentFile()
Returns the current file.
|
String |
getDatasetStructureDescription()
Returns a short description of the dataset structure.
|
String |
getDimensionOrder()
Gets a five-character string representing the
dimension order in which planes will be returned.
|
String[] |
getDomains()
Returns the list of domains represented by the current file.
|
int |
getEffectiveSizeC()
Gets the effective size of the C dimension, guaranteeing that
getEffectiveSizeC() * getSizeZ() * getSizeT() == getImageCount()
regardless of the result of isRGB().
|
String |
getFormat()
Gets the name of this file format.
|
Hashtable<String,Object> |
getGlobalMetadata()
Obtains the hashtable containing the metadata field/value pairs from
the current file.
|
int |
getImageCount()
Determines the number of image planes in the current file.
|
int |
getIndex(int z,
int c,
int t)
Gets the rasterized index corresponding
to the given Z, C and T coordinates (real sizes).
|
int |
getIndex(int z,
int c,
int t,
int moduloZ,
int moduloC,
int moduloT)
Gets the rasterized index corresponding to the given Z, C, T,
moduloZ, moduloC and moduloT coordinates (effective sizes).
|
MetadataOptions |
getMetadataOptions() |
MetadataStore |
getMetadataStore()
Retrieves the current metadata store for this reader.
|
Object |
getMetadataStoreRoot()
Retrieves the current metadata store's root object.
|
Object |
getMetadataValue(String field)
Obtains the specified metadata field's value for the current file.
|
Modulo |
getModuloC() |
Modulo |
getModuloT() |
Modulo |
getModuloZ() |
Class<?> |
getNativeDataType()
Returns the native data type of image planes for this reader, as returned
by
IFormatReader.openPlane(int, int, int, int, int) or IFormatWriter.savePlane(int, java.lang.Object) . |
int |
getOptimalTileHeight()
Returns the optimal sub-image height for use with openBytes.
|
int |
getOptimalTileWidth()
Returns the optimal sub-image width for use with openBytes.
|
int |
getPixelType()
Gets the pixel type.
|
String[] |
getPossibleDomains(String id)
Returns a list of scientific domains in which this format is used.
|
IFormatReader |
getReader()
Gets the wrapped reader.
|
int |
getRequiredDirectories(String[] files)
Returns the number of parent directories that are important when
processing the given list of files.
|
int |
getResolution()
Get the current resolution level.
|
int |
getResolutionCount()
Return the number of resolutions for the current series.
|
int |
getRGBChannelCount()
Gets the number of channels returned with each call to openBytes.
|
int |
getSeries()
Gets the currently active series.
|
int |
getSeriesCount()
Gets the number of series in this file.
|
Hashtable<String,Object> |
getSeriesMetadata()
Obtains the hashtable containing metadata field/value pairs from the
current series in the current file.
|
Object |
getSeriesMetadataValue(String field)
Obtains the specified metadata field's value for the current series
in the current file.
|
String[] |
getSeriesUsedFiles()
Returns an array of filenames needed to open the current series.
|
String[] |
getSeriesUsedFiles(boolean noPixels)
Returns an array of filenames needed to open the current series.
|
int |
getSizeC()
Gets the size of the C dimension.
|
int |
getSizeT()
Gets the size of the T dimension.
|
int |
getSizeX()
Gets the size of the X dimension.
|
int |
getSizeY()
Gets the size of the Y dimension.
|
int |
getSizeZ()
Gets the size of the Z dimension.
|
String[] |
getSuffixes()
Gets the default file suffixes for this file format.
|
Set<MetadataLevel> |
getSupportedMetadataLevels() |
int |
getThumbSizeX()
Get the size of the X dimension for the thumbnail.
|
int |
getThumbSizeY()
Get the size of the Y dimension for the thumbnail.
|
IFormatReader[] |
getUnderlyingReaders()
Retrieves all underlying readers.
|
String[] |
getUsedFiles()
Returns an array of filenames needed to open this dataset.
|
String[] |
getUsedFiles(boolean noPixels)
Returns an array of filenames needed to open this dataset.
|
int[] |
getZCTCoords(int index)
Gets the Z, C and T coordinates (real sizes) corresponding to the
given rasterized index value.
|
int[] |
getZCTModuloCoords(int index)
Gets the Z, C, T, moduloZ, moduloC and moduloT coordinates
(effective sizes) corresponding to the given rasterized index
value.
|
boolean |
hasCompanionFiles()
Returns true if this format supports multi-file datasets.
|
boolean |
hasFlattenedResolutions()
Return whether or not resolution flattening is enabled.
|
boolean |
isFalseColor()
Returns false if
IFormatReader.isIndexed() is false, or if IFormatReader.isIndexed()
is true and the lookup table represents "real" color data. |
boolean |
isGroupFiles()
Returns true if we should group files in multi-file formats.
|
boolean |
isIndexed()
Gets whether the image planes are indexed color.
|
boolean |
isInterleaved()
Gets whether or not the channels are interleaved.
|
boolean |
isInterleaved(int subC)
Gets whether or not the given sub-channel is interleaved.
|
boolean |
isLittleEndian()
Gets whether the data is in little-endian format.
|
boolean |
isMetadataComplete()
Returns true if this format's metadata is completely parsed.
|
boolean |
isMetadataFiltered()
Returns true if ugly metadata (entries with unprintable characters,
and extremely large entries) are discarded from the metadata table.
|
boolean |
isNormalized()
Returns true if we should normalize float data.
|
boolean |
isOrderCertain()
Gets whether the dimension order and sizes are known, or merely guesses.
|
boolean |
isOriginalMetadataPopulated()
Returns true if we should save proprietary metadata
in the MetadataStore.
|
boolean |
isRGB()
Checks if the image planes in the file have more than one channel per
IFormatReader.openBytes(int) call. |
boolean |
isSingleFile(String id)
Returns true if this is a single-file format.
|
boolean |
isThisType(byte[] block)
Checks if the given block is a valid header for this file format.
|
boolean |
isThisType(loci.common.RandomAccessInputStream stream)
Checks if the given stream is a valid stream for this file format.
|
boolean |
isThisType(String name)
Checks if the given string is a valid filename for this file format.
|
boolean |
isThisType(String name,
boolean open)
Checks if the given file is a valid instance of this file format.
|
boolean |
isThumbnailSeries()
Gets whether the current series is a lower resolution copy of a different
series.
|
byte[] |
openBytes(int no)
Obtains the specified image plane from the current file as a byte array.
|
byte[] |
openBytes(int no,
byte[] buf)
Obtains the specified image plane from the current file into a
pre-allocated byte array of
(sizeX * sizeY * bytesPerPixel * RGB channel count).
|
byte[] |
openBytes(int no,
byte[] buf,
int x,
int y,
int w,
int h)
Obtains a sub-image of the specified image plane
into a pre-allocated byte array.
|
byte[] |
openBytes(int no,
int x,
int y,
int w,
int h)
Obtains a sub-image of the specified image plane,
whose upper-left corner is given by (x, y).
|
Object |
openPlane(int no,
int x,
int y,
int w,
int h)
Obtains the specified image plane (or sub-image thereof) in the reader's
native data structure.
|
byte[] |
openThumbBytes(int no)
Obtains a thumbnail for the specified image plane from the current file,
as a byte array.
|
void |
reopenFile()
Reopen any files that were closed, and which are expected to be open
while the reader is open.
|
int |
seriesToCoreIndex(int series)
Returns the first core index corresponding to the specified series.
|
void |
setCoreIndex(int no)
Set the current resolution/series (ignores subresolutions).
|
void |
setFlattenedResolutions(boolean flattened)
Set whether or not to flatten resolutions into individual series.
|
void |
setGroupFiles(boolean group)
Specifies whether or not to force grouping in multi-file formats.
|
void |
setId(String id)
Sets the current file name.
|
void |
setMetadataFiltered(boolean filter)
Specifies whether ugly metadata (entries with unprintable characters,
and extremely large entries) should be discarded from the metadata table.
|
void |
setMetadataOptions(MetadataOptions options) |
void |
setMetadataStore(MetadataStore store)
Sets the default metadata store for this reader.
|
void |
setNormalized(boolean normalize)
Specifies whether or not to normalize float data.
|
void |
setOriginalMetadataPopulated(boolean populate)
Specifies whether or not to save proprietary metadata
in the MetadataStore.
|
void |
setResolution(int no)
Set the resolution level.
|
void |
setSeries(int no)
Activates the specified series.
|
IFormatReader |
unwrap()
Unwraps nested wrapped readers until the core reader (i.e., not
a
ReaderWrapper or ImageReader ) is found. |
IFormatReader |
unwrap(Class<? extends IFormatReader> readerClass,
String id)
Unwraps nested wrapped readers until the given reader class is found.
|
IFormatReader |
unwrap(String id)
Unwraps nested wrapped readers until the core reader (i.e., not
a
ReaderWrapper or ImageReader ) is found. |
protected IFormatReader reader
public ReaderWrapper()
public ReaderWrapper(IFormatReader r)
public IFormatReader getReader()
public IFormatReader unwrap() throws FormatException, IOException
ReaderWrapper
or ImageReader
) is found.FormatException
IOException
public IFormatReader unwrap(String id) throws FormatException, IOException
ReaderWrapper
or ImageReader
) is found.id
- Id to use as a basis when unwrapping any nested
ImageReader
s. If null, the current id is used.FormatException
IOException
public IFormatReader unwrap(Class<? extends IFormatReader> readerClass, String id) throws FormatException, IOException
readerClass
- Class of the desired nested reader. If null, the
core reader (i.e., deepest wrapped reader) will be returned.id
- Id to use as a basis when unwrapping any nested
ImageReader
s. If null, the current id is used.FormatException
IOException
public ReaderWrapper duplicate(Class<? extends IFormatReader> imageReaderClass) throws FormatException
imageReaderClass
- If non-null, any ImageReader
s in the
reader stack will be replaced with instances of the given class.FormatException
- If something goes wrong during the duplication.public Set<MetadataLevel> getSupportedMetadataLevels()
getSupportedMetadataLevels
in interface IMetadataConfigurable
public MetadataOptions getMetadataOptions()
getMetadataOptions
in interface IMetadataConfigurable
public void setMetadataOptions(MetadataOptions options)
setMetadataOptions
in interface IMetadataConfigurable
public boolean isThisType(String name, boolean open)
IFormatReader
isThisType
in interface IFormatReader
open
- If true, and the file extension is insufficient to determine
the file type, the file may be opened for further analysis, or other
relatively expensive file system operations (such as file existence
tests and directory listings) may be performed. If false, file system
access is not allowed.public boolean isThisType(byte[] block)
IFormatReader
isThisType
in interface IFormatReader
public boolean isThisType(loci.common.RandomAccessInputStream stream) throws IOException
IFormatReader
isThisType
in interface IFormatReader
IOException
public int getImageCount()
IFormatReader
getImageCount
in interface IFormatReader
public boolean isRGB()
IFormatReader
IFormatReader.openBytes(int)
call.
This method returns true if and only if IFormatReader.getRGBChannelCount()
returns a value greater than 1.isRGB
in interface IFormatReader
public int getSizeX()
IFormatReader
getSizeX
in interface IFormatReader
public int getSizeY()
IFormatReader
getSizeY
in interface IFormatReader
public int getSizeZ()
IFormatReader
getSizeZ
in interface IFormatReader
public int getSizeC()
IFormatReader
getSizeC
in interface IFormatReader
public int getSizeT()
IFormatReader
getSizeT
in interface IFormatReader
public int getPixelType()
IFormatReader
getPixelType
in interface IFormatReader
FormatTools
static pixel types such as FormatTools.INT8
.public int getBitsPerPixel()
IFormatReader
IFormatReader.getPixelType()
.getBitsPerPixel
in interface IFormatReader
public int getEffectiveSizeC()
IFormatReader
getEffectiveSizeC
in interface IFormatReader
public int getRGBChannelCount()
IFormatReader
getRGBChannelCount
in interface IFormatReader
public boolean isIndexed()
IFormatReader
IFormatReader.getSizeC()
,
IFormatReader.getEffectiveSizeC()
or IFormatReader.getRGBChannelCount()
.isIndexed
in interface IFormatReader
public boolean isFalseColor()
IFormatReader
IFormatReader.isIndexed()
is false, or if IFormatReader.isIndexed()
is true and the lookup table represents "real" color data. Returns true
if IFormatReader.isIndexed()
is true and the lookup table is only present to aid
in visualization.isFalseColor
in interface IFormatReader
public byte[][] get8BitLookupTable() throws FormatException, IOException
IFormatReader
IFormatReader.isIndexed()
returns
false, then this may return null. Also, if IFormatReader.getPixelType()
returns
anything other than FormatTools.INT8
or FormatTools.UINT8
,
this method will return null.get8BitLookupTable
in interface IFormatReader
FormatException
IOException
public short[][] get16BitLookupTable() throws FormatException, IOException
IFormatReader
IFormatReader.isIndexed()
returns
false, then this may return null. Also, if IFormatReader.getPixelType()
returns
anything other than FormatTools.INT16
or FormatTools.UINT16
, this method will return null.get16BitLookupTable
in interface IFormatReader
FormatException
IOException
public Modulo getModuloZ()
getModuloZ
in interface IFormatReader
public Modulo getModuloC()
getModuloC
in interface IFormatReader
public Modulo getModuloT()
getModuloT
in interface IFormatReader
public int getThumbSizeX()
IFormatReader
getThumbSizeX
in interface IFormatReader
public int getThumbSizeY()
IFormatReader
getThumbSizeY
in interface IFormatReader
public boolean isLittleEndian()
IFormatReader
isLittleEndian
in interface IFormatReader
public String getDimensionOrder()
IFormatReader
IFormatReader.isInterleaved()
method will return true.getDimensionOrder
in interface IFormatReader
public boolean isOrderCertain()
IFormatReader
isOrderCertain
in interface IFormatReader
public boolean isThumbnailSeries()
IFormatReader
isThumbnailSeries
in interface IFormatReader
public boolean isInterleaved()
IFormatReader
IFormatReader.getDimensionOrder()
returns XYCTZ or XYCZT,
and this method returns true.
Note that this flag returns whether or not the data returned by
IFormatReader.openBytes(int)
is interleaved. In most cases, this will
match the interleaving in the original file, but for some formats (e.g.
TIFF) channel re-ordering is done internally and the return value of
this method will not match what is in the original file.isInterleaved
in interface IFormatReader
public boolean isInterleaved(int subC)
IFormatReader
SDTReader
handles spectral-lifetime data with
interleaved lifetime bins and non-interleaved spectral channels.isInterleaved
in interface IFormatReader
public byte[] openBytes(int no) throws FormatException, IOException
IFormatReader
openBytes
in interface IFormatReader
FormatException
IOException
IFormatReader.openBytes(int, byte[])
public byte[] openBytes(int no, int x, int y, int w, int h) throws FormatException, IOException
IFormatReader
openBytes
in interface IFormatReader
FormatException
IOException
public byte[] openBytes(int no, byte[] buf) throws FormatException, IOException
IFormatReader
openBytes
in interface IFormatReader
no
- the image index within the file.buf
- a pre-allocated buffer.buf
for convenience.FormatException
- if there was a problem parsing the metadata of the
file.IOException
- if there was a problem reading the file.public byte[] openBytes(int no, byte[] buf, int x, int y, int w, int h) throws FormatException, IOException
IFormatReader
openBytes
in interface IFormatReader
no
- the image index within the file.buf
- a pre-allocated buffer.x
- X coordinate of the upper-left corner of the sub-imagey
- Y coordinate of the upper-left corner of the sub-imagew
- width of the sub-imageh
- height of the sub-imagebuf
for convenience.FormatException
- if there was a problem parsing the metadata of the
file.IOException
- if there was a problem reading the file.public Object openPlane(int no, int x, int y, int w, int h) throws FormatException, IOException
IFormatReader
BufferedImage
. The openPlane method exists to
maintain generality and efficiency while avoiding pollution of the API
with AWT-specific logic.openPlane
in interface IFormatReader
FormatException
IOException
FormatReader
,
BufferedImageReader
public byte[] openThumbBytes(int no) throws FormatException, IOException
IFormatReader
openThumbBytes
in interface IFormatReader
FormatException
IOException
public void close(boolean fileOnly) throws IOException
IFormatReader
Closeable.close()
.close
in interface IFormatReader
IOException
public int getSeriesCount()
IFormatReader
getSeriesCount
in interface IFormatReader
public void setSeries(int no)
IFormatReader
setSeries
in interface IFormatReader
public int getSeries()
IFormatReader
getSeries
in interface IFormatReader
public void setGroupFiles(boolean group)
IFormatReader
setGroupFiles
in interface IFormatReader
public boolean isGroupFiles()
IFormatReader
isGroupFiles
in interface IFormatReader
public int fileGroupOption(String id) throws FormatException, IOException
IFormatReader
fileGroupOption
in interface IFormatReader
FormatException
IOException
public boolean isMetadataComplete()
IFormatReader
isMetadataComplete
in interface IFormatReader
public void setNormalized(boolean normalize)
IFormatReader
setNormalized
in interface IFormatReader
public boolean isNormalized()
IFormatReader
isNormalized
in interface IFormatReader
public void setOriginalMetadataPopulated(boolean populate)
IFormatReader
setOriginalMetadataPopulated
in interface IFormatReader
public boolean isOriginalMetadataPopulated()
IFormatReader
isOriginalMetadataPopulated
in interface IFormatReader
public String[] getUsedFiles()
IFormatReader
getUsedFiles
in interface IFormatReader
public String[] getUsedFiles(boolean noPixels)
IFormatReader
getUsedFiles
in interface IFormatReader
public String[] getSeriesUsedFiles()
IFormatReader
getSeriesUsedFiles
in interface IFormatReader
public String[] getSeriesUsedFiles(boolean noPixels)
IFormatReader
getSeriesUsedFiles
in interface IFormatReader
public FileInfo[] getAdvancedUsedFiles(boolean noPixels)
IFormatReader
getAdvancedUsedFiles
in interface IFormatReader
public FileInfo[] getAdvancedSeriesUsedFiles(boolean noPixels)
IFormatReader
getAdvancedSeriesUsedFiles
in interface IFormatReader
public String getCurrentFile()
IFormatReader
getCurrentFile
in interface IFormatReader
public int getIndex(int z, int c, int t)
IFormatReader
getIndex
in interface IFormatReader
public int getIndex(int z, int c, int t, int moduloZ, int moduloC, int moduloT)
IFormatReader
getIndex
in interface IFormatReader
public int[] getZCTCoords(int index)
IFormatReader
getZCTCoords
in interface IFormatReader
public int[] getZCTModuloCoords(int index)
IFormatReader
getZCTModuloCoords
in interface IFormatReader
public Object getMetadataValue(String field)
IFormatReader
getMetadataValue
in interface IFormatReader
field
- the name associated with the metadata fieldpublic Object getSeriesMetadataValue(String field)
IFormatReader
getSeriesMetadataValue
in interface IFormatReader
field
- the name associated with the metadata fieldpublic Hashtable<String,Object> getGlobalMetadata()
IFormatReader
getGlobalMetadata
in interface IFormatReader
public Hashtable<String,Object> getSeriesMetadata()
IFormatReader
getSeriesMetadata
in interface IFormatReader
public List<CoreMetadata> getCoreMetadataList()
IFormatReader
getCoreMetadataList
in interface IFormatReader
public void setMetadataFiltered(boolean filter)
IFormatReader
setMetadataFiltered
in interface IFormatReader
public boolean isMetadataFiltered()
IFormatReader
isMetadataFiltered
in interface IFormatReader
public void setMetadataStore(MetadataStore store)
IFormatReader
setMetadataStore
in interface IFormatReader
store
- a metadata store implementation.public MetadataStore getMetadataStore()
IFormatReader
null
metadata store.getMetadataStore
in interface IFormatReader
public Object getMetadataStoreRoot()
IFormatReader
getMetadataStoreRoot
in interface IFormatReader
public IFormatReader[] getUnderlyingReaders()
IFormatReader
getUnderlyingReaders
in interface IFormatReader
public boolean isSingleFile(String id) throws FormatException, IOException
IFormatReader
isSingleFile
in interface IFormatReader
FormatException
IOException
public int getRequiredDirectories(String[] files) throws FormatException, IOException
IFormatReader
getRequiredDirectories
in interface IFormatReader
FormatException
IOException
public String getDatasetStructureDescription()
IFormatReader
getDatasetStructureDescription
in interface IFormatReader
public boolean hasCompanionFiles()
IFormatReader
hasCompanionFiles
in interface IFormatReader
public String[] getPossibleDomains(String id) throws FormatException, IOException
IFormatReader
getPossibleDomains
in interface IFormatReader
FormatException
IOException
public String[] getDomains()
IFormatReader
getDomains
in interface IFormatReader
public int getOptimalTileWidth()
IFormatReader
getOptimalTileWidth
in interface IFormatReader
public int getOptimalTileHeight()
IFormatReader
getOptimalTileHeight
in interface IFormatReader
public int getCoreIndex()
IFormatReader
getCoreIndex
in interface IFormatReader
public void setCoreIndex(int no)
IFormatReader
setCoreIndex
in interface IFormatReader
public int seriesToCoreIndex(int series)
IFormatReader
seriesToCoreIndex
in interface IFormatReader
public int coreIndexToSeries(int index)
IFormatReader
coreIndexToSeries
in interface IFormatReader
public int getResolutionCount()
IFormatReader
getResolutionCount
in interface IFormatReader
public void setResolution(int no)
IFormatReader
setResolution
in interface IFormatReader
IFormatReader.getResolutionCount()
public int getResolution()
IFormatReader
getResolution
in interface IFormatReader
IFormatReader.getResolutionCount()
public boolean hasFlattenedResolutions()
IFormatReader
hasFlattenedResolutions
in interface IFormatReader
public void setFlattenedResolutions(boolean flattened)
IFormatReader
setFlattenedResolutions
in interface IFormatReader
public boolean isThisType(String name)
IFormatHandler
isThisType
in interface IFormatHandler
public String getFormat()
IFormatHandler
getFormat
in interface IFormatHandler
public String[] getSuffixes()
IFormatHandler
getSuffixes
in interface IFormatHandler
public Class<?> getNativeDataType()
IFormatHandler
IFormatReader.openPlane(int, int, int, int, int)
or IFormatWriter.savePlane(int, java.lang.Object)
.
For most readers this type will be a byte array; however, some readers
call external APIs that work with other types such as
BufferedImage
.getNativeDataType
in interface IFormatHandler
public void setId(String id) throws FormatException, IOException
IFormatHandler
setId
in interface IFormatHandler
FormatException
IOException
public void reopenFile() throws IOException
IFormatReader
IFormatHandler.setId(java.lang.String)
has been
called, but close(false) has not been called.reopenFile
in interface IFormatReader
IOException
public void close() throws IOException
close
in interface Closeable
close
in interface AutoCloseable
IOException
private ReaderWrapper duplicateRecurse(Class<? extends IFormatReader> imageReaderClass) throws FormatException
FormatException
Copyright © 2017 Open Microscopy Environment