diff options
author | root <root@rshg054.dnsready.net> | 2011-08-09 23:14:31 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2011-08-09 23:14:31 +0000 |
commit | a306c2530354c1c02351c4cc02eefa53c8d23eac (patch) | |
tree | 85f473f0abb92a80a4a400a7c07eed79d83880bd /community/metapixel | |
parent | 5135b52f901206bbb365152084e82e92c120e0be (diff) |
Tue Aug 9 23:14:31 UTC 2011
Diffstat (limited to 'community/metapixel')
-rw-r--r-- | community/metapixel/PKGBUILD | 32 | ||||
-rw-r--r-- | community/metapixel/metapixel-1.0.2-libpng-1.5.patch | 174 |
2 files changed, 206 insertions, 0 deletions
diff --git a/community/metapixel/PKGBUILD b/community/metapixel/PKGBUILD new file mode 100644 index 000000000..056f40d52 --- /dev/null +++ b/community/metapixel/PKGBUILD @@ -0,0 +1,32 @@ +# $Id: PKGBUILD 53817 2011-08-08 13:44:50Z lfleischer $ +# Maintainer: Lukas Fleischer <archlinux at cryptocrack dot de> +# Contributor: Daniel Isenmann <daniel.isenmann [at] gmx [dot] de> + +pkgname=metapixel +pkgver=1.0.2 +pkgrel=2 +pkgdesc='A program for generating photomosaics.' +arch=('i686' 'x86_64') +url='http://www.complang.tuwien.ac.at/schani/metapixel/' +license=('GPL') +depends=('libungif' 'libjpeg' 'libpng' 'perl') +source=("http://www.complang.tuwien.ac.at/schani/metapixel/files/${pkgname}-${pkgver}.tar.gz" + 'metapixel-1.0.2-libpng-1.5.patch') +md5sums=('af5d77d38826756af213a08e3ada9941' + '1832a79790b07402735bfeb9f71f36e9') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + + sed -i 's/lgif/lungif/g' Makefile + sed -ie '58,58d' Makefile + + patch -p1 -i ../metapixel-1.0.2-libpng-1.5.patch + + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make PREFIX="${pkgdir}/usr" install +} diff --git a/community/metapixel/metapixel-1.0.2-libpng-1.5.patch b/community/metapixel/metapixel-1.0.2-libpng-1.5.patch new file mode 100644 index 000000000..ed787452f --- /dev/null +++ b/community/metapixel/metapixel-1.0.2-libpng-1.5.patch @@ -0,0 +1,174 @@ +--- metapixel-1.0.2.orig/rwimg/rwpng.c ++++ metapixel-1.0.2/rwimg/rwpng.c +@@ -57,19 +57,39 @@ + data->end_info = png_create_info_struct(data->png_ptr); + assert(data->end_info != 0); + ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ if (setjmp(png_jmpbuf((data->png_ptr)))) ++#else + if (setjmp(data->png_ptr->jmpbuf)) ++#endif + assert(0); + +- png_init_io(data->png_ptr, data->file); +- ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ png_init_io(data->png_ptr, data->file); ++ png_read_info(data->png_ptr, data->info_ptr); ++#else ++ png_init_io(data->png_ptr, data->file); + png_read_info(data->png_ptr, data->info_ptr); ++#endif + ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ *width = png_get_image_width(data->png_ptr, data->info_ptr); ++ *height = png_get_image_height(data->png_ptr, data->info_ptr); ++ { ++ png_byte value = png_get_bit_depth(data->png_ptr, data->info_ptr); ++ assert(value == 8 || value == 16); ++ value = png_get_color_type(data->png_ptr, data->info_ptr); ++ assert(value == PNG_COLOR_TYPE_RGB || value == PNG_COLOR_TYPE_RGB_ALPHA); ++ value = png_get_interlace_type(data->png_ptr, data->info_ptr); ++ assert(value == PNG_INTERLACE_NONE); ++ } ++#else + *width = data->info_ptr->width; + *height = data->info_ptr->height; +- + assert(data->info_ptr->bit_depth == 8 || data->info_ptr->bit_depth == 16); + assert(data->info_ptr->color_type == PNG_COLOR_TYPE_RGB || data->info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA); + assert(data->info_ptr->interlace_type == PNG_INTERLACE_NONE); ++#endif + + data->have_read = 0; + +@@ -81,32 +101,51 @@ + { + png_data_t *data = (png_data_t*)_data; + int i; +- int bps, spp; ++ int bps, spp, width; + unsigned char *row; + ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ ++ if (setjmp(png_jmpbuf((data->png_ptr)))) ++#else + if (setjmp(data->png_ptr->jmpbuf)) ++#endif + assert(0); + ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ if(png_get_color_type(data->png_ptr, data->info_ptr) == PNG_COLOR_TYPE_RGB) ++#else + if (data->info_ptr->color_type == PNG_COLOR_TYPE_RGB) ++#endif + spp = 3; + else + spp = 4; + ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ if(png_get_bit_depth(data->png_ptr, data->info_ptr) == 16) ++#else + if (data->info_ptr->bit_depth == 16) ++#endif + bps = 2; + else + bps = 1; + +- row = (unsigned char*)malloc(data->info_ptr->width * spp * bps); ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ width = png_get_image_width(data->png_ptr, data->info_ptr); ++#else ++ width = data->info_ptr->width: ++#endif ++ ++ row = (unsigned char*)malloc(width * spp * bps); + + for (i = 0; i < num_lines; ++i) + { + int j, channel; + + png_read_row(data->png_ptr, (png_bytep)row, 0); +- for (j = 0; j < data->info_ptr->width; ++j) ++ for (j = 0; j < width; ++j) + for (channel = 0; channel < 3; ++channel) +- lines[i * data->info_ptr->width * 3 + j * 3 + channel] = row[j * spp * bps + channel * bps]; ++ lines[i * width * 3 + j * 3 + channel] = row[j * spp * bps + channel * bps]; + } + + free(row); +@@ -119,7 +158,11 @@ + { + png_data_t *data = (png_data_t*)_data; + ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ if (setjmp(png_jmpbuf((data->png_ptr)))) ++#else + if (setjmp(data->png_ptr->jmpbuf)) ++#endif + assert(0); + + if (data->have_read) +@@ -148,7 +191,11 @@ + data->info_ptr = png_create_info_struct(data->png_ptr); + assert(data->info_ptr != 0); + ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ if (setjmp(png_jmpbuf((data->png_ptr)))) ++#else + if (setjmp(data->png_ptr->jmpbuf)) ++#endif + assert(0); + + if (pixel_stride == 4) +@@ -156,6 +203,16 @@ + + png_init_io(data->png_ptr, data->file); + ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ png_set_IHDR(data->png_ptr, data->info_ptr, ++ width, height, 8, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, ++ PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); ++ ++ /* Maybe does not need following. */ ++ png_set_tRNS(data->png_ptr, data->info_ptr, NULL, 0, NULL); ++ png_set_PLTE(data->png_ptr, data->info_ptr, NULL, 0); ++ png_set_invalid(data->png_ptr, data->info_ptr, 0); ++#else + data->info_ptr->width = width; + data->info_ptr->height = height; + data->info_ptr->valid = 0; +@@ -168,6 +225,7 @@ + data->info_ptr->compression_type = PNG_COMPRESSION_TYPE_DEFAULT; + data->info_ptr->filter_type = PNG_FILTER_TYPE_DEFAULT; + data->info_ptr->interlace_type = PNG_INTERLACE_NONE; ++#endif + + png_write_info(data->png_ptr, data->info_ptr); + +@@ -182,7 +240,11 @@ + png_data_t *data = (png_data_t*)_data; + int i; + ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ if (setjmp(png_jmpbuf((data->png_ptr)))) ++#else + if (setjmp(data->png_ptr->jmpbuf)) ++#endif + assert(0); + + for (i = 0; i < num_lines; ++i) +@@ -194,7 +256,11 @@ + { + png_data_t *data = (png_data_t*)_data; + ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ if (setjmp(png_jmpbuf((data->png_ptr)))) ++#else + if (setjmp(data->png_ptr->jmpbuf)) ++#endif + assert(0); + + png_write_end(data->png_ptr, data->info_ptr); |