Home | History | Annotate | Download | only in libpng16

Lines Matching full: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) == 0)
94 png_write_sig(png_ptr);
97 if ((png_ptr->mode & PNG_HAVE_PNG_SIGNATURE) != 0 && \
98 png_ptr->mng_features_permitted != 0)
100 png_warning(png_ptr,
102 png_ptr->mng_features_permitted = 0;
107 png_write_IHDR(png_ptr, info_ptr->width, info_ptr->height,
136 png_write_gAMA_fixed(png_ptr, info_ptr->colorspace.gamma);
150 png_app_warning(png_ptr,
154 png_write_iCCP(png_ptr, info_ptr->iccp_name,
165 png_write_sRGB(png_ptr, info_ptr->colorspace.rendering_intent);
171 png_write_sBIT(png_ptr, &(info_ptr->sig_bit), info_ptr->color_type);
179 png_write_cHRM_fixed(png_ptr, &info_ptr->colorspace.end_points_xy);
184 write_unknown_chunks(png_ptr, info_ptr, PNG_HAVE_IHDR);
187 png_ptr->mode |= PNG_WROTE_INFO_BEFORE_PLTE;
192 png_write_info(png_structrp png_ptr, png_const_inforp info_ptr)
200 if (png_ptr == NULL || info_ptr == NULL)
203 png_write_info_before_PLTE(png_ptr, info_ptr);
206 png_write_PLTE(png_ptr, info_ptr->palette,
210 png_error(png_ptr, "Valid palette required for paletted images");
217 if ((png_ptr->transformations & PNG_INVERT_ALPHA) != 0 &&
231 png_write_tRNS(png_ptr, info_ptr->trans_alpha, &(info_ptr->trans_color),
237 png_write_bKGD(png_ptr, &(info_ptr->background), info_ptr->color_type);
242 png_write_hIST(png_ptr, info_ptr->hist, info_ptr->num_palette);
247 png_write_oFFs(png_ptr, info_ptr->x_offset, info_ptr->y_offset,
253 png_write_pCAL(png_ptr, info_ptr->pcal_purpose, info_ptr->pcal_X0,
260 png_write_sCAL_s(png_ptr, (int)info_ptr->scal_unit,
266 png_write_pHYs(png_ptr, info_ptr->x_pixels_per_unit,
273 png_write_tIME(png_ptr, &(info_ptr->mod_time));
274 png_ptr->mode |= PNG_WROTE_tIME;
281 png_write_sPLT(png_ptr, info_ptr->splt_palettes + i);
295 png_write_iTXt(png_ptr,
307 png_warning(png_ptr, "Unable to write international text");
316 png_write_zTXt(png_ptr, info_ptr->text[i].key,
321 png_warning(png_ptr, "Unable to write compressed text");
329 png_write_tEXt(png_ptr, info_ptr->text[i].key,
336 png_warning(png_ptr, "Unable to write uncompressed text");
343 write_unknown_chunks(png_ptr, info_ptr, PNG_HAVE_PLTE);
353 png_write_end(png_structrp png_ptr, png_inforp info_ptr)
357 if (png_ptr == NULL)
360 if ((png_ptr->mode & PNG_HAVE_IDAT) == 0)
361 png_error(png_ptr, "No IDATs written into file");
364 if (png_ptr->num_palette_max > png_ptr->num_palette)
365 png_benign_error(png_ptr, "Wrote palette index exceeding num_palette");
377 (png_ptr->mode & PNG_WROTE_tIME) == 0)
378 png_write_tIME(png_ptr, &(info_ptr->mod_time));
392 png_write_iTXt(png_ptr,
404 png_warning(png_ptr, "Unable to write international text");
412 png_write_zTXt(png_ptr, info_ptr->text[i].key,
417 png_warning(png_ptr, "Unable to write compressed text");
425 png_write_tEXt(png_ptr, info_ptr->text[i].key,
430 png_warning(png_ptr, "Unable to write uncompressed text");
436 write_unknown_chunks(png_ptr, info_ptr, PNG_AFTER_IDAT);
440 png_ptr->mode |= PNG_AFTER_IDAT;
443 png_write_IEND(png_ptr);
447 * do not set png_ptr->output_flush_fn to crash. If your application
454 png_flush(png_ptr);
485 /* Initialize png_ptr structure, and allocate any memory needed */
491 png_structrp png_ptr = png_create_png_struct(user_png_ver, error_ptr,
498 /* Alternate initialize png_ptr structure, and allocate any memory needed */
504 png_structrp png_ptr = png_create_png_struct(user_png_ver, error_ptr,
507 if (png_ptr != NULL)
512 png_ptr->zbuffer_size = PNG_ZBUF_SIZE;
518 png_ptr->zlib_strategy = PNG_Z_DEFAULT_STRATEGY;
519 png_ptr->zlib_level = PNG_Z_DEFAULT_COMPRESSION;
520 png_ptr->zlib_mem_level = 8;
521 png_ptr->zlib_window_bits = 15;
522 png_ptr->zlib_method = 8;
525 png_ptr->zlib_text_strategy = PNG_TEXT_Z_DEFAULT_STRATEGY;
526 png_ptr->zlib_text_level = PNG_TEXT_Z_DEFAULT_COMPRESSION;
527 png_ptr->zlib_text_mem_level = 8;
528 png_ptr->zlib_text_window_bits = 15;
529 png_ptr->zlib_text_method = 8;
541 png_ptr->flags |= PNG_FLAG_BENIGN_ERRORS_WARN;
548 png_ptr->flags |= PNG_FLAG_APP_WARNINGS_WARN;
555 png_set_write_fn(png_ptr, NULL, NULL, NULL);
558 return png_ptr;
568 png_write_rows(png_structrp png_ptr, png_bytepp row,
576 if (png_ptr == NULL)
582 png_write_row(png_ptr, *rp);
590 png_write_image(png_structrp png_ptr, png_bytepp image)
596 if (png_ptr == NULL)
605 num_pass = png_set_interlace_handling(png_ptr);
613 for (i = 0, rp = image; i < png_ptr->height; i++, rp++)
615 png_write_row(png_ptr, *rp);
687 png_write_row(png_structrp png_ptr, png_const_bytep row)
692 if (png_ptr == NULL)
696 png_ptr->row_number, png_ptr->pass);
699 if (png_ptr->row_number == 0 && png_ptr->pass == 0)
702 if ((png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE) == 0)
703 png_error(png_ptr,
708 if ((png_ptr->transformations & PNG_INVERT_MONO) != 0)
709 png_warning(png_ptr, "PNG_WRITE_INVERT_SUPPORTED is not defined");
713 if ((png_ptr->transformations & PNG_FILLER) != 0)
714 png_warning(png_ptr, "PNG_WRITE_FILLER_SUPPORTED is not defined");
718 if ((png_ptr->transformations & PNG_PACKSWAP) != 0)
719 png_warning(png_ptr,
724 if ((png_ptr->transformations & PNG_PACK) != 0)
725 png_warning(png_ptr, "PNG_WRITE_PACK_SUPPORTED is not defined");
729 if ((png_ptr->transformations & PNG_SHIFT) != 0)
730 png_warning(png_ptr, "PNG_WRITE_SHIFT_SUPPORTED is not defined");
734 if ((png_ptr->transformations & PNG_BGR) != 0)
735 png_warning(png_ptr, "PNG_WRITE_BGR_SUPPORTED is not defined");
739 if ((png_ptr->transformations & PNG_SWAP_BYTES) != 0)
740 png_warning(png_ptr, "PNG_WRITE_SWAP_SUPPORTED is not defined");
743 png_write_start_row(png_ptr);
748 if (png_ptr->interlaced != 0 &&
749 (png_ptr->transformations & PNG_INTERLACE) != 0)
751 switch (png_ptr->pass)
754 if ((png_ptr->row_number & 0x07) != 0)
756 png_write_finish_row(png_ptr);
762 if ((png_ptr->row_number & 0x07) != 0 || png_ptr->width < 5)
764 png_write_finish_row(png_ptr);
770 if ((png_ptr->row_number & 0x07) != 4)
772 png_write_finish_row(png_ptr);
778 if ((png_ptr->row_number & 0x03) != 0 || png_ptr->width < 3)
780 png_write_finish_row(png_ptr);
786 if ((png_ptr->row_number & 0x03) != 2)
788 png_write_finish_row(png_ptr);
794 if ((png_ptr->row_number & 0x01) != 0 || png_ptr->width < 2)
796 png_write_finish_row(png_ptr);
802 if ((png_ptr->row_number & 0x01) == 0)
804 png_write_finish_row(png_ptr);
816 row_info.color_type = png_ptr->color_type;
817 row_info.width = png_ptr->usr_width;
818 row_info.channels = png_ptr->usr_channels;
819 row_info.bit_depth = png_ptr->usr_bit_depth;
831 memcpy(png_ptr->row_buf + 1, row, row_info.rowbytes);
835 if (png_ptr->interlaced && png_ptr->pass < 6 &&
836 (png_ptr->transformations & PNG_INTERLACE) != 0)
838 png_do_write_interlace(&row_info, png_ptr->row_buf + 1, png_ptr->pass);
842 png_write_finish_row(png_ptr);
850 if (png_ptr->transformations != 0)
851 png_do_write_transformations(png_ptr, &row_info);
857 if (row_info.pixel_depth != png_ptr->pixel_depth ||
858 row_info.pixel_depth != png_ptr->transformed_pixel_depth)
859 png_error(png_ptr, "internal write transform logic error");
871 if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) != 0 &&
872 (png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING))
875 png_do_write_intrapixel(&row_info, png_ptr->row_buf + 1);
883 png_ptr->num_palette_max >= 0)
884 png_do_check_palette_indexes(png_ptr, &row_info);
888 png_write_find_filter(png_ptr, &row_info);
890 if (png_ptr->write_row_fn != NULL)
891 (*(png_ptr->write_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass);
897 png_set_flush(png_structrp png_ptr, int nrows)
901 if (png_ptr == NULL)
904 png_ptr->flush_dist = (nrows < 0 ? 0 : nrows);
909 png_write_flush(png_structrp png_ptr)
913 if (png_ptr == NULL)
917 if (png_ptr->row_number >= png_ptr->num_rows)
920 png_compress_IDAT(png_ptr, NULL, 0, Z_SYNC_FLUSH);
921 png_ptr->flush_rows = 0;
922 png_flush(png_ptr);
926 /* Free any memory used in png_ptr struct without freeing the struct itself. */
928 png_write_destroy(png_structrp png_ptr)
933 if ((png_ptr->flags & PNG_FLAG_ZSTREAM_INITIALIZED) != 0)
934 deflateEnd(&png_ptr->zstream);
937 png_free_buffer_list(png_ptr, &png_ptr->zbuffer_list);
938 png_free(png_ptr, png_ptr->row_buf);
939 png_ptr->row_buf = NULL;
941 png_free(png_ptr, png_ptr->prev_row);
942 png_free(png_ptr, png_ptr->try_row);
943 png_free(png_ptr, png_ptr->tst_row);
944 png_ptr->prev_row = NULL;
945 png_ptr->try_row = NULL;
946 png_ptr->tst_row = NULL;
950 png_free(png_ptr, png_ptr->chunk_list);
951 png_ptr->chunk_list = NULL;
965 * has no png_ptr.)
974 png_structrp png_ptr = *png_ptr_ptr;
976 if (png_ptr != NULL) /* added in libpng 1.6.0 */
978 png_ptr, info_ptr_ptr);
981 png_write_destroy(png_ptr);
982 png_destroy_png_struct(png_ptr);
989 png_set_filter(png_structrp png_ptr, int method, int filters)
993 if (png_ptr == NULL)
997 if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) != 0 &&
1009 case 7: png_app_error(png_ptr, "Unknown row filter for method 0");
1013 png_ptr->do_filter = PNG_FILTER_NONE; break;
1017 png_ptr->do_filter = PNG_FILTER_SUB; break;
1020 png_ptr->do_filter = PNG_FILTER_UP; break;
1023 png_ptr->do_filter = PNG_FILTER_AVG; break;
1026 png_ptr->do_filter = PNG_FILTER_PAETH; break;
1029 png_ptr->do_filter = (png_byte)filters; break;
1032 png_app_error(png_ptr, "Unknown row filter for method 0");
1050 if (png_ptr->row_buf != NULL)
1059 if (png_ptr->height == 1)
1062 if (png_ptr->width == 1)
1066 && png_ptr->prev_row == NULL)
1071 png_app_warning(png_ptr,
1093 buf_size = PNG_ROWBYTES(png_ptr->usr_channels * png_ptr->usr_bit_depth,
1094 png_ptr->width) + 1;
1096 if (png_ptr->try_row == NULL)
1097 png_ptr->try_row = png_voidcast(png_bytep,
1098 png_malloc(png_ptr, buf_size));
1102 if (png_ptr->tst_row == NULL)
1103 png_ptr->tst_row = png_voidcast(png_bytep,
1104 png_malloc(png_ptr, buf_size));
1107 png_ptr->do_filter = (png_byte)filters;
1111 png_error(png_ptr, "Unknown custom filter method");
1118 png_set_filter_heuristics(png_structrp png_ptr, int heuristic_method,
1122 PNG_UNUSED(png_ptr)
1132 png_set_filter_heuristics_fixed(png_structrp png_ptr, int heuristic_method,
1136 PNG_UNUSED(png_ptr)
1147 png_set_compression_level(png_structrp png_ptr, int level)
1151 if (png_ptr == NULL)
1154 png_ptr->zlib_level = level;
1158 png_set_compression_mem_level(png_structrp png_ptr, int mem_level)
1162 if (png_ptr == NULL)
1165 png_ptr->zlib_mem_level = mem_level;
1169 png_set_compression_strategy(png_structrp png_ptr, int strategy)
1173 if (png_ptr == NULL)
1178 png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_STRATEGY;
1179 png_ptr->zlib_strategy = strategy;
1186 png_set_compression_window_bits(png_structrp png_ptr, int window_bits)
1188 if (png_ptr == NULL)
1199 png_warning(png_ptr, "Only compression windows <= 32k supported by PNG");
1205 png_warning(png_ptr, "Only compression windows >= 256 supported by PNG");
1209 png_ptr->zlib_window_bits = window_bits;
1213 png_set_compression_method(png_structrp png_ptr, int method)
1217 if (png_ptr == NULL)
1224 png_warning(png_ptr, "Only compression method 8 is supported by PNG");
1226 png_ptr->zlib_method = method;
1233 png_set_text_compression_level(png_structrp png_ptr, int level)
1237 if (png_ptr == NULL)
1240 png_ptr->zlib_text_level = level;
1244 png_set_text_compression_mem_level(png_structrp png_ptr, int mem_level)
1248 if (png_ptr == NULL)
1251 png_ptr->zlib_text_mem_level = mem_level;
1255 png_set_text_compression_strategy(png_structrp png_ptr, int strategy)
1259 if (png_ptr == NULL)
1262 png_ptr->zlib_text_strategy = strategy;
1269 png_set_text_compression_window_bits(png_structrp png_ptr, int window_bits)
1271 if (png_ptr == NULL)
1276 png_warning(png_ptr, "Only compression windows <= 32k supported by PNG");
1282 png_warning(png_ptr, "Only compression windows >= 256 supported by PNG");
1286 png_ptr->zlib_text_window_bits = window_bits;
1290 png_set_text_compression_method(png_structrp png_ptr, int method)
1294 if (png_ptr == NULL)
1298 png_warning(png_ptr, "Only compression method 8 is supported by PNG");
1300 png_ptr->zlib_text_method = method;
1306 png_set_write_status_fn(png_structrp png_ptr, png_write_status_ptr write_row_fn)
1308 if (png_ptr == NULL)
1311 png_ptr->write_row_fn = write_row_fn;
1316 png_set_write_user_transform_fn(png_structrp png_ptr, png_user_transform_ptr
1321 if (png_ptr == NULL)
1324 png_ptr->transformations |= PNG_USER_TRANSFORM;
1325 png_ptr->write_user_transform_fn = write_user_transform_fn;
1332 png_write_png(png_structrp png_ptr, png_inforp info_ptr,
1335 if (png_ptr == NULL || info_ptr == NULL)
1340 png_app_error(png_ptr, "no rows for png_write_image to write");
1345 png_write_info(png_ptr, info_ptr);
1352 png_set_invert_mono(png_ptr);
1354 png_app_error(png_ptr, "PNG_TRANSFORM_INVERT_MONO not supported");
1363 png_set_shift(png_ptr, &info_ptr->sig_bit);
1365 png_app_error(png_ptr, "PNG_TRANSFORM_SHIFT not supported");
1371 png_set_packing(png_ptr);
1373 png_app_error(png_ptr, "PNG_TRANSFORM_PACKING not supported");
1379 png_set_swap_alpha(png_ptr);
1381 png_app_error(png_ptr, "PNG_TRANSFORM_SWAP_ALPHA not supported");
1395 png_app_error(png_ptr,
1399 png_set_filler(png_ptr, 0, PNG_FILLER_AFTER);
1403 png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE);
1405 png_app_error(png_ptr, "PNG_TRANSFORM_STRIP_FILLER not supported");
1412 png_set_bgr(png_ptr);
1414 png_app_error(png_ptr, "PNG_TRANSFORM_BGR not supported");
1420 png_set_swap(png_ptr);
1422 png_app_error(png_ptr, "PNG_TRANSFORM_SWAP_ENDIAN not supported");
1428 png_set_packswap(png_ptr);
1430 png_app_error(png_ptr, "PNG_TRANSFORM_PACKSWAP not supported");
1436 png_set_invert_alpha(png_ptr);
1438 png_app_error(png_ptr, "PNG_TRANSFORM_INVERT_ALPHA not supported");
1444 png_write_image(png_ptr, info_ptr->row_pointers);
1447 png_write_end(png_ptr, info_ptr);
1459 png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, image,
1462 if (png_ptr != NULL)
1464 png_infop info_ptr = png_create_info_struct(png_ptr);
1469 png_malloc_warn(png_ptr, (sizeof *control)));
1475 control->png_ptr = png_ptr;
1484 png_destroy_info_struct(png_ptr, &info_ptr);
1487 png_destroy_write_struct(&png_ptr, NULL);
1512 /* Write png_uint_16 input to a 16-bit PNG; the png_ptr has already been set to
1522 png_structrp png_ptr = image->opaque->png_ptr;
1549 png_error(png_ptr, "png_write_image: internal call error");
1612 png_write_row(png_ptr, png_voidcast(png_const_bytep, display->local_row));
1680 png_structrp png_ptr = image->opaque->png_ptr;
1736 png_write_row(png_ptr, png_voidcast(png_const_bytep,
1762 png_write_row(png_ptr, output_row);
1906 png_set_PLTE(image->opaque->png_ptr, image->opaque->info_ptr, palette,
1910 png_set_tRNS(image->opaque->png_ptr, image->opaque->info_ptr, tRNS,
1922 png_structrp png_ptr = image->opaque->png_ptr;
1934 png_set_benign_errors(png_ptr, 0/*error*/);
1964 png_error(image->opaque->png_ptr, "memory image too large");
1968 png_error(image->opaque->png_ptr, "supplied row stride too small");
1972 png_error(image->opaque->png_ptr, "image row stride too large");
1982 png_set_IHDR(png_ptr, info_ptr, image->width, image->height,
1991 png_error(image->opaque->png_ptr,
1996 png_set_IHDR(png_ptr, info_ptr, image->width, image->height,
2011 png_set_gAMA_fixed(png_ptr, info_ptr, PNG_GAMMA_LINEAR);
2014 png_set_cHRM_fixed(png_ptr, info_ptr,
2024 png_set_sRGB(png_ptr, info_ptr, PNG_sRGB_INTENT_PERCEPTUAL);
2030 png_set_gAMA_fixed(png_ptr, info_ptr, PNG_GAMMA_sRGB_INVERSE);
2033 png_write_info(png_ptr, info_ptr);
2045 png_set_swap(png_ptr);
2052 png_set_bgr(png_ptr);
2061 png_set_swap_alpha(png_ptr);
2070 png_set_packing(png_ptr);
2075 png_error(png_ptr, "png_write_image: unsupported transformation");
2094 png_set_filter(png_ptr, PNG_FILTER_TYPE_BASE, PNG_NO_FILTERS);
2101 png_set_compression_level(png_ptr, 3);
2112 png_bytep row = png_voidcast(png_bytep, png_malloc(png_ptr,
2113 png_get_rowbytes(png_ptr, info_ptr)));
2123 png_free(png_ptr, row);
2141 png_write_row(png_ptr, row);
2146 png_write_end(png_ptr, info_ptr);
2152 image_memory_write)(png_structp png_ptr, png_bytep/*const*/ data,
2156 png_ptr->io_ptr/*backdoor: png_get_io_ptr(png_ptr)*/);
2174 png_error(png_ptr, "png_image_write_to_memory: PNG too big");
2178 image_memory_flush)(png_structp png_ptr)
2180 PNG_UNUSED(png_ptr)
2193 png_set_write_fn(display->image->opaque->png_ptr, display/*io_ptr*/,
2284 image->opaque->png_ptr->io_ptr = file;