summaryrefslogtreecommitdiff
path: root/graphics/autotrace
diff options
context:
space:
mode:
authorwiz <wiz>2011-02-07 00:37:53 +0000
committerwiz <wiz>2011-02-07 00:37:53 +0000
commit3990e4c3660fb55ddc23fa8a934adf90d944c408 (patch)
tree6f4cf55e9df5d7c1798ee048edbd48df7a7b3c4b /graphics/autotrace
parent73517d187c3c81b49c63df72d215c125d871e912 (diff)
downloadpkgsrc-3990e4c3660fb55ddc23fa8a934adf90d944c408.tar.gz
Fix build with png-1.5.
Upstream should come up with a better fix though.
Diffstat (limited to 'graphics/autotrace')
-rw-r--r--graphics/autotrace/distinfo3
-rw-r--r--graphics/autotrace/patches/patch-input-png.c95
2 files changed, 97 insertions, 1 deletions
diff --git a/graphics/autotrace/distinfo b/graphics/autotrace/distinfo
index be42a2dcbdf..f7acda5c38c 100644
--- a/graphics/autotrace/distinfo
+++ b/graphics/autotrace/distinfo
@@ -1,5 +1,6 @@
-$NetBSD: distinfo,v 1.7 2005/02/24 08:45:03 agc Exp $
+$NetBSD: distinfo,v 1.8 2011/02/07 00:37:53 wiz Exp $
SHA1 (autotrace-0.31.1.tar.gz) = 679e4912528030b86f23db5b99e60f8e7df883fd
RMD160 (autotrace-0.31.1.tar.gz) = 9d008c6c519da7e006cb83ae6012f4d9e4e8b0ba
Size (autotrace-0.31.1.tar.gz) = 362718 bytes
+SHA1 (patch-input-png.c) = 9c19beb3c8d2f9afa9b51cead8a9fe49e72106f1
diff --git a/graphics/autotrace/patches/patch-input-png.c b/graphics/autotrace/patches/patch-input-png.c
new file mode 100644
index 00000000000..b2a3a595086
--- /dev/null
+++ b/graphics/autotrace/patches/patch-input-png.c
@@ -0,0 +1,95 @@
+$NetBSD: patch-input-png.c,v 1.1 2011/02/07 00:37:54 wiz Exp $
+
+Fix build with png-1.5.
+
+--- input-png.c.orig 2002-10-10 20:44:14.000000000 +0000
++++ input-png.c
+@@ -42,17 +42,17 @@ static png_bytep * read_png(png_structp
+
+ static void handle_warning(png_structp png, const at_string message) {
+ LOG1("PNG warning: %s", message);
+- at_exception_warning((at_exception_type *)png->error_ptr,
++ at_exception_warning((at_exception_type *)png_get_error_ptr(png),
+ message);
+- /* at_exception_fatal((at_exception_type *)at_png->error_ptr,
++ /* at_exception_fatal((at_exception_type *)png_get_error_ptr(at_png),
+ "PNG warning"); */
+ }
+
+ static void handle_error(png_structp png, const at_string message) {
+ LOG1("PNG error: %s", message);
+- at_exception_fatal((at_exception_type *)png->error_ptr,
++ at_exception_fatal((at_exception_type *)png_get_error_ptr(png),
+ message);
+- /* at_exception_fatal((at_exception_type *)at_png->error_ptr,
++ /* at_exception_fatal((at_exception_type *)png_get_error_ptr(at_png),
+ "PNG error"); */
+
+ }
+@@ -106,7 +106,8 @@ static int load_image(at_bitmap_type *im
+ png_init_io(png, stream);
+ CHECK_ERROR();
+
+- rows = read_png(png, info, opts);
++ png_read_png(png, info, PNG_TRANSFORM_STRIP_16 | PNG_TRANSFORM_PACKING | PNG_TRANSFORM_EXPAND, 0);
++ rows = png_get_rows(png, info);
+
+ width = (unsigned short)png_get_image_width(png, info);
+ height = (unsigned short)png_get_image_height(png, info);
+@@ -145,56 +146,3 @@ at_bitmap_type input_png_reader(at_strin
+
+ return image;
+ }
+-
+-static png_bytep *
+-read_png(png_structp png_ptr, png_infop info_ptr, at_input_opts_type * opts)
+-{
+- int row;
+- png_color_16p original_bg;
+- png_color_16 my_bg;
+-
+- png_read_info(png_ptr, info_ptr);
+-
+- png_set_strip_16(png_ptr);
+- png_set_packing(png_ptr);
+- if ((png_ptr->bit_depth < 8) ||
+- (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) ||
+- (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)))
+- png_set_expand(png_ptr);
+-
+- if (png_get_bKGD(png_ptr, info_ptr, &original_bg)) {
+- /* Fill transparent region with ... */
+- my_bg.index = 0;
+-
+- if (opts && opts->background_color) {
+- my_bg.red = 256 * opts->background_color->r;
+- my_bg.green = 256 * opts->background_color->g;
+- my_bg.blue = 256 * opts->background_color->b;
+- my_bg.gray = 256* ((opts->background_color->r
+- + opts->background_color->g
+- + opts->background_color->b) / 3);
+- } else
+- /* else, use white */
+- my_bg.red = my_bg.green = my_bg.blue = my_bg.gray = 0xFFFF;
+-
+- png_set_background(png_ptr, &my_bg,
+- PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
+- } else
+- png_set_strip_alpha(png_ptr);
+- png_read_update_info(png_ptr, info_ptr);
+-
+-
+- info_ptr->row_pointers = (png_bytepp)png_malloc(png_ptr,
+- info_ptr->height * sizeof(png_bytep));
+-#ifdef PNG_FREE_ME_SUPPORTED
+- info_ptr->free_me |= PNG_FREE_ROWS;
+-#endif
+- for (row = 0; row < (int)info_ptr->height; row++)
+- info_ptr->row_pointers[row] = (png_bytep)png_malloc(png_ptr,
+- png_get_rowbytes(png_ptr, info_ptr));
+-
+- png_read_image(png_ptr, info_ptr->row_pointers);
+- info_ptr->valid |= PNG_INFO_IDAT;
+- png_read_end(png_ptr, info_ptr);
+- return png_get_rows(png_ptr, info_ptr);
+-}