summaryrefslogtreecommitdiff
path: root/pcr/cinepaint-lts
diff options
context:
space:
mode:
Diffstat (limited to 'pcr/cinepaint-lts')
-rw-r--r--pcr/cinepaint-lts/LICENSE25
-rw-r--r--pcr/cinepaint-lts/PKGBUILD62
-rw-r--r--pcr/cinepaint-lts/cinepaint-libpng15.patch446
-rw-r--r--pcr/cinepaint-lts/cinepaint.install11
4 files changed, 544 insertions, 0 deletions
diff --git a/pcr/cinepaint-lts/LICENSE b/pcr/cinepaint-lts/LICENSE
new file mode 100644
index 000000000..746207229
--- /dev/null
+++ b/pcr/cinepaint-lts/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/pcr/cinepaint-lts/PKGBUILD b/pcr/cinepaint-lts/PKGBUILD
new file mode 100644
index 000000000..da085729f
--- /dev/null
+++ b/pcr/cinepaint-lts/PKGBUILD
@@ -0,0 +1,62 @@
+# $Id$
+# Maintainer: tobias [tobias.archlinux.org]
+# Contributor: tobias [tobias.justdreams.de]
+# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com>
+
+pkgname=cinepaint-lts
+pkgver=1.0
+pkgrel=1
+pkgdesc='Sophisticated graphics manipulation programm supporting > 8bit pictures'
+arch=(i686 x86_64 mips64el)
+license=(LGPL GPL MIT)
+url=http://www.${pkgname%-lts}.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'
+)
+conflicts=(${pkgname%-lts})
+provides=(${pkgname%-lts})
+options=(!libtool)
+install=${pkgname%-lts}.install
+source=(
+ http://sourceforge.net/projects/${pkgname%-lts}/files/CinePaint/${pkgname%-lts}-$pkgver.tgz
+ LICENSE
+ ${pkgname%-lts}-libpng15.patch
+)
+md5sums=(
+ 7dfdb005d246578392ac9bd500534804
+ 169085743f667c250ea2e4022efecf5f
+ 6d3f65b72e0f1569a9efe1bcab1b8124
+)
+
+build() {
+ cd $srcdir/${pkgname%-lts}
+
+ rm config.{sub,guess}
+ ln -s /usr/share/automake-1.12/config.sub config.sub
+ ln -s /usr/share/automake-1.12/config.guess config.guess
+
+ patch -p1 -i ../${pkgname%-lts}-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
+ sed -i -e '1 s/^/#include <unistd.h>\n/' plug-ins/icc_examin/icc_examin/icc_modell_beobachter.cpp
+
+ sh autogen.sh
+ 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%-lts}
+ make DESTDIR=$pkgdir install
+ sed -i -e "s|-I$srcdir/${pkgname%-lts}||" -e "s|-I$srcdir/${pkgname%-lts}/lib||" -e "/lib${pkgname%-lts}.la/d" \
+ -e "s|${srcdir}/${pkgname%-lts}/lib/.libs/\$dlname||" $pkgdir/usr/bin/${pkgname%-lts}tool
+ sed -i "s/${pkgname%-lts}.png/${pkgname%-lts}/" $pkgdir/usr/share/applications/${pkgname%-lts}.desktop
+ install -D -m644 $srcdir/LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/pcr/cinepaint-lts/cinepaint-libpng15.patch b/pcr/cinepaint-lts/cinepaint-libpng15.patch
new file mode 100644
index 000000000..619d9af42
--- /dev/null
+++ b/pcr/cinepaint-lts/cinepaint-libpng15.patch
@@ -0,0 +1,446 @@
+diff -Nur a/plug-ins/png/png.c b/plug-ins/png/png.c
+--- a/plug-ins/png/png.c 2006-11-24 18:52:55.000000000 -0200
++++ b/plug-ins/png/png.c 2012-10-12 01:07:56.452245955 -0200
+@@ -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 +850,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;
+@@ -858,87 +884,75 @@
+ 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
+ */
+
+ 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,16 +964,22 @@
+ * 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)) {
+@@ -970,10 +990,10 @@
+ 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) {
+@@ -1097,7 +1118,6 @@
+ 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/pcr/cinepaint-lts/cinepaint.install b/pcr/cinepaint-lts/cinepaint.install
new file mode 100644
index 000000000..5e5cfef4d
--- /dev/null
+++ b/pcr/cinepaint-lts/cinepaint.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ update-desktop-database -q
+}