Home | History | Annotate | Download | only in libpng-1.2.46

Lines Matching refs:png_ptr

30 png_write_info_before_PLTE(png_structp png_ptr, png_infop info_ptr)
34 if (png_ptr == NULL || info_ptr == NULL)
36 if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE))
39 png_write_sig(png_ptr);
41 if ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE) && \
42 (png_ptr->mng_features_permitted))
44 png_warning(png_ptr, "MNG features are not allowed in a PNG datastream");
45 png_ptr->mng_features_permitted = 0;
49 png_write_IHDR(png_ptr, info_ptr->width, info_ptr->height,
64 png_write_gAMA(png_ptr, info_ptr->gamma);
67 png_write_gAMA_fixed(png_ptr, info_ptr->int_gamma);
74 png_write_sRGB(png_ptr, (int)info_ptr->srgb_intent);
78 png_write_iCCP(png_ptr, info_ptr->iccp_name, PNG_COMPRESSION_TYPE_BASE,
83 png_write_sBIT(png_ptr, &(info_ptr->sig_bit), info_ptr->color_type);
89 png_write_cHRM(png_ptr,
96 png_write_cHRM_fixed(png_ptr,
116 int keep = png_handle_as_unknown(png_ptr, up->name);
121 (png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS)))
124 png_warning(png_ptr, "Writing zero-length unknown chunk");
125 png_write_chunk(png_ptr, up->name, up->data, up->size);
130 png_ptr->mode |= PNG_WROTE_INFO_BEFORE_PLTE;
135 png_write_info(png_structp png_ptr, png_infop info_ptr)
143 if (png_ptr == NULL || info_ptr == NULL)
146 png_write_info_before_PLTE(png_ptr, info_ptr);
149 png_write_PLTE(png_ptr, info_ptr->palette,
152 png_error(png_ptr, "Valid palette required for paletted images");
159 if ((png_ptr->transformations & PNG_INVERT_ALPHA) &&
167 png_write_tRNS(png_ptr, info_ptr->trans, &(info_ptr->trans_values),
173 png_write_bKGD(png_ptr, &(info_ptr->background), info_ptr->color_type);
177 png_write_hIST(png_ptr, info_ptr->hist, info_ptr->num_palette);
181 png_write_oFFs(png_ptr, info_ptr->x_offset, info_ptr->y_offset,
186 png_write_pCAL(png_ptr, info_ptr->pcal_purpose, info_ptr->pcal_X0,
195 png_write_sCAL(png_ptr, (int)info_ptr->scal_unit,
199 png_write_sCAL_s(png_ptr, (int)info_ptr->scal_unit,
204 png_warning(png_ptr,
211 png_write_pHYs(png_ptr, info_ptr->x_pixels_per_unit,
218 png_write_tIME(png_ptr, &(info_ptr->mod_time));
219 png_ptr->mode |= PNG_WROTE_tIME;
226 png_write_sPLT(png_ptr, info_ptr->splt_palettes + i);
240 png_write_iTXt(png_ptr,
247 png_warning(png_ptr, "Unable to write international text");
257 png_write_zTXt(png_ptr, info_ptr->text[i].key,
261 png_warning(png_ptr, "Unable to write compressed text");
270 png_write_tEXt(png_ptr, info_ptr->text[i].key,
277 png_warning(png_ptr, "Unable to write uncompressed text");
294 int keep = png_handle_as_unknown(png_ptr, up->name);
300 (png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS)))
302 png_write_chunk(png_ptr, up->name, up->data, up->size);
315 png_write_end(png_structp png_ptr, png_infop info_ptr)
319 if (png_ptr == NULL)
321 if (!(png_ptr->mode & PNG_HAVE_IDAT))
322 png_error(png_ptr, "No IDATs written into file");
333 !(png_ptr->mode & PNG_WROTE_tIME))
334 png_write_tIME(png_ptr, &(info_ptr->mod_time));
347 png_write_iTXt(png_ptr,
354 png_warning(png_ptr, "Unable to write international text");
363 png_write_zTXt(png_ptr, info_ptr->text[i].key,
367 png_warning(png_ptr, "Unable to write compressed text");
376 png_write_tEXt(png_ptr, info_ptr->text[i].key,
379 png_warning(png_ptr, "Unable to write uncompressed text");
398 int keep = png_handle_as_unknown(png_ptr, up->name);
402 (png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS)))
404 png_write_chunk(png_ptr, up->name, up->data, up->size);
411 png_ptr->mode |= PNG_AFTER_IDAT;
414 png_write_IEND(png_ptr);
417 * do not set png_ptr->output_flush_fn to crash. If your application
424 png_flush(png_ptr);
456 /* Initialize png_ptr structure, and allocate any memory needed */
466 /* Alternate initialize png_ptr structure, and allocate any memory needed */
476 png_structp png_ptr;
487 png_ptr = (png_structp)png_create_struct_2(PNG_STRUCT_PNG,
490 png_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
492 if (png_ptr == NULL)
497 png_ptr->user_width_max = PNG_USER_WIDTH_MAX;
498 png_ptr->user_height_max = PNG_USER_HEIGHT_MAX;
505 if (setjmp(png_ptr->jmpbuf))
508 png_free(png_ptr, png_ptr->zbuf);
509 png_ptr->zbuf = NULL;
511 png_destroy_struct_2((png_voidp)png_ptr,
514 png_destroy_struct((png_voidp)png_ptr);
519 png_memcpy(png_ptr->jmpbuf, jmpbuf, png_sizeof(jmp_buf));
524 png_set_mem_fn(png_ptr, mem_ptr, malloc_fn, free_fn);
526 png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn);
534 png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
538 if (png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH)
556 png_warning(png_ptr, msg);
561 png_warning(png_ptr, msg);
564 png_ptr->flags = 0;
566 png_error(png_ptr,
572 png_ptr->zbuf_size = PNG_ZBUF_SIZE;
573 png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
574 (png_uint_32)png_ptr->zbuf_size);
576 png_set_write_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL,
580 png_set_filter_heuristics(png_ptr, PNG_FILTER_HEURISTIC_DEFAULT,
592 png_memcpy(png_ptr->jmpbuf, jmpbuf, png_sizeof(jmp_buf));
594 if (setjmp(png_ptr->jmpbuf))
598 return (png_ptr);
601 /* Initialize png_ptr structure, and allocate any memory needed */
606 png_write_init(png_structp png_ptr)
609 png_write_init_2(png_ptr, "1.0.6 or earlier", 0, 0);
613 png_write_init_2(png_structp png_ptr, png_const_charp user_png_ver,
617 if (png_ptr == NULL) return;
623 png_ptr->warning_fn = NULL;
629 png_warning(png_ptr, msg);
634 png_warning(png_ptr, msg);
639 png_ptr->error_fn = NULL;
641 png_ptr->flags = 0;
643 png_error(png_ptr,
649 png_ptr->error_fn = NULL;
651 png_ptr->flags = 0;
653 png_error(png_ptr,
657 png_write_init_3(&png_ptr, user_png_ver, png_struct_size);
666 png_structp png_ptr = *ptr_ptr;
673 if (png_ptr == NULL)
681 png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
683 png_ptr->warning_fn = NULL;
684 png_warning(png_ptr,
694 png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf));
699 png_destroy_struct(png_ptr);
700 png_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
701 *ptr_ptr = png_ptr;
705 png_memset(png_ptr, 0, png_sizeof(png_struct));
709 png_ptr->user_width_max = PNG_USER_WIDTH_MAX;
710 png_ptr->user_height_max = PNG_USER_HEIGHT_MAX;
715 png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof(jmp_buf));
718 png_set_write_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL,
722 png_ptr->zbuf_size = PNG_ZBUF_SIZE;
723 png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
724 (png_uint_32)png_ptr->zbuf_size);
726 png_set_filter_heuristics(png_ptr, PNG_FILTER_HEURISTIC_DEFAULT,
737 png_write_rows(png_structp png_ptr, png_bytepp row,
745 if (png_ptr == NULL)
751 png_write_row(png_ptr, *rp);
759 png_write_image(png_structp png_ptr, png_bytepp image)
765 if (png_ptr == NULL)
774 num_pass = png_set_interlace_handling(png_ptr);
782 for (i = 0, rp = image; i < png_ptr->height; i++, rp++)
784 png_write_row(png_ptr, *rp);
791 png_write_row(png_structp png_ptr, png_bytep row)
793 if (png_ptr == NULL)
797 png_ptr->row_number, png_ptr->pass);
800 if (png_ptr->row_number == 0 && png_ptr->pass == 0)
803 if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE))
804 png_error(png_ptr,
809 if (png_ptr->transformations & PNG_INVERT_MONO)
810 png_warning(png_ptr,
814 if (png_ptr->transformations & PNG_FILLER)
815 png_warning(png_ptr,
820 if (png_ptr->transformations & PNG_PACKSWAP)
821 png_warning(png_ptr,
825 if (png_ptr->transformations & PNG_PACK)
826 png_warning(png_ptr, "PNG_WRITE_PACK_SUPPORTED is not defined.");
829 if (png_ptr->transformations & PNG_SHIFT)
830 png_warning(png_ptr, "PNG_WRITE_SHIFT_SUPPORTED is not defined.");
833 if (png_ptr->transformations & PNG_BGR)
834 png_warning(png_ptr, "PNG_WRITE_BGR_SUPPORTED is not defined.");
837 if (png_ptr->transformations & PNG_SWAP_BYTES)
838 png_warning(png_ptr, "PNG_WRITE_SWAP_SUPPORTED is not defined.");
841 png_write_start_row(png_ptr);
846 if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE))
848 switch (png_ptr->pass)
851 if (png_ptr->row_number & 0x07)
853 png_write_finish_row(png_ptr);
858 if ((png_ptr->row_number & 0x07) || png_ptr->width < 5)
860 png_write_finish_row(png_ptr);
865 if ((png_ptr->row_number & 0x07) != 4)
867 png_write_finish_row(png_ptr);
872 if ((png_ptr->row_number & 0x03) || png_ptr->width < 3)
874 png_write_finish_row(png_ptr);
879 if ((png_ptr->row_number & 0x03) != 2)
881 png_write_finish_row(png_ptr);
886 if ((png_ptr->row_number & 0x01) || png_ptr->width < 2)
888 png_write_finish_row(png_ptr);
893 if (!(png_ptr->row_number & 0x01))
895 png_write_finish_row(png_ptr);
904 png_ptr->row_info.color_type = png_ptr->color_type;
905 png_ptr->row_info.width = png_ptr->usr_width;
906 png_ptr->row_info.channels = png_ptr->usr_channels;
907 png_ptr->row_info.bit_depth = png_ptr->usr_bit_depth;
908 png_ptr->row_info.pixel_depth = (png_byte)(png_ptr->row_info.bit_depth *
909 png_ptr->row_info.channels);
911 png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth,
912 png_ptr->row_info.width);
914 png_debug1(3, "row_info->color_type = %d", png_ptr->row_info.color_type);
915 png_debug1(3, "row_info->width = %lu", png_ptr->row_info.width);
916 png_debug1(3, "row_info->channels = %d", png_ptr->row_info.channels);
917 png_debug1(3, "row_info->bit_depth = %d", png_ptr->row_info.bit_depth);
918 png_debug1(3, "row_info->pixel_depth = %d", png_ptr->row_info.pixel_depth);
919 png_debug1(3, "row_info->rowbytes = %lu", png_ptr->row_info.rowbytes);
922 png_memcpy_check(png_ptr, png_ptr->row_buf + 1, row,
923 png_ptr->row_info.rowbytes);
927 if (png_ptr->interlaced && png_ptr->pass < 6 &&
928 (png_ptr->transformations & PNG_INTERLACE))
930 png_do_write_interlace(&(png_ptr->row_info),
931 png_ptr->row_buf + 1, png_ptr->pass);
933 if (!(png_ptr->row_info.width))
935 png_write_finish_row(png_ptr);
942 if (png_ptr->transformations)
943 png_do_write_transformations(png_ptr);
955 if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
956 (png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING))
959 png_do_write_intrapixel(&(png_ptr->row_info), png_ptr->row_buf + 1);
964 png_write_find_filter(png_ptr, &(png_ptr->row_info));
966 if (png_ptr->write_row_fn != NULL)
967 (*(png_ptr->write_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass);
973 png_set_flush(png_structp png_ptr, int nrows)
977 if (png_ptr == NULL)
979 png_ptr->flush_dist = (nrows < 0 ? 0 : nrows);
984 png_write_flush(png_structp png_ptr)
990 if (png_ptr == NULL)
993 if (png_ptr->row_number >= png_ptr->num_rows)
1001 ret = deflate(&png_ptr->zstream, Z_SYNC_FLUSH);
1007 if (png_ptr->zstream.msg != NULL)
1008 png_error(png_ptr, png_ptr->zstream.msg);
1010 png_error(png_ptr, "zlib error");
1013 if (!(png_ptr->zstream.avail_out))
1016 png_write_IDAT(png_ptr, png_ptr->zbuf,
1017 png_ptr->zbuf_size);
1018 png_ptr->zstream.next_out = png_ptr->zbuf;
1019 png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
1025 if (png_ptr->zbuf_size != png_ptr->zstream.avail_out)
1028 png_write_IDAT(png_ptr, png_ptr->zbuf,
1029 png_ptr->zbuf_size - png_ptr->zstream.avail_out);
1030 png_ptr->zstream.next_out = png_ptr->zbuf;
1031 png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
1033 png_ptr->flush_rows = 0;
1034 png_flush(png_ptr);
1042 png_structp png_ptr = NULL;
1053 png_ptr = *png_ptr_ptr;
1055 free_fn = png_ptr->free_fn;
1056 mem_ptr = png_ptr->mem_ptr;
1061 if (png_ptr != NULL)
1063 free_fn = png_ptr->free_fn;
1064 mem_ptr = png_ptr->mem_ptr;
1073 if (png_ptr != NULL)
1075 png_free_data(png_ptr, info_ptr, PNG_FREE_ALL, -1);
1078 if (png_ptr->num_chunk_list)
1080 png_free(png_ptr, png_ptr->chunk_list);
1081 png_ptr->chunk_list = NULL;
1082 png_ptr->num_chunk_list = 0;
1096 if (png_ptr != NULL)
1098 png_write_destroy(png_ptr);
1100 png_destroy_struct_2((png_voidp)png_ptr, (png_free_ptr)free_fn,
1103 png_destroy_struct((png_voidp)png_ptr);
1110 /* Free any memory used in png_ptr struct (old method) */
1112 png_write_destroy(png_structp png_ptr)
1127 deflateEnd(&png_ptr->zstream);
1130 png_free(png_ptr, png_ptr->zbuf);
1131 png_free(png_ptr, png_ptr->row_buf);
1133 png_free(png_ptr, png_ptr->prev_row);
1134 png_free(png_ptr, png_ptr->sub_row);
1135 png_free(png_ptr, png_ptr->up_row);
1136 png_free(png_ptr, png_ptr->avg_row);
1137 png_free(png_ptr, png_ptr->paeth_row);
1141 png_free(png_ptr, png_ptr->time_buffer);
1145 png_free(png_ptr, png_ptr->prev_filters);
1146 png_free(png_ptr, png_ptr->filter_weights);
1147 png_free(png_ptr, png_ptr->inv_filter_weights);
1148 png_free(png_ptr, png_ptr->filter_costs);
1149 png_free(png_ptr, png_ptr->inv_filter_costs);
1154 png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf));
1157 error_fn = png_ptr->error_fn;
1158 warning_fn = png_ptr->warning_fn;
1159 error_ptr = png_ptr->error_ptr;
1161 free_fn = png_ptr->free_fn;
1164 png_memset(png_ptr, 0, png_sizeof(png_struct));
1166 png_ptr->error_fn = error_fn;
1167 png_ptr->warning_fn = warning_fn;
1168 png_ptr->error_ptr = error_ptr;
1170 png_ptr->free_fn = free_fn;
1174 png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof(jmp_buf));
1180 png_set_filter(png_structp png_ptr, int method, int filters)
1184 if (png_ptr == NULL)
1187 if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
1198 case 7: png_warning(png_ptr, "Unknown row filter for method 0");
1201 png_ptr->do_filter = PNG_FILTER_NONE; break;
1204 png_ptr->do_filter = PNG_FILTER_SUB; break;
1206 png_ptr->do_filter = PNG_FILTER_UP; break;
1208 png_ptr->do_filter = PNG_FILTER_AVG; break;
1210 png_ptr->do_filter = PNG_FILTER_PAETH; break;
1211 default: png_ptr->do_filter = (png_byte)filters; break;
1213 default: png_warning(png_ptr, "Unknown row filter for method 0");
1226 if (png_ptr->row_buf != NULL)
1229 if ((png_ptr->do_filter & PNG_FILTER_SUB) && png_ptr->sub_row == NULL)
1231 png_ptr->sub_row = (png_bytep)png_malloc(png_ptr,
1232 (png_ptr->rowbytes + 1));
1233 png_ptr->sub_row[0] = PNG_FILTER_VALUE_SUB;
1236 if ((png_ptr->do_filter & PNG_FILTER_UP) && png_ptr->up_row == NULL)
1238 if (png_ptr->prev_row == NULL)
1240 png_warning(png_ptr, "Can't add Up filter after starting");
1241 png_ptr->do_filter &= ~PNG_FILTER_UP;
1245 png_ptr->up_row = (png_bytep)png_malloc(png_ptr,
1246 (png_ptr->rowbytes + 1));
1247 png_ptr->up_row[0] = PNG_FILTER_VALUE_UP;
1251 if ((png_ptr->do_filter & PNG_FILTER_AVG) && png_ptr->avg_row == NULL)
1253 if (png_ptr->prev_row == NULL)
1255 png_warning(png_ptr, "Can't add Average filter after starting");
1256 png_ptr->do_filter &= ~PNG_FILTER_AVG;
1260 png_ptr->avg_row = (png_bytep)png_malloc(png_ptr,
1261 (png_ptr->rowbytes + 1));
1262 png_ptr->avg_row[0] = PNG_FILTER_VALUE_AVG;
1266 if ((png_ptr->do_filter & PNG_FILTER_PAETH) &&
1267 png_ptr->paeth_row == NULL)
1269 if (png_ptr->prev_row == NULL)
1271 png_warning(png_ptr, "Can't add Paeth filter after starting");
1272 png_ptr->do_filter &= (png_byte)(~PNG_FILTER_PAETH);
1276 png_ptr->paeth_row = (png_bytep)png_malloc(png_ptr,
1277 (png_ptr->rowbytes + 1));
1278 png_ptr->paeth_row[0] = PNG_FILTER_VALUE_PAETH;
1282 if (png_ptr->do_filter == PNG_NO_FILTERS)
1284 png_ptr->do_filter = PNG_FILTER_NONE;
1288 png_error(png_ptr, "Unknown custom filter method");
1300 png_set_filter_heuristics(png_structp png_ptr, int heuristic_method,
1308 if (png_ptr == NULL)
1312 png_warning(png_ptr, "Unknown filter heuristic method");
1327 png_ptr->num_prev_filters = (png_byte)num_weights;
1328 png_ptr->heuristic_method = (png_byte)heuristic_method;
1332 if (png_ptr->prev_filters == NULL)
1334 png_ptr->prev_filters = (png_bytep)png_malloc(png_ptr,
1340 png_ptr->prev_filters[i] = 255;
1344 if (png_ptr->filter_weights == NULL)
1346 png_ptr->filter_weights = (png_uint_16p)png_malloc(png_ptr,
1349 png_ptr->inv_filter_weights = (png_uint_16p)png_malloc(png_ptr,
1353 png_ptr->inv_filter_weights[i] =
1354 png_ptr->filter_weights[i] = PNG_WEIGHT_FACTOR;
1362 png_ptr->inv_filter_weights[i] =
1363 png_ptr->filter_weights[i] = PNG_WEIGHT_FACTOR;
1367 png_ptr->inv_filter_weights[i] =
1369 png_ptr->filter_weights[i] =
1376 * need to be based on png_ptr->filter.
1378 if (png_ptr->filter_costs == NULL)
1380 png_ptr->filter_costs = (png_uint_16p)png_malloc(png_ptr,
1383 png_ptr->inv_filter_costs = (png_uint_16p)png_malloc(png_ptr,
1388 png_ptr->inv_filter_costs[i] =
1389 png_ptr->filter_costs[i] = PNG_COST_FACTOR;
1404 png_ptr->inv_filter_costs[i] =
1405 png_ptr->filter_costs[i] = PNG_COST_FACTOR;
1409 png_ptr->inv_filter_costs[i] =
1411 png_ptr->filter_costs[i] =
1419 png_set_compression_level(png_structp png_ptr, int level)
1423 if (png_ptr == NULL)
1425 png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_LEVEL;
1426 png_ptr->zlib_level = level;
1430 png_set_compression_mem_level(png_structp png_ptr, int mem_level)
1434 if (png_ptr == NULL)
1436 png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL;
1437 png_ptr->zlib_mem_level = mem_level;
1441 png_set_compression_strategy(png_structp png_ptr, int strategy)
1445 if (png_ptr == NULL)
1447 png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_STRATEGY;
1448 png_ptr->zlib_strategy = strategy;
1452 png_set_compression_window_bits(png_structp png_ptr, int window_bits)
1454 if (png_ptr == NULL)
1457 png_warning(png_ptr, "Only compression windows <= 32k supported by PNG");
1459 png_warning(png_ptr, "Only compression windows >= 256 supported by PNG");
1464 png_warning(png_ptr, "Compression window is being reset to 512");
1468 png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS;
1469 png_ptr->zlib_window_bits = window_bits;
1473 png_set_compression_method(png_structp png_ptr, int method)
1477 if (png_ptr == NULL)
1480 png_warning(png_ptr, "Only compression method 8 is supported by PNG");
1481 png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_METHOD;
1482 png_ptr->zlib_method = method;
1486 png_set_write_status_fn(png_structp png_ptr, png_write_status_ptr write_row_fn)
1488 if (png_ptr == NULL)
1490 png_ptr->write_row_fn = write_row_fn;
1495 png_set_write_user_transform_fn(png_structp png_ptr, png_user_transform_ptr
1500 if (png_ptr == NULL)
1502 png_ptr->transformations |= PNG_USER_TRANSFORM;
1503 png_ptr->write_user_transform_fn = write_user_transform_fn;
1510 png_write_png(png_structp png_ptr, png_infop info_ptr,
1513 if (png_ptr == NULL || info_ptr == NULL)
1517 png_write_info(png_ptr, info_ptr);
1524 png_set_invert_mono(png_ptr);
1533 png_set_shift(png_ptr, &info_ptr->sig_bit);
1539 png_set_packing(png_ptr);
1545 png_set_swap_alpha(png_ptr);
1551 png_set_filler(png_ptr, 0, PNG_FILLER_AFTER);
1553 png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE);
1559 png_set_bgr(png_ptr);
1565 png_set_swap(png_ptr);
1571 png_set_packswap(png_ptr);
1577 png_set_invert_alpha(png_ptr);
1584 png_write_image(png_ptr, info_ptr->row_pointers);
1587 png_write_end(png_ptr, info_ptr);