diff options
-rw-r--r-- | dev-tex/pdftex/ChangeLog | 6 | ||||
-rw-r--r-- | dev-tex/pdftex/files/pdftex-1.40.11-libpng15.patch | 211 | ||||
-rw-r--r-- | dev-tex/pdftex/pdftex-1.40.11.ebuild | 7 |
3 files changed, 220 insertions, 4 deletions
diff --git a/dev-tex/pdftex/ChangeLog b/dev-tex/pdftex/ChangeLog index 9333d118fc9d..9c670a4fab50 100644 --- a/dev-tex/pdftex/ChangeLog +++ b/dev-tex/pdftex/ChangeLog @@ -1,6 +1,10 @@ # ChangeLog for dev-tex/pdftex # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/dev-tex/pdftex/ChangeLog,v 1.29 2011/01/02 16:16:50 aballier Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-tex/pdftex/ChangeLog,v 1.30 2011/02/16 13:00:10 aballier Exp $ + + 16 Feb 2011; Alexis Ballier <aballier@gentoo.org> pdftex-1.40.11.ebuild, + +files/pdftex-1.40.11-libpng15.patch: + Import a fix from upstream for libpng 1.5 compatibility. *pdftex-1.40.11 (02 Jan 2011) diff --git a/dev-tex/pdftex/files/pdftex-1.40.11-libpng15.patch b/dev-tex/pdftex/files/pdftex-1.40.11-libpng15.patch new file mode 100644 index 000000000000..1c177c983647 --- /dev/null +++ b/dev-tex/pdftex/files/pdftex-1.40.11-libpng15.patch @@ -0,0 +1,211 @@ +Index: source/texk/web2c/pdftexdir/writepng.c +=================================================================== +--- source/texk/web2c/pdftexdir/writepng.c (revision 21236) ++++ source/texk/web2c/pdftexdir/writepng.c (revision 21237) +@@ -21,47 +21,19 @@ + #include "ptexlib.h" + #include "image.h" + +-#if PNG_LIBPNG_VER_MINOR > 2 +- + /* ToDo: +- * use png_get_PLTE() to access num_palette and palette +- * use xxx to access transformations ++ * Check if multiple use of, e.g., png_bit_depth(img) should be ++ * replaced by ++ * int bitdepth = png_bit_depth(img); ++ * and subsequent use of bitdepth + */ +- + #define png_bit_depth(N) png_get_bit_depth(png_ptr(N), png_info(N)) + #define png_color_type(N) png_get_color_type(png_ptr(N), png_info(N)) + #define png_height(N) png_get_image_height(png_ptr(N), png_info(N)) + #define png_interlace_type(N) png_get_interlace_type(png_ptr(N), png_info(N)) +-#define png_io_ptr(N) png_get_io_ptr(png_ptr(N)) +-#define png_num_palette(N) png_info(N)->num_palette +-#define png_palette(N) png_info(N)->palette + #define png_rowbytes(N) png_get_rowbytes(png_ptr(N), png_info(N)) +-#define png_transformations(N) png_ptr(N)->transformations +-#define png_valid(N,flag) png_get_valid(png_ptr(N), png_info(N), flag) + #define png_width(N) png_get_image_width(png_ptr(N), png_info(N)) + +-#define png_ptr_bit_depth(N) png_get_bit_depth(png_ptr(N), png_info(N)) +-#define png_ptr_color_type(N) png_get_color_type(png_ptr(N), png_info(N)) +- +-#else +- +-#define png_bit_depth(N) png_info(N)->bit_depth +-#define png_color_type(N) png_info(N)->color_type +-#define png_height(N) png_info(N)->height +-#define png_interlace_type(N) png_info(N)->interlace_type +-#define png_io_ptr(N) png_ptr(N)->io_ptr +-#define png_num_palette(N) png_info(N)->num_palette +-#define png_palette(N) png_info(N)->palette +-#define png_rowbytes(N) png_info(N)->rowbytes +-#define png_transformations(N) png_ptr(N)->transformations +-#define png_valid(N,flag) png_info(N)->valid & (flag) +-#define png_width(N) png_info(N)->width +- +-#define png_ptr_bit_depth(N) png_ptr(N)->bit_depth +-#define png_ptr_color_type(N) png_ptr(N)->color_type +- +-#endif +- + static int transparent_page_group = -1; + + void read_png_info(integer img) +@@ -84,7 +56,7 @@ + } + /* alpha channel support */ + if (fixedpdfminorversion < 4 +- && png_ptr_color_type(img) | PNG_COLOR_MASK_ALPHA) ++ && png_color_type(img) | PNG_COLOR_MASK_ALPHA) + png_set_strip_alpha(png_ptr(img)); + /* 16bit depth support */ + if (fixedpdfminorversion < 5) +@@ -104,7 +76,7 @@ + /* resolution support */ + img_width(img) = png_width(img); + img_height(img) = png_height(img); +- if (png_valid(img, PNG_INFO_pHYs)) { ++ 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))); +@@ -201,14 +173,18 @@ + int i, j, k, l; + png_bytep row, r, *rows; + integer palette_objnum = 0; ++ png_colorp palette; ++ int num_palette; ++ ++ png_get_PLTE(png_ptr(img), png_info(img), &palette, &num_palette); ++ + pdfcreateobj(0, 0); + palette_objnum = objptr; + if (img_colorspace_ref(img) != 0) { + pdf_printf("%i 0 R\n", (int) img_colorspace_ref(img)); + } else { + pdf_printf("[/Indexed /DeviceRGB %i %i 0 R]\n", +- (int) (png_num_palette(img) - 1), +- (int) palette_objnum); ++ num_palette -1, (int) palette_objnum); + } + pdfbeginstream(); + if (png_interlace_type(img) == PNG_INTERLACE_NONE) { +@@ -230,11 +206,11 @@ + if (palette_objnum > 0) { + pdfbegindict(palette_objnum, 0); + pdfbeginstream(); +- for (i = 0; (unsigned) i < png_num_palette(img); i++) { ++ for (i = 0; (unsigned) i < num_palette; i++) { + pdfroom(3); +- pdfbuf[pdfptr++] = png_palette(img)[i].red; +- pdfbuf[pdfptr++] = png_palette(img)[i].green; +- pdfbuf[pdfptr++] = png_palette(img)[i].blue; ++ pdfbuf[pdfptr++] = palette[i].red; ++ pdfbuf[pdfptr++] = palette[i].green; ++ pdfbuf[pdfptr++] = palette[i].blue; + } + pdfendstream(); + } +@@ -461,7 +437,7 @@ + + static void copy_png(integer img) + { +- FILE *fp = (FILE *) png_io_ptr(img); ++ FILE *fp = (FILE *) png_get_io_ptr(png_ptr(img)); + int i, len, type, streamlength = 0; + boolean endflag = false; + int idat = 0; /* flag to check continuous IDAT chunks sequence */ +@@ -553,7 +529,12 @@ + double gamma, checked_gamma; + int i; + integer palette_objnum = 0; ++ png_colorp palette; ++ int num_palette; + last_png_needs_page_group = false; ++ ++ png_get_PLTE(png_ptr(img), png_info(img), &palette, &num_palette); ++ + if (fixedpdfminorversion < 5) + fixedimagehicolor = 0; + +@@ -570,16 +551,12 @@ + checked_gamma = (fixedgamma / 1000.0) * (1000.0 / fixedimagegamma); + } + } +- /* the switching between |png_info| and |png_ptr| queries has been trial and error. +- */ + if (fixedpdfminorversion > 1 + && png_interlace_type(img) == PNG_INTERLACE_NONE +- && (png_transformations(img) == PNG_TRANSFORM_IDENTITY +- || png_transformations(img) == 0x2000) + /* gamma */ +- && !(png_ptr_color_type(img) == PNG_COLOR_TYPE_GRAY_ALPHA || +- png_ptr_color_type(img) == PNG_COLOR_TYPE_RGB_ALPHA) +- && (fixedimagehicolor || (png_ptr_bit_depth(img) <= 8)) ++ && !(png_color_type(img) == PNG_COLOR_TYPE_GRAY_ALPHA || ++ png_color_type(img) == PNG_COLOR_TYPE_RGB_ALPHA) ++ && (fixedimagehicolor || (png_bit_depth(img) <= 8)) + && (checked_gamma <= 1.01 && checked_gamma > 0.99) + ) { + if (img_colorspace_ref(img) != 0) { +@@ -590,8 +567,7 @@ + pdfcreateobj(0, 0); + palette_objnum = objptr; + pdf_printf("[/Indexed /DeviceRGB %i %i 0 R]\n", +- (int) (png_num_palette(img) - 1), +- (int) palette_objnum); ++ num_palette - 1, (int) palette_objnum); + break; + case PNG_COLOR_TYPE_GRAY: + pdf_puts("/DeviceGray\n"); +@@ -605,11 +581,11 @@ + if (palette_objnum > 0) { + pdfbegindict(palette_objnum, 0); + pdfbeginstream(); +- for (i = 0; i < png_num_palette(img); i++) { ++ for (i = 0; i < num_palette; i++) { + pdfroom(3); +- pdfbuf[pdfptr++] = png_palette(img)[i].red; +- pdfbuf[pdfptr++] = png_palette(img)[i].green; +- pdfbuf[pdfptr++] = png_palette(img)[i].blue; ++ pdfbuf[pdfptr++] = palette[i].red; ++ pdfbuf[pdfptr++] = palette[i].green; ++ pdfbuf[pdfptr++] = palette[i].blue; + } + pdfendstream(); + } +@@ -619,9 +595,6 @@ + if (fixedimageapplygamma && + (checked_gamma > 1.01 || checked_gamma < 0.99)) + tex_printf("gamma delta=%lf ", checked_gamma); +- if (png_transformations(img) != PNG_TRANSFORM_IDENTITY) +- tex_printf("transform=%lu", +- (long) png_transformations(img)); + if ((png_color_type(img) != PNG_COLOR_TYPE_GRAY) + && (png_color_type(img) != PNG_COLOR_TYPE_RGB) + && (png_color_type(img) != PNG_COLOR_TYPE_PALETTE)) +Index: source/texk/web2c/pdftexdir/writeimg.c +=================================================================== +--- source/texk/web2c/pdftexdir/writeimg.c (revision 19947) ++++ source/texk/web2c/pdftexdir/writeimg.c (revision 19948) +@@ -137,7 +137,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_JBIG2: +@@ -389,7 +389,7 @@ + epdf_delete(); + break; + case IMAGE_TYPE_PNG: +- xfclose((FILE *) png_ptr(img)->io_ptr, cur_file_name); ++ xfclose((FILE *) 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: diff --git a/dev-tex/pdftex/pdftex-1.40.11.ebuild b/dev-tex/pdftex/pdftex-1.40.11.ebuild index c2cf82c71f4c..4295c9fe4a25 100644 --- a/dev-tex/pdftex/pdftex-1.40.11.ebuild +++ b/dev-tex/pdftex/pdftex-1.40.11.ebuild @@ -1,9 +1,9 @@ # Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/dev-tex/pdftex/pdftex-1.40.11.ebuild,v 1.1 2011/01/02 16:16:50 aballier Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-tex/pdftex/pdftex-1.40.11.ebuild,v 1.2 2011/02/16 13:00:10 aballier Exp $ EAPI=2 -inherit libtool toolchain-funcs +inherit libtool toolchain-funcs eutils DESCRIPTION="Standalone version of pdftex that can be used to replace TeX Live's" HOMEPAGE="http://www.pdftex.org/" @@ -16,7 +16,7 @@ KEYWORDS="~amd64 ~arm ~hppa ~x86" IUSE="" RDEPEND=">=app-text/poppler-0.12.3-r3[xpdf-headers] - media-libs/libpng + >=media-libs/libpng-1.4 sys-libs/zlib dev-libs/kpathsea app-admin/eselect-pdftex" @@ -28,6 +28,7 @@ S=${WORKDIR}/${P}/build src_prepare() { mkdir "${S}" cd "${WORKDIR}/${P}/src" + epatch "${FILESDIR}/${P}-libpng15.patch" elibtoolize } |