xref: /aosp_15_r20/external/image_io/src/base/byte_pointer_data_destination.cc (revision ca0779eb572efbbfda2e47f806647c3c7eeea8c3)
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()12 void BytePointerDataDestination::StartTransfer() {}
13 
Transfer(const DataRange & transfer_range,const DataSegment & data_segment)14 DataDestination::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()29 void BytePointerDataDestination::FinishTransfer() {}
30 
31 }  // namespace image_io
32 }  // namespace photos_editing_formats
33