in src/tiffFile.cpp [183:206]
std::unique_ptr<TiffTile> TiffFile::tile(uint32_t tileIndex) {
if (tiffFile_ == nullptr) {
return nullptr;
}
TileReadBuffer readBuffer(tileReadBufSize_);
if (readBuffer.buffer_ == nullptr) {
return nullptr;
}
uint32_t bufferSize = TIFFReadRawTile(tiffFile_,
static_cast<ttile_t>(tileIndex),
readBuffer.buffer_,
tileReadBufSize_);
if (bufferSize == 0) {
return nullptr;
}
std::unique_ptr<uint8_t[]> mem_buffer =
std::make_unique<uint8_t[]>(bufferSize);
if (mem_buffer == nullptr) {
return nullptr;
}
_TIFFmemcpy(mem_buffer.get(), readBuffer.buffer_, bufferSize);
return std::make_unique<TiffTile>(directory(directoryLevel()), tileIndex,
std::move(mem_buffer), bufferSize);
}