Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(597)

Side by Side Diff: third_party/libpng/pngset.c

Issue 1372313004: Update to libpng 1.2.52 (rollup change only) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/libpng/pngrutil.c ('k') | third_party/libpng/pngvcrd.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* pngset.c - storage of image information into info struct 2 /* pngset.c - storage of image information into info struct
3 * 3 *
4 * Last changed in libpng 1.2.43 [February 25, 2010] 4 * Last changed in libpng 1.2.51 [February 6, 2014]
5 * Copyright (c) 1998-2010 Glenn Randers-Pehrson 5 * Copyright (c) 1998-2014 Glenn Randers-Pehrson
6 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) 6 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
7 * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) 7 * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
8 * 8 *
9 * This code is released under the libpng license. 9 * This code is released under the libpng license.
10 * For conditions of distribution and use, see the disclaimer 10 * For conditions of distribution and use, see the disclaimer
11 * and license in png.h 11 * and license in png.h
12 * 12 *
13 * The functions here are used during reads to store data from the file 13 * The functions here are used during reads to store data from the file
14 * into the info struct, and during writes to store application data 14 * into the info struct, and during writes to store application data
15 * into the info struct for writing into the file. This abstracts the 15 * into the info struct for writing into the file. This abstracts the
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 float file_gamma; 526 float file_gamma;
527 #endif 527 #endif
528 #ifdef PNG_FIXED_POINT_SUPPORTED 528 #ifdef PNG_FIXED_POINT_SUPPORTED
529 png_fixed_point int_file_gamma; 529 png_fixed_point int_file_gamma;
530 #endif 530 #endif
531 #endif 531 #endif
532 #ifdef PNG_cHRM_SUPPORTED 532 #ifdef PNG_cHRM_SUPPORTED
533 #ifdef PNG_FLOATING_POINT_SUPPORTED 533 #ifdef PNG_FLOATING_POINT_SUPPORTED
534 float white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y; 534 float white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y;
535 #endif 535 #endif
536 #ifdef PNG_FIXED_POINT_SUPPORTED
536 png_fixed_point int_white_x, int_white_y, int_red_x, int_red_y, int_green_x, 537 png_fixed_point int_white_x, int_white_y, int_red_x, int_red_y, int_green_x,
537 int_green_y, int_blue_x, int_blue_y; 538 int_green_y, int_blue_x, int_blue_y;
538 #endif 539 #endif
540 #endif
539 png_debug1(1, "in %s storage function", "sRGB_gAMA_and_cHRM"); 541 png_debug1(1, "in %s storage function", "sRGB_gAMA_and_cHRM");
540 542
541 if (png_ptr == NULL || info_ptr == NULL) 543 if (png_ptr == NULL || info_ptr == NULL)
542 return; 544 return;
543 545
544 png_set_sRGB(png_ptr, info_ptr, intent); 546 png_set_sRGB(png_ptr, info_ptr, intent);
545 547
546 #ifdef PNG_gAMA_SUPPORTED 548 #ifdef PNG_gAMA_SUPPORTED
547 #ifdef PNG_FLOATING_POINT_SUPPORTED 549 #ifdef PNG_FLOATING_POINT_SUPPORTED
548 file_gamma = (float).45455; 550 file_gamma = (float).45455;
549 png_set_gAMA(png_ptr, info_ptr, file_gamma); 551 png_set_gAMA(png_ptr, info_ptr, file_gamma);
550 #endif 552 #endif
551 #ifdef PNG_FIXED_POINT_SUPPORTED 553 #ifdef PNG_FIXED_POINT_SUPPORTED
552 int_file_gamma = 45455L; 554 int_file_gamma = 45455L;
553 png_set_gAMA_fixed(png_ptr, info_ptr, int_file_gamma); 555 png_set_gAMA_fixed(png_ptr, info_ptr, int_file_gamma);
554 #endif 556 #endif
555 #endif 557 #endif
556 558
557 #ifdef PNG_cHRM_SUPPORTED 559 #ifdef PNG_cHRM_SUPPORTED
560 # ifdef PNG_FIXED_POINT_SUPPORTED
558 int_white_x = 31270L; 561 int_white_x = 31270L;
559 int_white_y = 32900L; 562 int_white_y = 32900L;
560 int_red_x = 64000L; 563 int_red_x = 64000L;
561 int_red_y = 33000L; 564 int_red_y = 33000L;
562 int_green_x = 30000L; 565 int_green_x = 30000L;
563 int_green_y = 60000L; 566 int_green_y = 60000L;
564 int_blue_x = 15000L; 567 int_blue_x = 15000L;
565 int_blue_y = 6000L; 568 int_blue_y = 6000L;
569 png_set_cHRM_fixed(png_ptr, info_ptr,
570 int_white_x, int_white_y, int_red_x, int_red_y, int_green_x,
571 int_green_y, int_blue_x, int_blue_y);
572 # endif
566 573
567 #ifdef PNG_FLOATING_POINT_SUPPORTED 574 # ifdef PNG_FLOATING_POINT_SUPPORTED
568 white_x = (float).3127; 575 white_x = (float).3127;
569 white_y = (float).3290; 576 white_y = (float).3290;
570 red_x = (float).64; 577 red_x = (float).64;
571 red_y = (float).33; 578 red_y = (float).33;
572 green_x = (float).30; 579 green_x = (float).30;
573 green_y = (float).60; 580 green_y = (float).60;
574 blue_x = (float).15; 581 blue_x = (float).15;
575 blue_y = (float).06; 582 blue_y = (float).06;
576 #endif
577
578 #ifdef PNG_FIXED_POINT_SUPPORTED
579 png_set_cHRM_fixed(png_ptr, info_ptr,
580 int_white_x, int_white_y, int_red_x, int_red_y, int_green_x,
581 int_green_y, int_blue_x, int_blue_y);
582 #endif
583 #ifdef PNG_FLOATING_POINT_SUPPORTED
584 png_set_cHRM(png_ptr, info_ptr, 583 png_set_cHRM(png_ptr, info_ptr,
585 white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y); 584 white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y);
586 #endif 585 # endif
587 #endif /* cHRM */ 586 #endif /* cHRM */
588 } 587 }
589 #endif /* sRGB */ 588 #endif /* sRGB */
590 589
591 590
592 #ifdef PNG_iCCP_SUPPORTED 591 #ifdef PNG_iCCP_SUPPORTED
593 void PNGAPI 592 void PNGAPI
594 png_set_iCCP(png_structp png_ptr, png_infop info_ptr, 593 png_set_iCCP(png_structp png_ptr, png_infop info_ptr,
595 png_charp name, int compression_type, 594 png_charp name, int compression_type,
596 png_charp profile, png_uint_32 proflen) 595 png_charp profile, png_uint_32 proflen)
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 "text" : (png_const_charp)png_ptr->chunk_name)); 659 "text" : (png_const_charp)png_ptr->chunk_name));
661 660
662 if (png_ptr == NULL || info_ptr == NULL || num_text == 0) 661 if (png_ptr == NULL || info_ptr == NULL || num_text == 0)
663 return(0); 662 return(0);
664 663
665 /* Make sure we have enough space in the "text" array in info_struct 664 /* Make sure we have enough space in the "text" array in info_struct
666 * to hold all of the incoming text_ptr objects. 665 * to hold all of the incoming text_ptr objects.
667 */ 666 */
668 if (info_ptr->num_text + num_text > info_ptr->max_text) 667 if (info_ptr->num_text + num_text > info_ptr->max_text)
669 { 668 {
669 int old_max_text = info_ptr->max_text;
670 int old_num_text = info_ptr->num_text;
671
670 if (info_ptr->text != NULL) 672 if (info_ptr->text != NULL)
671 { 673 {
672 png_textp old_text; 674 png_textp old_text;
673 int old_max;
674 675
675 old_max = info_ptr->max_text;
676 info_ptr->max_text = info_ptr->num_text + num_text + 8; 676 info_ptr->max_text = info_ptr->num_text + num_text + 8;
677 old_text = info_ptr->text; 677 old_text = info_ptr->text;
678
678 info_ptr->text = (png_textp)png_malloc_warn(png_ptr, 679 info_ptr->text = (png_textp)png_malloc_warn(png_ptr,
679 (png_uint_32)(info_ptr->max_text * png_sizeof(png_text))); 680 (png_uint_32)(info_ptr->max_text * png_sizeof(png_text)));
680 if (info_ptr->text == NULL) 681 if (info_ptr->text == NULL)
681 { 682 {
682 png_free(png_ptr, old_text); 683 /* Restore to previous condition */
684 info_ptr->max_text = old_max_text;
685 info_ptr->text = old_text;
683 return(1); 686 return(1);
684 } 687 }
685 png_memcpy(info_ptr->text, old_text, (png_size_t)(old_max * 688 png_memcpy(info_ptr->text, old_text, (png_size_t)(old_max_text *
686 png_sizeof(png_text))); 689 png_sizeof(png_text)));
687 png_free(png_ptr, old_text); 690 png_free(png_ptr, old_text);
688 } 691 }
689 else 692 else
690 { 693 {
691 info_ptr->max_text = num_text + 8; 694 info_ptr->max_text = num_text + 8;
692 info_ptr->num_text = 0; 695 info_ptr->num_text = 0;
693 info_ptr->text = (png_textp)png_malloc_warn(png_ptr, 696 info_ptr->text = (png_textp)png_malloc_warn(png_ptr,
694 (png_uint_32)(info_ptr->max_text * png_sizeof(png_text))); 697 (png_uint_32)(info_ptr->max_text * png_sizeof(png_text)));
695 if (info_ptr->text == NULL) 698 if (info_ptr->text == NULL)
699 {
700 /* Restore to previous condition */
701 info_ptr->num_text = old_num_text;
702 info_ptr->max_text = old_max_text;
696 return(1); 703 return(1);
704 }
697 #ifdef PNG_FREE_ME_SUPPORTED 705 #ifdef PNG_FREE_ME_SUPPORTED
698 info_ptr->free_me |= PNG_FREE_TEXT; 706 info_ptr->free_me |= PNG_FREE_TEXT;
699 #endif 707 #endif
700 } 708 }
701 png_debug1(3, "allocated %d entries for info_ptr->text", 709 png_debug1(3, "allocated %d entries for info_ptr->text",
702 info_ptr->max_text); 710 info_ptr->max_text);
703 } 711 }
712
704 for (i = 0; i < num_text; i++) 713 for (i = 0; i < num_text; i++)
705 { 714 {
706 png_size_t text_length, key_len; 715 png_size_t text_length, key_len;
707 png_size_t lang_len, lang_key_len; 716 png_size_t lang_len, lang_key_len;
708 png_textp textp = &(info_ptr->text[info_ptr->num_text]); 717 png_textp textp = &(info_ptr->text[info_ptr->num_text]);
709 718
710 if (text_ptr[i].key == NULL) 719 if (text_ptr[i].key == NULL)
711 continue; 720 continue;
712 721
713 key_len = png_strlen(text_ptr[i].key); 722 key_len = png_strlen(text_ptr[i].key);
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
833 #ifdef PNG_tRNS_SUPPORTED 842 #ifdef PNG_tRNS_SUPPORTED
834 void PNGAPI 843 void PNGAPI
835 png_set_tRNS(png_structp png_ptr, png_infop info_ptr, 844 png_set_tRNS(png_structp png_ptr, png_infop info_ptr,
836 png_bytep trans, int num_trans, png_color_16p trans_values) 845 png_bytep trans, int num_trans, png_color_16p trans_values)
837 { 846 {
838 png_debug1(1, "in %s storage function", "tRNS"); 847 png_debug1(1, "in %s storage function", "tRNS");
839 848
840 if (png_ptr == NULL || info_ptr == NULL) 849 if (png_ptr == NULL || info_ptr == NULL)
841 return; 850 return;
842 851
852 if (num_trans < 0 || num_trans > PNG_MAX_PALETTE_LENGTH)
853 {
854 png_warning(png_ptr, "Ignoring invalid num_trans value");
855 return;
856 }
857
843 if (trans != NULL) 858 if (trans != NULL)
844 { 859 {
845 /* It may not actually be necessary to set png_ptr->trans here; 860 /* It may not actually be necessary to set png_ptr->trans here;
846 * we do it for backward compatibility with the way the png_handle_tRNS 861 * we do it for backward compatibility with the way the png_handle_tRNS
847 * function used to do the allocation. 862 * function used to do the allocation.
848 */ 863 */
849 864
850 #ifdef PNG_FREE_ME_SUPPORTED 865 #ifdef PNG_FREE_ME_SUPPORTED
851 png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0); 866 png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0);
852 #endif 867 #endif
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
1167 1182
1168 #ifndef PNG_1_0_X 1183 #ifndef PNG_1_0_X
1169 #ifdef PNG_ASSEMBLER_CODE_SUPPORTED 1184 #ifdef PNG_ASSEMBLER_CODE_SUPPORTED
1170 /* Function was added to libpng 1.2.0 and should always exist by default */ 1185 /* Function was added to libpng 1.2.0 and should always exist by default */
1171 void PNGAPI 1186 void PNGAPI
1172 png_set_asm_flags (png_structp png_ptr, png_uint_32 asm_flags) 1187 png_set_asm_flags (png_structp png_ptr, png_uint_32 asm_flags)
1173 { 1188 {
1174 /* Obsolete as of libpng-1.2.20 and will be removed from libpng-1.4.0 */ 1189 /* Obsolete as of libpng-1.2.20 and will be removed from libpng-1.4.0 */
1175 if (png_ptr != NULL) 1190 if (png_ptr != NULL)
1176 png_ptr->asm_flags = 0; 1191 png_ptr->asm_flags = 0;
1177 asm_flags = asm_flags; /* Quiet the compiler */ 1192 PNG_UNUSED(asm_flags) /* Quiet the compiler */
1178 } 1193 }
1179 1194
1180 /* This function was added to libpng 1.2.0 */ 1195 /* This function was added to libpng 1.2.0 */
1181 void PNGAPI 1196 void PNGAPI
1182 png_set_mmx_thresholds (png_structp png_ptr, 1197 png_set_mmx_thresholds (png_structp png_ptr,
1183 png_byte mmx_bitdepth_threshold, 1198 png_byte mmx_bitdepth_threshold,
1184 png_uint_32 mmx_rowbytes_threshold) 1199 png_uint_32 mmx_rowbytes_threshold)
1185 { 1200 {
1186 /* Obsolete as of libpng-1.2.20 and will be removed from libpng-1.4.0 */ 1201 /* Obsolete as of libpng-1.2.20 and will be removed from libpng-1.4.0 */
1187 if (png_ptr == NULL) 1202 if (png_ptr == NULL)
1188 return; 1203 return;
1189 /* Quiet the compiler */ 1204 /* Quiet the compiler */
1190 mmx_bitdepth_threshold = mmx_bitdepth_threshold; 1205 PNG_UNUSED(mmx_bitdepth_threshold)
1191 mmx_rowbytes_threshold = mmx_rowbytes_threshold; 1206 PNG_UNUSED(mmx_rowbytes_threshold)
1192 } 1207 }
1193 #endif /* ?PNG_ASSEMBLER_CODE_SUPPORTED */ 1208 #endif /* ?PNG_ASSEMBLER_CODE_SUPPORTED */
1194 1209
1195 #ifdef PNG_SET_USER_LIMITS_SUPPORTED 1210 #ifdef PNG_SET_USER_LIMITS_SUPPORTED
1196 /* This function was added to libpng 1.2.6 */ 1211 /* This function was added to libpng 1.2.6 */
1197 void PNGAPI 1212 void PNGAPI
1198 png_set_user_limits (png_structp png_ptr, png_uint_32 user_width_max, 1213 png_set_user_limits (png_structp png_ptr, png_uint_32 user_width_max,
1199 png_uint_32 user_height_max) 1214 png_uint_32 user_height_max)
1200 { 1215 {
1201 /* Images with dimensions larger than these limits will be 1216 /* Images with dimensions larger than these limits will be
(...skipping 15 matching lines...) Expand all
1217 png_debug(1, "in png_set_benign_errors"); 1232 png_debug(1, "in png_set_benign_errors");
1218 1233
1219 if (allowed) 1234 if (allowed)
1220 png_ptr->flags |= PNG_FLAG_BENIGN_ERRORS_WARN; 1235 png_ptr->flags |= PNG_FLAG_BENIGN_ERRORS_WARN;
1221 else 1236 else
1222 png_ptr->flags &= ~PNG_FLAG_BENIGN_ERRORS_WARN; 1237 png_ptr->flags &= ~PNG_FLAG_BENIGN_ERRORS_WARN;
1223 } 1238 }
1224 #endif /* PNG_BENIGN_ERRORS_SUPPORTED */ 1239 #endif /* PNG_BENIGN_ERRORS_SUPPORTED */
1225 #endif /* ?PNG_1_0_X */ 1240 #endif /* ?PNG_1_0_X */
1226 #endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ 1241 #endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
OLDNEW
« no previous file with comments | « third_party/libpng/pngrutil.c ('k') | third_party/libpng/pngvcrd.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698