本文整理汇总了C++中RasterElement::getRawData方法的典型用法代码示例。如果您正苦于以下问题:C++ RasterElement::getRawData方法的具体用法?C++ RasterElement::getRawData怎么用?C++ RasterElement::getRawData使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类RasterElement
的用法示例。
在下文中一共展示了RasterElement::getRawData方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: copyDataToRasterElement
int copyDataToRasterElement(DataElement* pElement, DataPointerArgs* pArgs, void* pData)
{
RasterElement* pRaster = dynamic_cast<RasterElement*>(pElement);
if (pRaster == NULL || pData == NULL)
{
setLastError(SIMPLE_BAD_PARAMS);
return 1;
}
const RasterDataDescriptor* pDesc = static_cast<const RasterDataDescriptor*>(pRaster->getDataDescriptor());
void* pRawData = pRaster->getRawData();
if (pArgs == NULL && pRawData != NULL)
{
size_t len = pDesc->getRowCount() * pDesc->getColumnCount() * pDesc->getBandCount()
* pDesc->getBytesPerElement();
memcpy(pRawData, pData, len);
setLastError(SIMPLE_NO_ERROR);
return 0;
}
DataPointerArgs args = {
0, pDesc->getRowCount() - 1,
0, pDesc->getColumnCount() - 1,
0, pDesc->getBandCount() - 1,
0 };
switch (pDesc->getInterleaveFormat())
{
case BSQ:
args.interleaveFormat = 0;
break;
case BIP:
args.interleaveFormat = 1;
break;
case BIL:
args.interleaveFormat = 2;
break;
}
if (pArgs == NULL)
{
pArgs = &args;
}
bool success = true;
switchOnComplexEncoding(pDesc->getDataType(), copySubcube, pData, pRaster,
pArgs->rowStart, pArgs->rowEnd,
pArgs->columnStart, pArgs->columnEnd,
pArgs->bandStart, pArgs->bandEnd, true, success);
if (!success)
{
setLastError(SIMPLE_OTHER_FAILURE);
return 1;
}
setLastError(SIMPLE_NO_ERROR);
return 0;
}
示例2: draw
void PseudocolorLayerImp::draw()
{
RasterElement* pRasterElement = dynamic_cast<RasterElement*>(getDataElement());
if (pRasterElement != NULL)
{
if (canRenderAsImage())
{
generateImage();
VERIFYNRV(mpImage != NULL);
mpImage->draw(GL_NEAREST);
}
else
{
DataAccessor accessor(NULL, NULL);
bool usingRawData = false;
int columns = 0;
int rows = 0;
EncodingType eType;
void* pData = NULL;
const RasterDataDescriptor* pDescriptor =
dynamic_cast<const RasterDataDescriptor*>(pRasterElement->getDataDescriptor());
if (pDescriptor != NULL)
{
columns = static_cast<int>(pDescriptor->getColumnCount());
rows = static_cast<int>(pDescriptor->getRowCount());
eType = pDescriptor->getDataType();
}
// There is an optimization when the full scene can be processed at once.
// Check for if it can be done
if (pDescriptor->getBandCount() == 1 || pDescriptor->getInterleaveFormat() == BSQ)
{
usingRawData = true;
pData = pRasterElement->getRawData();
}
if (pData == NULL)
{
FactoryResource<DataRequest> pRequest;
pRequest->setInterleaveFormat(BSQ);
accessor = pRasterElement->getDataAccessor(pRequest.release());
}
SymbolType eSymbol = getSymbol();
int visStartColumn = 0;
int visEndColumn = columns - 1;
int visStartRow = 0;
int visEndRow = rows - 1;
DrawUtil::restrictToViewport(visStartColumn, visStartRow, visEndColumn, visEndRow);
QMap<int, PseudocolorClass*>::Iterator iter = mClasses.begin();
while (iter != mClasses.end())
{
PseudocolorClass* pClass = iter.value();
if (pClass != NULL)
{
if (pClass->isDisplayed())
{
QColor clrMarker = pClass->getColor();
if (usingRawData) // all data in memory
{
switchOnEncoding(eType, drawPseudocolorMarkers, pData, columns - 1, rows - 1, visStartColumn,
visStartRow, visEndColumn, visEndRow, eSymbol, clrMarker, pClass->getValue());
}
else
{
for (int row = 0; row < rows; ++row)
{
if (!accessor.isValid())
{
break;
}
pData = accessor->getColumn();
switchOnEncoding(eType, drawPseudocolorMarkers, pData, columns - 1, row, visStartColumn,
row, visEndColumn, row, eSymbol, clrMarker, pClass->getValue(), row);
accessor->nextRow();
}
accessor->toPixel(0, 0);
}
}
}
iter++;
}
}
}
}
示例3: createDataPointer
void* createDataPointer(DataElement* pElement, DataPointerArgs* pArgs, int* pOwn)
{
RasterElement* pRaster = dynamic_cast<RasterElement*>(pElement);
if (pRaster == NULL || pOwn == NULL)
{
setLastError(SIMPLE_BAD_PARAMS);
return NULL;
}
void* pRawData = pRaster->getRawData();
if (pArgs == NULL && pRawData != NULL)
{
*pOwn = 0;
setLastError(SIMPLE_NO_ERROR);
return pRawData;
}
*pOwn = 1;
const RasterDataDescriptor* pDesc = static_cast<const RasterDataDescriptor*>(pRaster->getDataDescriptor());
DataPointerArgs args = {
0, pDesc->getRowCount() - 1,
0, pDesc->getColumnCount() - 1,
0, pDesc->getBandCount() - 1,
0 };
switch (pDesc->getInterleaveFormat())
{
case BSQ:
args.interleaveFormat = 0;
break;
case BIP:
args.interleaveFormat = 1;
break;
case BIL:
args.interleaveFormat = 2;
break;
}
if (pArgs == NULL)
{
pArgs = &args;
}
unsigned int rowCount = pArgs->rowEnd - pArgs->rowStart + 1;
unsigned int columnCount = pArgs->columnEnd - pArgs->columnStart + 1;
unsigned int bandCount = pArgs->bandEnd - pArgs->bandStart + 1;
pRawData = new (std::nothrow) char[rowCount * columnCount * bandCount * pDesc->getBytesPerElement()];
if (pRawData == NULL)
{
setLastError(SIMPLE_NO_MEM);
return NULL;
}
bool success = true;
switchOnComplexEncoding(pDesc->getDataType(), copySubcube, pRawData, pRaster,
pArgs->rowStart, pArgs->rowEnd,
pArgs->columnStart, pArgs->columnEnd,
pArgs->bandStart, pArgs->bandEnd, false, success);
if (!success)
{
delete [] pRawData;
setLastError(SIMPLE_OTHER_FAILURE);
return NULL;
}
setLastError(SIMPLE_NO_ERROR);
return pRawData;
}
示例4: execute
bool NefImporter::execute(PlugInArgList* pInArgList, PlugInArgList* pOutArgList)
{
if (pInArgList == NULL || pOutArgList == NULL)
{
return false;
}
//setting up mpRasterElement
parseInputArgList(pInArgList);
RasterElement* pRaster = getRasterElement();
VERIFY(pRaster != NULL);
RasterDataDescriptor *pDescriptor = dynamic_cast<RasterDataDescriptor*>(pRaster->getDataDescriptor());
VERIFY(pDescriptor != NULL);
FileDescriptor *pFileDescriptor = pDescriptor->getFileDescriptor();
VERIFY(pFileDescriptor != NULL);
//data accessor
//RED
DimensionDescriptor firstBand = pDescriptor->getActiveBand(0);
FactoryResource<DataRequest> pRequest;
pRequest->setInterleaveFormat(BSQ);
pRequest->setBands(firstBand, firstBand);
pRequest->setWritable(true);
DataAccessor firstBandDa = pRaster->getDataAccessor(pRequest.release());
//GREEN
DimensionDescriptor secondBand = pDescriptor->getActiveBand(1);
FactoryResource<DataRequest> qRequest;
qRequest->setInterleaveFormat(BSQ);
qRequest->setBands(secondBand, secondBand);
qRequest->setWritable(true);
DataAccessor secondBandDa = pRaster->getDataAccessor(qRequest.release());
//BLUE
DimensionDescriptor thirdBand = pDescriptor->getActiveBand(2);
FactoryResource<DataRequest> rRequest;
rRequest->setInterleaveFormat(BSQ);
rRequest->setBands(thirdBand, thirdBand);
rRequest->setWritable(true);
DataAccessor thirdBandDa = pRaster->getDataAccessor(rRequest.release());
std::string filename = pRaster->getFilename();
Progress *pProgress = getProgress();
FactoryResource<Filename> pFilename;
pFilename->setFullPathAndName(filename);
LibRaw RawProcessor;
putenv ((char*)"TZ=UTC");
#define P1 RawProcessor.imgdata.idata
#define S RawProcessor.imgdata.sizes
#define C RawProcessor.imgdata.color
#define T RawProcessor.imgdata.thumbnail
#define P2 RawProcessor.imgdata.other
#define OUT RawProcessor.imgdata.params
const char *fname=filename.c_str();
RawProcessor.open_file(fname);
// Let us unpack the image
if (RawProcessor.unpack() != LIBRAW_SUCCESS)
{
return false;
}
/*
unsigned int *r=NULL;
unsigned int *g=NULL;
unsigned int *b=NULL;
unsigned int *h=NULL;
*/
unsigned int *zero=0;
int row=0,col=0,r=0,c=0;
/*
r=(unsigned int*)(&RawProcessor.imgdata.image[i][0]);
g=(unsigned int*)(&RawProcessor.imgdata.image[i][1]);
b=(unsigned int*)(&RawProcessor.imgdata.image[i][2]);
h=(unsigned int*)(&RawProcessor.imgdata.image[i][3]);
*/
//secondBandDa->toPixel(row,col);
//thirdBandDa->toPixel(row,col);
unsigned short *pData=reinterpret_cast<unsigned short*>(pRaster->getRawData());
if (pData == NULL)
{
return NULL;
}
memcpy(pData, RawProcessor.imgdata.rawdata.raw_image, sizeof(unsigned short) * RawProcessor.imgdata.sizes.raw_height * RawProcessor.imgdata.sizes.raw_width);
//.........这里部分代码省略.........