colorspace
Class ColorSpaceMapper

java.lang.Object
  |
  +--jj2000.j2k.image.ImgDataAdapter
        |
        +--colorspace.ColorSpaceMapper
All Implemented Interfaces:
BlkImgDataSrc, ImgData
Direct Known Subclasses:
ChannelDefinitionMapper, EnumeratedColorSpaceMapper, ICCProfiler, PalettizedColorSpaceMapper, Resampler, SYccColorSpaceMapper

public abstract class ColorSpaceMapper
extends ImgDataAdapter
implements BlkImgDataSrc

This is the base class for all modules in the colorspace and icc profiling steps of the decoding chain. It is responsible for the allocation and iniitialization of all working storage. It provides several utilities which are of generic use in preparing DataBlks for use and provides default implementations for the getCompData and getInternCompData methods.

See Also:
jj2000.j2k.colorspace.ColorSpace

Nested Class Summary
protected  class ColorSpaceMapper.ComputedComponents
           
 
Field Summary
protected  ColorSpaceMapper.ComputedComponents computed
           
protected  ColorSpace csMap
          ColorSpace info
protected  float[][] dataFloat
           
protected  int[][] dataInt
           
protected static java.lang.String eol
          Platform dependant end of line String.
protected  int[] fixedPtBitsArray
           
protected  DataBlkFloat[] inFloat
           
protected  DataBlkInt[] inInt
           
protected  int[] maxValueArray
           
protected  int ncomps
          Number of image components
static char OPT_PREFIX
          The prefix for ICC Profiler options
private static java.lang.String[][] pinfo
          The list of parameters that are accepted for ICC profiling.
protected  ParameterList pl
          Parameter Specs
protected  int[] shiftValueArray
           
protected  BlkImgDataSrc src
          The image source.
protected  DataBlk[] srcBlk
          The image source data per component.
protected  float[][] workDataFloat
           
protected  int[][] workDataInt
           
protected  DataBlkFloat[] workFloat
           
protected  DataBlkInt[] workInt
           
 
Fields inherited from class jj2000.j2k.image.ImgDataAdapter
imgdatasrc, tIdx
 
Constructor Summary
protected ColorSpaceMapper(BlkImgDataSrc src, ColorSpace csMap)
          Ctor which creates an ICCProfile for the image and initializes all data objects (input, working, and output).
 
Method Summary
protected static void copyGeometry(DataBlk tgt, DataBlk src)
          Copy the DataBlk geometry from source to target DataBlk and assure that the target has an appropriate data buffer.
static BlkImgDataSrc createInstance(BlkImgDataSrc src, ColorSpace csMap)
          Factory method for creating instances of this class.
 DataBlk getCompData(DataBlk out, int c)
          Returns, in the blk argument, a block of image data containing the specifed rectangular area, in the specified component.
 int getFixedPoint(int c)
          Returns the number of bits, referred to as the "range bits", corresponding to the nominal range of the data in the specified component.
 DataBlk getInternCompData(DataBlk out, int c)
          Returns, in the blk argument, a block of image data containing the specifed rectangular area, in the specified component.
static java.lang.String[][] getParameterInfo()
          Returns the parameters that are used in this class and implementing classes.
private  void initialize()
          General utility used by ctors
protected static void setInternalBuffer(DataBlk db)
          Arrange for the input DataBlk to receive an appropriately sized and typed data buffer
 
Methods inherited from class jj2000.j2k.image.ImgDataAdapter
getCompImgHeight, getCompImgWidth, getCompSubsX, getCompSubsY, getCompULX, getCompULY, getImgHeight, getImgULX, getImgULY, getImgWidth, getNomRangeBits, getNomTileHeight, getNomTileWidth, getNumComps, getNumTiles, getNumTiles, getTile, getTileCompHeight, getTileCompWidth, getTileHeight, getTileIdx, getTilePartULX, getTilePartULY, getTileWidth, nextTile, setTile
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface jj2000.j2k.image.ImgData
getCompImgHeight, getCompImgWidth, getCompSubsX, getCompSubsY, getCompULX, getCompULY, getImgHeight, getImgULX, getImgULY, getImgWidth, getNomRangeBits, getNomTileHeight, getNomTileWidth, getNumComps, getNumTiles, getNumTiles, getTile, getTileCompHeight, getTileCompWidth, getTileHeight, getTileIdx, getTilePartULX, getTilePartULY, getTileWidth, nextTile, setTile
 

Field Detail

OPT_PREFIX

public static final char OPT_PREFIX
The prefix for ICC Profiler options

See Also:
Constant Field Values

eol

protected static final java.lang.String eol
Platform dependant end of line String.


inInt

protected DataBlkInt[] inInt

inFloat

protected DataBlkFloat[] inFloat

workInt

protected DataBlkInt[] workInt

workFloat

protected DataBlkFloat[] workFloat

dataInt

protected int[][] dataInt

dataFloat

protected float[][] dataFloat

workDataFloat

protected float[][] workDataFloat

workDataInt

protected int[][] workDataInt

shiftValueArray

protected int[] shiftValueArray

maxValueArray

protected int[] maxValueArray

fixedPtBitsArray

protected int[] fixedPtBitsArray

pinfo

private static final java.lang.String[][] pinfo
The list of parameters that are accepted for ICC profiling.


pl

protected ParameterList pl
Parameter Specs


csMap

protected ColorSpace csMap
ColorSpace info


ncomps

protected int ncomps
Number of image components


src

protected BlkImgDataSrc src
The image source.


srcBlk

