--- ./texk/web2c/pdftexdir/writeimg.c.orig 2015-03-23 13:18:35.471056383 -0500
+++ ./texk/web2c/pdftexdir/writeimg.c 2015-03-23 13:30:32.157115740 -0500
@@ -126,7 +126,7 @@
{
switch (img_type(img)) {
case IMAGE_TYPE_PNG:
- return png_info(img)->bit_depth;
+ return png_get_bit_depth(png_ptr(img), png_info(img));
case IMAGE_TYPE_JPG:
return jpg_ptr(img)->bits_per_component;
case IMAGE_TYPE_PDF:
@@ -346,7 +346,7 @@
epdf_delete();
break;
case IMAGE_TYPE_PNG:
- xfclose(png_ptr(img)->io_ptr, cur_file_name);
+ xfclose(png_get_io_ptr(png_ptr(img)), cur_file_name);
png_destroy_read_struct(&(png_ptr(img)), &(png_info(img)), NULL);
break;
case IMAGE_TYPE_JPG:
--- ./texk/web2c/pdftexdir/writepng.c.orig 2015-03-23 13:18:35.471056383 -0500
+++ ./texk/web2c/pdftexdir/writepng.c 2015-03-23 13:27:58.053102977 -0500
@@ -34,24 +34,24 @@
pdftex_fail("libpng: png_create_read_struct() failed");
if ((png_info(img) = png_create_info_struct(png_ptr(img))) == NULL)
pdftex_fail("libpng: png_create_info_struct() failed");
- if (setjmp(png_ptr(img)->jmpbuf))
+ if (setjmp(png_jmpbuf(png_ptr(img))))
pdftex_fail("libpng: internal error");
png_init_io(png_ptr(img), png_file);
png_read_info(png_ptr(img), png_info(img));
- if (png_info(img)->color_type & PNG_COLOR_MASK_ALPHA)
+ if (png_get_color_type(png_ptr(img), png_info(img)) & PNG_COLOR_MASK_ALPHA)
png_set_strip_alpha(png_ptr(img));
- if (png_info(img)->bit_depth == 16)
+ if (png_get_bit_depth(png_ptr(img), png_info(img)) == 16)
png_set_strip_16(png_ptr(img));
png_read_update_info(png_ptr(img), png_info(img));
- img_width(img) = png_info(img)->width;
- img_height(img) = png_info(img)->height;
- if (png_info(img)->valid & PNG_INFO_pHYs) {
+ img_width(img) = png_get_image_width(png_ptr(img), png_info(img));
+ img_height(img) = png_get_image_height(png_ptr(img), png_info(img));
+ if (png_get_valid(png_ptr(img), png_info(img), PNG_INFO_pHYs)) {
img_xres(img) =
round(0.0254*png_get_x_pixels_per_meter(png_ptr(img), png_info(img)));
img_yres(img) =
round(0.0254*png_get_y_pixels_per_meter(png_ptr(img), png_info(img)));
}
- switch (png_info(img)->color_type) {
+ switch (png_get_color_type(png_ptr(img), png_info(img))) {
case PNG_COLOR_TYPE_PALETTE:
img_color(img) = IMAGE_COLOR_C | IMAGE_COLOR_I;
break;
@@ -64,7 +64,7 @@
img_color(img) = IMAGE_COLOR_C;
break;
default:
- pdftex_fail("unsupported type of color_type <%i>", png_info(img)->color_type);
+ pdftex_fail("unsupported type of color_type <%i>", png_get_color_type(png_ptr(img), png_info(img)));
}
}
@@ -73,23 +73,26 @@
int i, j, k, l;
integer palette_objnum = 0;
png_bytep row, r, *rows;
+ png_colorp png_palette;
+ int num_palette;
+ png_get_PLTE(png_ptr(img), png_info(img), &png_palette, &num_palette);
pdf_puts("/Type /XObject\n/Subtype /Image\n");
pdf_printf("/Width %i\n/Height %i\n/BitsPerComponent %i\n",
- (int)png_info(img)->width,
- (int)png_info(img)->height,
- (int)png_info(img)->bit_depth);
+ (int)png_get_image_width(png_ptr(img), png_info(img)),
+ (int)png_get_image_height(png_ptr(img), png_info(img)),
+ (int)png_get_bit_depth(png_ptr(img), png_info(img)));
pdf_puts("/ColorSpace ");
if (img_colorspace_ref(img) != 0) {
pdf_printf("%i 0 R\n", (int)img_colorspace_ref(img));
}
else {
- switch (png_info(img)->color_type) {
+ switch (png_get_color_type(png_ptr(img), png_info(img))) {
case PNG_COLOR_TYPE_PALETTE:
pdfcreateobj(0, 0);
palette_objnum = objptr;
pdf_printf("[/Indexed /DeviceRGB %i %i 0 R]\n",
- (int)(png_info(img)->num_palette - 1),
- (int)palette_objnum);
+ num_palette - 1),
+ (int)palette_objnum;
break;
case PNG_COLOR_TYPE_GRAY:
case PNG_COLOR_TYPE_GRAY_ALPHA:
@@ -100,20 +103,20 @@
pdf_puts("/DeviceRGB\n");
break;
default:
- pdftex_fail("unsupported type of color_type <%i>", png_info(img)->color_type);
+ pdftex_fail("unsupported type of color_type <%i>", png_get_color_type(png_ptr(img), png_info(img)));
}
}
pdfbeginstream();
- if (png_info(img)->interlace_type == PNG_INTERLACE_NONE) {
- row = xtalloc(png_info(img)->rowbytes, png_byte);
- for (i = 0; i < (int)png_info(img)->height; i++) {
+ if (png_get_interlace_type(png_ptr(img), png_info(img)) == PNG_INTERLACE_NONE) {
+ row = xtalloc(png_get_rowbytes(png_ptr(img), png_info(img)), png_byte);
+ for (i = 0; i < (int)png_get_image_height(png_ptr(img), png_info(img)); i++) {
png_read_row(png_ptr(img), row, NULL);
r = row;
- k = png_info(img)->rowbytes;
+ k = png_get_rowbytes(png_ptr(img), png_info(img));
while(k > 0) {
l = (k > pdfbufsize)? pdfbufsize : k;
pdfroom(l);
- for (j = 0; j < l; j++)
+ for (j = 0; j < (int)png_get_rowbytes(png_ptr(img), png_info(img)); j++)
pdfbuf[pdfptr++] = *r++;
k -= l;
}
@@ -121,19 +124,19 @@
xfree(row);
}
else {
- if (png_info(img)->height*png_info(img)->rowbytes >= 10240000L)
+ if (png_get_image_height(png_ptr(img), png_info(img))*png_get_rowbytes(png_ptr(img), png_info(img)) >= 10240000L)
pdftex_warn("large interlaced PNG might cause out of memory (use non-interlaced PNG to fix this)");
- rows = xtalloc(png_info(img)->height, png_bytep);
- for (i = 0; i < png_info(img)->height; i++)
- rows[i] = xtalloc(png_info(img)->rowbytes, png_byte);
+ rows = xtalloc(png_get_image_height(png_ptr(img), png_info(img)), png_bytep);
+ for (i = 0; i < png_get_image_height(png_ptr(img), png_info(img)); i++)
+ rows[i] = xtalloc(png_get_rowbytes(png_ptr(img), png_info(img)), png_byte);
png_read_image(png_ptr(img), rows);
- for (i = 0; i < (int)png_info(img)->height; i++) {
+ for (i = 0; i < (int)png_get_image_height(png_ptr(img), png_info(img)); i++) {
row = rows[i];
- k = png_info(img)->rowbytes;
+ k = png_get_rowbytes(png_ptr(img), png_info(img));
while(k > 0) {
l = (k > pdfbufsize)? pdfbufsize : k;
- pdfroom(l);
- for (j = 0; j < l; j++)
+ pdfroom(png_get_rowbytes(png_ptr(img), png_info(img)));
+ for (j = 0; j < (int)png_get_rowbytes(png_ptr(img), png_info(img)); j++)
pdfbuf[pdfptr++] = *row++;
k -= l;
}
@@ -145,11 +148,11 @@
if (palette_objnum > 0) {
pdfbegindict(palette_objnum);
pdfbeginstream();
- for (i = 0; i < png_info(img)->num_palette; i++) {
+ for (i = 0; i < num_palette; i++) {
pdfroom(3);
- pdfbuf[pdfptr++] = png_info(img)->palette[i].red;
- pdfbuf[pdfptr++] = png_info(img)->palette[i].green;
- pdfbuf[pdfptr++] = png_info(img)->palette[i].blue;
+ pdfbuf[pdfptr++] = png_palette[i].red;
+ pdfbuf[pdfptr++] = png_palette[i].green;
+ pdfbuf[pdfptr++] = png_palette[i].blue;
}
pdfendstream();
}