Alien-FreeImage
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
src/Source/OpenEXR/IlmImf/ImfDeepTiledOutputFile.cpp view on Meta::CPAN
THROW (IEX_NAMESPACE::ArgExc, "Quick pixel copy from image "
"file \"" << in.fileName() << "\" to image "
"file \"" << fileName() << "\" "
"failed. The files have different channel "
"lists.");
// Verify that no pixel data have been written to this file yet.
//
if (!_data->tileOffsets.isEmpty())
THROW (IEX_NAMESPACE::LogicExc, "Quick pixel copy from image "
"file \"" << in.fileName() << "\" to image "
"file \"" << _data->_streamData->os->fileName() << "\" "
"failed. \"" << fileName() << "\" "
"already contains pixel data.");
int numAllTiles = in.totalTiles();
Lock lock (*_data->_streamData);
//
// special handling for random tiles
//
vector<int> dx_list(_data->lineOrder==RANDOM_Y ? numAllTiles : 1);
vector<int> dy_list(_data->lineOrder==RANDOM_Y ? numAllTiles : 1);
vector<int> lx_list(_data->lineOrder==RANDOM_Y ? numAllTiles : 1);
vector<int> ly_list(_data->lineOrder==RANDOM_Y ? numAllTiles : 1);
if(_data->lineOrder==RANDOM_Y)
{
in.getTileOrder(&dx_list[0],&dy_list[0],&lx_list[0],&ly_list[0]);
_data->nextTileToWrite.dx=dx_list[0];
_data->nextTileToWrite.dy=dy_list[0];
_data->nextTileToWrite.lx=lx_list[0];
_data->nextTileToWrite.ly=ly_list[0];
}
vector<char> data(4096);
for (int i = 0; i < numAllTiles; ++i)
{
int dx = _data->nextTileToWrite.dx;
int dy = _data->nextTileToWrite.dy;
int lx = _data->nextTileToWrite.lx;
int ly = _data->nextTileToWrite.ly;
Int64 dataSize = data.size();
in.rawTileData (dx, dy, lx, ly, &data[0], dataSize);
if(dataSize>data.size())
{
data.resize(dataSize);
in.rawTileData (dx, dy, lx, ly, &data[0], dataSize);
}
Int64 sampleCountTableSize = *(Int64 *)(&data[0] + 16);
Int64 pixelDataSize = *(Int64 *)(&data[0] + 24);
Int64 unpackedPixelDataSize = *(Int64 *)(&data[0] + 32);
char * sampleCountTable = &data[0]+40;
char * pixelData = sampleCountTable + sampleCountTableSize;
writeTileData (_data, dx, dy, lx, ly, pixelData, pixelDataSize,unpackedPixelDataSize,sampleCountTable,sampleCountTableSize);
if(_data->lineOrder==RANDOM_Y)
{
if(i<numAllTiles-1)
{
_data->nextTileToWrite.dx=dx_list[i+1];
_data->nextTileToWrite.dy=dy_list[i+1];
_data->nextTileToWrite.lx=lx_list[i+1];
_data->nextTileToWrite.ly=ly_list[i+1];
}
}else{
_data->nextTileToWrite = _data->nextTileCoord (_data->nextTileToWrite);
}
}
}
void
DeepTiledOutputFile::copyPixels (DeepTiledInputPart &in)
{
copyPixels(*in.file);
}
unsigned int
DeepTiledOutputFile::tileXSize () const
{
return _data->tileDesc.xSize;
}
unsigned int
DeepTiledOutputFile::tileYSize () const
{
return _data->tileDesc.ySize;
}
LevelMode
DeepTiledOutputFile::levelMode () const
{
return _data->tileDesc.mode;
}
LevelRoundingMode
DeepTiledOutputFile::levelRoundingMode () const
{
return _data->tileDesc.roundingMode;
}
int
DeepTiledOutputFile::numLevels () const
{
if (levelMode() == RIPMAP_LEVELS)
THROW (IEX_NAMESPACE::LogicExc, "Error calling numLevels() on image "
"file \"" << fileName() << "\" "
view all matches for this distributionview release on metacpan - search on metacpan
( run in 5.665 seconds using v1.00-cache-2.02-grep-82fe00e-cpan-48ebf85a1963 )