protected DataBlk[] srcBlk
The image source data per component.


computed

protected ColorSpaceMapper.ComputedComponents computed
Constructor Detail

ColorSpaceMapper

protected ColorSpaceMapper(BlkImgDataSrc src,
                           ColorSpace csMap)
                    throws ColorSpaceException
Ctor which creates an ICCProfile for the image and initializes all data objects (input, working, and output).

Parameters:
src - -- Source of image data
Method Detail

getParameterInfo

public static java.lang.String[][] getParameterInfo()
Returns the parameters that are used in this class and implementing classes. It returns a 2D String array. Each of the 1D arrays is for a different option, and they have 3 elements. The first element is the option name, the second one is the synopsis and the third one is a long description of what the parameter is. The synopsis or description may be 'null', in which case it is assumed that there is no synopsis or description of the option, respectively. Null may be returned if no options are supported.

Returns:
the options name, their synopsis and their explanation, or null if no options are supported.

setInternalBuffer

protected static void setInternalBuffer(DataBlk db)
Arrange for the input DataBlk to receive an appropriately sized and typed data buffer

Parameters:
db - input DataBlk
See Also:
DataBlk

copyGeometry

protected static void copyGeometry(DataBlk tgt,
                                   DataBlk src)
Copy the DataBlk geometry from source to target DataBlk and assure that the target has an appropriate data buffer.

Parameters:
tgt - has its geometry set.
src - used to get the new geometric parameters.

createInstance

public static BlkImgDataSrc createInstance(BlkImgDataSrc src,
                                           ColorSpace csMap)
                                    throws java.io.IOException,
                                           ColorSpaceException,
                                           ICCProfileException
Factory method for creating instances of this class.

Parameters:
src - -- source of image data
csMap - -- provides colorspace info
Returns:
ColorSpaceMapper instance
Throws:
java.io.IOException - profile access exception
ColorSpaceException
ICCProfileException

initialize

private void initialize()
                 throws ColorSpaceException
General utility used by ctors

ColorSpaceException

getFixedPoint

public int getFixedPoint(int c)
Returns the number of bits, referred to as the "range bits", corresponding to the nominal range of the data in the specified component. If this number is b then for unsigned data the nominal range is between 0 and 2^b-1, and for signed data it is between -2^(b-1) and 2^(b-1)-1. For floating point data this value is not applicable.

Specified by:
getFixedPoint in interface BlkImgDataSrc
Parameters:
c - The index of the component.
Returns:
The number of bits corresponding to the nominal range of the data. Fro floating-point data this value is not applicable and the return value is undefined.

getCompData

public DataBlk getCompData(DataBlk out,
                           int c)
Returns, in the blk argument, a block of image data containing the specifed rectangular area, in the specified component. The data is returned, as a copy of the internal data, therefore the returned data can be modified "in place".

The rectangular area to return is specified by the 'ulx', 'uly', 'w' and 'h' members of the 'blk' argument, relative to the current tile. These members are not modified by this method. The 'offset' of the returned data is 0, and the 'scanw' is the same as the block's width. See the 'DataBlk' class.

This method, in general, is less efficient than the 'getInternCompData()' method since, in general, it copies the data. However if the array of returned data is to be modified by the caller then this method is preferable.

If the data array in 'blk' is 'null', then a new one is created. If the data array is not 'null' then it is reused, and it must be large enough to contain the block's data. Otherwise an 'ArrayStoreException' or an 'IndexOutOfBoundsException' is thrown by the Java system.

The returned data may have its 'progressive' attribute set. In this case the returned data is only an approximation of the "final" data.

Specified by:
getCompData in interface BlkImgDataSrc
Parameters:
c - The index of the component from which to get the data.
out - Its coordinates and dimensions specify the area to return, relative to the current tile. If it contains a non-null data array, then it must be large enough. If it contains a null data array a new one is created. Some fields in this object are modified to return the data.
See Also:
getInternCompData(jj2000.j2k.image.DataBlk, int)

getInternCompData

public DataBlk getInternCompData(DataBlk out,
                                 int c)
Returns, in the blk argument, a block of image data containing the specifed rectangular area, in the specified component. The data is returned, as a reference to the internal data, if any, instead of as a copy, therefore the returned data should not be modified.

The rectangular area to return is specified by the 'ulx', 'uly', 'w' and 'h' members of the 'blk' argument, relative to the current tile. These members are not modified by this method. The 'offset' and 'scanw' of the returned data can be arbitrary. See the 'DataBlk' class.

This method, in general, is more efficient than the 'getCompData()' method since it may not copy the data. However if the array of returned data is to be modified by the caller then the other method is probably preferable.

If possible, the data in the returned 'DataBlk' should be the internal data itself, instead of a copy, in order to increase the data transfer efficiency. However, this depends on the particular implementation (it may be more convenient to just return a copy of the data). This is the reason why the returned data should not be modified.

If the data array in blk is null, then a new one is created if necessary. The implementation of this interface may choose to return the same array or a new one, depending on what is more efficient. Therefore, the data array in blk prior to the method call should not be considered to contain the returned data, a new array may have been created. Instead, get the array from blk after the method has returned.

The returned data may have its 'progressive' attribute set. In this case the returned data is only an approximation of the "final" data.

Specified by:
getInternCompData in interface BlkImgDataSrc
Parameters:
c - The index of the component from which to get the data.
out - Its coordinates and dimensions specify the area to return, relative to the current tile. Some fields in this object are modified to return the data.
Returns:
The requested DataBlk
See Also:
getCompData(jj2000.j2k.image.DataBlk, int)