MrSID Decode SDK for Raster Reference Manual
9.0.0.3864
|
class to hold data passed between image stages More...
#include <lti_sceneBuffer.h>
Public Member Functions | |
LT_STATUS | importData (const LTIMask *binaryMask, const LTISceneBuffer &sourceData, bool blend) |
LT_STATUS | importDataBand (lt_uint16 dstBand, const LTISceneBuffer &sourceData, lt_uint16 srcBand, const LTIMask *binaryMask) |
LT_STATUS | mergeData (LTIPixelFillMethod fillMethod, const LTISceneBuffer &srcBuf, const LTIPixel *srcNodata, const LTIPixel *dstNodata, LTIMaskSource *mask, LTIScene &scene, double fuzzyThreshold, bool blend) |
void | byteSwap () |
LT_STATUS | applyMask (const LTIMask &mask, const LTIPixel &color) |
void | applyMask (const LTIMask &mask, const LTIPixel &color, lt_uint16 band) |
LT_STATUS | fill (const LTIPixel &color) |
void | fill (const LTIPixel &color, lt_uint16 band) |
void | zero (void) |
void | zero (lt_uint16 band) |
LT_DEPRECATED (getNumRows()) lt_int32 getTotalNumRows() const | |
LT_DEPRECATED (0) lt_int32 getWindowColOffset() const | |
LT_DEPRECATED (0) lt_int32 getWindowRowOffset() const | |
LT_DEPRECATED (getNumCols()) lt_int32 getWindowNumCols() const | |
LT_DEPRECATED (getNumRows()) lt_int32 getWindowNumRows() const | |
LT_DEPRECATED (getNumPixels()) lt_int32 getTotalNumPixels() const | |
LT_DEPRECATED (getNumPixels()) lt_int32 getWindowNumPixels() const | |
LT_DEPRECATED (getBSQData()) void **getTotalBSQData() const | |
LT_DEPRECATED (getBandData(band)) void *getTotalBandData(lt_uint16 band) const | |
LT_DEPRECATED (getBSQData()) void **getWindowBSQData() const | |
LT_DEPRECATED (getBandData(band)) void *getWindowBandData(lt_uint16 band) const | |
LT_DEPRECATED (getSample(x, y, band)) void *getTotalSample(lt_uint32 x | |
LT_DEPRECATED (getSample(x, y, band)) void *getWindowSample(lt_uint32 x | |
LT_DEPRECATED ((x< getNumCols()&&y< getNumRows())) bool inWindow(lt_int32 x | |
Constructors and destructor | |
~LTISceneBuffer () | |
destructor More... | |
LTISceneBuffer (const LTIPixel &pixelProps, lt_uint32 numCols, lt_uint32 numRows, void **bsqData, lt_uint32 totalNumCols=0) | |
constructor with default window More... | |
LTISceneBuffer (const LTIPixel &pixelProps, lt_uint32 totalNumCols, lt_uint32 totalNumRows, lt_uint32 colOffset, lt_uint32 rowOffset, lt_uint32 numCols, lt_uint32 numRows, void **bsqData) | |
constructor with explicit window More... | |
LTISceneBuffer (const LTISceneBuffer &original, lt_uint32 colOffset, lt_uint32 rowOffset, lt_uint32 numCols, lt_uint32 numRows) | |
constructor to overlay existing LTISceneBuffer More... | |
LTISceneBuffer (const LTISceneBuffer &original, lt_uint32 colOffset, lt_uint32 rowOffset) | |
constructor to overlay existing LTISceneBuffer More... | |
Buffer property accessors | |
lt_int32 | getNumCols () const |
get width of buffer More... | |
lt_int32 | getNumRows () const |
get height of buffer More... | |
lt_int32 | getTotalNumCols () const |
get width of (entire) buffer More... | |
lt_int32 | getNumPixels () const |
get size of exposed window More... | |
const LTIPixel & | getPixelProps () const |
get pixel type of buffer More... | |
lt_uint16 | getNumBands () const |
get number of bands More... | |
lt_uint16 | getSourceBandIndex (lt_uint16 dstBand) const |
get width of buffer More... | |
int | getDestinationBandIndex (lt_uint16 srcBand) const |
get width of buffer More... | |
Data buffer accessors | |
void ** | getBSQData () const |
get pointer to data (for all bands) More... | |
void * | getBandData (lt_uint16 band) const |
get pointer to data (for 1 band) More... | |
void * | getSample (lt_uint32 x, lt_uint32 y, lt_uint16 band) const |
get pointer to sample More... | |
Import functions | |
These functions provide an easy way to copy data from a variety of layouts into an LTISceneBuffer object, in an efficient manner. The copying is performed relative to the exposed window of the buffer. | |
LT_STATUS | importData (const LTISceneBuffer &sourceData) |
import from another LTISceneBuffer More... | |
LT_STATUS | importDataBand (lt_uint16 dstBand, const LTISceneBuffer &sourceData, lt_uint16 srcBand) |
import one band from another LTISceneBuffer More... | |
LT_STATUS | mergeData (LTIPixelFillMethod fillMethod, const LTISceneBuffer &srcBuf, const LTIPixel *srcNodata, const LTIPixel *dstNodata, double mag, double fuzzyThreshold, bool blend) |
Merge pixels from another LTISceneBuffer, observing transparency. More... | |
LT_STATUS | importDataBSQ (void **data) |
import from memory (BSQ) More... | |
LT_STATUS | importDataBSQ (void *data) |
import from memory (BSQ) More... | |
LT_STATUS | importDataBIP (void *data) |
import from memory (BIP) More... | |
LT_STATUS | importDataBSQ (LTIOStreamInf &stream) |
import from stream (BSQ) More... | |
LT_STATUS | importDataBIP (LTIOStreamInf &stream) |
import from stream (BIP) More... | |
Export functions | |
These functions provide an easy way to copy data from an LTISceneBuffer object to a variety of layouts, in an efficient manner. The copying is performed relative to the exposed window of the buffer. | |
LT_STATUS | exportDataBSQ (void **&data) const |
export to memory (BSQ) More... | |
LT_STATUS | exportDataBSQ (void *&data) const |
export to memory (BSQ) More... | |
LT_STATUS | exportDataBIP (void *&data) const |
export to memory (BIP) More... | |
LT_STATUS | exportDataBSQ (LTIOStreamInf &stream) const |
export to stream (BSQ) More... | |
LT_STATUS | exportDataBIP (LTIOStreamInf &stream) const |
export to stream (BIP) More... | |
LT_STATUS | exportData (void *data, lt_uint32 pixelBytes, lt_uint32 rowBytes, lt_uint32 bandBytes) const |
export to (arbitrary) memory More... | |
Static Public Member Functions | |
static lt_uint32 | addAlignment (lt_uint32 value, lt_uint32 byteAlignment) |
compute alignment constraint More... | |
static LT_STATUS | buildMask (LTIPixelFillMethod fillMethod, double mag, double fuzzyThreshold, bool blend, const LTISceneBuffer &dstBuffer, const LTIPixel *dstNodata, const LTISceneBuffer &srcBuffer, const LTIPixel *srcNodata, LTIMask &binaryMask) |
Public Attributes | |
lt_uint32 | y |
lt_uint32 lt_uint16 band | const { return getSample(x, y, band) |
lt_int32 y | const { return (x < getNumCols() && y < getNumRows()) |
Static Public Attributes | |
static const double | DefaultFuzzyThreshold |
Protected Member Functions | |
LT_STATUS | checkImpedance (const LTIPixel &p) const |
verify that a buffer with the given pixel props could be imported More... | |
This class holds a buffer of data which is used as the target of decode operations in LTIImageStage.
The data within the buffer is always represented as an array of bytes in BSQ (band-sequential) format. Each band is stored separately, so that the underlying data is an array of N pointers, each array element being a buffer for one band of the image.
The dimensions of the buffer are set in the constructor. The total number of rows and columns represents the actual extent of the data array in memory. However, it is often desirable to only expose a subset of the full rectangle, e.g. to access a large buffer in a stripwise fashion or to overlay a small image into a large buffer. This window may also be set via the constructor, by providing a second set of row/column dimensions and giving an offset for the upper-left position of the window.
If the data pointer passed to the constructor is NULL, the class will internally allocate the required memory (and retain ownership of it).
Functions are provided to access that data within the buffer in a variety of ways, relative to both the total buffer and the exposed window within it. You may also construct a buffer which is relative to another buffer.
For convenience, a number of functions are also provided which allow the user to copy data to and from an LTISceneBuffer object, using a variety of formats. For example, there are functions to import and export the data in the buffer to BIP (band-interleaved) format.
Definition at line 57 of file lti_sceneBuffer.h.
LTISceneBuffer::~LTISceneBuffer | ( | ) |
LTISceneBuffer::LTISceneBuffer | ( | const LTIPixel & | pixelProps, |
lt_uint32 | numCols, | ||
lt_uint32 | numRows, | ||
void ** | bsqData, | ||
lt_uint32 | totalNumCols = 0 |
||
) |
Constructs an LTISceneBuffer with the window set to the total region of the buffer.
The data
parameter may be NULL, in which case the memory will be allocated internally.
pixelProps | pixel type to be used in the buffer |
numCols | width of the buffer |
numRows | height of the buffer |
bsqData | pointer to the data array (may be NULL) |
totalNumCols | rowBytes = sizeof(datatype) * totalNumCols |
LTISceneBuffer::LTISceneBuffer | ( | const LTIPixel & | pixelProps, |
lt_uint32 | totalNumCols, | ||
lt_uint32 | totalNumRows, | ||
lt_uint32 | colOffset, | ||
lt_uint32 | rowOffset, | ||
lt_uint32 | numCols, | ||
lt_uint32 | numRows, | ||
void ** | bsqData | ||
) |
Constructs an LTISceneBuffer with the window set to the given size and positioned at the given offset. The offset is given relative to the total region, and the window must lie entirely within the region.
The data
parameter may be NULL, in which case the memory will be allocated internally.
pixelProps | pixel type to be used in the buffer |
totalNumCols | width of the buffer |
totalNumRows | height of the buffer |
colOffset | x-position of the window |
rowOffset | y-position of the window |
windowNumCols | width of the window |
windowNumRows | height of the window |
data | pointer to the data array (may be NULL) |
LTISceneBuffer::LTISceneBuffer | ( | const LTISceneBuffer & | original, |
lt_uint32 | colOffset, | ||
lt_uint32 | rowOffset, | ||
lt_uint32 | numCols, | ||
lt_uint32 | numRows | ||
) |
Constructs an LTISceneBuffer which is a window into the given existing LTISceneBuffer object. The window of the new buffer is set to start at the given offset (which is relative to the window of the original buffer). The dimensions of the new window are passed in, and the new window must not extend beyond the dimensions of the original buffer.
original | the existing buffer, to be overlaid |
colOffset | x-position of the new window |
rowOffset | y-position of the new window |
windowNumCols | width of the window |
windowNumRows | height of the window |
LTISceneBuffer::LTISceneBuffer | ( | const LTISceneBuffer & | original, |
lt_uint32 | colOffset, | ||
lt_uint32 | rowOffset | ||
) |
Constructs an LTISceneBuffer which is a window into the given existing LTISceneBuffer object. The window of the new buffer is set to cover the full window of the original buffer, starting at the given offset (which is relative to the window of the original buffer).
original | the existing buffer, to be overlaid |
colOffset | x-position of the new window |
rowOffset | y-position of the new window |
This utility function returns a value which is equal to or greater than the given value, when aligned to the given constraint. This is useful for determining proper row widths for certain applications.
For example, given the value 99 and an alignment of 4, the function will return 100. Given a value of 128 and an alignment of 8, the function will return 128.
value | the nominal buffer width |
byteAlignment | the alignment required |
|
static |
void LTISceneBuffer::byteSwap | ( | ) |
LT_STATUS LTISceneBuffer::exportData | ( | void * | data, |
lt_uint32 | pixelBytes, | ||
lt_uint32 | rowBytes, | ||
lt_uint32 | bandBytes | ||
) | const |
This function copies data to a buffer. The layout of the destination is determined by the input parameters.
For example, assuming RGB/uint8 data and WxH pixels:
data | the destination buffer (may not be NULL) |
pixelBytes | width of pixel, in bytes (e.g. distance from "red" to "red") |
rowBytes | width of buffer, in bytes |
bandBytes | distance from sample to the next, in bytes (e.g. distance from "red" to "blue") |
LT_STATUS LTISceneBuffer::exportDataBIP | ( | void *& | data) | const |
This function copies data to a buffer in memory. The destination pointer is assumed to be organized as one large buffer in BIP format.
If the data
parameter is NULL, the function will allocate it (but not retain ownership). In this case it is the caller's responsibility to deallocate the buffer using the delete[] operator.
data | the destination data (may be NULL) [in/out] |
LT_STATUS LTISceneBuffer::exportDataBIP | ( | LTIOStreamInf & | stream) | const |
This function copies data to a stream. The destination is organized as one large buffer in BIP format.
stream | the destination stream |
LT_STATUS LTISceneBuffer::exportDataBSQ | ( | void **& | data) | const |
This function copies data to a buffer in memory. The destination pointer is assumed to be organized as an array of pointers to BSQ buffers, one per band.
If the data
parameter is NULL, the function will allocate it (but not retain ownership). In this case it is the caller's responsibility to deallocate each band using the delete[] operator.
data | the destination data (may be NULL) [in/out] |
LT_STATUS LTISceneBuffer::exportDataBSQ | ( | void *& | data) | const |
This function copies data to a buffer in memory. The destination pointer is assumed to be organized as one large buffer in BSQ format.
If the data
parameter is NULL, the function will allocate it (but not retain ownership). In this case it is the caller's responsibility to deallocate the buffer using the delete[] operator.
data | the destination data (may be NULL) [in/out] |
LT_STATUS LTISceneBuffer::exportDataBSQ | ( | LTIOStreamInf & | stream) | const |
This function copies data to a stream. The destination is organized as one large buffer in BSQ format.
stream | the destination stream |
void* LTISceneBuffer::getBandData | ( | lt_uint16 | band) | const |
This function returns a pointer to the data buffer for the given band.
band | the band to access |
void** LTISceneBuffer::getBSQData | ( | ) | const |
This function returns a pointer to the array of data buffers, one per band.
int LTISceneBuffer::getDestinationBandIndex | ( | lt_uint16 | srcBand) | const |
Returns the width of the buffer.
lt_uint16 LTISceneBuffer::getNumBands | ( | ) | const |
Returns the number of bands of the pixel of the imager.
This is the same as calling getPixelProps().getNumBands().
lt_int32 LTISceneBuffer::getNumCols | ( | ) | const |
Returns the width of the buffer.
lt_int32 LTISceneBuffer::getNumPixels | ( | ) | const |
Returns the total size of the window of the buffer, in pixels.
This is equal to getNumCols() * getNumRows().
lt_int32 LTISceneBuffer::getNumRows | ( | ) | const |
Returns the height of the buffer.
Returns the pixel type of the buffer.
This function returns a pointer to the data for the given band of the specified pixel.
x | the x-position of the pixel |
y | the y-position of the pixel |
band | the band to access |
Returns the width of the buffer.
lt_int32 LTISceneBuffer::getTotalNumCols | ( | ) | const |
Returns the total width of the buffer. RowBytes equals TotalNumCols * sizeof(DataType).
LT_STATUS LTISceneBuffer::importData | ( | const LTISceneBuffer & | sourceData) |
This function copies data from one source LTISceneBuffer object into another destination LTISceneBuffer object.
sourceData | the data to be imported |
LT_STATUS LTISceneBuffer::importData | ( | const LTIMask * | binaryMask, |
const LTISceneBuffer & | sourceData, | ||
bool | blend | ||
) |
LT_STATUS LTISceneBuffer::importDataBand | ( | lt_uint16 | dstBand, |
const LTISceneBuffer & | sourceData, | ||
lt_uint16 | srcBand | ||
) |
This function copies just one band of data from one source LTISceneBuffer object into another destination LTISceneBuffer object.
dstBand | the band number of this buffer to be written to |
sourceData | the data to be imported |
srcBand | the band number of sourceData to be read from |
LT_STATUS LTISceneBuffer::importDataBand | ( | lt_uint16 | dstBand, |
const LTISceneBuffer & | sourceData, | ||
lt_uint16 | srcBand, | ||
const LTIMask * | binaryMask | ||
) |
LT_STATUS LTISceneBuffer::importDataBIP | ( | void * | data) |
This function copies data from a buffer in memory. The source pointer is assumed to be organized as one large buffer in BIP format.
data | the source data |
LT_STATUS LTISceneBuffer::importDataBIP | ( | LTIOStreamInf & | stream) |
This function copies data from a buffer contained in the given stream. The data is assumed to be organized as one large buffer in BIP format.
stream | the source data |
LT_STATUS LTISceneBuffer::importDataBSQ | ( | void ** | data) |
This function copies data from a buffer in memory. The source pointer is assumed to be organized as an array of pointers to BSQ buffers, one per band.
data | the source data |
LT_STATUS LTISceneBuffer::importDataBSQ | ( | void * | data) |
This function copies data from a buffer in memory. The source pointer is assumed to be organized as one large buffer in BSQ format.
data | the source data |
LT_STATUS LTISceneBuffer::importDataBSQ | ( | LTIOStreamInf & | stream) |
This function copies data from a buffer contained in the given stream. The data is assumed to be organized as one large buffer in BSQ format.
stream | the source data |
|
inline |
Definition at line 557 of file lti_sceneBuffer.h.
|
inline |
Definition at line 558 of file lti_sceneBuffer.h.
|
inline |
Definition at line 559 of file lti_sceneBuffer.h.
|
inline |
Definition at line 560 of file lti_sceneBuffer.h.
|
inline |
Definition at line 561 of file lti_sceneBuffer.h.
|
inline |
Definition at line 562 of file lti_sceneBuffer.h.
|
inline |
Definition at line 563 of file lti_sceneBuffer.h.
|
inline |
Definition at line 564 of file lti_sceneBuffer.h.
|
inline |
Definition at line 565 of file lti_sceneBuffer.h.
|
inline |
Definition at line 566 of file lti_sceneBuffer.h.
|
inline |
Definition at line 567 of file lti_sceneBuffer.h.
LTISceneBuffer::LT_DEPRECATED | ( | (x< getNumCols()&&y< getNumRows()) | ) |
LT_STATUS LTISceneBuffer::mergeData | ( | LTIPixelFillMethod | fillMethod, |
const LTISceneBuffer & | srcBuf, | ||
const LTIPixel * | srcNodata, | ||
const LTIPixel * | dstNodata, | ||
double | mag, | ||
double | fuzzyThreshold, | ||
bool | blend | ||
) |
This function copies pixel data from one LTISceneBuffer into another, observing pixel transparency and possibly applying heuristics to help achieve a good mosaicking result. The source and destination nodata values, as well as any available alpha channel, will be used together to determine pixel transparency.
fillMethod | specifies the heuristic to use in merging the data |
srcBuf | the buffer containing data to be imported |
srcNodata | transparency sentinel pixel for the source buffer (may be NULL) |
dstNodata | transparency sentinel pixel for the destination buffer (may be NULL) |
mag | scene magnification, used in merging heuristics |
fuzzyThreshold | the threshold used when doing fuzzy no-data merging |
blend | in presence of alpha channel, use alpha blending |
LT_STATUS LTISceneBuffer::mergeData | ( | LTIPixelFillMethod | fillMethod, |
const LTISceneBuffer & | srcBuf, | ||
const LTIPixel * | srcNodata, | ||
const LTIPixel * | dstNodata, | ||
LTIMaskSource * | mask, | ||
LTIScene & | scene, | ||
double | fuzzyThreshold, | ||
bool | blend | ||
) |
void LTISceneBuffer::zero | ( | void | ) |
void LTISceneBuffer::zero | ( | lt_uint16 | band) |
Definition at line 568 of file lti_sceneBuffer.h.
lt_int32 y LTISceneBuffer::const { return (x < getNumCols() && y < getNumRows()) |
Definition at line 570 of file lti_sceneBuffer.h.
|
static |
Definition at line 61 of file lti_sceneBuffer.h.
lt_uint32 LTISceneBuffer::y |
Definition at line 568 of file lti_sceneBuffer.h.
LizardTech |