diff options
author | Mark Brand <mabrand@mabrand.nl> | 2011-03-03 20:50:15 (GMT) |
---|---|---|
committer | Mark Brand <mabrand@mabrand.nl> | 2011-03-03 20:50:15 (GMT) |
commit | f17155607ce7553e93585554581ccacefd893a13 (patch) | |
tree | 38aeb2910778f94c7457d7ca31d9841c600ef2ee | |
parent | c0aa9d9644f5e359acb822209e6ada247bd1ca4e (diff) | |
download | mxe-f17155607ce7553e93585554581ccacefd893a13.zip mxe-f17155607ce7553e93585554581ccacefd893a13.tar.gz mxe-f17155607ce7553e93585554581ccacefd893a13.tar.bz2 |
package libpano13: libpng 1.5 compatibility
-rw-r--r-- | src/libpano13-1-png.patch | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/src/libpano13-1-png.patch b/src/libpano13-1-png.patch new file mode 100644 index 0000000..7ce0174 --- /dev/null +++ b/src/libpano13-1-png.patch @@ -0,0 +1,102 @@ +This file is part of mingw-cross-env. +See doc/index.html for further information. + +https://bugs.launchpad.net/panotools/+bug/719076 +http://launchpadlibrarian.net/64361693/patch-png.c +$NetBSD: patch-png.c,v 1.1 2011/02/07 01:03:35 wiz Exp $ + +Fix build with png-1.5. + +--- a/png.c 2008-01-02 14:46:28.000000000 +0000 ++++ b/png.c +@@ -56,7 +56,7 @@ int writePNG( Image *im, fullPath *sfile + } + + /* set error handling */ +- if (setjmp(png_ptr->jmpbuf)) ++ if (setjmp(png_jmpbuf(png_ptr))) + { + /* If we get here, we had a problem reading the file */ + fclose(outfile); +@@ -68,14 +68,15 @@ int writePNG( Image *im, fullPath *sfile + png_init_io(png_ptr, outfile); + + FourToThreeBPP( im ); +- info_ptr->width = im->width; +- info_ptr->height = im->height; +- info_ptr->bit_depth = (im->bitsPerPixel > 32 ? 16 : 8); +- info_ptr->color_type = PNG_COLOR_TYPE_RGB; ++ png_set_IHDR(png_ptr, info_ptr, im->width, im->height, ++ (im->bitsPerPixel > 32 ? 16 : 8), PNG_COLOR_TYPE_RGB, ++ 0, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); ++ ++#if 0 + info_ptr->channels = (png_byte)(im->bitsPerPixel / info_ptr->bit_depth); + info_ptr->pixel_depth = (png_byte)(im->bitsPerPixel); + info_ptr->rowbytes = im->bytesPerLine; +- info_ptr->interlace_type= 0; ++#endif + + png_write_info(png_ptr, info_ptr); + +@@ -120,6 +121,7 @@ int readPNG ( Image *im, fullPath *sfile + png_bytep *row_pointers; + int row; + unsigned long dataSize; ++ int color_type; + + #ifdef __Mac__ + unsigned char the_pcUnixFilePath[256];//added by Kekus Digital +@@ -165,7 +167,7 @@ int readPNG ( Image *im, fullPath *sfile + } + + /* set error handling if you are using the setjmp/longjmp method */ +- if (setjmp(png_ptr->jmpbuf)) ++ if (setjmp(png_jmpbuf(png_ptr))) + { + /* Free all of the memory associated with the png_ptr and info_ptr */ + png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); +@@ -182,9 +184,10 @@ int readPNG ( Image *im, fullPath *sfile + /* read the file information */ + png_read_info(png_ptr, info_ptr); + +- if( info_ptr->color_type != PNG_COLOR_TYPE_RGB && +- info_ptr->color_type != PNG_COLOR_TYPE_PALETTE && +- info_ptr->color_type != PNG_COLOR_TYPE_RGB_ALPHA) ++ color_type = png_get_color_type(png_ptr, info_ptr); ++ if( color_type != PNG_COLOR_TYPE_RGB && ++ color_type != PNG_COLOR_TYPE_PALETTE && ++ color_type != PNG_COLOR_TYPE_RGB_ALPHA) + { + PrintError(" Only rgb images supported"); + png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); +@@ -194,24 +197,17 @@ int readPNG ( Image *im, fullPath *sfile + + + /* expand paletted colors into true RGB triplets */ +- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) ++ if (color_type == PNG_COLOR_TYPE_PALETTE) + png_set_expand(png_ptr); + + + SetImageDefaults( im ); + +- im->width = info_ptr->width; +- im->height = info_ptr->height; +- im->bytesPerLine = info_ptr->rowbytes; +- im->bitsPerPixel = info_ptr->pixel_depth; ++ im->width = png_get_image_width(png_ptr, info_ptr); ++ im->height = png_get_image_height(png_ptr, info_ptr); ++ im->bytesPerLine = png_get_rowbytes(png_ptr, info_ptr); + im->dataSize = im->height * im->bytesPerLine; +- if( im->bitsPerPixel == 24 ) +- dataSize = im->width * im->height * 4; +- else if( im->bitsPerPixel == 48 ) +- dataSize = im->width * im->height * 8; +- else +- dataSize = im->width * im->height * im->bitsPerPixel/8; +- ++ im->bitsPerPixel = 8 * im->bytesPerLine / im->width; + + im->data = (unsigned char**)mymalloc( (dataSize > im->dataSize ? dataSize : im->dataSize) ); + if( im->data == NULL ){ |