public abstract class StandardImageTiler extends java.lang.Object implements ImageTiler
| Constructor and Description |
|---|
StandardImageTiler(RandomAccess f,
long fileOffset,
int[] dims,
java.lang.Class<?> base)
Create a tiler.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
fillFileData(java.lang.Object output,
int delta,
int outputOffset,
int segment)
File a tile segment from a file.
|
protected void |
fillMemData(java.lang.Object data,
int[] posits,
int length,
java.lang.Object output,
int outputOffset,
int dim)
Fill a single segment from memory.
|
protected void |
fillTile(java.lang.Object data,
java.lang.Object o,
int[] newDims,
int[] corners,
int[] lengths)
Fill the subset.
|
java.lang.Object |
getCompleteImage()
Read the entire image into a multidimensional array.
|
protected abstract java.lang.Object |
getMemoryImage()
See if we can get the image data from memory.
|
static int |
getOffset(int[] dims,
int[] pos) |
java.lang.Object |
getTile(int[] corners,
int[] lengths)
Get a subset of the image.
|
void |
getTile(java.lang.Object outArray,
int[] corners,
int[] lengths)
Get a tile, filling in a prespecified array.
|
protected static boolean |
incrementPosition(int[] start,
int[] current,
int[] lengths)
Increment the offset within the position array.
|
public StandardImageTiler(RandomAccess f, long fileOffset, int[] dims, java.lang.Class<?> base)
f - The random access device from which image data may be read.
This may be null if the tile information is available from
memory.fileOffset - The file offset within the RandomAccess device at which the
data begins.dims - The actual dimensions of the image.base - The base class (should be a primitive type) of the image.public static int getOffset(int[] dims,
int[] pos)
dims - The dimensions of the array.pos - The index requested.protected static boolean incrementPosition(int[] start,
int[] current,
int[] lengths)
start - The starting corner values.current - The current offsets.lengths - The desired dimensions of the subset.true if the current array was changedprotected void fillFileData(java.lang.Object output,
int delta,
int outputOffset,
int segment)
throws java.io.IOException
output - The output tile.delta - The offset from the beginning of the image in bytes.outputOffset - The index into the output array.segment - The number of elements to be read for this segment.java.io.IOException - if the underlying stream failedprotected void fillMemData(java.lang.Object data,
int[] posits,
int length,
java.lang.Object output,
int outputOffset,
int dim)
data - The in-memory image data.posits - The current position for which data is requested.length - The size of the segments.output - The output tile.outputOffset - The current offset into the output tile.dim - The current dimension beingprotected void fillTile(java.lang.Object data,
java.lang.Object o,
int[] newDims,
int[] corners,
int[] lengths)
throws java.io.IOException
data - The memory-resident data image. This may be null if the image
is to be read from a file. This should be a multi-dimensional
primitive array.o - The tile to be filled. This is a simple primitive array.newDims - The dimensions of the full image.corners - The indices of the corner of the image.lengths - The dimensions of the subset.java.io.IOException - if the underlying stream failedpublic java.lang.Object getCompleteImage()
throws java.io.IOException
getCompleteImage in interface ImageTilerjava.io.IOException - if the underlying stream failedprotected abstract java.lang.Object getMemoryImage()
public java.lang.Object getTile(int[] corners,
int[] lengths)
throws java.io.IOException
getTile in interface ImageTilercorners - The starting corner (using 0 as the start) for the image.lengths - The length requested in each dimension.java.io.IOException - if the underlying stream failedpublic void getTile(java.lang.Object outArray,
int[] corners,
int[] lengths)
throws java.io.IOException
getTile in interface ImageTileroutArray - The output tile array. A one-dimensional array. Data not
within the valid limits of the image will be left unchanged.
The length of this array should be the product of lengths.corners - The corners of the tile.lengths - The dimensions of the tile.java.io.IOException - if the underlying stream failed