Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 262649 Details for
Bug 355091
dev-tex/luatex-0.65.0: compilation fails with media-libs/libpng-1.5.x
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
luatex-0.65.0-libpng15.patch
luatex-0.65.0-libpng15.patch (text/plain), 18.08 KB, created by
Lars Wendler (Polynomial-C) (RETIRED)
on 2011-02-15 19:44:41 UTC
(
hide
)
Description:
luatex-0.65.0-libpng15.patch
Filename:
MIME Type:
Creator:
Lars Wendler (Polynomial-C) (RETIRED)
Created:
2011-02-15 19:44:41 UTC
Size:
18.08 KB
patch
obsolete
>--- trunk/source/texk/web2c/luatexdir/image/writepng.w 2010/12/18 09:23:06 4044 >+++ trunk/source/texk/web2c/luatexdir/image/writepng.w 2010/12/19 20:56:30 4045 >@@ -76,12 +76,12 @@ > png_set_tRNS_to_alpha(png_p); > } > /* alpha channel support */ >- if (pdf->minor_version < 4 && png_p->color_type | PNG_COLOR_MASK_ALPHA) >+ if (pdf->minor_version < 4 && png_get_color_type (png_p, info_p) | PNG_COLOR_MASK_ALPHA) > png_set_strip_alpha(png_p); > /* 16bit depth support */ > if (pdf->minor_version < 5) > pdf->image_hicolor = 0; >- if ((info_p->bit_depth == 16) && (pdf->image_hicolor == 0)) >+ if ((png_get_bit_depth (png_p, info_p) == 16) && (pdf->image_hicolor == 0)) > png_set_strip_16(png_p); > /* gamma support */ > if (pdf->image_apply_gamma) { >@@ -94,15 +94,15 @@ > /* reset structure */ > png_read_update_info(png_p, info_p); > /* resolution support */ >- img_xsize(idict) = (int) info_p->width; >- img_ysize(idict) = (int) info_p->height; >+ img_xsize(idict) = (int) png_get_image_width (png_p, info_p); >+ img_ysize(idict) = (int) png_get_image_height (png_p, info_p); > if (info_p->valid & PNG_INFO_pHYs) { > img_xres(idict) = > round(0.0254 * (double) png_get_x_pixels_per_meter(png_p, info_p)); > img_yres(idict) = > round(0.0254 * (double) png_get_y_pixels_per_meter(png_p, info_p)); > } >- switch (info_p->color_type) { >+ switch (png_get_color_type (png_p, info_p)) { > case PNG_COLOR_TYPE_PALETTE: > img_procset(idict) |= PROCSET_IMAGE_C | PROCSET_IMAGE_I; > break; >@@ -115,9 +115,9 @@ > img_procset(idict) |= PROCSET_IMAGE_C; > break; > default: >- pdftex_fail("unsupported type of color_type <%i>", info_p->color_type); >+ pdftex_fail("unsupported type of color_type <%i>", (int)png_get_color_type (png_p, info_p)); > } >- img_colordepth(idict) = info_p->bit_depth; >+ img_colordepth(idict) = png_get_bit_depth (png_p, info_p); > if (readtype == IMG_CLOSEINBETWEEN) > close_and_cleanup_png(idict); > } >@@ -142,10 +142,10 @@ > #define write_simple_pixel(r) pdf_quick_out(pdf,*r++) > > #define write_noninterlaced(outmac) \ >- for (i = 0; i < (int)info_p->height; i++) { \ >+ for (i = 0; i < (int)png_get_image_height (png_p, info_p); i++) { \ > png_read_row(png_p, row, NULL); \ > r = row; \ >- k = (int)info_p->rowbytes; \ >+ k = (int)png_get_rowbytes (png_p, info_p); \ > while(k > 0) { \ > l = (k > pdf->buf_size)? pdf->buf_size : k; \ > pdf_room(pdf,l); \ >@@ -157,9 +157,9 @@ > } > > #define write_interlaced(outmac) \ >- for (i = 0; i < (int)info_p->height; i++) { \ >+ for (i = 0; i < (int)png_get_image_height (png_p, info_p); i++) { \ > row = rows[i]; \ >- k = (int)info_p->rowbytes; \ >+ k = (int)png_get_rowbytes (png_p, info_p); \ > while(k > 0) { \ > l = (k > pdf->buf_size)?pdf->buf_size: k;\ > pdf_room(pdf,l); \ >@@ -187,17 +187,17 @@ > (int) (info_p->num_palette - 1), (int) palette_objnum); > } > pdf_begin_stream(pdf); >- if (info_p->interlace_type == PNG_INTERLACE_NONE) { >- row = xtalloc(info_p->rowbytes, png_byte); >+ if (png_get_interlace_type (png_p, info_p) == PNG_INTERLACE_NONE) { >+ row = xtalloc(png_get_rowbytes (png_p, info_p), png_byte); > write_noninterlaced(write_simple_pixel(r)); > xfree(row); > } else { >- if (info_p->height * info_p->rowbytes >= 10240000L) >+ if (png_get_image_height (png_p, info_p) * png_get_rowbytes (png_p, info_p) >= 10240000L) > pdftex_warn > ("large interlaced PNG might cause out of memory (use non-interlaced PNG to fix this)"); >- rows = xtalloc(info_p->height, png_bytep); >- for (i = 0; (unsigned) i < info_p->height; i++) >- rows[i] = xtalloc(info_p->rowbytes, png_byte); >+ rows = xtalloc(png_get_image_height (png_p, info_p), png_bytep); >+ for (i = 0; (unsigned) i < png_get_image_height (png_p, info_p); i++) >+ rows[i] = xtalloc(png_get_rowbytes (png_p, info_p), png_byte); > png_read_image(png_p, rows); > write_interlaced(write_simple_pixel(row)); > xfree(rows); >@@ -229,17 +229,17 @@ > pdf_puts(pdf, "/DeviceGray\n"); > } > pdf_begin_stream(pdf); >- if (info_p->interlace_type == PNG_INTERLACE_NONE) { >- row = xtalloc(info_p->rowbytes, png_byte); >+ if (png_get_interlace_type (png_p, info_p) == PNG_INTERLACE_NONE) { >+ row = xtalloc(png_get_rowbytes (png_p, info_p), png_byte); > write_noninterlaced(write_simple_pixel(r)); > xfree(row); > } else { >- if (info_p->height * info_p->rowbytes >= 10240000L) >+ if (png_get_image_height (png_p, info_p) * png_get_rowbytes (png_p, info_p) >= 10240000L) > pdftex_warn > ("large interlaced PNG might cause out of memory (use non-interlaced PNG to fix this)"); >- rows = xtalloc(info_p->height, png_bytep); >- for (i = 0; (unsigned) i < info_p->height; i++) >- rows[i] = xtalloc(info_p->rowbytes, png_byte); >+ rows = xtalloc(png_get_image_height (png_p, info_p), png_bytep); >+ for (i = 0; (unsigned) i < png_get_image_height (png_p, info_p); i++) >+ rows[i] = xtalloc(png_get_rowbytes (png_p, info_p), png_byte); > png_read_image(png_p, rows); > write_interlaced(write_simple_pixel(row)); > xfree(rows); >@@ -258,7 +258,7 @@ > png_bytep smask; > int smask_ptr = 0; > int smask_size = 0; >- int bitdepth; >+ png_byte bitdepth; > if (img_colorspace(idict) != 0) { > pdf_printf(pdf, "%i 0 R\n", (int) img_colorspace(idict)); > } else { >@@ -266,26 +266,26 @@ > } > smask_objnum = pdf_create_obj(pdf, obj_type_others, 0); > pdf_printf(pdf, "/SMask %i 0 R\n", (int) smask_objnum); >- smask_size = (int) ((info_p->rowbytes / 2) * info_p->height); >+ smask_size = (int) ((png_get_rowbytes (png_p, info_p) / 2) * png_get_image_height (png_p, info_p)); > smask = xtalloc((unsigned) smask_size, png_byte); > pdf_begin_stream(pdf); >- if (info_p->interlace_type == PNG_INTERLACE_NONE) { >- row = xtalloc(info_p->rowbytes, png_byte); >- if ((info_p->bit_depth == 16) && (pdf->image_hicolor != 0)) { >+ if (png_get_interlace_type (png_p, info_p) == PNG_INTERLACE_NONE) { >+ row = xtalloc(png_get_rowbytes (png_p, info_p), png_byte); >+ if ((png_get_bit_depth (png_p, info_p) == 16) && (pdf->image_hicolor != 0)) { > write_noninterlaced(write_gray_pixel_16(r)); > } else { > write_noninterlaced(write_gray_pixel_8(r)); > } > xfree(row); > } else { >- if (info_p->height * info_p->rowbytes >= 10240000L) >+ if (png_get_image_height (png_p, info_p) * png_get_rowbytes (png_p, info_p) >= 10240000L) > pdftex_warn > ("large interlaced PNG might cause out of memory (use non-interlaced PNG to fix this)"); >- rows = xtalloc(info_p->height, png_bytep); >- for (i = 0; (unsigned) i < info_p->height; i++) >- rows[i] = xtalloc(info_p->rowbytes, png_byte); >+ rows = xtalloc(png_get_image_height (png_p, info_p), png_bytep); >+ for (i = 0; (unsigned) i < png_get_image_height (png_p, info_p); i++) >+ rows[i] = xtalloc(png_get_rowbytes (png_p, info_p), png_byte); > png_read_image(png_p, rows); >- if ((info_p->bit_depth == 16) && (pdf->image_hicolor != 0)) { >+ if ((png_get_bit_depth (png_p, info_p) == 16) && (pdf->image_hicolor != 0)) { > write_interlaced(write_gray_pixel_16(row)); > } else { > write_interlaced(write_gray_pixel_8(row)); >@@ -295,14 +295,15 @@ > pdf_end_stream(pdf); > pdf_flush(pdf); > /* now write the Smask object */ >- bitdepth = (int) info_p->bit_depth; >+ bitdepth = png_get_bit_depth (png_p, info_p); > pdf_begin_dict(pdf, smask_objnum, 0); > pdf_puts(pdf, "/Type /XObject\n/Subtype /Image\n"); > if (img_attr(idict) != NULL && strlen(img_attr(idict)) > 0) > pdf_printf(pdf, "%s\n", img_attr(idict)); >- pdf_printf(pdf, "/Width %i\n/Height %i\n/BitsPerComponent %i\n", >- (int) info_p->width, >- (int) info_p->height, (bitdepth == 16 ? 8 : bitdepth)); >+ pdf_printf(pdf, "/Width %u\n/Height %i\n/BitsPerComponent %u\n", >+ png_get_image_width (png_p, info_p), >+ png_get_image_height (png_p, info_p), >+ (bitdepth == 16 ? 8 : bitdepth)); > pdf_puts(pdf, "/ColorSpace /DeviceGray\n"); > pdf_begin_stream(pdf); > for (i = 0; i < smask_size; i++) { >@@ -329,17 +330,17 @@ > pdf_puts(pdf, "/DeviceRGB\n"); > } > pdf_begin_stream(pdf); >- if (info_p->interlace_type == PNG_INTERLACE_NONE) { >- row = xtalloc(info_p->rowbytes, png_byte); >+ if (png_get_interlace_type (png_p, info_p) == PNG_INTERLACE_NONE) { >+ row = xtalloc(png_get_rowbytes (png_p, info_p), png_byte); > write_noninterlaced(write_simple_pixel(r)); > xfree(row); > } else { >- if (info_p->height * info_p->rowbytes >= 10240000L) >+ if (png_get_image_height (png_p, info_p) * png_get_rowbytes (png_p, info_p) >= 10240000L) > pdftex_warn > ("large interlaced PNG might cause out of memory (use non-interlaced PNG to fix this)"); >- rows = xtalloc(info_p->height, png_bytep); >- for (i = 0; (unsigned) i < info_p->height; i++) >- rows[i] = xtalloc(info_p->rowbytes, png_byte); >+ rows = xtalloc(png_get_image_height (png_p, info_p), png_bytep); >+ for (i = 0; (unsigned) i < png_get_image_height (png_p, info_p); i++) >+ rows[i] = xtalloc(png_get_rowbytes (png_p, info_p), png_byte); > png_read_image(png_p, rows); > write_interlaced(write_simple_pixel(row)); > xfree(rows); >@@ -358,7 +359,7 @@ > png_bytep smask; > int smask_ptr = 0; > int smask_size = 0; >- int bitdepth; >+ png_byte bitdepth; > if (img_colorspace(idict) != 0) { > pdf_printf(pdf, "%i 0 R\n", (int) img_colorspace(idict)); > } else { >@@ -366,26 +367,26 @@ > } > smask_objnum = pdf_create_obj(pdf, obj_type_others, 0); > pdf_printf(pdf, "/SMask %i 0 R\n", (int) smask_objnum); >- smask_size = (int) ((info_p->rowbytes / 4) * info_p->height); >+ smask_size = (int) ((png_get_rowbytes (png_p, info_p) / 4) * png_get_image_height (png_p, info_p)); > smask = xtalloc((unsigned) smask_size, png_byte); > pdf_begin_stream(pdf); >- if (info_p->interlace_type == PNG_INTERLACE_NONE) { >- row = xtalloc(info_p->rowbytes, png_byte); >- if ((info_p->bit_depth == 16) && (pdf->image_hicolor != 0)) { >+ if (png_get_interlace_type (png_p, info_p) == PNG_INTERLACE_NONE) { >+ row = xtalloc(png_get_rowbytes (png_p, info_p), png_byte); >+ if ((png_get_bit_depth (png_p, info_p) == 16) && (pdf->image_hicolor != 0)) { > write_noninterlaced(write_rgb_pixel_16(r)); > } else { > write_noninterlaced(write_rgb_pixel_8(r)); > } > xfree(row); > } else { >- if (info_p->height * info_p->rowbytes >= 10240000L) >+ if (png_get_image_height (png_p, info_p) * png_get_rowbytes (png_p, info_p) >= 10240000L) > pdftex_warn > ("large interlaced PNG might cause out of memory (use non-interlaced PNG to fix this)"); >- rows = xtalloc(info_p->height, png_bytep); >- for (i = 0; (unsigned) i < info_p->height; i++) >- rows[i] = xtalloc(info_p->rowbytes, png_byte); >+ rows = xtalloc(png_get_image_height (png_p, info_p), png_bytep); >+ for (i = 0; (unsigned) i < png_get_image_height (png_p, info_p); i++) >+ rows[i] = xtalloc(png_get_rowbytes (png_p, info_p), png_byte); > png_read_image(png_p, rows); >- if ((info_p->bit_depth == 16) && (pdf->image_hicolor != 0)) { >+ if ((png_get_bit_depth (png_p, info_p) == 16) && (pdf->image_hicolor != 0)) { > write_interlaced(write_rgb_pixel_16(row)); > } else { > write_interlaced(write_rgb_pixel_8(row)); >@@ -396,14 +397,15 @@ > pdf_flush(pdf); > /* now write the Smask object */ > if (smask_objnum > 0) { >- bitdepth = (int) info_p->bit_depth; >+ bitdepth = png_get_bit_depth (png_p, info_p); > pdf_begin_dict(pdf, smask_objnum, 0); > pdf_puts(pdf, "/Type /XObject\n/Subtype /Image\n"); > if (img_attr(idict) != NULL && strlen(img_attr(idict)) > 0) > pdf_printf(pdf, "%s\n", img_attr(idict)); >- pdf_printf(pdf, "/Width %i\n/Height %i\n/BitsPerComponent %i\n", >- (int) info_p->width, >- (int) info_p->height, (bitdepth == 16 ? 8 : bitdepth)); >+ pdf_printf(pdf, "/Width %u\n/Height %u\n/BitsPerComponent %i\n", >+ png_get_image_width (png_p, info_p), >+ png_get_image_height (png_p, info_p), >+ (bitdepth == 16 ? 8 : bitdepth)); > pdf_puts(pdf, "/ColorSpace /DeviceGray\n"); > pdf_begin_stream(pdf); > for (i = 0; i < smask_size; i++) { >@@ -451,7 +453,7 @@ > assert(idict != NULL); > png_p = img_png_png_ptr(idict); > info_p = img_png_info_ptr(idict); >- fp = (FILE *) png_p->io_ptr; >+ fp = (FILE *) png_get_io_ptr (png_p); > /* 1st pass to find overall stream /Length */ > if (fseek(fp, 8, SEEK_SET) != 0) > pdftex_fail("writepng: fseek in PNG file failed"); >@@ -473,11 +475,12 @@ > "/Filter/FlateDecode\n" > "/DecodeParms<<" > "/Colors %d" >- "/Columns %d" >+ "/Columns %u" > "/BitsPerComponent %i" > "/Predictor 10>>\n>>\nstream\n", streamlength, >- info_p->color_type == 2 ? 3 : 1, >- (int) info_p->width, info_p->bit_depth); >+ png_get_color_type (png_p, info_p) == 2 ? 3 : 1, >+ png_get_image_width (png_p, info_p), >+ png_get_bit_depth (png_p, info_p)); > /* 2nd pass to copy data */ > endflag = false; > if (fseek(fp, 8, SEEK_SET) != 0) >@@ -549,9 +552,10 @@ > pdf_puts(pdf, "/Type /XObject\n/Subtype /Image\n"); > if (img_attr(idict) != NULL && strlen(img_attr(idict)) > 0) > pdf_printf(pdf, "%s\n", img_attr(idict)); >- pdf_printf(pdf, "/Width %i\n/Height %i\n/BitsPerComponent %i\n", >- (int) info_p->width, >- (int) info_p->height, (int) info_p->bit_depth); >+ pdf_printf(pdf, "/Width %u\n/Height %u\n/BitsPerComponent %u\n", >+ png_get_image_width (png_p, info_p), >+ png_get_image_height (png_p, info_p), >+ png_get_bit_depth (png_p, info_p)); > pdf_puts(pdf, "/ColorSpace "); > checked_gamma = 1.0; > if (pdf->image_apply_gamma) { >@@ -563,16 +567,18 @@ > } > /* the switching between |info_p| and |png_p| queries has been trial and error. > */ >- if (pdf->minor_version > 1 && info_p->interlace_type == PNG_INTERLACE_NONE && (png_p->transformations == 0 || png_p->transformations == 0x2000) /* gamma */ >- &&!(png_p->color_type == PNG_COLOR_TYPE_GRAY_ALPHA || >- png_p->color_type == PNG_COLOR_TYPE_RGB_ALPHA) >- && ((pdf->image_hicolor != 0) || (png_p->bit_depth <= 8)) >+ if (pdf->minor_version > 1 >+ && png_get_interlace_type (png_p, info_p) == PNG_INTERLACE_NONE >+ && (png_p->transformations == 0 || png_p->transformations == 0x2000) /* gamma */ >+ &&!(png_get_color_type (png_p, info_p) == PNG_COLOR_TYPE_GRAY_ALPHA || >+ png_get_color_type (png_p, info_p) == PNG_COLOR_TYPE_RGB_ALPHA) >+ && ((pdf->image_hicolor != 0) || (png_get_bit_depth (png_p, info_p) <= 8)) > && (checked_gamma <= 1.01 && checked_gamma > 0.99) > ) { > if (img_colorspace(idict) != 0) { > pdf_printf(pdf, "%i 0 R\n", (int) img_colorspace(idict)); > } else { >- switch (info_p->color_type) { >+ switch (png_get_color_type (png_p, info_p)) { > case PNG_COLOR_TYPE_PALETTE: > palette_objnum = pdf_create_obj(pdf, obj_type_others, 0); > pdf_printf(pdf, "[/Indexed /DeviceRGB %i %i 0 R]\n", >@@ -608,20 +614,20 @@ > tex_printf("gamma delta=%lf ", checked_gamma); > if (png_p->transformations != PNG_TRANSFORM_IDENTITY) > tex_printf("transform=%lu", (long) png_p->transformations); >- if ((info_p->color_type != PNG_COLOR_TYPE_GRAY) >- && (info_p->color_type != PNG_COLOR_TYPE_RGB) >- && (info_p->color_type != PNG_COLOR_TYPE_PALETTE)) >+ if ((png_get_color_type (png_p, info_p) != PNG_COLOR_TYPE_GRAY) >+ && (png_get_color_type (png_p, info_p) != PNG_COLOR_TYPE_RGB) >+ && (png_get_color_type (png_p, info_p) != PNG_COLOR_TYPE_PALETTE)) > tex_printf("colortype "); > if (pdf->minor_version <= 1) > tex_printf("version=%d ", pdf->minor_version); >- if (info_p->interlace_type != PNG_INTERLACE_NONE) >+ if (png_get_interlace_type (png_p, info_p) != PNG_INTERLACE_NONE) > tex_printf("interlaced "); >- if (info_p->bit_depth > 8) >- tex_printf("bitdepth=%d ", info_p->bit_depth); >+ if (png_get_bit_depth (png_p, info_p) > 8) >+ tex_printf("bitdepth=%d ", png_get_bit_depth (png_p, info_p)); > if (png_get_valid(png_p, info_p, PNG_INFO_tRNS)) > tex_printf("simple transparancy "); > } >- switch (info_p->color_type) { >+ switch (png_get_color_type (png_p, info_p)) { > case PNG_COLOR_TYPE_PALETTE: > write_png_palette(pdf, idict); > break; >@@ -647,7 +653,7 @@ > break; > default: > pdftex_fail("unsupported type of color_type <%i>", >- info_p->color_type); >+ png_get_color_type (png_p, info_p)); > } > } > pdf_flush(pdf);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 355091
:
262649
|
262653