From 738e6c6d93b4c7118e49b38c610abed8b7f7d55a Mon Sep 17 00:00:00 2001 From: root Date: Sat, 28 Jan 2012 23:14:55 +0000 Subject: Sat Jan 28 23:14:55 UTC 2012 --- staging/cinepaint/LICENSE | 25 ++ staging/cinepaint/PKGBUILD | 47 +++ staging/cinepaint/cinepaint-libpng15.patch | 452 +++++++++++++++++++++++++++++ staging/cinepaint/cinepaint.install | 11 + 4 files changed, 535 insertions(+) create mode 100644 staging/cinepaint/LICENSE create mode 100644 staging/cinepaint/PKGBUILD create mode 100644 staging/cinepaint/cinepaint-libpng15.patch create mode 100644 staging/cinepaint/cinepaint.install (limited to 'staging/cinepaint') diff --git a/staging/cinepaint/LICENSE b/staging/cinepaint/LICENSE new file mode 100644 index 000000000..746207229 --- /dev/null +++ b/staging/cinepaint/LICENSE @@ -0,0 +1,25 @@ +Copyright (c) 2005, Kai-Uwe Behrmann +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution.ntributors may be used to endorse or promote + products derived from this software without specific prior written + permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/staging/cinepaint/PKGBUILD b/staging/cinepaint/PKGBUILD new file mode 100644 index 000000000..e205c9c79 --- /dev/null +++ b/staging/cinepaint/PKGBUILD @@ -0,0 +1,47 @@ +# $Id: PKGBUILD 147751 2012-01-27 22:56:00Z eric $ +# Maintainer: tobias [tobias.archlinux.org] +# Contributor: tobias [tobias.justdreams.de] + +pkgname=cinepaint +pkgver=1.0 +pkgrel=2 +pkgdesc="Sophisticated graphics manipulation programm supporting > 8bit pictures" +arch=('i686' 'x86_64') +license=('LGPL' 'GPL' 'MIT') +url="http://www.cinepaint.org" +depends=('gtk2' 'openexr' 'lcms' 'libxpm' 'fltk' 'ftgl' 'libxxf86vm') +makedepends=('python2' 'gutenprint') +optdepends=('python2: for python plug-ins' + 'gutenprint: for print plug-ins' + 'ghostscript: for pdf plug-ins') +options=('!libtool') +install=cinepaint.install +source=(http://sourceforge.net/projects/cinepaint/files/CinePaint/${pkgname}-${pkgver}.tgz + LICENSE cinepaint-libpng15.patch) +md5sums=('7dfdb005d246578392ac9bd500534804' + '169085743f667c250ea2e4022efecf5f' + '682de65ad358512d00a8b76730453664') + +build() { + cd "${srcdir}/${pkgname}" + patch -p1 -i ../cinepaint-libpng15.patch + find plug-ins/pygimp -type f -exec sed -i 's#env python#env python2#' {} + + sed -i 's|$(LDFLAGS) -o|$(LDFLAGS) $(GTK_LIBS) -o|' lib/Makefile.in + + aclocal -I aclocal + autoconf + LIBS+="-lstdc++ -lm -lX11" ./configure --prefix=/usr --libdir=/usr/lib --mandir=/usr/share/man \ + --enable-gtk2 --enable-pygimp --with-python=/usr/bin/python2 + sed -i 's/-Wl,,/-Wl,/' lib/fl_i18n/Makefile plug-ins/bracketing_to_hdr/Makefile \ + plug-ins/collect/Makefile plug-ins/icc_examin/icc_examin/Makefile plug-ins/pdf/Makefile + make +} + +package() { + cd "${srcdir}/${pkgname}" + make DESTDIR="${pkgdir}" install + sed -i -e "s|-I$srcdir/cinepaint||" -e "s|-I$srcdir/cinepaint/lib||" -e "/libcinepaint.la/d" \ + -e "s|$srcdir/cinepaint/lib/.libs/\$dlname||" "${pkgdir}/usr/bin/cinepainttool" + sed -i "s/cinepaint.png/cinepaint/" "${pkgdir}/usr/share/applications/cinepaint.desktop" + install -D -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" +} diff --git a/staging/cinepaint/cinepaint-libpng15.patch b/staging/cinepaint/cinepaint-libpng15.patch new file mode 100644 index 000000000..e22edafae --- /dev/null +++ b/staging/cinepaint/cinepaint-libpng15.patch @@ -0,0 +1,452 @@ +diff -Naur cinepaint.old/plug-ins/png/png.c cinepaint/plug-ins/png/png.c +--- cinepaint.old/plug-ins/png/png.c 2012-01-23 12:39:42.000000000 -0500 ++++ cinepaint/plug-ins/png/png.c 2012-01-23 12:39:50.000000000 -0500 +@@ -390,6 +390,16 @@ + gchar *progress; /* Title for progress display... */ + guchar alpha[256], /* Index -> Alpha */ + *alpha_ptr; /* Temporary pointer */ ++ png_byte color_type; ++ png_byte bit_depth; ++ png_colorp palette; ++ int num_palette; ++ png_charpp iccp_name; ++ int compression_type; ++ png_bytepp iccp_profile; ++ png_uint_32 iccp_proflen; ++ png_uint_32 width, height; ++ png_byte channels; + + /* + * PNG 0.89 and newer have a sane, forwards compatible constructor. +@@ -405,7 +415,7 @@ + info = (png_infop)calloc(sizeof(png_info), 1); + #endif /* PNG_LIBPNG_VER > 88 */ + +- if (setjmp (pp->jmpbuf)) ++ if (setjmp (png_jmpbuf(pp))) + { + g_message ("%s\nPNG error. File corrupted?", filename); + return image; +@@ -442,21 +452,26 @@ + */ + + png_read_info(pp, info); ++ color_type = png_get_color_type(pp, info); ++ width=png_get_image_width(pp, info); ++ height=png_get_image_height(pp, info); + + /* + * Latest attempt, this should be my best yet :) + */ + ++ bit_depth = png_get_bit_depth(pp, info); ++ + #ifndef WORDS_BIGENDIAN +- if(info->bit_depth == 16) ++ if(bit_depth == 16) + png_set_swap(pp); + #endif + +- if (info->color_type == PNG_COLOR_TYPE_GRAY && info->bit_depth < 8) { ++ if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) { + png_set_expand(pp); + } + +- if (info->color_type == PNG_COLOR_TYPE_PALETTE && info->bit_depth < 8) { ++ if (color_type == PNG_COLOR_TYPE_PALETTE && bit_depth < 8) { + png_set_packing(pp); + } + +@@ -464,8 +479,8 @@ + * Expand G+tRNS to GA, RGB+tRNS to RGBA + */ + +- if (info->color_type != PNG_COLOR_TYPE_PALETTE && +- (info->valid & PNG_INFO_tRNS)) { ++ if (color_type != PNG_COLOR_TYPE_PALETTE && ++ (png_get_valid(pp, info, PNG_INFO_tRNS))) { + png_set_expand(pp); + } + +@@ -482,7 +497,7 @@ + + #if PNG_LIBPNG_VER > 99 + if (png_get_valid(pp, info, PNG_INFO_tRNS) && +- info->color_type == PNG_COLOR_TYPE_PALETTE) ++ color_type == PNG_COLOR_TYPE_PALETTE) + { + png_get_tRNS(pp, info, &alpha_ptr, &num, NULL); + /* Copy the existing alpha values from the tRNS chunk */ +@@ -505,9 +520,9 @@ + + png_read_update_info(pp, info); + +- if(info->bit_depth==16) ++ if(bit_depth==16) + { +- switch (info->color_type) ++ switch (color_type) + { + case PNG_COLOR_TYPE_RGB : /* RGB */ + bpp = 6; +@@ -545,7 +560,7 @@ + } + else + { +- switch (info->color_type) ++ switch (color_type) + { + case PNG_COLOR_TYPE_RGB : /* RGB */ + bpp = 3; +@@ -582,7 +597,7 @@ + }; + } + +- image = gimp_image_new(info->width, info->height, image_type); ++ image = gimp_image_new(width, height, image_type); + if (image == -1) + { + g_message("Can't allocate new image\n%s", filename); +@@ -595,7 +610,7 @@ + * Create the "background" layer to hold the image... + */ + +- layer = gimp_layer_new(image, _("Background"), info->width, info->height, ++ layer = gimp_layer_new(image, _("Background"), width, height, + layer_type, 100, NORMAL_MODE); + gimp_image_add_layer(image, layer, 0); + +@@ -627,20 +642,21 @@ + + empty= 0; /* by default assume no full transparent palette entries */ + +- if (info->color_type & PNG_COLOR_MASK_PALETTE) { ++ if (color_type & PNG_COLOR_MASK_PALETTE) { + + #if PNG_LIBPNG_VER > 99 ++ png_get_PLTE(pp, info, &palette, &num_palette); + if (png_get_valid(pp, info, PNG_INFO_tRNS)) { + for (empty= 0; empty < 256 && alpha[empty] == 0; ++empty); + /* Calculates number of fully transparent "empty" entries */ + +- gimp_image_set_cmap(image, (guchar *) (info->palette + empty), +- info->num_palette - empty); ++ gimp_image_set_cmap(image, (guchar *) (palette + empty), ++ num_palette - empty); + } else { +- gimp_image_set_cmap(image, (guchar *)info->palette, info->num_palette); ++ gimp_image_set_cmap(image, (guchar *)palette, num_palette); + } + #else +- gimp_image_set_cmap(image, (guchar *)info->palette, info->num_palette); ++ gimp_image_set_cmap(image, (guchar *)palette, num_palette); + #endif /* PNG_LIBPNG_VER > 99 */ + + } +@@ -659,18 +675,19 @@ + */ + + tile_height = gimp_tile_height (); +- pixel = g_new(guchar, tile_height * info->width * bpp); ++ pixel = g_new(guchar, tile_height * width * bpp); + pixels = g_new(guchar *, tile_height); ++ channels=png_get_channels(pp, info); + +- if(info->bit_depth==16) ++ if(bit_depth==16) + { + for (i = 0; i < tile_height; i ++) +- pixels[i] = pixel + info->width * info->channels * i * 2; ++ pixels[i] = pixel + width * channels * i * 2; + } + else + { + for (i = 0; i < tile_height; i ++) +- pixels[i] = pixel + info->width * info->channels * i; ++ pixels[i] = pixel + width * channels * i; + } + + for (pass = 0; pass < num_passes; pass ++) +@@ -680,11 +697,11 @@ + */ + + for (begin = 0, end = tile_height; +- begin < info->height; ++ begin < height; + begin += tile_height, end += tile_height) + { +- if (end > info->height) +- end = info->height; ++ if (end > height) ++ end = height; + + num = end - begin; + +@@ -697,20 +714,21 @@ + gimp_pixel_rgn_set_rect(&pixel_rgn, pixel, 0, begin, + drawable->width, num); + +- gimp_progress_update(((double)pass + (double)end / (double)info->height) / ++ gimp_progress_update(((double)pass + (double)end / (double)height) / + (double)num_passes); + }; + }; + + #if defined(PNG_iCCP_SUPPORTED) + /* set icc profile */ +- if (info->iccp_proflen > 0) { +- gimp_image_set_icc_profile_by_mem (image, info->iccp_proflen, +- info->iccp_profile, +- ICC_IMAGE_PROFILE); ++ png_get_iCCP(pp, info, (png_charpp)iccp_name, &compression_type, iccp_profile, &iccp_proflen); ++ if (iccp_proflen > 0) { ++ gimp_image_set_icc_profile_by_mem (image, iccp_proflen, ++ (gchar *)iccp_profile, ++ ICC_IMAGE_PROFILE); + printf ("%s:%d %s() set embedded profile \"%s\"\n", + __FILE__,__LINE__,__func__, +- info->iccp_name); ++ (char *)iccp_name); + } + #endif + +@@ -808,6 +826,14 @@ + blue; /* Used for palette background */ + time_t cutime; /* Time since epoch */ + struct tm *gmt; /* GMT broken down */ ++ png_byte color_type; ++ png_byte bit_depth; ++ int filter_method=0; ++ png_colorp palette; ++ int num_palette; ++ png_charpp iccp_name; ++ png_uint_32 height; ++ int compression_type; + + /* + * PNG 0.89 and newer have a sane, forwards compatible constructor. +@@ -824,7 +849,7 @@ + info = (png_infop)calloc(sizeof(png_info), 1); + #endif /* PNG_LIBPNG_VER > 88 */ + +- if (setjmp (pp->jmpbuf)) ++ if (setjmp (png_jmpbuf(pp))) + { + g_message ("%s\nPNG error. Couldn't save image", filename); + return 0; +@@ -857,15 +882,6 @@ + drawable = gimp_drawable_get (drawable_ID); + type = gimp_drawable_type (drawable_ID); + +- /* +- * Set the image dimensions, bit depth, interlacing and compression +- */ +- +- png_set_compression_level (pp, pngvals.compression_level); +- +- info->width = drawable->width; +- info->height = drawable->height; +- info->interlace_type = pngvals.interlaced; + + /* + * Set color type and remember bytes per pixel count +@@ -874,71 +890,69 @@ + switch (type) + { + case RGB_IMAGE : +- info->color_type = PNG_COLOR_TYPE_RGB; +- info->bit_depth = 8; ++ color_type = PNG_COLOR_TYPE_RGB; ++ bit_depth = 8; + bpp = 3; + break; + case RGBA_IMAGE : +- info->color_type = PNG_COLOR_TYPE_RGB_ALPHA; +- info->bit_depth = 8; ++ color_type = PNG_COLOR_TYPE_RGB_ALPHA; ++ bit_depth = 8; + bpp = 4; + break; + case GRAY_IMAGE : +- info->color_type = PNG_COLOR_TYPE_GRAY; +- info->bit_depth = 8; ++ color_type = PNG_COLOR_TYPE_GRAY; ++ bit_depth = 8; + bpp = 1; + break; + case GRAYA_IMAGE : +- info->color_type = PNG_COLOR_TYPE_GRAY_ALPHA; +- info->bit_depth = 8; ++ color_type = PNG_COLOR_TYPE_GRAY_ALPHA; ++ bit_depth = 8; + bpp = 2; + break; + case INDEXED_IMAGE : + bpp = 1; +- info->bit_depth = 8; +- info->color_type = PNG_COLOR_TYPE_PALETTE; +- info->valid |= PNG_INFO_PLTE; +- info->palette= (png_colorp) gimp_image_get_cmap(image_ID, &num_colors); +- info->num_palette= num_colors; ++ bit_depth = 8; ++ color_type = PNG_COLOR_TYPE_PALETTE; ++ png_get_valid(pp, info, PNG_INFO_PLTE); ++ png_set_PLTE(pp, info, (png_colorp) gimp_image_get_cmap(image_ID, &num_colors), num_colors); + break; + case INDEXEDA_IMAGE : + bpp = 2; +- info->bit_depth = 8; +- info->color_type = PNG_COLOR_TYPE_PALETTE; ++ bit_depth = 8; ++ color_type = PNG_COLOR_TYPE_PALETTE; + respin_cmap (pp, info, image_ID); /* fix up transparency */ + break; + case U16_RGB_IMAGE : +- info->color_type = PNG_COLOR_TYPE_RGB; +- info->bit_depth = 16; ++ color_type = PNG_COLOR_TYPE_RGB; ++ bit_depth = 16; + bpp = 6; + break; + case U16_RGBA_IMAGE : +- info->color_type = PNG_COLOR_TYPE_RGB_ALPHA; +- info->bit_depth = 16; ++ color_type = PNG_COLOR_TYPE_RGB_ALPHA; ++ bit_depth = 16; + bpp = 8; + break; + case U16_GRAY_IMAGE : +- info->color_type = PNG_COLOR_TYPE_GRAY; +- info->bit_depth = 16; ++ color_type = PNG_COLOR_TYPE_GRAY; ++ bit_depth = 16; + bpp = 2; + break; + case U16_GRAYA_IMAGE : +- info->color_type = PNG_COLOR_TYPE_GRAY_ALPHA; +- info->bit_depth = 16; ++ color_type = PNG_COLOR_TYPE_GRAY_ALPHA; ++ bit_depth = 16; + bpp = 4; + break; + case U16_INDEXED_IMAGE : + bpp = 2; +- info->bit_depth = 16; +- info->color_type = PNG_COLOR_TYPE_PALETTE; +- info->valid |= PNG_INFO_PLTE; +- info->palette= (png_colorp) gimp_image_get_cmap(image_ID, &num_colors); +- info->num_palette= num_colors; ++ bit_depth = 16; ++ color_type = PNG_COLOR_TYPE_PALETTE; ++ png_get_valid(pp, info, PNG_INFO_PLTE); ++ png_set_PLTE(pp, info, (png_colorp) gimp_image_get_cmap(image_ID, &num_colors), num_colors); + break; + case U16_INDEXEDA_IMAGE : + bpp = 4; +- info->bit_depth = 16; +- info->color_type = PNG_COLOR_TYPE_PALETTE; ++ bit_depth = 16; ++ color_type = PNG_COLOR_TYPE_PALETTE; + respin_cmap (pp, info, image_ID); /* fix up transparency */ + break; + default: +@@ -950,30 +964,36 @@ + * Fix bit depths for (possibly) smaller colormap images + */ + +- if (info->valid & PNG_INFO_PLTE) { +- if (info->num_palette <= 2) +- info->bit_depth= 1; +- else if (info->num_palette <= 4) +- info->bit_depth= 2; +- else if (info->num_palette <= 16) +- info->bit_depth= 4; ++ if (png_get_valid(pp, info, PNG_INFO_PLTE)) { ++ png_get_PLTE(pp, info, &palette, &num_palette); ++ if (num_palette <= 2) ++ bit_depth= 1; ++ else if (num_palette <= 4) ++ bit_depth= 2; ++ else if (num_palette <= 16) ++ bit_depth= 4; + /* otherwise the default is fine */ + } + ++ png_set_compression_level (pp, pngvals.compression_level); ++ png_set_IHDR(pp, info, drawable->width, drawable->height, ++ bit_depth, color_type, pngvals.interlaced, compression_type, filter_method); ++ ++ + // write icc profile + #if defined(PNG_iCCP_SUPPORTED) + if (gimp_image_has_icc_profile (image_ID, ICC_IMAGE_PROFILE)) { +- int size; ++ int size; + char *buffer; + + buffer = gimp_image_get_icc_profile_by_mem (image_ID, &size, + ICC_IMAGE_PROFILE); + png_set_iCCP (pp, info, + gimp_image_get_icc_profile_description (image_ID, ICC_IMAGE_PROFILE), +- 0, buffer, size); ++ 0, (png_const_bytep)buffer, size); + printf ("%s:%d %s() embedd icc profile \"%s\"\n", + __FILE__,__LINE__,__func__, +- info->iccp_name); ++ (char *)iccp_name); + } + #endif + +@@ -1039,13 +1059,13 @@ + * Convert unpacked pixels to packed if necessary + */ + +- if (info->color_type == PNG_COLOR_TYPE_PALETTE && info->bit_depth < 8) ++ if (color_type == PNG_COLOR_TYPE_PALETTE && bit_depth < 8) + png_set_packing(pp); + + /* Set swapping for 16 bit per sample images */ + + #ifndef WORDS_BIGENDIAN +- if (info->bit_depth == 16) ++ if (bit_depth == 16) + png_set_swap(pp); + #endif + +@@ -1063,6 +1083,7 @@ + + gimp_pixel_rgn_init(&pixel_rgn, drawable, 0, 0, drawable->width, + drawable->height, FALSE, FALSE); ++ height=png_get_image_height(pp, info); + + for (pass = 0; pass < num_passes; pass ++) + { +@@ -1077,7 +1098,7 @@ + num = end - begin; + + gimp_pixel_rgn_get_rect (&pixel_rgn, pixel, 0, begin, drawable->width, num); +- if (info->valid & PNG_INFO_tRNS) { ++ if (png_get_valid(pp, info, PNG_INFO_tRNS)) { + for (i = 0; i < num; ++i) { + fixed= pixels[i]; + for (k = 0; k < drawable->width; ++k) { +@@ -1085,7 +1106,7 @@ + } + } + /* Forgot this case before, what if there are too many colors? */ +- } else if (info->valid & PNG_INFO_PLTE && bpp == 2) { ++ } else if (png_get_valid(pp, info, PNG_INFO_PLTE) && bpp == 2) { + for (i = 0; i < num; ++i) { + fixed= pixels[i]; + for (k = 0; k < drawable->width; ++k) { +@@ -1095,9 +1116,8 @@ + } + + png_write_rows (pp, pixels, num); +- + gimp_progress_update (((double)pass + (double)end / +- (double)info->height) / (double)num_passes); ++ (double)height) / (double)num_passes); + }; + }; + diff --git a/staging/cinepaint/cinepaint.install b/staging/cinepaint/cinepaint.install new file mode 100644 index 000000000..5e5cfef4d --- /dev/null +++ b/staging/cinepaint/cinepaint.install @@ -0,0 +1,11 @@ +post_install() { + update-desktop-database -q +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + update-desktop-database -q +} -- cgit v1.2.3-54-g00ecf