1 #include "image_io/base/byte_pointer_data_destination.h" 2 3 #include <algorithm> 4 #include <cstring> 5 6 #include "image_io/base/data_range.h" 7 #include "image_io/base/data_segment.h" 8 9 namespace photos_editing_formats { 10 namespace image_io { 11 StartTransfer()12void BytePointerDataDestination::StartTransfer() {} 13 Transfer(const DataRange & transfer_range,const DataSegment & data_segment)14DataDestination::TransferStatus BytePointerDataDestination::Transfer( 15 const DataRange& transfer_range, const DataSegment& data_segment) { 16 if (transfer_range.IsValid()) { 17 size_t size_remaining = size_ - bytes_transferred_; 18 size_t bytes_to_copy = std::min(size_remaining, transfer_range.GetLength()); 19 const Byte* buffer = data_segment.GetBuffer(transfer_range.GetBegin()); 20 if (buffer) { 21 std::memcpy(bytes_ + bytes_transferred_, buffer, bytes_to_copy); 22 bytes_transferred_ += bytes_to_copy; 23 return bytes_transferred_ == size_ ? kTransferDone : kTransferOk; 24 } 25 } 26 return kTransferError; 27 } 28 FinishTransfer()29void BytePointerDataDestination::FinishTransfer() {} 30 31 } // namespace image_io 32 } // namespace photos_editing_formats 33