jj2000.j2k.image
Class DataBlk

java.lang.Object
  |
  +--jj2000.j2k.image.DataBlk
Direct Known Subclasses:
DataBlkFloat, DataBlkInt

public abstract class DataBlk
extends java.lang.Object

This is a generic abstract class to store data from a block of an image. This class does not have the notion of components. Therefore, it should be used for data from a single component. Subclasses should implement the different types of storage (int, float, etc.).

The data is always stored in one array, of the type matching the data type (i.e. for 'int' it's an 'int[]'). The data should be stored in the array in standard scan-line order. That is the samples go from the top-left corner of the code-block to the lower-right corner by line and then column.

The member variable 'offset' gives the index in the array of the first data element (i.e. the top-left coefficient (ulx,uly)). The member variable 'scanw' gives the width of the scan that is used to store the data, that can be different from the width of the block. Element '(x,y)' of the code-block (i.e. '(ulx,uly)' is the top-left coefficient), will appear at position 'offset+(y-uly)*scanw+(x-ulx)' in the array of data.

A block of data can have the progressive attribute set. Data is progressive when it is obtained by successive refinement and the values in this block are approximations of the "final" values. When the final values are returned the progressive attribute must be turned off.

The classes DataBlkInt and DataBlkFloat provide implementations for int and float types respectively.

See Also:
DataBlkInt, DataBlkFloat

Field Summary
 int h
          The height of the block, in pixels.
 int offset
          The offset in the array of the top-left coefficient
 boolean progressive
          The progressive attribute (false by default)
 int scanw
          The width of the scanlines used to store the data in the array
static int TYPE_BYTE
          The identifier for the byte data type, as signed 8 bits.
static int TYPE_FLOAT
          The identifier for the float data type
static int TYPE_INT
          The identifier for the int data type, as signed 32 bits.
static int TYPE_SHORT
          The identifier for the short data type, as signed 16 bits.
 int ulx
          The horizontal coordinate (in pixels) of the upper-left corner of the block of data.
 int uly
          The vertical coordinate of the upper-left corner of the block of data.
 int w
          The width of the block, in pixels.
 
Constructor Summary
DataBlk()
           
 
Method Summary
abstract  java.lang.Object getData()
          Returns the array containing the data, or null if there is no data.
abstract  int getDataType()
          Returns the data type of the DataBlk object, as defined in this class.
static int getSize(int type)
          Returns the size in bits, given the data type.
abstract  void setData(java.lang.Object arr)
          Sets the data array to the specified one.
 java.lang.String toString()
          Returns a string of informations about the DataBlk
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

TYPE_BYTE

public static final int TYPE_BYTE
The identifier for the byte data type, as signed 8 bits.

See Also:
Constant Field Values

TYPE_SHORT

public static final int TYPE_SHORT
The identifier for the short data type, as signed 16 bits.

See Also:
Constant Field Values

TYPE_INT

public static final int TYPE_INT
The identifier for the int data type, as signed 32 bits.

See Also:
Constant Field Values

TYPE_FLOAT

public static final int TYPE_FLOAT
The identifier for the float data type

See Also:
Constant Field Values

ulx

public int ulx
The horizontal coordinate (in pixels) of the upper-left corner of the block of data. This is relative to the component of the image from where this block was filled or is to be filled.


uly

public int uly
The vertical coordinate of the upper-left corner of the block of data. This is relative to the component of the image from where this block was filled or is to be filled.


w

public int w
The width of the block, in pixels.


h

public int h
The height of the block, in pixels.


offset

public int offset
The offset in the array of the top-left coefficient


scanw

public int scanw
The width of the scanlines used to store the data in the array


progressive

public boolean progressive
The progressive attribute (false by default)

Constructor Detail

DataBlk

public DataBlk()
Method Detail

getSize

public static int getSize(int type)
Returns the size in bits, given the data type. The data type must be one defined in this class. An IllegalArgumentException is thrown if type is not defined in this class.

Parameters:
type - The data type.
Returns:
The size in bits of the data type.

getDataType

public abstract int getDataType()
Returns the data type of the DataBlk object, as defined in this class.

Returns:
The data type of the object, as defined in thsi class.

getData

public abstract java.lang.Object getData()
Returns the array containing the data, or null if there is no data. The returned array is of the type returned by getDataType() (e.g., for TYPE_INT, it is a int[]).

Each implementing class should provide a type specific equivalent method (e.g., getDataInt() in DataBlkInt) which returns an array of the correct type explicetely and not through an Object.

Returns:
The array containing the data, or null if there is no data.
See Also:
getDataType()

setData

public abstract void setData(java.lang.Object arr)
Sets the data array to the specified one. The type of the specified data array must match the one returned by getDataType() (e.g., for TYPE_INT, it should be a int[]). If the wrong type of array is given a ClassCastException will be thrown.

The size of the array is not necessarily checked for consistency with w and h or any other fields.

Each implementing class should provide a type specific equivalent method (e.g., setDataInt() in DataBlkInt) which takes an array of the correct type explicetely and not through an Object.

Parameters:
arr - The new data array to use
See Also:
getDataType()

toString

public java.lang.String toString()
Returns a string of informations about the DataBlk

Overrides:
toString in class java.lang.Object
Returns:
Block dimensions and progressiveness in a string