std::unique_ptr TiffFile::tile()

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);
}