|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--jj2000.j2k.image.ImgDataJoiner
This class implements the ImgData interface and allows to obtain data from different sources. Here, one source is represented by an ImgData and a component index. The typical use of this class is when the encoder needs different components (Red, Green, Blue, alpha, ...) from different input files (i.e. from different ImgReader objects).
All input ImgData must not be tiled (i.e. must have only 1 tile) and the image origin must be the canvas origin. The different inputs can have different dimensions though (this will lead to different subsampling factors for each component).
The input ImgData and component index list must be defined when constructing this class and can not be modified later.
ImgData
,
ImgReader
Field Summary | |
private int[] |
compIdx
The component index associated with each ImgData |
private int |
h
The height of the image |
private BlkImgDataSrc[] |
imageData
The list of input ImgData |
private int |
nc
The number of components in the image |
private int[] |
subsX
The subsampling factor along the horizontal direction, for every component |
private int[] |
subsY
The subsampling factor along the vertical direction, for every component |
private int |
w
The width of the image |
Constructor Summary | |
ImgDataJoiner(BlkImgDataSrc[] imD,
int[] cIdx)
Class constructor. |
Method Summary | |
DataBlk |
getCompData(DataBlk blk,
int c)
Returns, in the blk argument, a block of image data containing the specifed rectangular area, in the specified component. |
int |
getCompHeight(int c)
Returns the height in pixels of the specified component in the current tile. |
int |
getCompImgHeight(int n)
Returns the height in pixels of the specified component in the overall image. |
int |
getCompImgWidth(int c)
Returns the width in pixels of the specified component in the overall image. |
int |
getCompSubsX(int c)
Returns the component subsampling factor in the horizontal direction, for the specified component. |
int |
getCompSubsY(int c)
Returns the component subsampling factor in the vertical direction, for the specified component. |
int |
getCompWidth(int c)
Returns the width in pixels of the specified component in the current tile. |
int |
getFixedPoint(int c)
Returns the position of the fixed point in the specified component. |
int |
getHeight()
Returns the overall height of the current tile in pixels. |
int |
getImgHeight()
Returns the overall height of the image in pixels. |
int |
getImgULX()
Returns the horizontal coordinate of the image origin, the top-left corner, in the canvas system, on the reference grid. |
int |
getImgULY()
Returns the vertical coordinate of the image origin, the top-left corner, in the canvas system, on the reference grid. |
int |
getImgWidth()
Returns the overall width of the image in pixels. |
DataBlk |
getInternCompData(DataBlk blk,
int c)
Returns, in the blk argument, a block of image data containing the specifed rectangular area, in the specified component. |
int |
getNomRangeBits(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. |
int |
getNumComps()
Returns the number of components in the image. |
int |
getNumTiles()
Returns the total number of tiles in the image. |
Coord |
getNumTiles(Coord co)
Returns the number of tiles in the horizontal and vertical directions. |
Coord |
getTile(Coord co)
Returns the coordinates of the current tile. |
int |
getTileIdx()
Returns the index of the current tile, relative to a standard scan-line order. |
Coord |
getTileOff(Coord co,
int c)
Returns the horizontal and vertical offset of the upper-left corner of the current tile, in the specified component, relative to the canvas origin, in the component coordinates (not in the reference grid coordinates). |
int |
getULX(int c)
Returns the horizontal coordinate of the upper-left corner of the active tile, with respect to the canvas origin, in the component coordinates, for the specified component. |
int |
getULY(int c)
Returns the vertical coordinate of the upper-left corner of the active tile, with respect to the canvas origin, in the component coordinates, for the specified component. |
int |
getWidth()
Returns the overall width of the current tile in pixels. |
void |
nextTile()
Advances to the next tile, in standard scan-line order (by rows then columns). |
void |
setTile(int x,
int y)
Changes the current tile, given the new coordinates. |
java.lang.String |
toString()
Returns a string of information about the object, more than 1 line long. |
Methods inherited from class java.lang.Object |
|
Field Detail |
private int w
private int h
private int nc
private BlkImgDataSrc[] imageData
private int[] compIdx
private int[] subsX
private int[] subsY
Constructor Detail |
public ImgDataJoiner(BlkImgDataSrc[] imD, int[] cIdx)
Of course, the 2 arrays must have the same length (This length is the number of output components). The image width and height are definded to be the maximum values of all the input ImgData.
imD
- The list of input BlkImgDataSrc in an array.cIdx
- The component index associated with each ImgData.Method Detail |
public int getWidth()
public int getHeight()
public int getImgWidth()
public int getImgHeight()
public int getNumComps()
public int getCompSubsX(int c)
c
- The index of the component (between 0 and N-1)ImgData
public int getCompSubsY(int c)
c
- The index of the component (between 0 and N-1)ImgData
public int getCompWidth(int c)
c
- The index of the component, from 0 to N-1.public int getCompHeight(int c)
c
- The index of the component, from 0 to N-1.public int getCompImgWidth(int c)
c
- The index of the component, from 0 to N-1.public int getCompImgHeight(int n)
n
- The index of the component, from 0 to N-1.public int getNomRangeBits(int c)
c
- The index of the component.public int getFixedPoint(int c)
c
- The index of the component.public DataBlk getInternCompData(DataBlk blk, int c)
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 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.
blk
- 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.c
- The index of the component from which to get the data.getCompData(jj2000.j2k.image.DataBlk, int)
public DataBlk getCompData(DataBlk blk, int c)
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.
blk
- 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.c
- The index of the component from which to get the data.getInternCompData(jj2000.j2k.image.DataBlk, int)
public void setTile(int x, int y)
x
- The horizontal coordinate of the tile.y
- The vertical coordinate of the new tile.public void nextTile()
public Coord getTile(Coord co)
co
- If not null this object is used to return the information. If
null a new one is created and returned.public int getTileIdx()
public Coord getTileOff(Coord co, int c)
co
- If not null the object is used to return the values, if null
a new one is created and returned.c
- The index of the component (between 0 and N-1)public int getULX(int c)
c
- The index of the component (between 0 and N-1)public int getULY(int c)
c
- The index of the component (between 0 and N-1)public int getImgULX()
public int getImgULY()
public Coord getNumTiles(Coord co)
co
- If not null this object is used to return the information. If
null a new one is created and returned.public int getNumTiles()
public java.lang.String toString()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |