Home | History | Annotate | Download | only in libpng

Lines Matching refs:png_ptr

24 write_unknown_chunks(png_structrp png_ptr, png_const_inforp info_ptr,
42 int keep = png_handle_as_unknown(png_ptr, up->name);
60 png_ptr->unknown_default == PNG_HANDLE_CHUNK_ALWAYS)))
65 png_warning(png_ptr, "Writing zero-length unknown chunk");
67 png_write_chunk(png_ptr, up->name, up->data, up->size);
84 png_write_info_before_PLTE(png_structrp png_ptr, png_const_inforp info_ptr)
88 if (png_ptr == NULL || info_ptr == NULL)
91 if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE))
94 png_write_sig(png_ptr);
97 if ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE) && \
98 (png_ptr->mng_features_permitted))
100 png_warning(png_ptr, "MNG features are not allowed in a PNG datastream");
101 png_ptr->mng_features_permitted = 0;
106 png_write_IHDR(png_ptr, info_ptr->width, info_ptr->height,
135 png_write_gAMA_fixed(png_ptr, info_ptr->colorspace.gamma);
149 png_app_warning(png_ptr,
153 png_write_iCCP(png_ptr, info_ptr->iccp_name,
164 png_write_sRGB(png_ptr, info_ptr->colorspace.rendering_intent);
170 png_write_sBIT(png_ptr, &(info_ptr->sig_bit), info_ptr->color_type);
178 png_write_cHRM_fixed(png_ptr, &info_ptr->colorspace.end_points_xy);
183 write_unknown_chunks(png_ptr, info_ptr, PNG_HAVE_IHDR);
186 png_ptr->mode |= PNG_WROTE_INFO_BEFORE_PLTE;
191 png_write_info(png_structrp png_ptr, png_const_inforp info_ptr)
199 if (png_ptr == NULL || info_ptr == NULL)
202 png_write_info_before_PLTE(png_ptr, info_ptr);
205 png_write_PLTE(png_ptr, info_ptr->palette,
209 png_error(png_ptr, "Valid palette required for paletted images");
216 if ((png_ptr->transformations & PNG_INVERT_ALPHA) &&
225 png_write_tRNS(png_ptr, info_ptr->trans_alpha, &(info_ptr->trans_color),
231 png_write_bKGD(png_ptr, &(info_ptr->background), info_ptr->color_type);
236 png_write_hIST(png_ptr, info_ptr->hist, info_ptr->num_palette);
241 png_write_oFFs(png_ptr, info_ptr->x_offset, info_ptr->y_offset,
247 png_write_pCAL(png_ptr, info_ptr->pcal_purpose, info_ptr->pcal_X0,
254 png_write_sCAL_s(png_ptr, (int)info_ptr->scal_unit,
260 png_write_pHYs(png_ptr, info_ptr->x_pixels_per_unit,
267 png_write_tIME(png_ptr, &(info_ptr->mod_time));
268 png_ptr->mode |= PNG_WROTE_tIME;
275 png_write_sPLT(png_ptr, info_ptr->splt_palettes + i);
289 png_write_iTXt(png_ptr,
296 png_warning(png_ptr, "Unable to write international text");
307 png_write_zTXt(png_ptr, info_ptr->text[i].key,
311 png_warning(png_ptr, "Unable to write compressed text");
321 png_write_tEXt(png_ptr, info_ptr->text[i].key,
328 png_warning(png_ptr, "Unable to write uncompressed text");
335 write_unknown_chunks(png_ptr, info_ptr, PNG_HAVE_PLTE);
345 png_write_end(png_structrp png_ptr, png_inforp info_ptr)
349 if (png_ptr == NULL)
352 if (!(png_ptr->mode & PNG_HAVE_IDAT))
353 png_error(png_ptr, "No IDATs written into file");
356 if (png_ptr->num_palette_max > png_ptr->num_palette)
357 png_benign_error(png_ptr, "Wrote palette index exceeding num_palette");
369 !(png_ptr->mode & PNG_WROTE_tIME))
370 png_write_tIME(png_ptr, &(info_ptr->mod_time));
384 png_write_iTXt(png_ptr,
391 png_warning(png_ptr, "Unable to write international text");
401 png_write_zTXt(png_ptr, info_ptr->text[i].key,
405 png_warning(png_ptr, "Unable to write compressed text");
415 png_write_tEXt(png_ptr, info_ptr->text[i].key,
418 png_warning(png_ptr, "Unable to write uncompressed text");
427 write_unknown_chunks(png_ptr, info_ptr, PNG_AFTER_IDAT);
431 png_ptr->mode |= PNG_AFTER_IDAT;
434 png_write_IEND(png_ptr);
437 * do not set png_ptr->output_flush_fn to crash. If your application
444 png_flush(png_ptr);
475 /* Initialize png_ptr structure, and allocate any memory needed */
481 png_structrp png_ptr = png_create_png_struct(user_png_ver, error_ptr,
488 /* Alternate initialize png_ptr structure, and allocate any memory needed */
494 png_structrp png_ptr = png_create_png_struct(user_png_ver, error_ptr,
497 if (png_ptr != NULL)
502 png_ptr->zbuffer_size = PNG_ZBUF_SIZE;
508 png_ptr->zlib_strategy = PNG_Z_DEFAULT_STRATEGY;
509 png_ptr->zlib_level = PNG_Z_DEFAULT_COMPRESSION;
510 png_ptr->zlib_mem_level = 8;
511 png_ptr->zlib_window_bits = 15;
512 png_ptr->zlib_method = 8;
515 png_ptr->zlib_text_strategy = PNG_TEXT_Z_DEFAULT_STRATEGY;
516 png_ptr->zlib_text_level = PNG_TEXT_Z_DEFAULT_COMPRESSION;
517 png_ptr->zlib_text_mem_level = 8;
518 png_ptr->zlib_text_window_bits = 15;
519 png_ptr->zlib_text_method = 8;
528 png_ptr->flags |= PNG_FLAG_BENIGN_ERRORS_WARN;
538 png_ptr->flags |= PNG_FLAG_APP_WARNINGS_WARN;
545 png_set_write_fn(png_ptr, NULL, NULL, NULL);
548 return png_ptr;
558 png_write_rows(png_structrp png_ptr, png_bytepp row,
566 if (png_ptr == NULL)
572 png_write_row(png_ptr, *rp);
580 png_write_image(png_structrp png_ptr, png_bytepp image)
586 if (png_ptr == NULL)
595 num_pass = png_set_interlace_handling(png_ptr);
603 for (i = 0, rp = image; i < png_ptr->height; i++, rp++)
605 png_write_row(png_ptr, *rp);
677 png_write_row(png_structrp png_ptr, png_const_bytep row)
682 if (png_ptr == NULL)
686 png_ptr->row_number, png_ptr->pass);
689 if (png_ptr->row_number == 0 && png_ptr->pass == 0)
692 if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE))
693 png_error(png_ptr,
698 if (png_ptr->transformations & PNG_INVERT_MONO)
699 png_warning(png_ptr, "PNG_WRITE_INVERT_SUPPORTED is not defined");
703 if (png_ptr->transformations & PNG_FILLER)
704 png_warning(png_ptr, "PNG_WRITE_FILLER_SUPPORTED is not defined");
708 if (png_ptr->transformations & PNG_PACKSWAP)
709 png_warning(png_ptr,
714 if (png_ptr->transformations & PNG_PACK)
715 png_warning(png_ptr, "PNG_WRITE_PACK_SUPPORTED is not defined");
719 if (png_ptr->transformations & PNG_SHIFT)
720 png_warning(png_ptr, "PNG_WRITE_SHIFT_SUPPORTED is not defined");
724 if (png_ptr->transformations & PNG_BGR)
725 png_warning(png_ptr, "PNG_WRITE_BGR_SUPPORTED is not defined");
729 if (png_ptr->transformations & PNG_SWAP_BYTES)
730 png_warning(png_ptr, "PNG_WRITE_SWAP_SUPPORTED is not defined");
733 png_write_start_row(png_ptr);
738 if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE))
740 switch (png_ptr->pass)
743 if (png_ptr->row_number & 0x07)
745 png_write_finish_row(png_ptr);
751 if ((png_ptr->row_number & 0x07) || png_ptr->width < 5)
753 png_write_finish_row(png_ptr);
759 if ((png_ptr->row_number & 0x07) != 4)
761 png_write_finish_row(png_ptr);
767 if ((png_ptr->row_number & 0x03) || png_ptr->width < 3)
769 png_write_finish_row(png_ptr);
775 if ((png_ptr->row_number & 0x03) != 2)
777 png_write_finish_row(png_ptr);
783 if ((png_ptr->row_number & 0x01) || png_ptr->width < 2)
785 png_write_finish_row(png_ptr);
791 if (!(png_ptr->row_number & 0x01))
793 png_write_finish_row(png_ptr);
805 row_info.color_type = png_ptr->color_type;
806 row_info.width = png_ptr->usr_width;
807 row_info.channels = png_ptr->usr_channels;
808 row_info.bit_depth = png_ptr->usr_bit_depth;
820 memcpy(png_ptr->row_buf + 1, row, row_info.rowbytes);
824 if (png_ptr->interlaced && png_ptr->pass < 6 &&
825 (png_ptr->transformations & PNG_INTERLACE))
827 png_do_write_interlace(&row_info, png_ptr->row_buf + 1, png_ptr->pass);
831 png_write_finish_row(png_ptr);
839 if (png_ptr->transformations)
840 png_do_write_transformations(png_ptr, &row_info);
846 if (row_info.pixel_depth != png_ptr->pixel_depth ||
847 row_info.pixel_depth != png_ptr->transformed_pixel_depth)
848 png_error(png_ptr, "internal write transform logic error");
860 if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
861 (png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING))
864 png_do_write_intrapixel(&row_info, png_ptr->row_buf + 1);
872 png_ptr->num_palette_max >= 0)
873 png_do_check_palette_indexes(png_ptr, &row_info);
877 png_write_find_filter(png_ptr, &row_info);
879 if (png_ptr->write_row_fn != NULL)
880 (*(png_ptr->write_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass);
886 png_set_flush(png_structrp png_ptr, int nrows)
890 if (png_ptr == NULL)
893 png_ptr->flush_dist = (nrows < 0 ? 0 : nrows);
898 png_write_flush(png_structrp png_ptr)
902 if (png_ptr == NULL)
906 if (png_ptr->row_number >= png_ptr->num_rows)
909 png_compress_IDAT(png_ptr, NULL, 0, Z_SYNC_FLUSH);
910 png_ptr->flush_rows = 0;
911 png_flush(png_ptr);
916 static void png_reset_filter_heuristics(png_structrp png_ptr);/* forward decl */
919 /* Free any memory used in png_ptr struct without freeing the struct itself. */
921 png_write_destroy(png_structrp png_ptr)
926 if (png_ptr->flags & PNG_FLAG_ZSTREAM_INITIALIZED)
927 deflateEnd(&png_ptr->zstream);
930 png_free_buffer_list(png_ptr, &png_ptr->zbuffer_list);
931 png_free(png_ptr, png_ptr->row_buf);
933 png_free(png_ptr, png_ptr->prev_row);
934 png_free(png_ptr, png_ptr->sub_row);
935 png_free(png_ptr, png_ptr->up_row);
936 png_free(png_ptr, png_ptr->avg_row);
937 png_free(png_ptr, png_ptr->paeth_row);
942 png_reset_filter_heuristics(png_ptr);
943 png_free(png_ptr, png_ptr->filter_costs);
944 png_free(png_ptr, png_ptr->inv_filter_costs);
948 png_free(png_ptr, png_ptr->chunk_list);
962 * has no png_ptr.)
971 png_structrp png_ptr = *png_ptr_ptr;
973 if (png_ptr != NULL) /* added in libpng 1.6.0 */
975 png_destroy_info_struct(png_ptr, info_ptr_ptr);
978 png_write_destroy(png_ptr);
979 png_destroy_png_struct(png_ptr);
986 png_set_filter(png_structrp png_ptr, int method, int filters)
990 if (png_ptr == NULL)
994 if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
1006 case 7: png_app_error(png_ptr, "Unknown row filter for method 0");
1010 png_ptr->do_filter = PNG_FILTER_NONE; break;
1014 png_ptr->do_filter = PNG_FILTER_SUB; break;
1017 png_ptr->do_filter = PNG_FILTER_UP; break;
1020 png_ptr->do_filter = PNG_FILTER_AVG; break;
1023 png_ptr->do_filter = PNG_FILTER_PAETH; break;
1026 png_ptr->do_filter = (png_byte)filters; break;
1029 png_app_error(png_ptr, "Unknown row filter for method 0");
1042 if (png_ptr->row_buf != NULL)
1045 if ((png_ptr->do_filter & PNG_FILTER_SUB) && png_ptr->sub_row == NULL)
1047 png_ptr->sub_row = (png_bytep)png_malloc(png_ptr,
1048 (png_ptr->rowbytes + 1));
1049 png_ptr->sub_row[0] = PNG_FILTER_VALUE_SUB;
1052 if ((png_ptr->do_filter & PNG_FILTER_UP) && png_ptr->up_row == NULL)
1054 if (png_ptr->prev_row == NULL)
1056 png_warning(png_ptr, "Can't add Up filter after starting");
1057 png_ptr->do_filter = (png_byte)(png_ptr->do_filter &
1063 png_ptr->up_row = (png_bytep)png_malloc(png_ptr,
1064 (png_ptr->rowbytes + 1));
1065 png_ptr->up_row[0] = PNG_FILTER_VALUE_UP;
1069 if ((png_ptr->do_filter & PNG_FILTER_AVG) && png_ptr->avg_row == NULL)
1071 if (png_ptr->prev_row == NULL)
1073 png_warning(png_ptr, "Can't add Average filter after starting");
1074 png_ptr->do_filter = (png_byte)(png_ptr->do_filter &
1080 png_ptr->avg_row = (png_bytep)png_malloc(png_ptr,
1081 (png_ptr->rowbytes + 1));
1082 png_ptr->avg_row[0] = PNG_FILTER_VALUE_AVG;
1086 if ((png_ptr->do_filter & PNG_FILTER_PAETH) &&
1087 png_ptr->paeth_row == NULL)
1089 if (png_ptr->prev_row == NULL)
1091 png_warning(png_ptr, "Can't add Paeth filter after starting");
1092 png_ptr->do_filter &= (png_byte)(~PNG_FILTER_PAETH);
1097 png_ptr->paeth_row = (png_bytep)png_malloc(png_ptr,
1098 (png_ptr->rowbytes + 1));
1099 png_ptr->paeth_row[0] = PNG_FILTER_VALUE_PAETH;
1103 if (png_ptr->do_filter == PNG_NO_FILTERS)
1105 png_ptr->do_filter = PNG_FILTER_NONE;
1109 png_error(png_ptr, "Unknown custom filter method");
1122 png_reset_filter_heuristics(png_structrp png_ptr)
1129 png_ptr->num_prev_filters = 0;
1130 png_ptr->heuristic_method = PNG_FILTER_HEURISTIC_UNWEIGHTED;
1131 if (png_ptr->prev_filters != NULL)
1133 png_bytep old = png_ptr->prev_filters;
1134 png_ptr->prev_filters = NULL;
1135 png_free(png_ptr, old);
1137 if (png_ptr->filter_weights != NULL)
1139 png_uint_16p old = png_ptr->filter_weights;
1140 png_ptr->filter_weights = NULL;
1141 png_free(png_ptr, old);
1144 if (png_ptr->inv_filter_weights != NULL)
1146 png_uint_16p old = png_ptr->inv_filter_weights;
1147 png_ptr->inv_filter_weights = NULL;
1148 png_free(png_ptr, old);
1155 png_init_filter_heuristics(png_structrp png_ptr, int heuristic_method,
1158 if (png_ptr == NULL)
1162 png_reset_filter_heuristics(png_ptr);
1174 png_ptr->prev_filters = (png_bytep)png_malloc(png_ptr,
1180 png_ptr->prev_filters[i] = 255;
1183 png_ptr->filter_weights = (png_uint_16p)png_malloc(png_ptr,
1186 png_ptr->inv_filter_weights = (png_uint_16p)png_malloc(png_ptr,
1191 png_ptr->inv_filter_weights[i] =
1192 png_ptr->filter_weights[i] = PNG_WEIGHT_FACTOR;
1196 png_ptr->num_prev_filters = (png_byte)num_weights;
1200 * need to be based on png_ptr->filter.
1202 if (png_ptr->filter_costs == NULL)
1204 png_ptr->filter_costs = (png_uint_16p)png_malloc(png_ptr,
1207 png_ptr->inv_filter_costs = (png_uint_16p)png_malloc(png_ptr,
1213 png_ptr->inv_filter_costs[i] =
1214 png_ptr->filter_costs[i] = PNG_COST_FACTOR;
1218 png_ptr->heuristic_method = PNG_FILTER_HEURISTIC_WEIGHTED;
1230 png_warning(png_ptr, "Unknown filter heuristic method");
1238 png_set_filter_heuristics(png_structrp png_ptr, int heuristic_method,
1247 if (!png_init_filter_heuristics(png_ptr, heuristic_method, num_weights))
1258 png_ptr->inv_filter_weights[i] =
1259 png_ptr->filter_weights[i] = PNG_WEIGHT_FACTOR;
1264 png_ptr->inv_filter_weights[i] =
1267 png_ptr->filter_weights[i] =
1281 png_ptr->inv_filter_costs[i] =
1284 png_ptr->filter_costs[i] =
1293 png_set_filter_heuristics_fixed(png_structrp png_ptr, int heuristic_method,
1302 if (!png_init_filter_heuristics(png_ptr, heuristic_method, num_weights))
1313 png_ptr->inv_filter_weights[i] =
1314 png_ptr->filter_weights[i] = PNG_WEIGHT_FACTOR;
1319 png_ptr->inv_filter_weights[i] = (png_uint_16)
1322 png_ptr->filter_weights[i] = (png_uint_16)((PNG_WEIGHT_FACTOR*
1346 png_ptr->inv_filter_costs[i] = (png_uint_16)tmp;
1351 png_ptr->filter_costs[i] = (png_uint_16)tmp;
1359 png_set_compression_level(png_structrp png_ptr, int level)
1363 if (png_ptr == NULL)
1366 png_ptr->zlib_level = level;
1370 png_set_compression_mem_level(png_structrp png_ptr, int mem_level)
1374 if (png_ptr == NULL)
1377 png_ptr->zlib_mem_level = mem_level;
1381 png_set_compression_strategy(png_structrp png_ptr, int strategy)
1385 if (png_ptr == NULL)
1390 png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_STRATEGY;
1391 png_ptr->zlib_strategy = strategy;
1398 png_set_compression_window_bits(png_structrp png_ptr, int window_bits)
1400 if (png_ptr == NULL)
1411 png_warning(png_ptr, "Only compression windows <= 32k supported by PNG");
1417 png_warning(png_ptr, "Only compression windows >= 256 supported by PNG");
1421 png_ptr->zlib_window_bits = window_bits;
1425 png_set_compression_method(png_structrp png_ptr, int method)
1429 if (png_ptr == NULL)
1436 png_warning(png_ptr, "Only compression method 8 is supported by PNG");
1438 png_ptr->zlib_method = method;
1444 png_set_text_compression_level(png_structrp png_ptr, int level)
1448 if (png_ptr == NULL)
1451 png_ptr->zlib_text_level = level;
1455 png_set_text_compression_mem_level(png_structrp png_ptr, int mem_level)
1459 if (png_ptr == NULL)
1462 png_ptr->zlib_text_mem_level = mem_level;
1466 png_set_text_compression_strategy(png_structrp png_ptr, int strategy)
1470 if (png_ptr == NULL)
1473 png_ptr->zlib_text_strategy = strategy;
1480 png_set_text_compression_window_bits(png_structrp png_ptr, int window_bits)
1482 if (png_ptr == NULL)
1487 png_warning(png_ptr, "Only compression windows <= 32k supported by PNG");
1493 png_warning(png_ptr, "Only compression windows >= 256 supported by PNG");
1497 png_ptr->zlib_text_window_bits = window_bits;
1501 png_set_text_compression_method(png_structrp png_ptr, int method)
1505 if (png_ptr == NULL)
1509 png_warning(png_ptr, "Only compression method 8 is supported by PNG");
1511 png_ptr->zlib_text_method = method;
1517 png_set_write_status_fn(png_structrp png_ptr
1519 if (png_ptr == NULL)
1522 png_ptr->write_row_fn = write_row_fn;
1527 png_set_write_user_transform_fn(png_structrp png_ptr, png_user_transform_ptr
1532 if (png_ptr == NULL)
1535 png_ptr->transformations |= PNG_USER_TRANSFORM;
1536 png_ptr->write_user_transform_fn = write_user_transform_fn;
1543 png_write_png(png_structrp png_ptr, png_inforp info_ptr,
1546 if (png_ptr == NULL || info_ptr == NULL)
1551 png_app_error(png_ptr, "no rows for png_write_image to write");
1556 png_write_info(png_ptr, info_ptr);
1563 png_set_invert_mono(png_ptr);
1565 png_app_error(png_ptr, "PNG_TRANSFORM_INVERT_MONO not supported");
1574 png_set_shift(png_ptr, &info_ptr->sig_bit);
1576 png_app_error(png_ptr, "PNG_TRANSFORM_SHIFT not supported");
1582 png_set_packing(png_ptr);
1584 png_app_error(png_ptr, "PNG_TRANSFORM_PACKING not supported");
1590 png_set_swap_alpha(png_ptr);
1592 png_app_error(png_ptr, "PNG_TRANSFORM_SWAP_ALPHA not supported");
1606 png_app_error(png_ptr,
1610 png_set_filler(png_ptr, 0, PNG_FILLER_AFTER);
1614 png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE);
1616 png_app_error(png_ptr, "PNG_TRANSFORM_STRIP_FILLER not supported");
1623 png_set_bgr(png_ptr);
1625 png_app_error(png_ptr, "PNG_TRANSFORM_BGR not supported");
1631 png_set_swap(png_ptr);
1633 png_app_error(png_ptr, "PNG_TRANSFORM_SWAP_ENDIAN not supported");
1639 png_set_packswap(png_ptr);
1641 png_app_error(png_ptr, "PNG_TRANSFORM_PACKSWAP not supported");
1647 png_set_invert_alpha(png_ptr);
1649 png_app_error(png_ptr, "PNG_TRANSFORM_INVERT_ALPHA not supported");
1655 png_write_image(png_ptr, info_ptr->row_pointers);
1658 png_write_end(png_ptr, info_ptr);
1671 png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, image,
1674 if (png_ptr != NULL)
1676 png_infop info_ptr = png_create_info_struct(png_ptr);
1681 png_malloc_warn(png_ptr, (sizeof *control)));
1687 control->png_ptr = png_ptr;
1696 png_destroy_info_struct(png_ptr, &info_ptr);
1699 png_destroy_write_struct(&png_ptr, NULL);
1720 /* Write png_uint_16 input to a 16-bit PNG; the png_ptr has already been set to
1730 png_structrp png_ptr = image->opaque->png_ptr;
1756 png_error(png_ptr, "png_write_image: internal call error");
1819 png_write_row(png_ptr, png_voidcast(png_const_bytep, display->local_row));
1887 png_structrp png_ptr = image->opaque->png_ptr;
1943 png_write_row(png_ptr, png_voidcast(png_const_bytep,
1969 png_write_row(png_ptr, output_row);
2113 png_set_PLTE(image->opaque->png_ptr, image->opaque->info_ptr, palette,
2117 png_set_tRNS(image->opaque->png_ptr, image->opaque->info_ptr, tRNS,
2129 png_structrp png_ptr = image->opaque->png_ptr;
2140 png_set_benign_errors(png_ptr, 0/*error*/);
2154 png_set_IHDR(png_ptr, info_ptr, image->width, image->height,
2163 png_error(image->opaque->png_ptr,
2168 png_set_IHDR(png_ptr, info_ptr, image->width, image->height,
2183 png_set_gAMA_fixed(png_ptr, info_ptr, PNG_GAMMA_LINEAR);
2186 png_set_cHRM_fixed(png_ptr, info_ptr,
2196 png_set_sRGB(png_ptr, info_ptr, PNG_sRGB_INTENT_PERCEPTUAL);
2202 png_set_gAMA_fixed(png_ptr, info_ptr, PNG_GAMMA_sRGB_INVERSE);
2205 png_write_info(png_ptr, info_ptr);
2217 png_set_swap(png_ptr);
2224 png_set_bgr(png_ptr);
2233 png_set_swap_alpha(png_ptr);
2242 png_set_packing(png_ptr);
2247 png_error(png_ptr, "png_write_image: unsupported transformation");
2266 png_set_filter(png_ptr, PNG_FILTER_TYPE_BASE, PNG_NO_FILTERS);
2272 png_set_compression_level(png_ptr, 3);
2281 png_bytep row = png_voidcast(png_bytep, png_malloc(png_ptr,
2282 png_get_rowbytes(png_ptr, info_ptr)));
2292 png_free(png_ptr, row);
2310 png_write_row(png_ptr, row);
2315 png_write_end(png_ptr, info_ptr);
2337 image->opaque->png_ptr->io_ptr = file;