com.imagero.uio.buffer.arrays
Class AbstractArrayBufferManager

java.lang.Object
  extended bycom.imagero.uio.buffer.arrays.AbstractArrayBufferManager
All Implemented Interfaces:
BufferManager, MutableBufferManager
Direct Known Subclasses:
CharArrayBufferManager, DoubleArrayBufferManager, FloatArrayBufferManager, IntArrayBufferManager, LongArrayBufferManager, ShortArrayBufferManager

public abstract class AbstractArrayBufferManager
extends java.lang.Object
implements MutableBufferManager


Field Summary
protected static int TILE_SIZE
           
protected  int unitSize
           
 
Fields inherited from interface com.imagero.uio.buffer.BufferManager
empty
 
Constructor Summary
AbstractArrayBufferManager()
           
 
Method Summary
 void clear()
          clear all buffered data without closing
 void clear(long start, long end)
          all buffered data in stream between start and end will be cleared
 void close()
          write back dirty data and free resources
 void flush()
          write changed data back (if cached)
 void flush(boolean free)
          write back dirty data and possibly free resources
 int getByteOrder()
           
 int getCount()
          Get count of Buffer objects in this BufferManager
 byte[] getData(int i)
          Get data (as byte array) from i'th Buffer
 int getDataLength(int i)
          get length of i'th Buffer
 long getDataStart(int i)
          get start of i'th Buffer in byte
 int getIndex(long pos)
          Get index of Buffer which contains pos
 long getLength()
          Get length of data
 int getMaxCache()
          get max buffer count
 int getUnitSize()
          get unit size
protected  void read(byte[] b, int index)
          read block of data into byte array.
protected  void readBE(byte[] b, int index)
          read block of data into byte array
protected  void readLE(byte[] b, int index)
          read block of data into byte array
protected abstract  int readUnitBE(int offset, byte[] dest, int destOffset)
          read appropriate unit (short, int or long) in BIG_ENDIAN order
protected abstract  int readUnitLE(int offset, byte[] dest, int destOffset)
          read appropriate unit (short, int or long) in LITTLE_ENDIAN order
 void setByteOrder(int byteOrder)
           
 void setDirty(int index)
          mark Buffer as dirty (changed)
 void setDirty(long from, long to)
          mark region as dirty (changed)
 void setMaxCache(int max)
          set max buffer count
protected  void write(byte[] b, int index)
          write block of data back to int array
protected  void writeBE(byte[] b, int index)
           
protected  void writeLE(byte[] b, int index)
           
protected abstract  int writeUnitBE(byte[] b, int c, int offset)
           
protected abstract  int writeUnitLE(byte[] b, int c, int offset)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

unitSize

protected int unitSize

TILE_SIZE

protected static int TILE_SIZE
Constructor Detail

AbstractArrayBufferManager

public AbstractArrayBufferManager()
Method Detail

readLE

protected void readLE(byte[] b,
                      int index)
read block of data into byte array

Parameters:
b - byte array
index - index of Buffer to read

getDataStart

public long getDataStart(int i)
Description copied from interface: BufferManager
get start of i'th Buffer in byte

Specified by:
getDataStart in interface BufferManager
Parameters:
i - Buffer index
Returns:
int
                          n-1
dataStart(n) = Σ getDataLength(i)
                          i=0

getIndex

public int getIndex(long pos)
Description copied from interface: BufferManager
Get index of Buffer which contains pos

Specified by:
getIndex in interface BufferManager
Parameters:
pos -

setDirty

public void setDirty(long from,
                     long to)
mark region as dirty (changed)

Specified by:
setDirty in interface MutableBufferManager
Parameters:
from - start of changed region
to - end of changed region

setDirty

public void setDirty(int index)
mark Buffer as dirty (changed)

Specified by:
setDirty in interface MutableBufferManager
Parameters:
index - Buffer to mark as dirty

flush

public void flush()
Description copied from interface: MutableBufferManager
write changed data back (if cached)

Specified by:
flush in interface MutableBufferManager

readBE

protected void readBE(byte[] b,
                      int index)
read block of data into byte array

Parameters:
b - byte array
index - tile index to read

readUnitBE

protected abstract int readUnitBE(int offset,
                                  byte[] dest,
                                  int destOffset)
read appropriate unit (short, int or long) in BIG_ENDIAN order

Parameters:
offset - offset in source array
dest - byte array (destination)
destOffset - offset in destination array
Returns:
offset in destination array (updated)

readUnitLE

protected abstract int readUnitLE(int offset,
                                  byte[] dest,
                                  int destOffset)
read appropriate unit (short, int or long) in LITTLE_ENDIAN order

Parameters:
offset - offset in source array
dest - byte array (destination)
destOffset - offset in destination array
Returns:
offset in destination array (updated)

getCount

public int getCount()
Description copied from interface: BufferManager
Get count of Buffer objects in this BufferManager

Specified by:
getCount in interface BufferManager
Returns:
int

getDataLength

public int getDataLength(int i)
get length of i'th Buffer

Specified by:
getDataLength in interface BufferManager
Parameters:
i - Buffer index
Returns:
length of i'th Buffer (in bytes)

read

protected void read(byte[] b,
                    int index)
read block of data into byte array.

Parameters:
b - byte array
index - index of Buffer to read

getData

public byte[] getData(int i)
               throws java.io.IOException
Description copied from interface: BufferManager
Get data (as byte array) from i'th Buffer

Specified by:
getData in interface BufferManager
Parameters:
i - Buffer index
Returns:
byte array
Throws:
java.io.IOException

write

protected void write(byte[] b,
                     int index)
write block of data back to int array

Parameters:
b - data to write
index - tile index to write

flush

public void flush(boolean free)
write back dirty data and possibly free resources

Parameters:
free - if true free resources

close

public void close()
write back dirty data and free resources

Specified by:
close in interface BufferManager

clear

public void clear()
Description copied from interface: BufferManager
clear all buffered data without closing

Specified by:
clear in interface BufferManager

clear

public void clear(long start,
                  long end)
Description copied from interface: BufferManager
all buffered data in stream between start and end will be cleared

Specified by:
clear in interface BufferManager

writeLE

protected void writeLE(byte[] b,
                       int index)

writeUnitLE

protected abstract int writeUnitLE(byte[] b,
                                   int c,
                                   int offset)

writeBE

protected void writeBE(byte[] b,
                       int index)

writeUnitBE

protected abstract int writeUnitBE(byte[] b,
                                   int c,
                                   int offset)

getLength

public long getLength()
Get length of data

Specified by:
getLength in interface BufferManager
Returns:
length of data in bytes

getUnitSize

public int getUnitSize()
get unit size

Returns:
2 for short, 4 for int and 8 for long data

getByteOrder

public int getByteOrder()

setByteOrder

public void setByteOrder(int byteOrder)

getMaxCache

public int getMaxCache()
Description copied from interface: BufferManager
get max buffer count

Specified by:
getMaxCache in interface BufferManager
Returns:
max buffer count

setMaxCache

public void setMaxCache(int max)
Description copied from interface: BufferManager
set max buffer count

Specified by:
setMaxCache in interface BufferManager