head 1.3; access; symbols pkgsrc-2026Q1:1.3.0.122 pkgsrc-2026Q1-base:1.3 pkgsrc-2025Q4:1.3.0.120 pkgsrc-2025Q4-base:1.3 pkgsrc-2025Q3:1.3.0.118 pkgsrc-2025Q3-base:1.3 pkgsrc-2025Q2:1.3.0.116 pkgsrc-2025Q2-base:1.3 pkgsrc-2025Q1:1.3.0.114 pkgsrc-2025Q1-base:1.3 pkgsrc-2024Q4:1.3.0.112 pkgsrc-2024Q4-base:1.3 pkgsrc-2024Q3:1.3.0.110 pkgsrc-2024Q3-base:1.3 pkgsrc-2024Q2:1.3.0.108 pkgsrc-2024Q2-base:1.3 pkgsrc-2024Q1:1.3.0.106 pkgsrc-2024Q1-base:1.3 pkgsrc-2023Q4:1.3.0.104 pkgsrc-2023Q4-base:1.3 pkgsrc-2023Q3:1.3.0.102 pkgsrc-2023Q3-base:1.3 pkgsrc-2023Q2:1.3.0.100 pkgsrc-2023Q2-base:1.3 pkgsrc-2023Q1:1.3.0.98 pkgsrc-2023Q1-base:1.3 pkgsrc-2022Q4:1.3.0.96 pkgsrc-2022Q4-base:1.3 pkgsrc-2022Q3:1.3.0.94 pkgsrc-2022Q3-base:1.3 pkgsrc-2022Q2:1.3.0.92 pkgsrc-2022Q2-base:1.3 pkgsrc-2022Q1:1.3.0.90 pkgsrc-2022Q1-base:1.3 pkgsrc-2021Q4:1.3.0.88 pkgsrc-2021Q4-base:1.3 pkgsrc-2021Q3:1.3.0.86 pkgsrc-2021Q3-base:1.3 pkgsrc-2021Q2:1.3.0.84 pkgsrc-2021Q2-base:1.3 pkgsrc-2021Q1:1.3.0.82 pkgsrc-2021Q1-base:1.3 pkgsrc-2020Q4:1.3.0.80 pkgsrc-2020Q4-base:1.3 pkgsrc-2020Q3:1.3.0.78 pkgsrc-2020Q3-base:1.3 pkgsrc-2020Q2:1.3.0.74 pkgsrc-2020Q2-base:1.3 pkgsrc-2020Q1:1.3.0.54 pkgsrc-2020Q1-base:1.3 pkgsrc-2019Q4:1.3.0.76 pkgsrc-2019Q4-base:1.3 pkgsrc-2019Q3:1.3.0.72 pkgsrc-2019Q3-base:1.3 pkgsrc-2019Q2:1.3.0.70 pkgsrc-2019Q2-base:1.3 pkgsrc-2019Q1:1.3.0.68 pkgsrc-2019Q1-base:1.3 pkgsrc-2018Q4:1.3.0.66 pkgsrc-2018Q4-base:1.3 pkgsrc-2018Q3:1.3.0.64 pkgsrc-2018Q3-base:1.3 pkgsrc-2018Q2:1.3.0.62 pkgsrc-2018Q2-base:1.3 pkgsrc-2018Q1:1.3.0.60 pkgsrc-2018Q1-base:1.3 pkgsrc-2017Q4:1.3.0.58 pkgsrc-2017Q4-base:1.3 pkgsrc-2017Q3:1.3.0.56 pkgsrc-2017Q3-base:1.3 pkgsrc-2017Q2:1.3.0.52 pkgsrc-2017Q2-base:1.3 pkgsrc-2017Q1:1.3.0.50 pkgsrc-2017Q1-base:1.3 pkgsrc-2016Q4:1.3.0.48 pkgsrc-2016Q4-base:1.3 pkgsrc-2016Q3:1.3.0.46 pkgsrc-2016Q3-base:1.3 pkgsrc-2016Q2:1.3.0.44 pkgsrc-2016Q2-base:1.3 pkgsrc-2016Q1:1.3.0.42 pkgsrc-2016Q1-base:1.3 pkgsrc-2015Q4:1.3.0.40 pkgsrc-2015Q4-base:1.3 pkgsrc-2015Q3:1.3.0.38 pkgsrc-2015Q3-base:1.3 pkgsrc-2015Q2:1.3.0.36 pkgsrc-2015Q2-base:1.3 pkgsrc-2015Q1:1.3.0.34 pkgsrc-2015Q1-base:1.3 pkgsrc-2014Q4:1.3.0.32 pkgsrc-2014Q4-base:1.3 pkgsrc-2014Q3:1.3.0.30 pkgsrc-2014Q3-base:1.3 pkgsrc-2014Q2:1.3.0.28 pkgsrc-2014Q2-base:1.3 pkgsrc-2014Q1:1.3.0.26 pkgsrc-2014Q1-base:1.3 pkgsrc-2013Q4:1.3.0.24 pkgsrc-2013Q4-base:1.3 pkgsrc-2013Q3:1.3.0.22 pkgsrc-2013Q3-base:1.3 pkgsrc-2013Q2:1.3.0.20 pkgsrc-2013Q2-base:1.3 pkgsrc-2013Q1:1.3.0.18 pkgsrc-2013Q1-base:1.3 pkgsrc-2012Q4:1.3.0.16 pkgsrc-2012Q4-base:1.3 pkgsrc-2012Q3:1.3.0.14 pkgsrc-2012Q3-base:1.3 pkgsrc-2012Q2:1.3.0.12 pkgsrc-2012Q2-base:1.3 pkgsrc-2012Q1:1.3.0.10 pkgsrc-2012Q1-base:1.3 pkgsrc-2011Q4:1.3.0.8 pkgsrc-2011Q4-base:1.3 pkgsrc-2011Q3:1.3.0.6 pkgsrc-2011Q3-base:1.3 pkgsrc-2011Q2:1.3.0.4 pkgsrc-2011Q2-base:1.3 pkgsrc-2011Q1:1.3.0.2 pkgsrc-2011Q1-base:1.3 pkgsrc-2010Q4:1.2.0.70 pkgsrc-2010Q4-base:1.2 pkgsrc-2010Q3:1.2.0.68 pkgsrc-2010Q3-base:1.2 pkgsrc-2010Q2:1.2.0.66 pkgsrc-2010Q2-base:1.2 pkgsrc-2010Q1:1.2.0.64 pkgsrc-2010Q1-base:1.2 pkgsrc-2009Q4:1.2.0.62 pkgsrc-2009Q4-base:1.2 pkgsrc-2009Q3:1.2.0.60 pkgsrc-2009Q3-base:1.2 pkgsrc-2009Q2:1.2.0.58 pkgsrc-2009Q2-base:1.2 pkgsrc-2009Q1:1.2.0.56 pkgsrc-2009Q1-base:1.2 pkgsrc-2008Q4:1.2.0.54 pkgsrc-2008Q4-base:1.2 pkgsrc-2008Q3:1.2.0.52 pkgsrc-2008Q3-base:1.2 cube-native-xorg:1.2.0.50 cube-native-xorg-base:1.2 pkgsrc-2008Q2:1.2.0.48 pkgsrc-2008Q2-base:1.2 cwrapper:1.2.0.46 pkgsrc-2008Q1:1.2.0.44 pkgsrc-2008Q1-base:1.2 pkgsrc-2007Q4:1.2.0.42 pkgsrc-2007Q4-base:1.2 pkgsrc-2007Q3:1.2.0.40 pkgsrc-2007Q3-base:1.2 pkgsrc-2007Q2:1.2.0.38 pkgsrc-2007Q2-base:1.2 pkgsrc-2007Q1:1.2.0.36 pkgsrc-2007Q1-base:1.2 pkgsrc-2006Q4:1.2.0.34 pkgsrc-2006Q4-base:1.2 pkgsrc-2006Q3:1.2.0.32 pkgsrc-2006Q3-base:1.2 pkgsrc-2006Q2:1.2.0.30 pkgsrc-2006Q2-base:1.2 pkgsrc-2006Q1:1.2.0.28 pkgsrc-2006Q1-base:1.2 pkgsrc-2005Q4:1.2.0.26 pkgsrc-2005Q4-base:1.2 pkgsrc-2005Q3:1.2.0.24 pkgsrc-2005Q3-base:1.2 pkgsrc-2005Q2:1.2.0.22 pkgsrc-2005Q2-base:1.2 pkgsrc-2005Q1:1.2.0.20 pkgsrc-2005Q1-base:1.2 pkgsrc-2004Q4:1.2.0.18 pkgsrc-2004Q4-base:1.2 pkgsrc-2004Q3:1.2.0.16 pkgsrc-2004Q3-base:1.2 pkgsrc-2004Q2:1.2.0.14 pkgsrc-2004Q2-base:1.2 pkgsrc-2004Q1:1.2.0.12 pkgsrc-2004Q1-base:1.2 pkgsrc-2003Q4:1.2.0.10 pkgsrc-2003Q4-base:1.2 netbsd-1-6-1:1.2.0.6 netbsd-1-6-1-base:1.2 netbsd-1-6:1.2.0.8 netbsd-1-6-RELEASE-base:1.2 pkgviews:1.2.0.4 pkgviews-base:1.2 buildlink2:1.2.0.2 buildlink2-base:1.2 netbsd-1-5-PATCH003:1.2 netbsd-1-5-PATCH001:1.1; locks; strict; comment @# @; 1.3 date 2011.01.15.19.16.00; author tron; state Exp; branches; next 1.2; 1.2 date 2002.03.15.03.25.57; author fredb; state Exp; branches; next 1.1; 1.1 date 2001.03.26.21.49.00; author fredb; state Exp; branches; next ; desc @@ 1.3 log @Fix build with png-1.5. @ text @$NetBSD$ Fix build with png-1.5. --- src/png.c.orig 1998-11-21 14:55:13.000000000 +0000 +++ src/png.c 2011-01-15 19:09:09.000000000 +0000 @@@@ -78,8 +78,8 @@@@ Pixmap do_png(char *data, long len, long *wp, long *hp) { - png_struct p_str; - png_info p_info; + png_struct *p_str = NULL; + png_info *p_info = NULL; Pixmap pixmap; FILE *volatile vol_fp = NULL; void *volatile vol_pic = NULL; @@@@ -98,7 +98,11 @@@@ return None; } - if (setjmp(p_str.jmpbuf)) + if ((p_str = (png_struct *) png_create_read_struct(PNG_LIBPNG_VER_STRING, + NULL, NULL, NULL))) + p_info = (png_info *) png_create_info_struct(p_str); + + if (p_str && p_info && setjmp(png_jmpbuf(p_str))) ArtTextAddLine(main_widgets.text, "[knews: png error.]", ascii_font->body_font, global.alert_pixel); else { @@@@ -107,59 +111,63 @@@@ int did; unsigned int per_line = 0; unsigned int i, j, pass; + png_color_16p background; + png_byte color_type; + png_colorp palette; + int num_palette; + + png_init_io(p_str, vol_fp); + png_read_info(p_str, p_info); + + vol_w = w = png_get_image_width(p_str, p_info); + vol_h = h = png_get_image_height(p_str, p_info); + + if (png_get_bit_depth(p_str, p_info) == 16) + png_set_strip_16(p_str); + else if (png_get_bit_depth(p_str, p_info) < 8) + png_set_packing(p_str); - png_read_init(&p_str); - png_info_init(&p_info); - - png_init_io(&p_str, vol_fp); - png_read_info(&p_str, &p_info); - - vol_w = w = p_info.width; - vol_h = h = p_info.height; - - if (p_info.bit_depth == 16) - png_set_strip_16(&p_str); - else if (p_info.bit_depth < 8) - png_set_packing(&p_str); - - if (p_info.valid & PNG_INFO_bKGD) - png_set_background(&p_str, &p_info.background, + if (png_get_bKGD(p_str, p_info, &background) & PNG_INFO_bKGD) + png_set_background(p_str, background, PNG_BACKGROUND_GAMMA_FILE, True, 1.0); else { static png_color_16 bg = {0, }; - png_set_background(&p_str, &bg, + png_set_background(p_str, &bg, PNG_BACKGROUND_GAMMA_SCREEN, False, 1.0); } per_line = w; - if (!(p_info.color_type & PNG_COLOR_MASK_COLOR)) { /* grey image */ + color_type = png_get_color_type(p_str, p_info); + if (!(color_type & PNG_COLOR_MASK_COLOR)) { /* grey image */ grey = True; - png_set_expand(&p_str); + png_set_expand(p_str); } else if (!p_cmap) { /* true color visual */ - if (p_info.color_type == PNG_COLOR_TYPE_PALETTE) - png_set_expand(&p_str); + if (color_type == PNG_COLOR_TYPE_PALETTE) + png_set_expand(p_str); per_line *= 3; - } else if (p_info.color_type & PNG_COLOR_MASK_PALETTE) { + } else if (color_type & PNG_COLOR_MASK_PALETTE && + png_get_PLTE(p_str, p_info, + &palette, &num_palette) & PNG_INFO_PLTE) { CMAP_ENTRY *pal; int i, pn; - pn = p_info.num_palette; + pn = num_palette; pal = (CMAP_ENTRY *)XtMalloc(pn * sizeof *pal); for (i = 0 ; i < pn ; i++) { - pal[i].r = p_info.palette[i].red; - pal[i].g = p_info.palette[i].green; - pal[i].b = p_info.palette[i].blue; + pal[i].r = palette[i].red; + pal[i].g = palette[i].green; + pal[i].b = palette[i].blue; } vol_pal = pal; vol_pn = pn; } else { - png_set_dither(&p_str, p_cmap, cmap_size, - cmap_size, NULL, True); + png_set_quantize(p_str, p_cmap, cmap_size, + cmap_size, NULL, True); } - pass = png_set_interlace_handling(&p_str); - png_start_read_image(&p_str); + pass = png_set_interlace_handling(p_str); + png_start_read_image(p_str); vol_pic = pic = (unsigned char *)XtMalloc(h * per_line); @@@@ -167,14 +175,14 @@@@ for (i = 0 ; i < pass ; i++) { row = pic; for (j = 0 ; j < h ; j++) { - png_read_row(&p_str, NULL, row); + png_read_row(p_str, NULL, row); if (!did) vol_did = did = True; row += per_line; } } - png_read_end(&p_str, NULL); + png_read_end(p_str, NULL); } if (!vol_did) @@@@ -204,7 +212,10 @@@@ } } - png_read_destroy(&p_str, &p_info, NULL); + if (p_info) + png_destroy_read_struct(&p_str, &p_info, NULL); + else + png_destroy_read_struct(&p_str, NULL, NULL); fclose((FILE *)vol_fp); XtFree((char *)vol_pic); XtFree((char *)vol_pal); @ 1.2 log @Remove a stray semi-colon. The bug might have led to the program coring when viewing PNG's in low-memory situations. @ text @d1 1 a1 1 $NetBSD: patch-bd,v 1.1 2001/03/26 21:49:00 fredb Exp $ d3 4 a6 2 --- src/png.c.orig Sat Nov 21 08:55:13 1998 +++ src/png.c d31 2 a32 1 @@@@ -108,58 +112,55 @@@@ d35 15 d56 1 a56 3 + png_init_io(p_str, vol_fp); + png_read_info(p_str, p_info); d59 1 a59 3 + vol_w = w = p_info->width; + vol_h = h = p_info->height; d64 1 a64 5 + if (p_info->bit_depth == 16) + png_set_strip_16(p_str); + else if (p_info->bit_depth < 8) + png_set_packing(p_str); d67 2 a68 2 + if (p_info->valid & PNG_INFO_bKGD) + png_set_background(p_str, &p_info->background, d80 2 a81 1 + if (!(p_info->color_type & PNG_COLOR_MASK_COLOR)) { /* grey image */ d88 1 a88 1 + if (p_info->color_type == PNG_COLOR_TYPE_PALETTE) d92 3 a94 1 + } else if (p_info->color_type & PNG_COLOR_MASK_PALETTE) { d99 1 a99 1 + pn = p_info->num_palette; d105 3 a107 3 + pal[i].r = p_info->palette[i].red; + pal[i].g = p_info->palette[i].green; + pal[i].b = p_info->palette[i].blue; d113 3 a115 2 + png_set_dither(p_str, p_cmap, cmap_size, cmap_size, NULL, True); d125 1 a125 1 @@@@ -167,14 +168,14 @@@@ d142 1 a142 1 @@@@ -204,7 +205,10 @@@@ @ 1.1 log @Update do_png() to no longer use the deprecated "libpng" functions. "knews" was dumping core when trying to display a PNG image inline, and now it doesn't. Note: "Ctl-P" for UU encoded PNG's is a no-op (unrelated problem). You'll need to have a message with a properly mime-encoded PNG image in order to see do_png() go to work. @ text @d1 1 a1 1 $NetBSD$ d22 1 a22 1 + NULL, NULL, NULL))); @