43 bool isDone()
const {
return fState == State::kDone; }
44 bool hadError()
const {
return fState == State::kError; }
47 void onBytes(
const void* data,
size_t size);
51 const std::vector<SkJpegSegment>&
getSegments()
const;
72 kSegmentParamLengthByte0,
76 kSegmentParamLengthByte1,
86 kEntropyCodedDataSentinel,
89 kPostEntropyCodedDataFill,
95 State fState = State::kStartOfImageByte0;
98 void onByte(uint8_t
byte);
102 void onMarkerSecondByte(uint8_t
byte);
106 void saveCurrentSegment(uint16_t
length);
108 static bool MarkerStandsAlone(uint8_t
marker) {
115 const uint8_t fStopMarker;
121 uint8_t fSegmentParamLengthByte0 = 0;
125 size_t fSegmentParamBytesRemaining = 0;
129 size_t fCurrentSegmentOffset = 0;
130 uint8_t fCurrentSegmentMarker = 0;
132 std::vector<SkJpegSegment> fSegments;