159 if (frame_num >= images_.size())
167 if (gif_img_row_bytes == 0)
171 gif_image->row_buffer.resize(gif_img_row_bytes);
173 pdfium::span<CFX_GifPalette> pLocalPalette = gif_image->local_palettes;
175 bool bRes = GetRecordPosition(
176 gif_image->data_pos, gif_image->image_info.left,
177 gif_image->image_info.top, gif_image->image_info.width,
178 gif_image->image_info.height, pLocalPalette, -1,
179 gif_image->image_info.local_flags.interlace);
181 gif_image->row_buffer.clear();
185 bool bRes = GetRecordPosition(
186 gif_image->data_pos, gif_image->image_info.left,
187 gif_image->image_info.top, gif_image->image_info.width,
188 gif_image->image_info.height, pLocalPalette,
189 gif_image->image_GCE->gce_flags.transparency
190 ?
static_cast<int32_t>(gif_image->image_GCE->trans_index)
192 gif_image->image_info.local_flags.interlace);
194 gif_image->row_buffer.clear();
200 gif_image->row_buffer.clear();
211 uint8_t img_data_size;
212 DataVector<uint8_t> img_data;
213 size_t read_marker = input_buffer_->GetPosition();
218 if (!ReadAllOrNone(pdfium::byte_span_from_ref(img_data_size))) {
222 img_data.resize(img_data_size);
223 if (!ReadAllOrNone(img_data)) {
224 input_buffer_->Seek(read_marker);
227 if (!lzw_decompressor_) {
228 lzw_decompressor_ = LZWDecompressor::Create(GetPaletteExp(gif_image),
229 gif_image->code_exp);
230 if (!lzw_decompressor_) {
231 DecodingFailureAtTailCleanup(gif_image);
235 lzw_decompressor_->SetSource(img_data);
240 auto img_row_span =
pdfium::make_span(gif_image->row_buffer)
243 lzw_decompressor_->Decode(img_row_span.data(), &img_row_avail_size_));
245 DecodingFailureAtTailCleanup(gif_image);
251 ReadScanline(gif_image->row_num, gif_image->row_buffer);
252 gif_image->row_buffer.clear();
258 read_marker = input_buffer_->GetPosition();
259 if (!ReadAllOrNone(pdfium::byte_span_from_ref(img_data_size))) {
263 img_data.resize(img_data_size);
264 if (!ReadAllOrNone(img_data)) {
265 input_buffer_->Seek(read_marker);
268 lzw_decompressor_->SetSource(img_data);
273 img_row_span =
pdfium::make_span(gif_image->row_buffer)
275 ret =
UNSAFE_TODO(lzw_decompressor_->Decode(img_row_span.data(),
276 &img_row_avail_size_));
282 ReadScanline(gif_image->row_num, gif_image->row_buffer);
288 DecodingFailureAtTailCleanup(gif_image);
294 ReadScanline(gif_image->row_num++, gif_image->row_buffer);
299 img_row_span =
pdfium::make_span(gif_image->row_buffer)
301 ret =
UNSAFE_TODO(lzw_decompressor_->Decode(img_row_span.data(),
302 &img_row_avail_size_));
306 DecodingFailureAtTailCleanup(gif_image);