diff options
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/xfig/files/patch-f_readpng.c | 47 | ||||
-rw-r--r-- | graphics/xfig/files/patch-f_wrpng.c | 19 |
2 files changed, 66 insertions, 0 deletions
diff --git a/graphics/xfig/files/patch-f_readpng.c b/graphics/xfig/files/patch-f_readpng.c new file mode 100644 index 000000000000..a2d96737b686 --- /dev/null +++ b/graphics/xfig/files/patch-f_readpng.c @@ -0,0 +1,47 @@ +--- f_readpng.c.orig ++++ f_readpng.c +@@ -73,7 +73,7 @@ read_png(FILE *file, int filetype, F_pic + } + + /* set long jump recovery here */ +- if (setjmp(png_ptr->jmpbuf)) { ++ if (setjmp(png_jmpbuf(png_ptr))) { + /* if we get here there was a problem reading the file */ + png_destroy_read_struct(&png_ptr, &info_ptr, &end_info); + close_picfile(file,filetype); +@@ -90,15 +90,17 @@ read_png(FILE *file, int filetype, F_pic + png_get_IHDR(png_ptr, info_ptr, &w, &h, &bit_depth, &color_type, + &interlace_type, &compression_type, &filter_type); + +- if (info_ptr->valid & PNG_INFO_gAMA) +- png_set_gamma(png_ptr, 2.2, info_ptr->gamma); +- else +- png_set_gamma(png_ptr, 2.2, 0.45); ++ png_fixed_point gamma = 0.45; ++ png_get_gAMA_fixed(png_ptr,info_ptr,&gamma); ++ png_set_gamma(png_ptr, 2.2, gamma); + +- if (info_ptr->valid & PNG_INFO_bKGD) ++ if (png_get_valid(png_ptr,info_ptr,PNG_INFO_bKGD)) { + /* set the background to the one supplied */ +- png_set_background(png_ptr, &info_ptr->background, ++ png_color_16p background; ++ png_get_bKGD(png_ptr,info_ptr,&background); ++ png_set_background(png_ptr, background, + PNG_BACKGROUND_GAMMA_FILE, 1, 1.0); ++ } + else { + /* blend the canvas background using the alpha channel */ + background.red = x_bg_color.red >> 8; +@@ -136,7 +138,11 @@ read_png(FILE *file, int filetype, F_pic + + if (png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette)) { + png_get_hIST(png_ptr, info_ptr, &histogram); ++#if PNG_LIBPNG_VER_MAJOR <= 1 && PNG_LIBPNG_VER_MINOR < 5 + png_set_dither(png_ptr, palette, num_palette, 256, histogram, 0); ++#else ++ png_set_quantize(png_ptr, palette, num_palette, 256, histogram, 0); ++#endif + } + } + if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { diff --git a/graphics/xfig/files/patch-f_wrpng.c b/graphics/xfig/files/patch-f_wrpng.c new file mode 100644 index 000000000000..7e516553fd68 --- /dev/null +++ b/graphics/xfig/files/patch-f_wrpng.c @@ -0,0 +1,19 @@ +--- f_wrpng.c.orig ++++ f_wrpng.c +@@ -20,6 +20,7 @@ + #include "w_msgpanel.h" + #include "w_setup.h" + #include <png.h> ++#include <zlib.h> + + /* + * Write PNG file from rgb data +@@ -59,7 +60,7 @@ write_png(FILE *file, unsigned char *dat + } + + /* set long jump recovery here */ +- if (setjmp(png_ptr->jmpbuf)) { ++ if (setjmp(png_jmpbuf(png_ptr))) { + /* if we get here there was a problem reading the file */ + png_destroy_write_struct(&png_ptr, &info_ptr); + return False; |