C# Класс CSJ2K.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.

Наследование: BlkImgDataSrc
Показать файл Открыть проект Примеры использования класса

Открытые методы

Метод Описание
ImgDataJoiner ( IList imD, IList cIdx ) : System.Collections.Generic

Class constructor. Each input BlkImgDataSrc and its component index must appear in the order wanted for the output components.
Example: Reading R,G,B components from 3 PGM files.
BlkImgDataSrc[] idList =
{
new ImgReaderPGM(new BEBufferedRandomAccessFile("R.pgm", "r")),
new ImgReaderPGM(new BEBufferedRandomAccessFile("G.pgm", "r")),
new ImgReaderPGM(new BEBufferedRandomAccessFile("B.pgm", "r"))
};
int[] compIdx = {0,0,0};
ImgDataJoiner idj = new ImgDataJoiner(idList, compIdx);

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.

ToString ( ) : System.String

Returns a string of information about the object, more than 1 line long. The information string includes information from the several input ImgData (their toString() method are called one after the other).

close ( ) : void

Closes the underlying file or network connection from where the image data is being read.

getCompData ( CSJ2K.j2k.image.DataBlk blk, int c ) : CSJ2K.j2k.image.DataBlk

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.

getCompImgHeight ( int n ) : int

Returns the height in pixels of the specified component in the overall image.

getCompImgWidth ( int c ) : int

Returns the width in pixels of the specified component in the overall image.

getCompSubsX ( int c ) : int

Returns the component subsampling factor in the horizontal direction, for the specified component. This is, approximately, the ratio of dimensions between the reference grid and the component itself, see the 'ImgData' interface desription for details.

getCompSubsY ( int c ) : int

Returns the component subsampling factor in the vertical direction, for the specified component. This is, approximately, the ratio of dimensions between the reference grid and the component itself, see the 'ImgData' interface desription for details.

getCompULX ( int c ) : int

Returns the horizontal coordinate of the upper-left corner of the specified component in the current tile.

getCompULY ( int c ) : int

Returns the vertical coordinate of the upper-left corner of the specified component in the current tile.

getFixedPoint ( int c ) : int

Returns the position of the fixed point in the specified component. This is the position of the least significant integral (i.e. non-fractional) bit, which is equivalent to the number of fractional bits. For instance, for fixed-point values with 2 fractional bits, 2 is returned. For floating-point data this value does not apply and 0 should be returned. Position 0 is the position of the least significant bit in the data.

getInternCompData ( CSJ2K.j2k.image.DataBlk blk, int c ) : CSJ2K.j2k.image.DataBlk

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 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.

getNomRangeBits ( int c ) : int

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.

getNumTiles ( CSJ2K.j2k.image.Coord co ) : CSJ2K.j2k.image.Coord

Returns the number of tiles in the horizontal and vertical directions. This default implementation assumes no tiling, so (1,1) is always returned.

getNumTiles ( ) : int

Returns the total number of tiles in the image. This default implementation assumes no tiling, so 1 is always returned.

getTile ( CSJ2K.j2k.image.Coord co ) : CSJ2K.j2k.image.Coord

Returns the coordinates of the current tile. This default implementation assumes no-tiling, so (0,0) is returned.

getTileCompHeight ( int t, int c ) : int

Returns the height in pixels of the specified tile-component.

getTileCompWidth ( int t, int c ) : int

Returns the width in pixels of the specified tile-component

isOrigSigned ( int c ) : bool

Returns true if the data read was originally signed in the specified component, false if not.

nextTile ( ) : void

Advances to the next tile, in standard scan-line order (by rows then columns). A NoNextElementException is thrown if the current tile is the last one (i.e. there is no next tile). This default implementation assumes no tiling, so NoNextElementException() is always thrown.

setTile ( int x, int y ) : void

Changes the current tile, given the new coordinates. An IllegalArgumentException is thrown if the coordinates do not correspond to a valid tile.

Описание методов

ImgDataJoiner() публичный Метод

Class constructor. Each input BlkImgDataSrc and its component index must appear in the order wanted for the output components.
Example: Reading R,G,B components from 3 PGM files.
BlkImgDataSrc[] idList =
{
new ImgReaderPGM(new BEBufferedRandomAccessFile("R.pgm", "r")),
new ImgReaderPGM(new BEBufferedRandomAccessFile("G.pgm", "r")),
new ImgReaderPGM(new BEBufferedRandomAccessFile("B.pgm", "r"))
};
int[] compIdx = {0,0,0};
ImgDataJoiner idj = new ImgDataJoiner(idList, compIdx);

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.

public ImgDataJoiner ( IList imD, IList cIdx ) : System.Collections.Generic
imD IList The list of input BlkImgDataSrc in an array. /// ///
cIdx IList The component index associated with each ImgData. /// ///
Результат System.Collections.Generic

ToString() публичный Метод

Returns a string of information about the object, more than 1 line long. The information string includes information from the several input ImgData (their toString() method are called one after the other).
public ToString ( ) : System.String
Результат System.String

close() публичный Метод

