summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-libs/libharu')
-rw-r--r--media-libs/libharu/Manifest1
-rw-r--r--media-libs/libharu/files/libharu-2.2.1-libpng-1.5.patch344
-rw-r--r--media-libs/libharu/files/libharu-2.3.0-dont-force-strip.patch22
-rw-r--r--media-libs/libharu/libharu-2.3.0-r1.ebuild37
-rw-r--r--media-libs/libharu/metadata.xml21
5 files changed, 425 insertions, 0 deletions
diff --git a/media-libs/libharu/Manifest b/media-libs/libharu/Manifest
new file mode 100644
index 000000000000..b588457dff6b
--- /dev/null
+++ b/media-libs/libharu/Manifest
@@ -0,0 +1 @@
+DIST libharu-2.3.0.tar.gz 1396413 SHA256 8f9e68cc5d5f7d53d1bc61a1ed876add1faf4f91070dbc360d8b259f46d9a4d2 SHA512 ebcabf1e8488e21185a231e97b4c16f9de742ae0ac2ebc7535b72b6b8e2045c2619bc6a94a820f7f923b0dfeceb217408f4e4c613ef3602104373cdf000d3f41 WHIRLPOOL e0a2783d1b2079fde718cb2a3f3a2f512df37afaa0cf1bda9de9af6da583c0113b9915803329a6ac353245c9d4010d72c83d578a1e5fbbabfb26ec28defb2051
diff --git a/media-libs/libharu/files/libharu-2.2.1-libpng-1.5.patch b/media-libs/libharu/files/libharu-2.2.1-libpng-1.5.patch
new file mode 100644
index 000000000000..d59f78f8ecf1
--- /dev/null
+++ b/media-libs/libharu/files/libharu-2.2.1-libpng-1.5.patch
@@ -0,0 +1,344 @@
+diff --git a/src/hpdf_image_png.c b/src/hpdf_image_png.c
+index b8f831e..85bd29f 100644
+--- a/src/hpdf_image_png.c
++++ b/src/hpdf_image_png.c
+@@ -109,14 +109,15 @@ ReadPngData_Interlaced (HPDF_Dict image,
+ png_infop info_ptr)
+ {
+ png_uint_32 len = png_get_rowbytes(png_ptr, info_ptr);
++ png_uint_32 height = png_get_image_height(png_ptr, info_ptr);
+ png_bytep* row_pointers = HPDF_GetMem (image->mmgr,
+- info_ptr->height * sizeof (png_bytep));
++ height * sizeof (png_bytep));
+
+ if (row_pointers) {
+ HPDF_UINT i;
+
+- HPDF_MemSet (row_pointers, 0, info_ptr->height * sizeof (png_bytep));
+- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) {
++ HPDF_MemSet (row_pointers, 0, height * sizeof (png_bytep));
++ for (i = 0; i < (HPDF_UINT)height; i++) {
+ row_pointers[i] = HPDF_GetMem (image->mmgr, len);
+
+ if (image->error->error_no != HPDF_OK)
+@@ -126,7 +127,7 @@ ReadPngData_Interlaced (HPDF_Dict image,
+ if (image->error->error_no == HPDF_OK) {
+ png_read_image(png_ptr, row_pointers);
+ if (image->error->error_no == HPDF_OK) { /* add this line */
+- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) {
++ for (i = 0; i < (HPDF_UINT)height; i++) {
+ if (HPDF_Stream_Write (image->stream, row_pointers[i], len) !=
+ HPDF_OK)
+ break;
+@@ -135,7 +136,7 @@ ReadPngData_Interlaced (HPDF_Dict image,
+ }
+
+ /* clean up */
+- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) {
++ for (i = 0; i < (HPDF_UINT)height; i++) {
+ HPDF_FreeMem (image->mmgr, row_pointers[i]);
+ }
+
+@@ -151,12 +152,13 @@ ReadPngData (HPDF_Dict image,
+ png_infop info_ptr)
+ {
+ png_uint_32 len = png_get_rowbytes(png_ptr, info_ptr);
++ png_uint_32 height = png_get_image_height(png_ptr, info_ptr);
+ png_bytep buf_ptr = HPDF_GetMem (image->mmgr, len);
+
+ if (buf_ptr) {
+ HPDF_UINT i;
+
+- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) {
++ for (i = 0; i < (HPDF_UINT)height; i++) {
+ png_read_rows(png_ptr, (png_byte**)&buf_ptr, NULL, 1);
+ if (image->error->error_no != HPDF_OK)
+ break;
+@@ -182,17 +184,19 @@ ReadTransparentPaletteData (HPDF_Dict image,
+ HPDF_STATUS ret = HPDF_OK;
+ HPDF_UINT i, j;
+ png_bytep *row_ptr;
++ png_uint_32 height = png_get_image_height(png_ptr, info_ptr);
++ png_uint_32 width = png_get_image_width(png_ptr, info_ptr);
+
+- row_ptr = HPDF_GetMem (image->mmgr, info_ptr->height * sizeof(png_bytep));
++ row_ptr = HPDF_GetMem (image->mmgr, height * sizeof(png_bytep));
+ if (!row_ptr) {
+ return HPDF_FAILD_TO_ALLOC_MEM;
+ } else {
+ png_uint_32 len = png_get_rowbytes(png_ptr, info_ptr);
+
+- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) {
++ for (i = 0; i < (HPDF_UINT)height; i++) {
+ row_ptr[i] = HPDF_GetMem(image->mmgr, len);
+ if (!row_ptr[i]) {
+- for (; i >= 0; i--) {
++ for (; i > 0; i--) {
+ HPDF_FreeMem (image->mmgr, row_ptr[i]);
+ }
+ HPDF_FreeMem (image->mmgr, row_ptr);
+@@ -207,19 +211,19 @@ ReadTransparentPaletteData (HPDF_Dict image,
+ goto Error;
+ }
+
+- for (j = 0; j < info_ptr->height; j++) {
+- for (i = 0; i < info_ptr->width; i++) {
+- smask_data[info_ptr->width * j + i] = (row_ptr[j][i] < num_trans) ? trans[row_ptr[j][i]] : 0xFF;
++ for (j = 0; j < height; j++) {
++ for (i = 0; i < width; i++) {
++ smask_data[width * j + i] = (row_ptr[j][i] < num_trans) ? trans[row_ptr[j][i]] : 0xFF;
+ }
+
+- if (HPDF_Stream_Write (image->stream, row_ptr[j], info_ptr->width) != HPDF_OK) {
++ if (HPDF_Stream_Write (image->stream, row_ptr[j], width) != HPDF_OK) {
+ ret = HPDF_FILE_IO_ERROR;
+ goto Error;
+ }
+ }
+
+ Error:
+- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) {
++ for (i = 0; i < (HPDF_UINT)height; i++) {
+ HPDF_FreeMem (image->mmgr, row_ptr[i]);
+ }
+
+@@ -238,6 +242,8 @@ ReadTransparentPngData (HPDF_Dict image,
+ HPDF_UINT i, j;
+ png_bytep *row_ptr, row;
+ png_byte color_type;
++ png_uint_32 height = png_get_image_height(png_ptr, info_ptr);
++ png_uint_32 width = png_get_image_width(png_ptr, info_ptr);
+
+ color_type = png_get_color_type(png_ptr, info_ptr);
+
+@@ -245,16 +251,16 @@ ReadTransparentPngData (HPDF_Dict image,
+ return HPDF_INVALID_PNG_IMAGE;
+ }
+
+- row_ptr = HPDF_GetMem (image->mmgr, info_ptr->height * sizeof(png_bytep));
++ row_ptr = HPDF_GetMem (image->mmgr, height * sizeof(png_bytep));
+ if (!row_ptr) {
+ return HPDF_FAILD_TO_ALLOC_MEM;
+ } else {
+ png_uint_32 len = png_get_rowbytes(png_ptr, info_ptr);
+
+- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) {
++ for (i = 0; i < (HPDF_UINT)height; i++) {
+ row_ptr[i] = HPDF_GetMem(image->mmgr, len);
+ if (!row_ptr[i]) {
+- for (; i >= 0; i--) {
++ for (; i > 0; i--) {
+ HPDF_FreeMem (image->mmgr, row_ptr[i]);
+ }
+ HPDF_FreeMem (image->mmgr, row_ptr);
+@@ -271,12 +277,12 @@ ReadTransparentPngData (HPDF_Dict image,
+
+ switch (color_type) {
+ case PNG_COLOR_TYPE_RGB_ALPHA:
+- row_len = 3 * info_ptr->width * sizeof(png_byte);
+- for (j = 0; j < info_ptr->height; j++) {
+- for (i = 0; i < info_ptr->width; i++) {
++ row_len = 3 * width * sizeof(png_byte);
++ for (j = 0; j < height; j++) {
++ for (i = 0; i < width; i++) {
+ row = row_ptr[j];
+ memmove(row + (3 * i), row + (4*i), 3);
+- smask_data[info_ptr->width * j + i] = row[4 * i + 3];
++ smask_data[width * j + i] = row[4 * i + 3];
+ }
+
+ if (HPDF_Stream_Write (image->stream, row, row_len) != HPDF_OK) {
+@@ -286,12 +292,12 @@ ReadTransparentPngData (HPDF_Dict image,
+ }
+ break;
+ case PNG_COLOR_TYPE_GRAY_ALPHA:
+- row_len = info_ptr->width * sizeof(png_byte);
+- for (j = 0; j < info_ptr->height; j++) {
+- for (i = 0; i < info_ptr->width; i++) {
++ row_len = width * sizeof(png_byte);
++ for (j = 0; j < height; j++) {
++ for (i = 0; i < width; i++) {
+ row = row_ptr[j];
+ row[i] = row[2 * i];
+- smask_data[info_ptr->width * j + i] = row[2 * i + 1];
++ smask_data[width * j + i] = row[2 * i + 1];
+ }
+
+ if (HPDF_Stream_Write (image->stream, row, row_len) != HPDF_OK) {
+@@ -306,7 +312,7 @@ ReadTransparentPngData (HPDF_Dict image,
+ }
+
+ Error:
+- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) {
++ for (i = 0; i < (HPDF_UINT)height; i++) {
+ HPDF_FreeMem (image->mmgr, row_ptr[i]);
+ }
+
+@@ -415,7 +421,8 @@ LoadPngData (HPDF_Dict image,
+
+ {
+ HPDF_STATUS ret = HPDF_OK;
+-
++ png_uint_32 width, height;
++ int bit_depth, color_type;
+ png_structp png_ptr = NULL;
+ png_infop info_ptr = NULL;
+
+@@ -447,8 +454,10 @@ LoadPngData (HPDF_Dict image,
+ goto Exit;
+ }
+
++ png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, NULL, NULL, NULL);
++
+ /* 16bit images are not supported. */
+- if (info_ptr->bit_depth == 16) {
++ if (bit_depth == 16) {
+ png_set_strip_16(png_ptr);
+ }
+
+@@ -458,7 +467,7 @@ LoadPngData (HPDF_Dict image,
+ }
+
+ /* check palette-based images for transparent areas and load them immediately if found */
+- if (xref && PNG_COLOR_TYPE_PALETTE & info_ptr->color_type) {
++ if (xref && PNG_COLOR_TYPE_PALETTE & color_type) {
+ png_bytep trans;
+ int num_trans;
+ HPDF_Dict smask;
+@@ -478,10 +487,10 @@ LoadPngData (HPDF_Dict image,
+ smask->header.obj_class |= HPDF_OSUBCLASS_XOBJECT;
+ ret = HPDF_Dict_AddName (smask, "Type", "XObject");
+ ret += HPDF_Dict_AddName (smask, "Subtype", "Image");
+- ret += HPDF_Dict_AddNumber (smask, "Width", (HPDF_UINT)info_ptr->width);
+- ret += HPDF_Dict_AddNumber (smask, "Height", (HPDF_UINT)info_ptr->height);
++ ret += HPDF_Dict_AddNumber (smask, "Width", (HPDF_UINT)width);
++ ret += HPDF_Dict_AddNumber (smask, "Height", (HPDF_UINT)height);
+ ret += HPDF_Dict_AddName (smask, "ColorSpace", "DeviceGray");
+- ret += HPDF_Dict_AddNumber (smask, "BitsPerComponent", (HPDF_UINT)info_ptr->bit_depth);
++ ret += HPDF_Dict_AddNumber (smask, "BitsPerComponent", (HPDF_UINT)bit_depth);
+
+ if (ret != HPDF_OK) {
+ HPDF_Dict_Free(smask);
+@@ -489,7 +498,7 @@ LoadPngData (HPDF_Dict image,
+ goto Exit;
+ }
+
+- smask_data = HPDF_GetMem(image->mmgr, info_ptr->width * info_ptr->height);
++ smask_data = HPDF_GetMem(image->mmgr, width * height);
+ if (!smask_data) {
+ HPDF_Dict_Free(smask);
+ ret = HPDF_FAILD_TO_ALLOC_MEM;
+@@ -503,7 +512,7 @@ LoadPngData (HPDF_Dict image,
+ goto Exit;
+ }
+
+- if (HPDF_Stream_Write(smask->stream, smask_data, info_ptr->width * info_ptr->height) != HPDF_OK) {
++ if (HPDF_Stream_Write(smask->stream, smask_data, width * height) != HPDF_OK) {
+ HPDF_FreeMem(image->mmgr, smask_data);
+ HPDF_Dict_Free(smask);
+ ret = HPDF_FILE_IO_ERROR;
+@@ -513,9 +522,9 @@ LoadPngData (HPDF_Dict image,
+
+
+ ret += CreatePallet(image, png_ptr, info_ptr);
+- ret += HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)info_ptr->width);
+- ret += HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)info_ptr->height);
+- ret += HPDF_Dict_AddNumber (image, "BitsPerComponent", (HPDF_UINT)info_ptr->bit_depth);
++ ret += HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)width);
++ ret += HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)height);
++ ret += HPDF_Dict_AddNumber (image, "BitsPerComponent", (HPDF_UINT)bit_depth);
+ ret += HPDF_Dict_Add (image, "SMask", smask);
+
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+@@ -526,7 +535,7 @@ no_transparent_color_in_palette:
+
+ /* read images with alpha channel right away
+ we have to do this because image transparent mask must be added to the Xref */
+- if (xref && PNG_COLOR_MASK_ALPHA & info_ptr->color_type) {
++ if (xref && PNG_COLOR_MASK_ALPHA & color_type) {
+ HPDF_Dict smask;
+ png_bytep smask_data;
+
+@@ -539,10 +548,10 @@ no_transparent_color_in_palette:
+ smask->header.obj_class |= HPDF_OSUBCLASS_XOBJECT;
+ ret = HPDF_Dict_AddName (smask, "Type", "XObject");
+ ret += HPDF_Dict_AddName (smask, "Subtype", "Image");
+- ret += HPDF_Dict_AddNumber (smask, "Width", (HPDF_UINT)info_ptr->width);
+- ret += HPDF_Dict_AddNumber (smask, "Height", (HPDF_UINT)info_ptr->height);
++ ret += HPDF_Dict_AddNumber (smask, "Width", (HPDF_UINT)width);
++ ret += HPDF_Dict_AddNumber (smask, "Height", (HPDF_UINT)height);
+ ret += HPDF_Dict_AddName (smask, "ColorSpace", "DeviceGray");
+- ret += HPDF_Dict_AddNumber (smask, "BitsPerComponent", (HPDF_UINT)info_ptr->bit_depth);
++ ret += HPDF_Dict_AddNumber (smask, "BitsPerComponent", (HPDF_UINT)bit_depth);
+
+ if (ret != HPDF_OK) {
+ HPDF_Dict_Free(smask);
+@@ -550,7 +559,7 @@ no_transparent_color_in_palette:
+ goto Exit;
+ }
+
+- smask_data = HPDF_GetMem(image->mmgr, info_ptr->width * info_ptr->height);
++ smask_data = HPDF_GetMem(image->mmgr, width * height);
+ if (!smask_data) {
+ HPDF_Dict_Free(smask);
+ ret = HPDF_FAILD_TO_ALLOC_MEM;
+@@ -564,7 +573,7 @@ no_transparent_color_in_palette:
+ goto Exit;
+ }
+
+- if (HPDF_Stream_Write(smask->stream, smask_data, info_ptr->width * info_ptr->height) != HPDF_OK) {
++ if (HPDF_Stream_Write(smask->stream, smask_data, width * height) != HPDF_OK) {
+ HPDF_FreeMem(image->mmgr, smask_data);
+ HPDF_Dict_Free(smask);
+ ret = HPDF_FILE_IO_ERROR;
+@@ -572,14 +581,14 @@ no_transparent_color_in_palette:
+ }
+ HPDF_FreeMem(image->mmgr, smask_data);
+
+- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
++ if (color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
+ ret += HPDF_Dict_AddName (image, "ColorSpace", "DeviceGray");
+ } else {
+ ret += HPDF_Dict_AddName (image, "ColorSpace", "DeviceRGB");
+ }
+- ret += HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)info_ptr->width);
+- ret += HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)info_ptr->height);
+- ret += HPDF_Dict_AddNumber (image, "BitsPerComponent", (HPDF_UINT)info_ptr->bit_depth);
++ ret += HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)width);
++ ret += HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)height);
++ ret += HPDF_Dict_AddNumber (image, "BitsPerComponent", (HPDF_UINT)bit_depth);
+ ret += HPDF_Dict_Add (image, "SMask", smask);
+
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+@@ -589,9 +598,9 @@ no_transparent_color_in_palette:
+ /* if the image has color palette, copy the pallet of the image to
+ * create color map.
+ */
+- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
++ if (color_type == PNG_COLOR_TYPE_PALETTE)
+ ret = CreatePallet(image, png_ptr, info_ptr);
+- else if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY)
++ else if (color_type == PNG_COLOR_TYPE_GRAY)
+ ret = HPDF_Dict_AddName (image, "ColorSpace", "DeviceGray");
+ else
+ ret = HPDF_Dict_AddName (image, "ColorSpace", "DeviceRGB");
+@@ -617,16 +626,16 @@ no_transparent_color_in_palette:
+ }
+
+ /* setting the info of the image. */
+- if (HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)info_ptr->width)
++ if (HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)width)
+ != HPDF_OK)
+ goto Exit;
+
+- if (HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)info_ptr->height)
++ if (HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)height)
+ != HPDF_OK)
+ goto Exit;
+
+ if (HPDF_Dict_AddNumber (image, "BitsPerComponent",
+- (HPDF_UINT)info_ptr->bit_depth) != HPDF_OK)
++ (HPDF_UINT)bit_depth) != HPDF_OK)
+ goto Exit;
+
+ /* clean up */
diff --git a/media-libs/libharu/files/libharu-2.3.0-dont-force-strip.patch b/media-libs/libharu/files/libharu-2.3.0-dont-force-strip.patch
new file mode 100644
index 000000000000..393302bce239
--- /dev/null
+++ b/media-libs/libharu/files/libharu-2.3.0-dont-force-strip.patch
@@ -0,0 +1,22 @@
+--- configure.in.orig 2014-02-19 12:22:46.954651117 -0800
++++ configure.in 2014-02-19 12:22:37.211604308 -0800
+@@ -171,11 +171,6 @@
+
+ fi
+
+- dnl Do not strip symbols from developer object files.
+- INSTALL_STRIP_FLAG=""
+-else
+- dnl Make sure to strip symbols from non-developer object files.
+- INSTALL_STRIP_FLAG="-s"
+ fi
+ dnl }}}
+
+@@ -322,7 +317,6 @@
+
+ dnl link against libm
+ LIBS="$LIBS -lm"
+-AC_SUBST(INSTALL_STRIP_FLAG)
+
+ AC_CONFIG_FILES([Makefile src/Makefile include/Makefile])
+ AC_OUTPUT
diff --git a/media-libs/libharu/libharu-2.3.0-r1.ebuild b/media-libs/libharu/libharu-2.3.0-r1.ebuild
new file mode 100644
index 000000000000..cc05c247da75
--- /dev/null
+++ b/media-libs/libharu/libharu-2.3.0-r1.ebuild
@@ -0,0 +1,37 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+AUTOTOOLS_AUTORECONF=1
+
+inherit autotools-utils multilib-minimal
+
+MYP=RELEASE_${PV//./_}
+
+DESCRIPTION="C/C++ library for PDF generation"
+HOMEPAGE="http://www.libharu.org/"
+SRC_URI="https://github.com/${PN}/${PN}/archive/${MYP}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="ZLIB"
+SLOT="0/${PV}"
+KEYWORDS="amd64 ppc x86 ~amd64-linux ~x86-linux"
+IUSE="png static-libs zlib"
+
+DEPEND="
+ png? ( >=media-libs/libpng-1.2.51[${MULTILIB_USEDEP}] )
+ zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )"
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}/${PN}-${MYP}"
+
+PATCHES=( "${FILESDIR}"/${P}-dont-force-strip.patch )
+
+multilib_src_configure() {
+ local myeconfargs=(
+ $(use_with png png "${EPREFIX}"/usr)
+ $(use_with zlib)
+ )
+ autotools-utils_src_configure
+}
diff --git a/media-libs/libharu/metadata.xml b/media-libs/libharu/metadata.xml
new file mode 100644
index 000000000000..638ccc8b7924
--- /dev/null
+++ b/media-libs/libharu/metadata.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>sci</herd>
+ <herd>graphics</herd>
+ <longdescription lang="en">
+ Haru PDF library is a ANSI/C library for generating PDF files.
+ It supports the following features:
+ 1. Generating PDF files with lines, text, images.
+ 2. Outline, text annotation, link annotation.
+ 3. Compressing document with deflate-decode.
+ 4. Embedding PNG, Jpeg images.
+ 5. Embedding Type1 font and TrueType font.
+ 6. Creating encrypted PDF files.
+ 7. Using various character sets (ISO8859-1~16, MSCP1250~8, KOI8-R).
+ 8. Supporting CJK fonts and encodings.
+</longdescription>
+ <upstream>
+ <remote-id type="github">libharu/libharu</remote-id>
+ </upstream>
+</pkgmetadata>