• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/ap/gpl/libpng/libpng-1.2.50/

Lines Matching refs:png_ptr

26 png_set_crc_action(png_structp png_ptr, int crit_action, int ancil_action)
30 if (png_ptr == NULL)
40 png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK;
41 png_ptr->flags |= PNG_FLAG_CRC_CRITICAL_USE;
45 png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK;
46 png_ptr->flags |= PNG_FLAG_CRC_CRITICAL_USE |
51 png_warning(png_ptr,
57 png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK;
68 png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK;
69 png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_USE;
73 png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK;
74 png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_USE |
79 png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK;
80 png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_NOWARN;
87 png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK;
96 png_set_background(png_structp png_ptr,
102 if (png_ptr == NULL)
106 png_warning(png_ptr, "Application must supply a known background gamma");
110 png_ptr->transformations |= PNG_BACKGROUND;
111 png_memcpy(&(png_ptr->background), background_color,
113 png_ptr->background_gamma = (float)background_gamma;
114 png_ptr->background_gamma_type = (png_byte)(background_gamma_code);
115 png_ptr->transformations |= (need_expand ? PNG_BACKGROUND_EXPAND : 0);
122 png_set_strip_16(png_structp png_ptr)
126 if (png_ptr == NULL)
128 png_ptr->transformations |= PNG_16_TO_8;
134 png_set_strip_alpha(png_structp png_ptr)
138 if (png_ptr == NULL)
140 png_ptr->flags |= PNG_FLAG_STRIP_ALPHA;
164 png_set_dither(png_structp png_ptr, png_colorp palette,
170 if (png_ptr == NULL)
172 png_ptr->transformations |= PNG_DITHER;
178 png_ptr->dither_index = (png_bytep)png_malloc(png_ptr,
181 png_ptr->dither_index[i] = (png_byte)i;
195 png_ptr->dither_sort = (png_bytep)png_malloc(png_ptr,
200 png_ptr->dither_sort[i] = (png_byte)i;
217 if (histogram[png_ptr->dither_sort[j]]
218 < histogram[png_ptr->dither_sort[j + 1]])
222 t = png_ptr->dither_sort[j];
223 png_ptr->dither_sort[j] = png_ptr->dither_sort[j + 1];
224 png_ptr->dither_sort[j + 1] = t;
242 if ((int)png_ptr->dither_sort[i] >= maximum_colors)
246 while ((int)png_ptr->dither_sort[j] >= maximum_colors);
261 if ((int)png_ptr->dither_sort[i] >= maximum_colors)
267 while ((int)png_ptr->dither_sort[j] >= maximum_colors);
273 png_ptr->dither_index[j] = (png_byte)i;
274 png_ptr->dither_index[i] = (png_byte)j;
281 if ((int)png_ptr->dither_index[i] >= maximum_colors)
286 d_index = png_ptr->dither_index[i];
301 png_ptr->dither_index[i] = (png_byte)min_k;
305 png_free(png_ptr, png_ptr->dither_sort);
306 png_ptr->dither_sort = NULL;
327 png_ptr->index_to_palette = (png_bytep)png_malloc(png_ptr,
329 png_ptr->palette_to_index = (png_bytep)png_malloc(png_ptr,
335 png_ptr->index_to_palette[i] = (png_byte)i;
336 png_ptr->palette_to_index[i] = (png_byte)i;
339 hash = (png_dsortpp)png_calloc(png_ptr, (png_uint_32)(769 *
369 t = (png_dsortp)png_malloc_warn(png_ptr,
392 if ((int)png_ptr->index_to_palette[p->left]
394 (int)png_ptr->index_to_palette[p->right]
411 palette[png_ptr->index_to_palette[j]]
419 if (png_ptr->dither_index[k] ==
420 png_ptr->index_to_palette[j])
421 png_ptr->dither_index[k] =
422 png_ptr->index_to_palette[next_j];
423 if ((int)png_ptr->dither_index[k] ==
425 png_ptr->dither_index[k] =
426 png_ptr->index_to_palette[j];
430 png_ptr->index_to_palette[png_ptr->palette_to_index
431 [num_new_palette]] = png_ptr->index_to_palette[j];
432 png_ptr->palette_to_index[png_ptr->index_to_palette[j]]
433 = png_ptr->palette_to_index[num_new_palette];
435 png_ptr->index_to_palette[j] =
437 png_ptr->palette_to_index[num_new_palette] =
456 png_free(png_ptr, p);
464 png_free(png_ptr, hash);
465 png_free(png_ptr, png_ptr->palette_to_index);
466 png_free(png_ptr, png_ptr->index_to_palette);
467 png_ptr->palette_to_index = NULL;
468 png_ptr->index_to_palette = NULL;
472 if (png_ptr->palette == NULL)
474 png_ptr->palette = palette;
476 png_ptr->num_palette = (png_uint_16)num_palette;
489 png_ptr->palette_lookup = (png_bytep )png_calloc(png_ptr,
492 distance = (png_bytep)png_malloc(png_ptr, (png_uint_32)(num_entries *
529 png_ptr->palette_lookup[d_index] = (png_byte)i;
536 png_free(png_ptr, distance);
552 png_set_gamma(png_structp png_ptr, double scrn_gamma, double file_gamma)
556 if (png_ptr == NULL)
560 (png_ptr->color_type & PNG_COLOR_MASK_ALPHA) ||
561 (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE))
562 png_ptr->transformations |= PNG_GAMMA;
563 png_ptr->gamma = (float)file_gamma;
564 png_ptr->screen_gamma = (float)scrn_gamma;
574 png_set_expand(png_structp png_ptr)
578 if (png_ptr == NULL)
581 png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
582 png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
605 png_set_palette_to_rgb(png_structp png_ptr)
609 if (png_ptr == NULL)
612 png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
613 png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
619 png_set_expand_gray_1_2_4_to_8(png_structp png_ptr)
623 if (png_ptr == NULL)
626 png_ptr->transformations |= PNG_EXPAND;
627 png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
635 png_set_gray_1_2_4_to_8(png_structp png_ptr)
639 if (png_ptr == NULL)
642 png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
649 png_set_tRNS_to_alpha(png_structp png_ptr)
653 png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
654 png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
660 png_set_gray_to_rgb(png_structp png_ptr)
664 png_ptr->transformations |= PNG_GRAY_TO_RGB;
665 png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
676 png_set_rgb_to_gray(png_structp png_ptr, int error_action, double red,
680 if (png_ptr == NULL)
685 png_warning(png_ptr, "ignoring out of range rgb_to_gray coefficients");
694 png_set_rgb_to_gray_fixed(png_ptr, error_action, red_fixed, green_fixed);
699 png_set_rgb_to_gray_fixed(png_structp png_ptr, int error_action,
704 if (png_ptr == NULL)
709 case 1: png_ptr->transformations |= PNG_RGB_TO_GRAY;
712 case 2: png_ptr->transformations |= PNG_RGB_TO_GRAY_WARN;
715 case 3: png_ptr->transformations |= PNG_RGB_TO_GRAY_ERR;
717 if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
719 png_ptr->transformations |= PNG_EXPAND;
722 png_warning(png_ptr,
724 png_ptr->transformations &= ~PNG_RGB_TO_GRAY;
741 png_warning(png_ptr, "ignoring out of range rgb_to_gray coefficients");
745 png_ptr->rgb_to_gray_red_coeff = red_int;
746 png_ptr->rgb_to_gray_green_coeff = green_int;
747 png_ptr->rgb_to_gray_blue_coeff =
757 png_set_read_user_transform_fn(png_structp png_ptr, png_user_transform_ptr
762 if (png_ptr == NULL)
766 png_ptr->transformations |= PNG_USER_TRANSFORM;
767 png_ptr->read_user_transform_fn = read_user_transform_fn;
771 png_warning(png_ptr,
781 png_init_read_transformations(png_structp png_ptr)
786 if (png_ptr != NULL)
792 int color_type = png_ptr->color_type;
808 if ((png_ptr->transformations & PNG_BACKGROUND_EXPAND) &&
811 png_ptr->mode |= PNG_BACKGROUND_IS_GRAY;
812 } else if ((png_ptr->transformations & PNG_BACKGROUND) &&
813 !(png_ptr->transformations & PNG_BACKGROUND_EXPAND) &&
814 (png_ptr->transformations & PNG_GRAY_TO_RGB) &&
815 png_ptr->background.red == png_ptr->background.green &&
816 png_ptr->background.red == png_ptr->background.blue)
818 png_ptr->mode |= PNG_BACKGROUND_IS_GRAY;
819 png_ptr->background.gray = png_ptr->background.red;
823 if ((png_ptr->transformations & PNG_BACKGROUND_EXPAND) &&
824 (png_ptr->transformations & PNG_EXPAND))
829 switch (png_ptr->bit_depth)
832 png_ptr->background.gray *= (png_uint_16)0xff;
833 png_ptr->background.red = png_ptr->background.green
834 = png_ptr->background.blue = png_ptr->background.gray;
835 if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
837 png_ptr->trans_values.gray *= (png_uint_16)0xff;
838 png_ptr->trans_values.red = png_ptr->trans_values.green
839 = png_ptr->trans_values.blue = png_ptr->trans_values.gray;
844 png_ptr->background.gray *= (png_uint_16)0x55;
845 png_ptr->background.red = png_ptr->background.green
846 = png_ptr->background.blue = png_ptr->background.gray;
847 if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
849 png_ptr->trans_values.gray *= (png_uint_16)0x55;
850 png_ptr->trans_values.red = png_ptr->trans_values.green
851 = png_ptr->trans_values.blue = png_ptr->trans_values.gray;
856 png_ptr->background.gray *= (png_uint_16)0x11;
857 png_ptr->background.red = png_ptr->background.green
858 = png_ptr->background.blue = png_ptr->background.gray;
859 if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
861 png_ptr->trans_values.gray *= (png_uint_16)0x11;
862 png_ptr->trans_values.red = png_ptr->trans_values.green
863 = png_ptr->trans_values.blue = png_ptr->trans_values.gray;
870 png_ptr->background.red = png_ptr->background.green
871 = png_ptr->background.blue = png_ptr->background.gray;
877 png_ptr->background.red =
878 png_ptr->palette[png_ptr->background.index].red;
879 png_ptr->background.green =
880 png_ptr->palette[png_ptr->background.index].green;
881 png_ptr->background.blue =
882 png_ptr->palette[png_ptr->background.index].blue;
885 if (png_ptr->transformations & PNG_INVERT_ALPHA)
888 if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
895 istop=(int)png_ptr->num_trans;
897 png_ptr->trans[i] = (png_byte)(255 - png_ptr->trans[i]);
907 png_ptr->background_1 = png_ptr->background;
911 if ((color_type == PNG_COLOR_TYPE_PALETTE && png_ptr->num_trans != 0)
912 && (fabs(png_ptr->screen_gamma * png_ptr->gamma - 1.0)
917 for (i=0; i<png_ptr->num_trans; i++)
919 if (png_ptr->trans[i] != 0 && png_ptr->trans[i] != 0xff)
923 png_ptr->transformations &= ~PNG_GAMMA;
926 if ((png_ptr->transformations & (PNG_GAMMA | PNG_RGB_TO_GRAY)) &&
927 png_ptr->gamma != 0.0)
929 png_build_gamma_table(png_ptr);
932 if (png_ptr->transformations & PNG_BACKGROUND)
938 png_colorp palette = png_ptr->palette;
939 int num_palette = png_ptr->num_palette;
941 if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_FILE)
943 back.red = png_ptr->gamma_table[png_ptr->background.red];
944 back.green = png_ptr->gamma_table[png_ptr->background.green];
945 back.blue = png_ptr->gamma_table[png_ptr->background.blue];
947 back_1.red = png_ptr->gamma_to_1[png_ptr->background.red];
948 back_1.green = png_ptr->gamma_to_1[png_ptr->background.green];
949 back_1.blue = png_ptr->gamma_to_1[png_ptr->background.blue];
955 switch (png_ptr->background_gamma_type)
958 g = (png_ptr->screen_gamma);
963 g = 1.0 / (png_ptr->gamma);
964 gs = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma);
968 g = 1.0 / (png_ptr->background_gamma);
969 gs = 1.0 / (png_ptr->background_gamma *
970 png_ptr->screen_gamma);
979 back.red = (png_byte)png_ptr->background.red;
980 back.green = (png_byte)png_ptr->background.green;
981 back.blue = (png_byte)png_ptr->background.blue;
986 (double)png_ptr->background.red/255, gs) * 255.0 + .5);
988 (double)png_ptr->background.green/255, gs) * 255.0
991 (double)png_ptr->background.blue/255, gs) * 255.0 + .5);
995 (double)png_ptr->background.red/255, g) * 255.0 + .5);
997 (double)png_ptr->background.green/255, g) * 255.0 + .5);
999 (double)png_ptr->background.blue/255, g) * 255.0 + .5);
1003 if (i < (int)png_ptr->num_trans && png_ptr->trans[i] != 0xff)
1005 if (png_ptr->trans[i] == 0)
1009 else /* if (png_ptr->trans[i] != 0xff) */
1013 v = png_ptr->gamma_to_1[palette[i].red];
1014 png_composite(w, v, png_ptr->trans[i], back_1.red);
1015 palette[i].red = png_ptr->gamma_from_1[w];
1017 v = png_ptr->gamma_to_1[palette[i].green];
1018 png_composite(w, v, png_ptr->trans[i], back_1.green);
1019 palette[i].green = png_ptr->gamma_from_1[w];
1021 v = png_ptr->gamma_to_1[palette[i].blue];
1022 png_composite(w, v, png_ptr->trans[i], back_1.blue);
1023 palette[i].blue = png_ptr->gamma_from_1[w];
1028 palette[i].red = png_ptr->gamma_table[palette[i].red];
1029 palette[i].green = png_ptr->gamma_table[palette[i].green];
1030 palette[i].blue = png_ptr->gamma_table[palette[i].blue];
1038 png_ptr->transformations &= ~PNG_BACKGROUND;
1039 png_ptr->transformations &= ~PNG_GAMMA;
1040 png_ptr->transformations |= PNG_STRIP_ALPHA;
1042 /* if (png_ptr->background_gamma_type!=PNG_BACKGROUND_GAMMA_UNKNOWN) */
1046 double m = (double)(((png_uint_32)1 << png_ptr->bit_depth) - 1);
1050 switch (png_ptr->background_gamma_type)
1053 g = (png_ptr->screen_gamma);
1058 g = 1.0 / (png_ptr->gamma);
1059 gs = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma);
1063 g = 1.0 / (png_ptr->background_gamma);
1064 gs = 1.0 / (png_ptr->background_gamma *
1065 png_ptr->screen_gamma);
1069 png_ptr->background_1.gray = (png_uint_16)(pow(
1070 (double)png_ptr->background.gray / m, g) * m + .5);
1071 png_ptr->background.gray = (png_uint_16)(pow(
1072 (double)png_ptr->background.gray / m, gs) * m + .5);
1074 if ((png_ptr->background.red != png_ptr->background.green) ||
1075 (png_ptr->background.red != png_ptr->background.blue) ||
1076 (png_ptr->background.red != png_ptr->background.gray))
1079 png_ptr->background_1.red = (png_uint_16)(pow(
1080 (double)png_ptr->background.red / m, g) * m + .5);
1081 png_ptr->background_1.green = (png_uint_16)(pow(
1082 (double)png_ptr->background.green / m, g) * m + .5);
1083 png_ptr->background_1.blue = (png_uint_16)(pow(
1084 (double)png_ptr->background.blue / m, g) * m + .5);
1085 png_ptr->background.red = (png_uint_16)(pow(
1086 (double)png_ptr->background.red / m, gs) * m + .5);
1087 png_ptr->background.green = (png_uint_16)(pow(
1088 (double)png_ptr->background.green / m, gs) * m + .5);
1089 png_ptr->background.blue = (png_uint_16)(pow(
1090 (double)png_ptr->background.blue / m, gs) * m + .5);
1095 png_ptr->background_1.red = png_ptr->background_1.green
1096 = png_ptr->background_1.blue = png_ptr->background_1.gray;
1097 png_ptr->background.red = png_ptr->background.green
1098 = png_ptr->background.blue = png_ptr->background.gray;
1107 png_colorp palette = png_ptr->palette;
1108 int num_palette = png_ptr->num_palette;
1113 palette[i].red = png_ptr->gamma_table[palette[i].red];
1114 palette[i].green = png_ptr->gamma_table[palette[i].green];
1115 palette[i].blue = png_ptr->gamma_table[palette[i].blue];
1119 png_ptr->transformations &= ~PNG_GAMMA;
1128 if ((png_ptr->transformations & PNG_BACKGROUND) &&
1132 int istop = (int)png_ptr->num_trans;
1134 png_colorp palette = png_ptr->palette;
1136 back.red = (png_byte)png_ptr->background.red;
1137 back.green = (png_byte)png_ptr->background.green;
1138 back.blue = (png_byte)png_ptr->background.blue;
1142 if (png_ptr->trans[i] == 0)
1146 else if (png_ptr->trans[i] != 0xff)
1150 png_ptr->trans[i], back.red);
1152 png_ptr->trans[i], back.green);
1154 png_ptr->trans[i], back.blue);
1159 png_ptr->transformations &= ~PNG_BACKGROUND;
1160 png_ptr->transformations |= PNG_STRIP_ALPHA;
1165 if ((png_ptr->transformations & PNG_SHIFT) &&
1166 !(png_ptr->transformations & PNG_EXPAND) &&
1170 png_uint_16 istop = png_ptr->num_palette;
1171 int sr = 8 - png_ptr->sig_bit.red;
1172 int sg = 8 - png_ptr->sig_bit.green;
1173 int sb = 8 - png_ptr->sig_bit.blue;
1183 png_ptr->palette[i].red >>= sr;
1184 png_ptr->palette[i].green >>= sg;
1185 png_ptr->palette[i].blue >>= sb;
1188 png_ptr->transformations &= ~PNG_SHIFT;
1194 if (png_ptr)
1204 png_read_transform_info(png_structp png_ptr, png_infop info_ptr)
1209 if (png_ptr->transformations & PNG_EXPAND)
1213 if (png_ptr->num_trans)
1222 if (png_ptr->num_trans)
1224 if (png_ptr->transformations & PNG_EXPAND_tRNS)
1235 if (png_ptr->transformations & PNG_BACKGROUND)
1239 info_ptr->background = png_ptr->background;
1244 if (png_ptr->transformations & PNG_GAMMA)
1247 info_ptr->gamma = png_ptr->gamma;
1250 info_ptr->int_gamma = png_ptr->int_gamma;
1256 if ((png_ptr->transformations & PNG_16_TO_8) && (info_ptr->bit_depth == 16))
1261 if (png_ptr->transformations & PNG_GRAY_TO_RGB)
1266 if (png_ptr->transformations & PNG_RGB_TO_GRAY)
1271 if (png_ptr->transformations & PNG_DITHER)
1275 png_ptr->palette_lookup && info_ptr->bit_depth == 8)
1283 if ((png_ptr->transformations & PNG_PACK) && (info_ptr->bit_depth < 8))
1295 if (png_ptr->flags & PNG_FLAG_STRIP_ALPHA)
1304 if ((png_ptr->transformations & PNG_FILLER) &&
1311 if (png_ptr->transformations & PNG_ADD_ALPHA)
1319 if (png_ptr->transformations & PNG_USER_TRANSFORM)
1321 if (info_ptr->bit_depth < png_ptr->user_transform_depth)
1322 info_ptr->bit_depth = png_ptr->user_transform_depth;
1323 if (info_ptr->channels < png_ptr->user_transform_channels)
1324 info_ptr->channels = png_ptr->user_transform_channels;
1334 if (png_ptr)
1344 png_do_read_transformations(png_structp png_ptr)
1348 if (png_ptr->row_buf == NULL)
1354 "NULL row buffer for row %ld, pass %d", (long)png_ptr->row_number,
1355 png_ptr->pass);
1356 png_error(png_ptr, msg);
1358 png_error(png_ptr, "NULL row buffer");
1362 if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
1368 png_error(png_ptr, "Uninitialized row");
1370 png_warning(png_ptr, "Uninitialized row");
1375 if (png_ptr->transformations & PNG_EXPAND)
1377 if (png_ptr->row_info.color_type == PNG_COLOR_TYPE_PALETTE)
1379 png_do_expand_palette(&(png_ptr->row_info), png_ptr->row_buf + 1,
1380 png_ptr->palette, png_ptr->trans, png_ptr->num_trans);
1384 if (png_ptr->num_trans &&
1385 (png_ptr->transformations & PNG_EXPAND_tRNS))
1386 png_do_expand(&(png_ptr->row_info), png_ptr->row_buf + 1,
1387 &(png_ptr->trans_values));
1389 png_do_expand(&(png_ptr->row_info), png_ptr->row_buf + 1,
1396 if (png_ptr->flags & PNG_FLAG_STRIP_ALPHA)
1397 png_do_strip_filler(&(png_ptr->row_info), png_ptr->row_buf + 1,
1398 PNG_FLAG_FILLER_AFTER | (png_ptr->flags & PNG_FLAG_STRIP_ALPHA));
1402 if (png_ptr->transformations & PNG_RGB_TO_GRAY)
1405 png_do_rgb_to_gray(png_ptr, &(png_ptr->row_info),
1406 png_ptr->row_buf + 1);
1409 png_ptr->rgb_to_gray_status=1;
1410 if ((png_ptr->transformations & PNG_RGB_TO_GRAY) ==
1412 png_warning(png_ptr, "png_do_rgb_to_gray found nongray pixel");
1413 if ((png_ptr->transformations & PNG_RGB_TO_GRAY) ==
1415 png_error(png_ptr, "png_do_rgb_to_gray found nongray pixel");
1455 if ((png_ptr->transformations & PNG_GRAY_TO_RGB) &&
1456 !(png_ptr->mode & PNG_BACKGROUND_IS_GRAY))
1457 png_do_gray_to_rgb(&(png_ptr->row_info), png_ptr->row_buf + 1);
1461 if ((png_ptr->transformations & PNG_BACKGROUND) &&
1462 ((png_ptr->num_trans != 0 ) ||
1463 (png_ptr->color_type & PNG_COLOR_MASK_ALPHA)))
1464 png_do_background(&(png_ptr->row_info), png_ptr->row_buf + 1,
1465 &(png_ptr->trans_values), &(png_ptr->background)
1467 , &(png_ptr->background_1),
1468 png_ptr->gamma_table, png_ptr->gamma_from_1,
1469 png_ptr->gamma_to_1, png_ptr->gamma_16_table,
1470 png_ptr->gamma_16_from_1, png_ptr->gamma_16_to_1,
1471 png_ptr->gamma_shift
1477 if ((png_ptr->transformations & PNG_GAMMA) &&
1479 !((png_ptr->transformations & PNG_BACKGROUND) &&
1480 ((png_ptr->num_trans != 0) ||
1481 (png_ptr->color_type & PNG_COLOR_MASK_ALPHA))) &&
1483 (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE))
1484 png_do_gamma(&(png_ptr->row_info), png_ptr->row_buf + 1,
1485 png_ptr->gamma_table, png_ptr->gamma_16_table,
1486 png_ptr->gamma_shift);
1490 if (png_ptr->transformations & PNG_16_TO_8)
1491 png_do_chop(&(png_ptr->row_info), png_ptr->row_buf + 1);
1495 if (png_ptr->transformations & PNG_DITHER)
1497 png_do_dither((png_row_infop)&(png_ptr->row_info), png_ptr->row_buf + 1,
1498 png_ptr->palette_lookup, png_ptr->dither_index);
1499 if (png_ptr->row_info.rowbytes == (png_uint_32)0)
1500 png_error(png_ptr, "png_do_dither returned rowbytes=0");
1505 if (png_ptr->transformations & PNG_INVERT_MONO)
1506 png_do_invert(&(png_ptr->row_info), png_ptr->row_buf + 1);
1510 if (png_ptr->transformations & PNG_SHIFT)
1511 png_do_unshift(&(png_ptr->row_info), png_ptr->row_buf + 1,
1512 &(png_ptr->shift));
1516 if (png_ptr->transformations & PNG_PACK)
1517 png_do_unpack(&(png_ptr->row_info), png_ptr->row_buf + 1);
1521 if (png_ptr->transformations & PNG_BGR)
1522 png_do_bgr(&(png_ptr->row_info), png_ptr->row_buf + 1);
1526 if (png_ptr->transformations & PNG_PACKSWAP)
1527 png_do_packswap(&(png_ptr->row_info), png_ptr->row_buf + 1);
1532 if ((png_ptr->transformations & PNG_GRAY_TO_RGB) &&
1533 (png_ptr->mode & PNG_BACKGROUND_IS_GRAY))
1534 png_do_gray_to_rgb(&(png_ptr->row_info), png_ptr->row_buf + 1);
1538 if (png_ptr->transformations & PNG_FILLER)
1539 png_do_read_filler(&(png_ptr->row_info), png_ptr->row_buf + 1,
1540 (png_uint_32)png_ptr->filler, png_ptr->flags);
1544 if (png_ptr->transformations & PNG_INVERT_ALPHA)
1545 png_do_read_invert_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1);
1549 if (png_ptr->transformations & PNG_SWAP_ALPHA)
1550 png_do_read_swap_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1);
1554 if (png_ptr->transformations & PNG_SWAP_BYTES)
1555 png_do_swap(&(png_ptr->row_info), png_ptr->row_buf + 1);
1559 if (png_ptr->transformations & PNG_USER_TRANSFORM)
1561 if (png_ptr->read_user_transform_fn != NULL)
1562 (*(png_ptr->read_user_transform_fn)) /* User read transform function */
1563 (png_ptr, /* png_ptr */
1564 &(png_ptr->row_info), /* row_info: */
1571 png_ptr->row_buf + 1); /* start of pixel data for row */
1573 if (png_ptr->user_transform_depth)
1574 png_ptr->row_info.bit_depth = png_ptr->user_transform_depth;
1575 if (png_ptr->user_transform_channels)
1576 png_ptr->row_info.channels = png_ptr->user_transform_channels;
1578 png_ptr->row_info.pixel_depth = (png_byte)(png_ptr->row_info.bit_depth *
1579 png_ptr->row_info.channels);
1580 png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth,
1581 png_ptr->row_info.width);
2330 png_do_rgb_to_gray(png_structp png_ptr, png_row_infop row_info, png_bytep row)
2346 png_uint_32 rc = png_ptr->rgb_to_gray_red_coeff;
2347 png_uint_32 gc = png_ptr->rgb_to_gray_green_coeff;
2348 png_uint_32 bc = png_ptr->rgb_to_gray_blue_coeff;
2355 if (png_ptr->gamma_from_1 != NULL && png_ptr->gamma_to_1 != NULL)
2362 png_byte red = png_ptr->gamma_to_1[*(sp++)];
2363 png_byte green = png_ptr->gamma_to_1[*(sp++)];
2364 png_byte blue = png_ptr->gamma_to_1[*(sp++)];
2368 *(dp++) = png_ptr->gamma_from_1[
2399 if (png_ptr->gamma_16_to_1 != NULL &&
2400 png_ptr->gamma_16_from_1 != NULL)
2416 png_uint_16 red_1 = png_ptr->gamma_16_to_1[(red&0xff) >>
2417 png_ptr->gamma_shift][red>>8];
2419 png_ptr->gamma_16_to_1[(green&0xff) >>
2420 png_ptr->gamma_shift][green>>8];
2421 png_uint_16 blue_1 = png_ptr->gamma_16_to_1[(blue&0xff) >>
2422 png_ptr->gamma_shift][blue>>8];
2425 w = png_ptr->gamma_16_from_1[(gray16&0xff) >>
2426 png_ptr->gamma_shift][gray16 >> 8];
2461 if (png_ptr->gamma_from_1 != NULL && png_ptr->gamma_to_1 != NULL)
2467 png_byte red = png_ptr->gamma_to_1[*(sp++)];
2468 png_byte green = png_ptr->gamma_to_1[*(sp++)];
2469 png_byte blue = png_ptr->gamma_to_1[*(sp++)];
2472 *(dp++) = png_ptr->gamma_from_1
2497 if (png_ptr->gamma_16_to_1 != NULL &&
2498 png_ptr->gamma_16_from_1 != NULL)
2514 png_uint_16 red_1 = png_ptr->gamma_16_to_1[(red&0xff) >>
2515 png_ptr->gamma_shift][red>>8];
2517 png_ptr->gamma_16_to_1[(green&0xff) >>
2518 png_ptr->gamma_shift][green>>8];
2519 png_uint_16 blue_1 = png_ptr->gamma_16_to_1[(blue&0xff) >>
2520 png_ptr->gamma_shift][blue>>8];
2523 w = png_ptr->gamma_16_from_1[(gray16&0xff) >>
2524 png_ptr->gamma_shift][gray16 >> 8];
2624 png_correct_palette(png_structp png_ptr, png_colorp palette,
2632 if (png_ptr->transformations & (PNG_GAMMA | PNG_BACKGROUND))
2636 if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_FILE)
2638 back.red = png_ptr->gamma_table[png_ptr->background.red];
2639 back.green = png_ptr->gamma_table[png_ptr->background.green];
2640 back.blue = png_ptr->gamma_table[png_ptr->background.blue];
2642 back_1.red = png_ptr->gamma_to_1[png_ptr->background.red];
2643 back_1.green = png_ptr->gamma_to_1[png_ptr->background.green];
2644 back_1.blue = png_ptr->gamma_to_1[png_ptr->background.blue];
2650 g = 1.0 / (png_ptr->background_gamma * png_ptr->screen_gamma);
2652 if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_SCREEN
2655 back.red = png_ptr->background.red;
2656 back.green = png_ptr->background.green;
2657 back.blue = png_ptr->background.blue;
2662 (png_byte)(pow((double)png_ptr->background.red/255, g) *
2665 (png_byte)(pow((double)png_ptr->background.green/255, g) *
2668 (png_byte)(pow((double)png_ptr->background.blue/255, g) *
2672 g = 1.0 / png_ptr->background_gamma;
2675 (png_byte)(pow((double)png_ptr->background.red/255, g) *
2678 (png_byte)(pow((double)png_ptr->background.green/255, g) *
2681 (png_byte)(pow((double)png_ptr->background.blue/255, g) *
2685 if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
2691 if (i < png_ptr->num_trans && png_ptr->trans[i] == 0)
2695 else if (i < png_ptr->num_trans && png_ptr->trans[i] != 0xff)
2699 v = png_ptr->gamma_to_1[png_ptr->palette[i].red];
2700 png_composite(w, v, png_ptr->trans[i], back_1.red);
2701 palette[i].red = png_ptr->gamma_from_1[w];
2703 v = png_ptr->gamma_to_1[png_ptr->palette[i].green];
2704 png_composite(w, v, png_ptr->trans[i], back_1.green);
2705 palette[i].green = png_ptr->gamma_from_1[w];
2707 v = png_ptr->gamma_to_1[png_ptr->palette[i].blue];
2708 png_composite(w, v, png_ptr->trans[i], back_1.blue);
2709 palette[i].blue = png_ptr->gamma_from_1[w];
2713 palette[i].red = png_ptr->gamma_table[palette[i].red];
2714 palette[i].green = png_ptr->gamma_table[palette[i].green];
2715 palette[i].blue = png_ptr->gamma_table[palette[i].blue];
2725 if (palette[i].red == (png_byte)png_ptr->trans_values.gray)
2731 palette[i].red = png_ptr->gamma_table[palette[i].red];
2732 palette[i].green = png_ptr->gamma_table[palette[i].green];
2733 palette[i].blue = png_ptr->gamma_table[palette[i].blue];
2741 if (png_ptr->transformations & PNG_GAMMA)
2747 palette[i].red = png_ptr->gamma_table[palette[i].red];
2748 palette[i].green = png_ptr->gamma_table[palette[i].green];
2749 palette[i].blue = png_ptr->gamma_table[palette[i].blue];
2757 if (png_ptr->transformations & PNG_BACKGROUND)
2759 if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
2763 back.red = (png_byte)png_ptr->background.red;
2764 back.green = (png_byte)png_ptr->background.green;
2765 back.blue = (png_byte)png_ptr->background.blue;
2767 for (i = 0; i < (int)png_ptr->num_trans; i++)
2769 if (png_ptr->trans[i] == 0)
2775 else if (png_ptr->trans[i] != 0xff)
2777 png_composite(palette[i].red, png_ptr->palette[i].red,
2778 png_ptr->trans[i], back.red);
2779 png_composite(palette[i].green, png_ptr->palette[i].green,
2780 png_ptr->trans[i], back.green);
2781 png_composite(palette[i].blue, png_ptr->palette[i].blue,
2782 png_ptr->trans[i], back.blue);
2792 if (i == (png_byte)png_ptr->trans_values.gray)
2794 palette[i].red = (png_byte)png_ptr->background.red;
2795 palette[i].green = (png_byte)png_ptr->background.green;
2796 palette[i].blue = (png_byte)png_ptr->background.blue;
3224 else /* if (png_ptr->bit_depth == 16) */
4186 png_build_gamma_table(png_structp png_ptr)
4190 if (png_ptr->bit_depth <= 8)
4195 if (png_ptr->screen_gamma > .000001)
4196 g = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma);
4201 png_ptr->gamma_table = (png_bytep)png_malloc(png_ptr,
4206 png_ptr->gamma_table[i] = (png_byte)(pow((double)i / 255.0,
4212 if (png_ptr->transformations & ((PNG_BACKGROUND) | PNG_RGB_TO_GRAY))
4215 g = 1.0 / (png_ptr->gamma);
4217 png_ptr->gamma_to_1 = (png_bytep)png_malloc(png_ptr,
4222 png_ptr->gamma_to_1[i] = (png_byte)(pow((double)i / 255.0,
4227 png_ptr->gamma_from_1 = (png_bytep)png_malloc(png_ptr,
4230 if (png_ptr->screen_gamma > 0.000001)
4231 g = 1.0 / png_ptr->screen_gamma;
4234 g = png_ptr->gamma; /* Probably doing rgb_to_gray */
4238 png_ptr->gamma_from_1[i] = (png_byte)(pow((double)i / 255.0,
4252 if (png_ptr->color_type & PNG_COLOR_MASK_COLOR)
4254 sig_bit = (int)png_ptr->sig_bit.red;
4256 if ((int)png_ptr->sig_bit.green > sig_bit)
4257 sig_bit = png_ptr->sig_bit.green;
4259 if ((int)png_ptr->sig_bit.blue > sig_bit)
4260 sig_bit = png_ptr->sig_bit.blue;
4264 sig_bit = (int)png_ptr->sig_bit.gray;
4273 if (png_ptr->transformations & PNG_16_TO_8)
4285 png_ptr->gamma_shift = (png_byte)shift;
4289 if (png_ptr->screen_gamma > .000001)
4290 g = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma);
4294 png_ptr->gamma_16_table = (png_uint_16pp)png_calloc(png_ptr,
4297 if (png_ptr->transformations & (PNG_16_TO_8 | PNG_BACKGROUND))
4304 png_ptr->gamma_16_table[i] = (png_uint_16p)png_malloc(png_ptr,
4317 png_ptr->gamma_16_table[(int)(last & (0xff >> shift))]
4325 png_ptr->gamma_16_table[(int)(last & (0xff >> shift))]
4334 png_ptr->gamma_16_table[i] = (png_uint_16p)png_malloc(png_ptr,
4341 png_ptr->gamma_16_table[i][j] =
4350 if (png_ptr->transformations & (PNG_BACKGROUND | PNG_RGB_TO_GRAY))
4353 g = 1.0 / (png_ptr->gamma);
4355 png_ptr->gamma_16_to_1 = (png_uint_16pp)png_calloc(png_ptr,
4360 png_ptr->gamma_16_to_1[i] = (png_uint_16p)png_malloc(png_ptr,
4367 png_ptr->gamma_16_to_1[i][j] =
4373 if (png_ptr->screen_gamma > 0.000001)
4374 g = 1.0 / png_ptr->screen_gamma;
4377 g = png_ptr->gamma; /* Probably doing rgb_to_gray */
4379 png_ptr->gamma_16_from_1 = (png_uint_16pp)png_calloc(png_ptr,
4384 png_ptr->gamma_16_from_1[i] = (png_uint_16p)png_malloc(png_ptr,
4392 png_ptr->gamma_16_from_1[i][j] =