Closes the underlying file or network connection from where the image data is being read.
If an I/O error occurs. ///
public close ( ) : void
Результат void

getCompData() публичный Метод

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.

public getCompData ( CSJ2K.j2k.image.DataBlk blk, int c ) : CSJ2K.j2k.image.DataBlk
blk CSJ2K.j2k.image.DataBlk 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 int The index of the component from which to get the data. /// ///
Результат CSJ2K.j2k.image.DataBlk

getCompImgHeight() публичный Метод

Returns the height in pixels of the specified component in the overall image.
public getCompImgHeight ( int n ) : int
n int The index of the component, from 0 to N-1. /// ///
Результат int

getCompImgWidth() публичный Метод

Returns the width in pixels of the specified component in the overall image.
public getCompImgWidth ( int c ) : int
c int The index of the component, from 0 to N-1. /// ///
Результат int

getCompSubsX() публичный Метод

Returns the component subsampling factor in the horizontal direction, for the specified component. This is, approximately, the ratio of dimensions between the reference grid and the component itself, see the 'ImgData' interface desription for details.
public getCompSubsX ( int c ) : int
c int The index of the component (between 0 and N-1) /// ///
Результат int

getCompSubsY() публичный Метод

Returns the component subsampling factor in the vertical direction, for the specified component. This is, approximately, the ratio of dimensions between the reference grid and the component itself, see the 'ImgData' interface desription for details.
public getCompSubsY ( int c ) : int
c int The index of the component (between 0 and N-1) /// ///
Результат int

getCompULX() публичный Метод

Returns the horizontal coordinate of the upper-left corner of the specified component in the current tile.
public getCompULX ( int c ) : int
c int The component index. /// ///
Результат int

getCompULY() публичный Метод

Returns the vertical coordinate of the upper-left corner of the specified component in the current tile.
public getCompULY ( int c ) : int
c int The component index. /// ///
Результат int

getFixedPoint() публичный Метод

Returns the position of the fixed point in the specified component. This is the position of the least significant integral (i.e. non-fractional) bit, which is equivalent to the number of fractional bits. For instance, for fixed-point values with 2 fractional bits, 2 is returned. For floating-point data this value does not apply and 0 should be returned. Position 0 is the position of the least significant bit in the data.
public getFixedPoint ( int c ) : int
c int The index of the component. /// ///
Результат int

getInternCompData() публичный Метод

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 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.

public getInternCompData ( CSJ2K.j2k.image.DataBlk blk, int c ) : CSJ2K.j2k.image.DataBlk
blk CSJ2K.j2k.image.DataBlk 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 int The index of the component from which to get the data. /// ///
Результат CSJ2K.j2k.image.DataBlk

getNomRangeBits() публичный Метод

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.
public getNomRangeBits ( int c ) : int
c int The index of the component. /// ///
Результат int

getNumTiles() публичный Метод

Returns the number of tiles in the horizontal and vertical directions. This default implementation assumes no tiling, so (1,1) is always returned.
public getNumTiles ( CSJ2K.j2k.image.Coord co ) : CSJ2K.j2k.image.Coord
co CSJ2K.j2k.image.Coord If not null this object is used to return the information. If /// null a new one is created and returned. /// ///
Результат CSJ2K.j2k.image.Coord

getNumTiles() публичный Метод

Returns the total number of tiles in the image. This default implementation assumes no tiling, so 1 is always returned.
public getNumTiles ( ) : int
Результат int

getTile() публичный Метод

Returns the coordinates of the current tile. This default implementation assumes no-tiling, so (0,0) is returned.
public getTile ( CSJ2K.j2k.image.Coord co ) : CSJ2K.j2k.image.Coord
co CSJ2K.j2k.image.Coord If not null this object is used to return the information. If /// null a new one is created and returned. /// ///
Результат CSJ2K.j2k.image.Coord

getTileCompHeight() публичный Метод

Returns the height in pixels of the specified tile-component.
public getTileCompHeight ( int t, int c ) : int
t int The tile index. /// ///
c int The index of the component, from 0 to N-1. /// ///
Результат int

getTileCompWidth() публичный Метод

Returns the width in pixels of the specified tile-component
public getTileCompWidth ( int t, int c ) : int
t int Tile index /// ///
c int The index of the component, from 0 to N-1. /// ///
Результат int

isOrigSigned() публичный Метод

Returns true if the data read was originally signed in the specified component, false if not.
public isOrigSigned ( int c ) : bool
c int The index of the component, from 0 to C-1. /// ///
Результат bool

nextTile() публичный Метод

Advances to the next tile, in standard scan-line order (by rows then columns). A NoNextElementException is thrown if the current tile is the last one (i.e. there is no next tile). This default implementation assumes no tiling, so NoNextElementException() is always thrown.
public nextTile ( ) : void
Результат void

setTile() публичный Метод

Changes the current tile, given the new coordinates. An IllegalArgumentException is thrown if the coordinates do not correspond to a valid tile.
public setTile ( int x, int y ) : void
x int The horizontal coordinate of the tile. /// ///
y int The vertical coordinate of the new tile. /// ///
Результат void