MrSID Decode SDK for Raster Reference Manual
9.5.4.4709
|
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_STATUS | calculateMask (LTIPixelFillMethod fillMethod, double mag, double fuzzyThreshold, bool blend, const LTIPixel *srcNodata, LTIMask &mask) const |
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 | |
LTISceneBuffer (const LTIPixel &pixelProps, lt_uint32 numCols, lt_uint32 numRows, void **bsqData, lt_uint32 totalNumCols=0) | |
constructor with default window | |
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 | |
LTISceneBuffer (const LTISceneBuffer &original, lt_uint32 colOffset, lt_uint32 rowOffset, lt_uint32 numCols, lt_uint32 numRows) | |
constructor to overlay existing LTISceneBuffer | |
LTISceneBuffer (const LTISceneBuffer &original, lt_uint32 colOffset, lt_uint32 rowOffset) | |
constructor to overlay existing LTISceneBuffer | |
Buffer property accessors | |
lt_int32 | getNumCols () const |
get width of buffer | |
lt_int32 | getNumRows () const |
get height of buffer | |
lt_int32 | getTotalNumCols () const |
get width of (entire) buffer | |
lt_int32 | getNumPixels () const |
get size of exposed window | |
const LTIPixel & | getPixelProps () const |
get pixel type of buffer | |
lt_uint16 | getNumBands () const |
get number of bands | |
lt_uint16 | getSourceBandIndex (lt_uint16 dstBand) const |
get width of buffer | |
int | getDestinationBandIndex (lt_uint16 srcBand) const |
get width of buffer | |
Data buffer accessors | |
void ** | getBSQData () const |
get pointer to data (for all bands) | |
void * | getBandData (lt_uint16 band) const |
get pointer to data (for 1 band) | |
void * | getSample (lt_uint32 x, lt_uint32 y, lt_uint16 band) const |
get pointer to sample | |
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 | |
LT_STATUS | importDataBand (lt_uint16 dstBand, const LTISceneBuffer &sourceData, lt_uint16 srcBand) |
import one band from another LTISceneBuffer | |
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. | |
LT_STATUS | importDataBSQ (void **data) |
import from memory (BSQ) | |
LT_STATUS | importDataBSQ (void *data) |
import from memory (BSQ) | |
LT_STATUS | importDataBIP (void *data) |
import from memory (BIP) | |
LT_STATUS | importDataBSQ (LTIOStreamInf &stream) |
import from stream (BSQ) | |
LT_STATUS | importDataBIP (LTIOStreamInf &stream) |
import from stream (BIP) | |
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) | |
LT_STATUS | exportDataBSQ (void *&data) const |
export to memory (BSQ) | |
LT_STATUS | exportDataBIP (void *&data) const |
export to memory (BIP) | |
LT_STATUS | exportDataBSQ (LTIOStreamInf &stream) const |
export to stream (BSQ) | |
LT_STATUS | exportDataBIP (LTIOStreamInf &stream) const |
export to stream (BIP) | |
LT_STATUS | exportData (void *data, lt_uint32 pixelBytes, lt_uint32 rowBytes, lt_uint32 bandBytes) const |
export to (arbitrary) memory | |
Static Public Member Functions | |
static lt_uint32 | addAlignment (lt_uint32 value, lt_uint32 byteAlignment) |
compute alignment constraint | |
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) |
static void | shiftNoDataValue (LTIPixelFillMethod fillMethod, double fuzzyThreshold, double mag, const LTIPixel &dstMin, const LTIPixel &dstMax, const LTIPixel &dstNoData, LTIPixel &shiftedValue) |
Public Attributes | |
lt_uint32 | y |
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 |
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 | ( | 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 |
static lt_uint32 LTISceneBuffer::addAlignment | ( | lt_uint32 | value, |
lt_uint32 | byteAlignment | ||
) | [static] |
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 |
LT_STATUS LTISceneBuffer::applyMask | ( | const LTIMask & | mask, |
const LTIPixel & | color | ||
) |
void LTISceneBuffer::applyMask | ( | const LTIMask & | mask, |
const LTIPixel & | color, | ||
lt_uint16 | band | ||
) |
static LT_STATUS LTISceneBuffer::buildMask | ( | LTIPixelFillMethod | fillMethod, |
double | mag, | ||
double | fuzzyThreshold, | ||
bool | blend, | ||
const LTISceneBuffer & | dstBuffer, | ||
const LTIPixel * | dstNodata, | ||
const LTISceneBuffer & | srcBuffer, | ||
const LTIPixel * | srcNodata, | ||
LTIMask & | binaryMask | ||
) | [static] |
void LTISceneBuffer::byteSwap | ( | ) |
LT_STATUS LTISceneBuffer::calculateMask | ( | LTIPixelFillMethod | fillMethod, |
double | mag, | ||
double | fuzzyThreshold, | ||
bool | blend, | ||
const LTIPixel * | srcNodata, | ||
LTIMask & | mask | ||
) | const |
LT_STATUS LTISceneBuffer::checkImpedance | ( | const LTIPixel & | p | ) | const [protected] |
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 |
LT_STATUS LTISceneBuffer::fill | ( | const LTIPixel & | color | ) |
void LTISceneBuffer::fill | ( | const LTIPixel & | color, |
lt_uint16 | band | ||
) |
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.
const LTIPixel& LTISceneBuffer::getPixelProps | ( | ) | const |
Returns the pixel type of the buffer.
void* LTISceneBuffer::getSample | ( | lt_uint32 | x, |
lt_uint32 | y, | ||
lt_uint16 | band | ||
) | const |
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 |
lt_uint16 LTISceneBuffer::getSourceBandIndex | ( | lt_uint16 | dstBand | ) | const |
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 |
LTISceneBuffer::LT_DEPRECATED | ( | getNumRows() | ) | const [inline] |
Definition at line 572 of file lti_sceneBuffer.h.
LTISceneBuffer::LT_DEPRECATED | ( | 0 | ) | const [inline] |
Definition at line 573 of file lti_sceneBuffer.h.
LTISceneBuffer::LT_DEPRECATED | ( | 0 | ) | const [inline] |
Definition at line 574 of file lti_sceneBuffer.h.
LTISceneBuffer::LT_DEPRECATED | ( | getNumCols() | ) | const [inline] |
Definition at line 575 of file lti_sceneBuffer.h.
LTISceneBuffer::LT_DEPRECATED | ( | getNumRows() | ) | const [inline] |
Definition at line 576 of file lti_sceneBuffer.h.
LTISceneBuffer::LT_DEPRECATED | ( | getNumPixels() | ) | const [inline] |
Definition at line 577 of file lti_sceneBuffer.h.
LTISceneBuffer::LT_DEPRECATED | ( | getNumPixels() | ) | const [inline] |
Definition at line 578 of file lti_sceneBuffer.h.
LTISceneBuffer::LT_DEPRECATED | ( | getBSQData() | ) | const [inline] |
Definition at line 579 of file lti_sceneBuffer.h.
LTISceneBuffer::LT_DEPRECATED | ( | getBandData(band) | ) | const [inline] |
Definition at line 580 of file lti_sceneBuffer.h.
LTISceneBuffer::LT_DEPRECATED | ( | getBSQData() | ) | const [inline] |
Definition at line 581 of file lti_sceneBuffer.h.
LTISceneBuffer::LT_DEPRECATED | ( | getBandData(band) | ) | const [inline] |
Definition at line 582 of file lti_sceneBuffer.h.
LTISceneBuffer::LT_DEPRECATED | ( | getSample(x, y, band) | ) |
LTISceneBuffer::LT_DEPRECATED | ( | getSample(x, y, band) | ) |
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 | ||
) |
static void LTISceneBuffer::shiftNoDataValue | ( | LTIPixelFillMethod | fillMethod, |
double | fuzzyThreshold, | ||
double | mag, | ||
const LTIPixel & | dstMin, | ||
const LTIPixel & | dstMax, | ||
const LTIPixel & | dstNoData, | ||
LTIPixel & | shiftedValue | ||
) | [static] |
void LTISceneBuffer::zero | ( | void | ) |
void LTISceneBuffer::zero | ( | lt_uint16 | band | ) |
const double LTISceneBuffer::DefaultFuzzyThreshold [static] |
Definition at line 61 of file lti_sceneBuffer.h.
Definition at line 583 of file lti_sceneBuffer.h.