128#ifdef PNG_SETJMP_SUPPORTED
129 jmp_buf jmp_buf_local;
130 png_longjmp_ptr longjmp_fn;
131 jmp_buf *jmp_buf_ptr;
134 png_error_ptr error_fn;
135#ifdef PNG_WARNINGS_SUPPORTED
136 png_error_ptr warning_fn;
139 png_rw_ptr write_data_fn;
140 png_rw_ptr read_data_fn;
143#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
144 png_user_transform_ptr read_user_transform_fn;
147#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
148 png_user_transform_ptr write_user_transform_fn;
152#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED
153#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
154 defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
155 png_voidp user_transform_ptr;
156 png_byte user_transform_depth;
157 png_byte user_transform_channels;
163 png_uint_32 transformations;
168#ifdef PNG_WRITE_SUPPORTED
169 png_compression_bufferp zbuffer_list;
174 int zlib_window_bits;
179#ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED
181 int zlib_text_method;
182 int zlib_text_window_bits;
183 int zlib_text_mem_level;
184 int zlib_text_strategy;
188#ifdef PNG_WRITE_SUPPORTED
191 int zlib_set_window_bits;
192 int zlib_set_mem_level;
193 int zlib_set_strategy;
197# define png_has_chunk(png_ptr, cHNK)\
198 png_file_has_chunk(png_ptr, PNG_INDEX_ ## cHNK)
203 png_uint_32 num_rows;
204 png_uint_32 usr_width;
207 png_uint_32 row_number;
208 png_uint_32 chunk_name;
219#ifdef PNG_WRITE_FILTER_SUPPORTED
223 size_t info_rowbytes;
225 png_uint_32 idat_size;
228 png_uint_16 num_palette;
231#ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED
235 png_uint_16 num_trans;
236 png_byte compression;
243 png_byte usr_bit_depth;
244 png_byte pixel_depth;
246#ifdef PNG_WRITE_SUPPORTED
247 png_byte usr_channels;
250 png_byte maximum_pixel_depth;
252 png_byte transformed_pixel_depth;
254#if ZLIB_VERNUM >= 0x1240
255 png_byte zstream_start;
257#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
261#if defined(PNG_bKGD_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) ||\
262 defined(PNG_READ_ALPHA_MODE_SUPPORTED)
263 png_byte background_gamma_type;
264 png_fixed_point background_gamma;
265 png_color_16 background;
266#ifdef PNG_READ_GAMMA_SUPPORTED
267 png_color_16 background_1;
271#ifdef PNG_WRITE_FLUSH_SUPPORTED
272 png_flush_ptr output_flush_fn;
273 png_uint_32 flush_dist;
274 png_uint_32 flush_rows;
277#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
281#ifdef PNG_READ_GAMMA_SUPPORTED
283 png_fixed_point screen_gamma;
284 png_fixed_point file_gamma;
285 png_fixed_point chunk_gamma;
286 png_fixed_point default_gamma;
288 png_bytep gamma_table;
289 png_uint_16pp gamma_16_table;
290#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \
291 defined(PNG_READ_ALPHA_MODE_SUPPORTED) || \
292 defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
293 png_bytep gamma_from_1;
294 png_bytep gamma_to_1;
295 png_uint_16pp gamma_16_from_1;
296 png_uint_16pp gamma_16_to_1;
300#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_sBIT_SUPPORTED)
304#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
308#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \
309 || defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
310 png_bytep trans_alpha;
311 png_color_16 trans_color;
314 png_read_status_ptr read_row_fn;
315 png_write_status_ptr write_row_fn;
316#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
317 png_progressive_info_ptr info_fn;
318 png_progressive_row_ptr row_fn;
319 png_progressive_end_ptr end_fn;
320 png_bytep save_buffer_ptr;
321 png_bytep save_buffer;
322 png_bytep current_buffer_ptr;
323 png_bytep current_buffer;
324 png_uint_32 push_length;
325 png_uint_32 skip_length;
326 size_t save_buffer_size;
327 size_t save_buffer_max;
329 size_t current_buffer_size;
334#ifdef PNG_READ_QUANTIZE_SUPPORTED
335 png_bytep palette_lookup;
336 png_bytep quantize_index;
340#ifdef PNG_SET_OPTION_SUPPORTED
344#if PNG_LIBPNG_VER < 10700
346#ifdef PNG_TIME_RFC1123_SUPPORTED
347 char time_buffer[29];
355#ifdef PNG_USER_CHUNKS_SUPPORTED
356 png_voidp user_chunk_ptr;
357#ifdef PNG_READ_USER_CHUNKS_SUPPORTED
358 png_user_chunk_ptr read_user_chunk_fn;
362#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED
364 unsigned int num_chunk_list;
365 png_bytep chunk_list;
370#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
371 png_byte rgb_to_gray_status;
373 png_byte rgb_to_gray_coefficients_set;
375 png_uint_16 rgb_to_gray_red_coeff;
376 png_uint_16 rgb_to_gray_green_coeff;
381#if defined(PNG_READ_EXPAND_SUPPORTED) && \
382 (defined(PNG_ARM_NEON_IMPLEMENTATION) || \
383 defined(PNG_RISCV_RVV_IMPLEMENTATION))
384 png_bytep riffled_palette;
388#if defined(PNG_MNG_FEATURES_SUPPORTED)
390 png_uint_32 mng_features_permitted;
394#ifdef PNG_MNG_FEATURES_SUPPORTED
395 png_byte filter_type;
401#ifdef PNG_USER_MEM_SUPPORTED
403 png_malloc_ptr malloc_fn;
404 png_free_ptr free_fn;
408 png_bytep big_row_buf;
410#ifdef PNG_READ_QUANTIZE_SUPPORTED
412 png_bytep index_to_palette;
414 png_bytep palette_to_index;
419 png_byte compression_type;
421#ifdef PNG_USER_LIMITS_SUPPORTED
422 png_uint_32 user_width_max;
423 png_uint_32 user_height_max;
428 png_uint_32 user_chunk_cache_max;
433 png_alloc_size_t user_chunk_malloc_max;
437#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
441 png_unknown_chunk unknown_chunk;
445 size_t old_big_row_buf_size;
447#ifdef PNG_READ_SUPPORTED
449 png_bytep read_buffer;
450 png_alloc_size_t read_buffer_size;
452#ifdef PNG_SEQUENTIAL_READ_SUPPORTED
456#ifdef PNG_IO_STATE_SUPPORTED
458 png_uint_32 io_state;
462 png_bytep big_prev_row;
465 void (*read_filter[PNG_FILTER_VALUE_LAST-1])(png_row_infop row_info,
466 png_bytep row, png_const_bytep prev_row);