diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2018-11-15 16:07:46 -0800 |
---|---|---|
committer | Eino-Ville Talvala <etalvala@google.com> | 2018-11-15 16:07:46 -0800 |
commit | 2d6d3250dcb304c8ad081dedc8eef6ea48fd669d (patch) | |
tree | 68cc8d5a9bf5a558f46025d740c47cb292eea9f0 /includes/image_io/jpeg/jpeg_segment_processor.h | |
parent | 840fc3b66a9e6593d542ada6fe14d91107fab98d (diff) | |
download | image_io-2d6d3250dcb304c8ad081dedc8eef6ea48fd669d.tar.gz |
Initial commit of libimage_io
Image_io is a library for manipulating image files, especially XMP
metadata within them.
Test: m libimage_io
Bug: 109735087
Bug: 119211681
Change-Id: I657f307be0459fe40154806c7cd388b97bcb0ea5
Diffstat (limited to 'includes/image_io/jpeg/jpeg_segment_processor.h')
-rw-r--r-- | includes/image_io/jpeg/jpeg_segment_processor.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/includes/image_io/jpeg/jpeg_segment_processor.h b/includes/image_io/jpeg/jpeg_segment_processor.h new file mode 100644 index 0000000..a193797 --- /dev/null +++ b/includes/image_io/jpeg/jpeg_segment_processor.h @@ -0,0 +1,44 @@ +#ifndef IMAGE_IO_JPEG_JPEG_SEGMENT_PROCESSOR_H_ // NOLINT +#define IMAGE_IO_JPEG_JPEG_SEGMENT_PROCESSOR_H_ // NOLINT + +#include "image_io/jpeg/jpeg_segment.h" + +namespace photos_editing_formats { +namespace image_io { + +class JpegScanner; + +/// JpegSegmentProcessor is the abstract base class for implementations that do +/// something with the JPEG segments that the JpegScanner identifies. +class JpegSegmentProcessor { + public: + virtual ~JpegSegmentProcessor() = default; + + /// This function is called at the start of the JPegScanner::Run() function to + /// allow this JpegProcessor to initialize its data structures. It can also + /// inform the JpegScanner about preferences for the types of segments it is + /// interested in by calling the JpegScanner::UpdateInterestingMarkerFlags() + /// function. + /// @param scanner The scanner that is starting the JpegProcessor. + virtual void Start(JpegScanner* scanner) = 0; + + /// This function is called repeatedly by the JpegScanner as it identifies + /// segments in the JPEG file. The JpegProcessor can access the data in the + /// segment to do interesting things, or can update the scanner's preferences + /// like in the Start() function. + /// @param scanner The scanner that is providing the segment to the processor. + /// @param segment The segment provided by the scanner to the processor. + virtual void Process(JpegScanner* scanner, const JpegSegment& segment) = 0; + + /// This function is called after the JpegScanner has provided all the + /// segments to the JpegProcessor to allow the processor to finish its work + /// processing the segments. + /// @param scanner The scanner that is informing the processor that it is done + /// finding segments. + virtual void Finish(JpegScanner* scanner) = 0; +}; + +} // namespace image_io +} // namespace photos_editing_formats + +#endif // IMAGE_IO_JPEG_JPEG_SEGMENT_PROCESSOR_H_ // NOLINT |