Lines Matching refs:png_ptr
29 if (png_ptr->push_length + 4 > png_ptr->buffer_size) \
30 { png_push_save_buffer(png_ptr); return; }
32 if (png_ptr->buffer_size < N) \
33 { png_push_save_buffer(png_ptr); return; }
36 png_process_data(png_structrp png_ptr, png_inforp info_ptr, in png_process_data() argument
39 if (png_ptr == NULL || info_ptr == NULL) in png_process_data()
42 png_push_restore_buffer(png_ptr, buffer, buffer_size); in png_process_data()
44 while (png_ptr->buffer_size) in png_process_data()
46 png_process_some_data(png_ptr, info_ptr); in png_process_data()
51 png_process_data_pause(png_structrp png_ptr, int save) in png_process_data_pause() argument
53 if (png_ptr != NULL) in png_process_data_pause()
59 png_push_save_buffer(png_ptr); in png_process_data_pause()
63 png_size_t remaining = png_ptr->buffer_size; in png_process_data_pause()
64 png_ptr->buffer_size = 0; in png_process_data_pause()
69 if (png_ptr->save_buffer_size < remaining) in png_process_data_pause()
70 return remaining - png_ptr->save_buffer_size; in png_process_data_pause()
78 png_process_data_skip(png_structrp png_ptr) in png_process_data_skip() argument
85 png_app_warning(png_ptr, in png_process_data_skip()
94 png_process_some_data(png_structrp png_ptr, png_inforp info_ptr) in png_process_some_data() argument
96 if (png_ptr == NULL) in png_process_some_data()
99 switch (png_ptr->process_mode) in png_process_some_data()
103 png_push_read_sig(png_ptr, info_ptr); in png_process_some_data()
109 png_push_read_chunk(png_ptr, info_ptr); in png_process_some_data()
115 png_push_read_IDAT(png_ptr); in png_process_some_data()
121 png_ptr->buffer_size = 0; in png_process_some_data()
134 png_push_read_sig(png_structrp png_ptr, png_inforp info_ptr) in png_push_read_sig() argument
136 png_size_t num_checked = png_ptr->sig_bytes, /* SAFE, does not exceed 8 */ in png_push_read_sig()
139 if (png_ptr->buffer_size < num_to_check) in png_push_read_sig()
141 num_to_check = png_ptr->buffer_size; in png_push_read_sig()
144 png_push_fill_buffer(png_ptr, &(info_ptr->signature[num_checked]), in png_push_read_sig()
146 png_ptr->sig_bytes = (png_byte)(png_ptr->sig_bytes + num_to_check); in png_push_read_sig()
152 png_error(png_ptr, "Not a PNG file"); in png_push_read_sig()
155 png_error(png_ptr, "PNG file corrupted by ASCII conversion"); in png_push_read_sig()
159 if (png_ptr->sig_bytes >= 8) in png_push_read_sig()
161 png_ptr->process_mode = PNG_READ_CHUNK_MODE; in png_push_read_sig()
167 png_push_read_chunk(png_structrp png_ptr, png_inforp info_ptr) in png_push_read_chunk() argument
180 if ((png_ptr->mode & PNG_HAVE_CHUNK_HEADER) == 0) in png_push_read_chunk()
186 png_push_fill_buffer(png_ptr, chunk_length, 4); in png_push_read_chunk()
187 png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length); in png_push_read_chunk()
188 png_reset_crc(png_ptr); in png_push_read_chunk()
189 png_crc_read(png_ptr, chunk_tag, 4); in png_push_read_chunk()
190 png_ptr->chunk_name = PNG_CHUNK_FROM_STRING(chunk_tag); in png_push_read_chunk()
191 png_check_chunk_name(png_ptr, png_ptr->chunk_name); in png_push_read_chunk()
192 png_ptr->mode |= PNG_HAVE_CHUNK_HEADER; in png_push_read_chunk()
195 chunk_name = png_ptr->chunk_name; in png_push_read_chunk()
199 if ((png_ptr->mode & PNG_AFTER_IDAT) != 0) in png_push_read_chunk()
200 png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT; in png_push_read_chunk()
206 if ((png_ptr->mode & PNG_HAVE_IHDR) == 0) in png_push_read_chunk()
207 png_error(png_ptr, "Missing IHDR before IDAT"); in png_push_read_chunk()
209 else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && in png_push_read_chunk()
210 (png_ptr->mode & PNG_HAVE_PLTE) == 0) in png_push_read_chunk()
211 png_error(png_ptr, "Missing PLTE before IDAT"); in png_push_read_chunk()
213 png_ptr->process_mode = PNG_READ_IDAT_MODE; in png_push_read_chunk()
215 if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) in png_push_read_chunk()
216 if ((png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT) == 0) in png_push_read_chunk()
217 if (png_ptr->push_length == 0) in png_push_read_chunk()
220 png_ptr->mode |= PNG_HAVE_IDAT; in png_push_read_chunk()
222 if ((png_ptr->mode & PNG_AFTER_IDAT) != 0) in png_push_read_chunk()
223 png_benign_error(png_ptr, "Too many IDATs found"); in png_push_read_chunk()
228 if (png_ptr->push_length != 13) in png_push_read_chunk()
229 png_error(png_ptr, "Invalid IHDR length"); in png_push_read_chunk()
232 png_handle_IHDR(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
238 png_handle_IEND(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
240 png_ptr->process_mode = PNG_READ_DONE_MODE; in png_push_read_chunk()
241 png_push_have_end(png_ptr, info_ptr); in png_push_read_chunk()
245 else if ((keep = png_chunk_unknown_handling(png_ptr, chunk_name)) != 0) in png_push_read_chunk()
248 png_handle_unknown(png_ptr, info_ptr, png_ptr->push_length, keep); in png_push_read_chunk()
251 png_ptr->mode |= PNG_HAVE_PLTE; in png_push_read_chunk()
258 png_handle_PLTE(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
263 png_ptr->idat_size = png_ptr->push_length; in png_push_read_chunk()
264 png_ptr->process_mode = PNG_READ_IDAT_MODE; in png_push_read_chunk()
265 png_push_have_info(png_ptr, info_ptr); in png_push_read_chunk()
266 png_ptr->zstream.avail_out = in png_push_read_chunk()
267 (uInt) PNG_ROWBYTES(png_ptr->pixel_depth, in png_push_read_chunk()
268 png_ptr->iwidth) + 1; in png_push_read_chunk()
269 png_ptr->zstream.next_out = png_ptr->row_buf; in png_push_read_chunk()
274 else if (png_ptr->chunk_name == png_gAMA) in png_push_read_chunk()
277 png_handle_gAMA(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
282 else if (png_ptr->chunk_name == png_sBIT) in png_push_read_chunk()
285 png_handle_sBIT(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
290 else if (png_ptr->chunk_name == png_cHRM) in png_push_read_chunk()
293 png_handle_cHRM(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
301 png_handle_sRGB(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
306 else if (png_ptr->chunk_name == png_iCCP) in png_push_read_chunk()
309 png_handle_iCCP(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
317 png_handle_sPLT(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
325 png_handle_tRNS(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
333 png_handle_bKGD(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
341 png_handle_hIST(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
349 png_handle_pHYs(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
357 png_handle_oFFs(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
365 png_handle_pCAL(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
373 png_handle_sCAL(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
381 png_handle_tIME(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
389 png_handle_tEXt(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
397 png_handle_zTXt(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
405 png_handle_iTXt(png_ptr, info_ptr, png_ptr->push_length); in png_push_read_chunk()
412 png_handle_unknown(png_ptr, info_ptr, png_ptr->push_length, in png_push_read_chunk()
416 png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; in png_push_read_chunk()
420 png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length) in png_push_fill_buffer() argument
424 if (png_ptr == NULL) in png_push_fill_buffer()
428 if (png_ptr->save_buffer_size != 0) in png_push_fill_buffer()
432 if (length < png_ptr->save_buffer_size) in png_push_fill_buffer()
436 save_size = png_ptr->save_buffer_size; in png_push_fill_buffer()
438 memcpy(ptr, png_ptr->save_buffer_ptr, save_size); in png_push_fill_buffer()
441 png_ptr->buffer_size -= save_size; in png_push_fill_buffer()
442 png_ptr->save_buffer_size -= save_size; in png_push_fill_buffer()
443 png_ptr->save_buffer_ptr += save_size; in png_push_fill_buffer()
445 if (length != 0 && png_ptr->current_buffer_size != 0) in png_push_fill_buffer()
449 if (length < png_ptr->current_buffer_size) in png_push_fill_buffer()
453 save_size = png_ptr->current_buffer_size; in png_push_fill_buffer()
455 memcpy(ptr, png_ptr->current_buffer_ptr, save_size); in png_push_fill_buffer()
456 png_ptr->buffer_size -= save_size; in png_push_fill_buffer()
457 png_ptr->current_buffer_size -= save_size; in png_push_fill_buffer()
458 png_ptr->current_buffer_ptr += save_size; in png_push_fill_buffer()
463 png_push_save_buffer(png_structrp png_ptr) in png_push_save_buffer() argument
465 if (png_ptr->save_buffer_size != 0) in png_push_save_buffer()
467 if (png_ptr->save_buffer_ptr != png_ptr->save_buffer) in png_push_save_buffer()
473 istop = png_ptr->save_buffer_size; in png_push_save_buffer()
474 for (i = 0, sp = png_ptr->save_buffer_ptr, dp = png_ptr->save_buffer; in png_push_save_buffer()
481 if (png_ptr->save_buffer_size + png_ptr->current_buffer_size > in png_push_save_buffer()
482 png_ptr->save_buffer_max) in png_push_save_buffer()
487 if (png_ptr->save_buffer_size > PNG_SIZE_MAX - in png_push_save_buffer()
488 (png_ptr->current_buffer_size + 256)) in png_push_save_buffer()
490 png_error(png_ptr, "Potential overflow of save_buffer"); in png_push_save_buffer()
493 new_max = png_ptr->save_buffer_size + png_ptr->current_buffer_size + 256; in png_push_save_buffer()
494 old_buffer = png_ptr->save_buffer; in png_push_save_buffer()
495 png_ptr->save_buffer = (png_bytep)png_malloc_warn(png_ptr, in png_push_save_buffer()
498 if (png_ptr->save_buffer == NULL) in png_push_save_buffer()
500 png_free(png_ptr, old_buffer); in png_push_save_buffer()
501 png_error(png_ptr, "Insufficient memory for save_buffer"); in png_push_save_buffer()
504 memcpy(png_ptr->save_buffer, old_buffer, png_ptr->save_buffer_size); in png_push_save_buffer()
505 png_free(png_ptr, old_buffer); in png_push_save_buffer()
506 png_ptr->save_buffer_max = new_max; in png_push_save_buffer()
508 if (png_ptr->current_buffer_size) in png_push_save_buffer()
510 memcpy(png_ptr->save_buffer + png_ptr->save_buffer_size, in png_push_save_buffer()
511 png_ptr->current_buffer_ptr, png_ptr->current_buffer_size); in png_push_save_buffer()
512 png_ptr->save_buffer_size += png_ptr->current_buffer_size; in png_push_save_buffer()
513 png_ptr->current_buffer_size = 0; in png_push_save_buffer()
515 png_ptr->save_buffer_ptr = png_ptr->save_buffer; in png_push_save_buffer()
516 png_ptr->buffer_size = 0; in png_push_save_buffer()
520 png_push_restore_buffer(png_structrp png_ptr, png_bytep buffer, in png_push_restore_buffer() argument
523 png_ptr->current_buffer = buffer; in png_push_restore_buffer()
524 png_ptr->current_buffer_size = buffer_length; in png_push_restore_buffer()
525 png_ptr->buffer_size = buffer_length + png_ptr->save_buffer_size; in png_push_restore_buffer()
526 png_ptr->current_buffer_ptr = png_ptr->current_buffer; in png_push_restore_buffer()
530 png_push_read_IDAT(png_structrp png_ptr) in png_push_read_IDAT() argument
532 if ((png_ptr->mode & PNG_HAVE_CHUNK_HEADER) == 0) in png_push_read_IDAT()
539 png_push_fill_buffer(png_ptr, chunk_length, 4); in png_push_read_IDAT()
540 png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length); in png_push_read_IDAT()
541 png_reset_crc(png_ptr); in png_push_read_IDAT()
542 png_crc_read(png_ptr, chunk_tag, 4); in png_push_read_IDAT()
543 png_ptr->chunk_name = PNG_CHUNK_FROM_STRING(chunk_tag); in png_push_read_IDAT()
544 png_ptr->mode |= PNG_HAVE_CHUNK_HEADER; in png_push_read_IDAT()
546 if (png_ptr->chunk_name != png_IDAT) in png_push_read_IDAT()
548 png_ptr->process_mode = PNG_READ_CHUNK_MODE; in png_push_read_IDAT()
550 if ((png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED) == 0) in png_push_read_IDAT()
551 png_error(png_ptr, "Not enough compressed data"); in png_push_read_IDAT()
556 png_ptr->idat_size = png_ptr->push_length; in png_push_read_IDAT()
559 if (png_ptr->idat_size != 0 && png_ptr->save_buffer_size != 0) in png_push_read_IDAT()
561 png_size_t save_size = png_ptr->save_buffer_size; in png_push_read_IDAT()
562 png_uint_32 idat_size = png_ptr->idat_size; in png_push_read_IDAT()
576 png_calculate_crc(png_ptr, png_ptr->save_buffer_ptr, save_size); in png_push_read_IDAT()
578 png_process_IDAT_data(png_ptr, png_ptr->save_buffer_ptr, save_size); in png_push_read_IDAT()
580 png_ptr->idat_size -= idat_size; in png_push_read_IDAT()
581 png_ptr->buffer_size -= save_size; in png_push_read_IDAT()
582 png_ptr->save_buffer_size -= save_size; in png_push_read_IDAT()
583 png_ptr->save_buffer_ptr += save_size; in png_push_read_IDAT()
586 if (png_ptr->idat_size != 0 && png_ptr->current_buffer_size != 0) in png_push_read_IDAT()
588 png_size_t save_size = png_ptr->current_buffer_size; in png_push_read_IDAT()
589 png_uint_32 idat_size = png_ptr->idat_size; in png_push_read_IDAT()
602 png_calculate_crc(png_ptr, png_ptr->current_buffer_ptr, save_size); in png_push_read_IDAT()
604 png_process_IDAT_data(png_ptr, png_ptr->current_buffer_ptr, save_size); in png_push_read_IDAT()
606 png_ptr->idat_size -= idat_size; in png_push_read_IDAT()
607 png_ptr->buffer_size -= save_size; in png_push_read_IDAT()
608 png_ptr->current_buffer_size -= save_size; in png_push_read_IDAT()
609 png_ptr->current_buffer_ptr += save_size; in png_push_read_IDAT()
612 if (png_ptr->idat_size == 0) in png_push_read_IDAT()
615 png_crc_finish(png_ptr, 0); in png_push_read_IDAT()
616 png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; in png_push_read_IDAT()
617 png_ptr->mode |= PNG_AFTER_IDAT; in png_push_read_IDAT()
618 png_ptr->zowner = 0; in png_push_read_IDAT()
623 png_process_IDAT_data(png_structrp png_ptr, png_bytep buffer, in png_process_IDAT_data() argument
628 png_error(png_ptr, "No IDAT data (internal error)"); in png_process_IDAT_data()
634 png_ptr->zstream.next_in = buffer; in png_process_IDAT_data()
636 png_ptr->zstream.avail_in = (uInt)buffer_length; in png_process_IDAT_data()
641 while (png_ptr->zstream.avail_in > 0 && in png_process_IDAT_data()
642 (png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED) == 0) in png_process_IDAT_data()
651 if (!(png_ptr->zstream.avail_out > 0)) in png_process_IDAT_data()
654 png_ptr->zstream.avail_out = (uInt)(PNG_ROWBYTES(png_ptr->pixel_depth, in png_process_IDAT_data()
655 png_ptr->iwidth) + 1); in png_process_IDAT_data()
657 png_ptr->zstream.next_out = png_ptr->row_buf; in png_process_IDAT_data()
667 ret = PNG_INFLATE(png_ptr, Z_SYNC_FLUSH); in png_process_IDAT_data()
673 png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED; in png_process_IDAT_data()
674 png_ptr->zowner = 0; in png_process_IDAT_data()
679 if (png_ptr->row_number >= png_ptr->num_rows || in png_process_IDAT_data()
680 png_ptr->pass > 6) in png_process_IDAT_data()
681 png_warning(png_ptr, "Truncated compressed data in IDAT"); in png_process_IDAT_data()
684 png_error(png_ptr, "Decompression error in IDAT"); in png_process_IDAT_data()
691 if (png_ptr->zstream.next_out != png_ptr->row_buf) in png_process_IDAT_data()
697 if (png_ptr->row_number >= png_ptr->num_rows || in png_process_IDAT_data()
698 png_ptr->pass > 6) in png_process_IDAT_data()
701 png_warning(png_ptr, "Extra compressed data in IDAT"); in png_process_IDAT_data()
702 png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED; in png_process_IDAT_data()
703 png_ptr->zowner = 0; in png_process_IDAT_data()
712 if (png_ptr->zstream.avail_out == 0) in png_process_IDAT_data()
713 png_push_process_row(png_ptr); in png_process_IDAT_data()
718 png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED; in png_process_IDAT_data()
725 if (png_ptr->zstream.avail_in > 0) in png_process_IDAT_data()
726 png_warning(png_ptr, "Extra compression data in IDAT"); in png_process_IDAT_data()
730 png_push_process_row(png_structrp png_ptr) in png_push_process_row() argument
735 row_info.width = png_ptr->iwidth; /* NOTE: width of current interlaced row */ in png_push_process_row()
736 row_info.color_type = png_ptr->color_type; in png_push_process_row()
737 row_info.bit_depth = png_ptr->bit_depth; in png_push_process_row()
738 row_info.channels = png_ptr->channels; in png_push_process_row()
739 row_info.pixel_depth = png_ptr->pixel_depth; in png_push_process_row()
742 if (png_ptr->row_buf[0] > PNG_FILTER_VALUE_NONE) in png_push_process_row()
744 if (png_ptr->row_buf[0] < PNG_FILTER_VALUE_LAST) in png_push_process_row()
745 png_read_filter_row(png_ptr, &row_info, png_ptr->row_buf + 1, in png_push_process_row()
746 png_ptr->prev_row + 1, png_ptr->row_buf[0]); in png_push_process_row()
748 png_error(png_ptr, "bad adaptive filter value"); in png_push_process_row()
756 memcpy(png_ptr->prev_row, png_ptr->row_buf, row_info.rowbytes + 1); in png_push_process_row()
759 if (png_ptr->transformations != 0) in png_push_process_row()
760 png_do_read_transformations(png_ptr, &row_info); in png_push_process_row()
764 if (png_ptr->transformed_pixel_depth == 0) in png_push_process_row()
766 png_ptr->transformed_pixel_depth = row_info.pixel_depth; in png_push_process_row()
767 if (row_info.pixel_depth > png_ptr->maximum_pixel_depth) in png_push_process_row()
768 png_error(png_ptr, "progressive row overflow"); in png_push_process_row()
771 else if (png_ptr->transformed_pixel_depth != row_info.pixel_depth) in png_push_process_row()
772 png_error(png_ptr, "internal progressive row size calculation error"); in png_push_process_row()
777 if (png_ptr->interlaced != 0 && in png_push_process_row()
778 (png_ptr->transformations & PNG_INTERLACE) != 0) in png_push_process_row()
780 if (png_ptr->pass < 6) in png_push_process_row()
781 png_do_read_interlace(&row_info, png_ptr->row_buf + 1, png_ptr->pass, in png_push_process_row()
782 png_ptr->transformations); in png_push_process_row()
784 switch (png_ptr->pass) in png_push_process_row()
789 for (i = 0; i < 8 && png_ptr->pass == 0; i++) in png_push_process_row()
791 png_push_have_row(png_ptr, png_ptr->row_buf + 1); in png_push_process_row()
792 png_read_push_finish_row(png_ptr); /* Updates png_ptr->pass */ in png_push_process_row()
795 if (png_ptr->pass == 2) /* Pass 1 might be empty */ in png_push_process_row()
797 for (i = 0; i < 4 && png_ptr->pass == 2; i++) in png_push_process_row()
799 png_push_have_row(png_ptr, NULL); in png_push_process_row()
800 png_read_push_finish_row(png_ptr); in png_push_process_row()
804 if (png_ptr->pass == 4 && png_ptr->height <= 4) in png_push_process_row()
806 for (i = 0; i < 2 && png_ptr->pass == 4; i++) in png_push_process_row()
808 png_push_have_row(png_ptr, NULL); in png_push_process_row()
809 png_read_push_finish_row(png_ptr); in png_push_process_row()
813 if (png_ptr->pass == 6 && png_ptr->height <= 4) in png_push_process_row()
815 png_push_have_row(png_ptr, NULL); in png_push_process_row()
816 png_read_push_finish_row(png_ptr); in png_push_process_row()
825 for (i = 0; i < 8 && png_ptr->pass == 1; i++) in png_push_process_row()
827 png_push_have_row(png_ptr, png_ptr->row_buf + 1); in png_push_process_row()
828 png_read_push_finish_row(png_ptr); in png_push_process_row()
831 if (png_ptr->pass == 2) /* Skip top 4 generated rows */ in png_push_process_row()
833 for (i = 0; i < 4 && png_ptr->pass == 2; i++) in png_push_process_row()
835 png_push_have_row(png_ptr, NULL); in png_push_process_row()
836 png_read_push_finish_row(png_ptr); in png_push_process_row()
847 for (i = 0; i < 4 && png_ptr->pass == 2; i++) in png_push_process_row()
849 png_push_have_row(png_ptr, png_ptr->row_buf + 1); in png_push_process_row()
850 png_read_push_finish_row(png_ptr); in png_push_process_row()
853 for (i = 0; i < 4 && png_ptr->pass == 2; i++) in png_push_process_row()
855 png_push_have_row(png_ptr, NULL); in png_push_process_row()
856 png_read_push_finish_row(png_ptr); in png_push_process_row()
859 if (png_ptr->pass == 4) /* Pass 3 might be empty */ in png_push_process_row()
861 for (i = 0; i < 2 && png_ptr->pass == 4; i++) in png_push_process_row()
863 png_push_have_row(png_ptr, NULL); in png_push_process_row()
864 png_read_push_finish_row(png_ptr); in png_push_process_row()
875 for (i = 0; i < 4 && png_ptr->pass == 3; i++) in png_push_process_row()
877 png_push_have_row(png_ptr, png_ptr->row_buf + 1); in png_push_process_row()
878 png_read_push_finish_row(png_ptr); in png_push_process_row()
881 if (png_ptr->pass == 4) /* Skip top two generated rows */ in png_push_process_row()
883 for (i = 0; i < 2 && png_ptr->pass == 4; i++) in png_push_process_row()
885 png_push_have_row(png_ptr, NULL); in png_push_process_row()
886 png_read_push_finish_row(png_ptr); in png_push_process_row()
897 for (i = 0; i < 2 && png_ptr->pass == 4; i++) in png_push_process_row()
899 png_push_have_row(png_ptr, png_ptr->row_buf + 1); in png_push_process_row()
900 png_read_push_finish_row(png_ptr); in png_push_process_row()
903 for (i = 0; i < 2 && png_ptr->pass == 4; i++) in png_push_process_row()
905 png_push_have_row(png_ptr, NULL); in png_push_process_row()
906 png_read_push_finish_row(png_ptr); in png_push_process_row()
909 if (png_ptr->pass == 6) /* Pass 5 might be empty */ in png_push_process_row()
911 png_push_have_row(png_ptr, NULL); in png_push_process_row()
912 png_read_push_finish_row(png_ptr); in png_push_process_row()
922 for (i = 0; i < 2 && png_ptr->pass == 5; i++) in png_push_process_row()
924 png_push_have_row(png_ptr, png_ptr->row_buf + 1); in png_push_process_row()
925 png_read_push_finish_row(png_ptr); in png_push_process_row()
928 if (png_ptr->pass == 6) /* Skip top generated row */ in png_push_process_row()
930 png_push_have_row(png_ptr, NULL); in png_push_process_row()
931 png_read_push_finish_row(png_ptr); in png_push_process_row()
940 png_push_have_row(png_ptr, png_ptr->row_buf + 1); in png_push_process_row()
941 png_read_push_finish_row(png_ptr); in png_push_process_row()
943 if (png_ptr->pass != 6) in png_push_process_row()
946 png_push_have_row(png_ptr, NULL); in png_push_process_row()
947 png_read_push_finish_row(png_ptr); in png_push_process_row()
954 png_push_have_row(png_ptr, png_ptr->row_buf + 1); in png_push_process_row()
955 png_read_push_finish_row(png_ptr); in png_push_process_row()
960 png_read_push_finish_row(png_structrp png_ptr) in png_read_push_finish_row() argument
983 png_ptr->row_number++; in png_read_push_finish_row()
984 if (png_ptr->row_number < png_ptr->num_rows) in png_read_push_finish_row()
988 if (png_ptr->interlaced != 0) in png_read_push_finish_row()
990 png_ptr->row_number = 0; in png_read_push_finish_row()
991 memset(png_ptr->prev_row, 0, png_ptr->rowbytes + 1); in png_read_push_finish_row()
995 png_ptr->pass++; in png_read_push_finish_row()
996 if ((png_ptr->pass == 1 && png_ptr->width < 5) || in png_read_push_finish_row()
997 (png_ptr->pass == 3 && png_ptr->width < 3) || in png_read_push_finish_row()
998 (png_ptr->pass == 5 && png_ptr->width < 2)) in png_read_push_finish_row()
999 png_ptr->pass++; in png_read_push_finish_row()
1001 if (png_ptr->pass > 7) in png_read_push_finish_row()
1002 png_ptr->pass--; in png_read_push_finish_row()
1004 if (png_ptr->pass >= 7) in png_read_push_finish_row()
1007 png_ptr->iwidth = (png_ptr->width + in png_read_push_finish_row()
1008 png_pass_inc[png_ptr->pass] - 1 - in png_read_push_finish_row()
1009 png_pass_start[png_ptr->pass]) / in png_read_push_finish_row()
1010 png_pass_inc[png_ptr->pass]; in png_read_push_finish_row()
1012 if ((png_ptr->transformations & PNG_INTERLACE) != 0) in png_read_push_finish_row()
1015 png_ptr->num_rows = (png_ptr->height + in png_read_push_finish_row()
1016 png_pass_yinc[png_ptr->pass] - 1 - in png_read_push_finish_row()
1017 png_pass_ystart[png_ptr->pass]) / in png_read_push_finish_row()
1018 png_pass_yinc[png_ptr->pass]; in png_read_push_finish_row()
1020 } while (png_ptr->iwidth == 0 || png_ptr->num_rows == 0); in png_read_push_finish_row()
1026 png_push_have_info(png_structrp png_ptr, png_inforp info_ptr) in png_push_have_info() argument
1028 if (png_ptr->info_fn != NULL) in png_push_have_info()
1029 (*(png_ptr->info_fn))(png_ptr, info_ptr); in png_push_have_info()
1033 png_push_have_end(png_structrp png_ptr, png_inforp info_ptr) in png_push_have_end() argument
1035 if (png_ptr->end_fn != NULL) in png_push_have_end()
1036 (*(png_ptr->end_fn))(png_ptr, info_ptr); in png_push_have_end()
1040 png_push_have_row(png_structrp png_ptr, png_bytep row) in png_push_have_row() argument
1042 if (png_ptr->row_fn != NULL) in png_push_have_row()
1043 (*(png_ptr->row_fn))(png_ptr, row, png_ptr->row_number, in png_push_have_row()
1044 (int)png_ptr->pass); in png_push_have_row()
1049 png_progressive_combine_row(png_const_structrp png_ptr, png_bytep old_row, in png_progressive_combine_row() argument
1052 if (png_ptr == NULL) in png_progressive_combine_row()
1060 png_combine_row(png_ptr, old_row, 1/*blocky display*/); in png_progressive_combine_row()
1065 png_set_progressive_read_fn(png_structrp png_ptr, png_voidp progressive_ptr, in png_set_progressive_read_fn() argument
1069 if (png_ptr == NULL) in png_set_progressive_read_fn()
1072 png_ptr->info_fn = info_fn; in png_set_progressive_read_fn()
1073 png_ptr->row_fn = row_fn; in png_set_progressive_read_fn()
1074 png_ptr->end_fn = end_fn; in png_set_progressive_read_fn()
1076 png_set_read_fn(png_ptr, progressive_ptr, png_push_fill_buffer); in png_set_progressive_read_fn()
1080 png_get_progressive_ptr(png_const_structrp png_ptr) in png_get_progressive_ptr() argument
1082 if (png_ptr == NULL) in png_get_progressive_ptr()
1085 return png_ptr->io_ptr; in png_get_progressive_ptr()