diff options
Diffstat (limited to 'includes/image_io/base/data_segment_data_source.h')
-rw-r--r-- | includes/image_io/base/data_segment_data_source.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/includes/image_io/base/data_segment_data_source.h b/includes/image_io/base/data_segment_data_source.h new file mode 100644 index 0000000..6ef6c3e --- /dev/null +++ b/includes/image_io/base/data_segment_data_source.h @@ -0,0 +1,30 @@ +#ifndef IMAGE_IO_BASE_DATA_SEGMENT_DATA_SOURCE_H_ // NOLINT +#define IMAGE_IO_BASE_DATA_SEGMENT_DATA_SOURCE_H_ // NOLINT + +#include "image_io/base/data_source.h" + +namespace photos_editing_formats { +namespace image_io { + +/// DataSegmentDataSource is an implementation of DataSource that provides +/// access to requested DataSegment instances from a single (possibly large) +/// in-memory DataSegment. +class DataSegmentDataSource : public DataSource { + public: + explicit DataSegmentDataSource( + const std::shared_ptr<DataSegment>& shared_data_segment) + : shared_data_segment_(shared_data_segment) {} + void Reset() override; + std::shared_ptr<DataSegment> GetDataSegment(size_t begin, + size_t min_size) override; + TransferDataResult TransferData(const DataRange& data_range, size_t best_size, + DataDestination* data_destination) override; + + private: + std::shared_ptr<DataSegment> shared_data_segment_; +}; + +} // namespace image_io +} // namespace photos_editing_formats + +#endif // IMAGE_IO_BASE_DATA_SEGMENT_DATA_SOURCE_H_ // NOLINT |