head 1.1; access; symbols pkgsrc-2026Q1:1.1.0.120 pkgsrc-2026Q1-base:1.1 pkgsrc-2025Q4:1.1.0.118 pkgsrc-2025Q4-base:1.1 pkgsrc-2025Q3:1.1.0.116 pkgsrc-2025Q3-base:1.1 pkgsrc-2025Q2:1.1.0.114 pkgsrc-2025Q2-base:1.1 pkgsrc-2025Q1:1.1.0.112 pkgsrc-2025Q1-base:1.1 pkgsrc-2024Q4:1.1.0.110 pkgsrc-2024Q4-base:1.1 pkgsrc-2024Q3:1.1.0.108 pkgsrc-2024Q3-base:1.1 pkgsrc-2024Q2:1.1.0.106 pkgsrc-2024Q2-base:1.1 pkgsrc-2024Q1:1.1.0.104 pkgsrc-2024Q1-base:1.1 pkgsrc-2023Q4:1.1.0.102 pkgsrc-2023Q4-base:1.1 pkgsrc-2023Q3:1.1.0.100 pkgsrc-2023Q3-base:1.1 pkgsrc-2023Q2:1.1.0.98 pkgsrc-2023Q2-base:1.1 pkgsrc-2023Q1:1.1.0.96 pkgsrc-2023Q1-base:1.1 pkgsrc-2022Q4:1.1.0.94 pkgsrc-2022Q4-base:1.1 pkgsrc-2022Q3:1.1.0.92 pkgsrc-2022Q3-base:1.1 pkgsrc-2022Q2:1.1.0.90 pkgsrc-2022Q2-base:1.1 pkgsrc-2022Q1:1.1.0.88 pkgsrc-2022Q1-base:1.1 pkgsrc-2021Q4:1.1.0.86 pkgsrc-2021Q4-base:1.1 pkgsrc-2021Q3:1.1.0.84 pkgsrc-2021Q3-base:1.1 pkgsrc-2021Q2:1.1.0.82 pkgsrc-2021Q2-base:1.1 pkgsrc-2021Q1:1.1.0.80 pkgsrc-2021Q1-base:1.1 pkgsrc-2020Q4:1.1.0.78 pkgsrc-2020Q4-base:1.1 pkgsrc-2020Q3:1.1.0.76 pkgsrc-2020Q3-base:1.1 pkgsrc-2020Q2:1.1.0.72 pkgsrc-2020Q2-base:1.1 pkgsrc-2020Q1:1.1.0.52 pkgsrc-2020Q1-base:1.1 pkgsrc-2019Q4:1.1.0.74 pkgsrc-2019Q4-base:1.1 pkgsrc-2019Q3:1.1.0.70 pkgsrc-2019Q3-base:1.1 pkgsrc-2019Q2:1.1.0.68 pkgsrc-2019Q2-base:1.1 pkgsrc-2019Q1:1.1.0.66 pkgsrc-2019Q1-base:1.1 pkgsrc-2018Q4:1.1.0.64 pkgsrc-2018Q4-base:1.1 pkgsrc-2018Q3:1.1.0.62 pkgsrc-2018Q3-base:1.1 pkgsrc-2018Q2:1.1.0.60 pkgsrc-2018Q2-base:1.1 pkgsrc-2018Q1:1.1.0.58 pkgsrc-2018Q1-base:1.1 pkgsrc-2017Q4:1.1.0.56 pkgsrc-2017Q4-base:1.1 pkgsrc-2017Q3:1.1.0.54 pkgsrc-2017Q3-base:1.1 pkgsrc-2017Q2:1.1.0.50 pkgsrc-2017Q2-base:1.1 pkgsrc-2017Q1:1.1.0.48 pkgsrc-2017Q1-base:1.1 pkgsrc-2016Q4:1.1.0.46 pkgsrc-2016Q4-base:1.1 pkgsrc-2016Q3:1.1.0.44 pkgsrc-2016Q3-base:1.1 pkgsrc-2016Q2:1.1.0.42 pkgsrc-2016Q2-base:1.1 pkgsrc-2016Q1:1.1.0.40 pkgsrc-2016Q1-base:1.1 pkgsrc-2015Q4:1.1.0.38 pkgsrc-2015Q4-base:1.1 pkgsrc-2015Q3:1.1.0.36 pkgsrc-2015Q3-base:1.1 pkgsrc-2015Q2:1.1.0.34 pkgsrc-2015Q2-base:1.1 pkgsrc-2015Q1:1.1.0.32 pkgsrc-2015Q1-base:1.1 pkgsrc-2014Q4:1.1.0.30 pkgsrc-2014Q4-base:1.1 pkgsrc-2014Q3:1.1.0.28 pkgsrc-2014Q3-base:1.1 pkgsrc-2014Q2:1.1.0.26 pkgsrc-2014Q2-base:1.1 pkgsrc-2014Q1:1.1.0.24 pkgsrc-2014Q1-base:1.1 pkgsrc-2013Q4:1.1.0.22 pkgsrc-2013Q4-base:1.1 pkgsrc-2013Q3:1.1.0.20 pkgsrc-2013Q3-base:1.1 pkgsrc-2013Q2:1.1.0.18 pkgsrc-2013Q2-base:1.1 pkgsrc-2013Q1:1.1.0.16 pkgsrc-2013Q1-base:1.1 pkgsrc-2012Q4:1.1.0.14 pkgsrc-2012Q4-base:1.1 pkgsrc-2012Q3:1.1.0.12 pkgsrc-2012Q3-base:1.1 pkgsrc-2012Q2:1.1.0.10 pkgsrc-2012Q2-base:1.1 pkgsrc-2012Q1:1.1.0.8 pkgsrc-2012Q1-base:1.1 pkgsrc-2011Q4:1.1.0.6 pkgsrc-2011Q4-base:1.1 pkgsrc-2011Q3:1.1.0.4 pkgsrc-2011Q3-base:1.1 pkgsrc-2011Q2:1.1.0.2 pkgsrc-2011Q2-base:1.1; locks; strict; comment @// @; 1.1 date 2011.05.21.08.18.16; author obache; state Exp; branches; next ; desc @@ 1.1 log @* build fixes, libpng-1.5, and others. * set LICENSE * add user-destdir installation support. @ text @$NetBSD$ * fixes build with libpng>=1.5. --- src/images/Fl_Png.cpp.orig 2003-07-13 15:07:26.000000000 +0000 +++ src/images/Fl_Png.cpp @@@@ -18,17 +18,17 @@@@ bool setup_png_transformations(png_struc static void my_png_warning(png_structp png_ptr, png_const_charp message) { const char *name = "PNG: Unknown (WARNING!)"; - if (png_ptr != NULL && png_ptr->error_ptr != NULL) - name = (const char *)png_ptr->error_ptr; + if (png_ptr != NULL && png_get_error_ptr(png_ptr) != NULL) + name = (const char *)png_get_error_ptr(png_ptr); Fl::warning("%s: libpng warning: %s", name, message); } static void my_png_error(png_structp png_ptr, png_const_charp message) { png_last_error = (volatile char*)"PNG: Unknown (ERROR!)"; - if (png_ptr != NULL && png_ptr->error_ptr != NULL) + if (png_ptr != NULL && png_get_error_ptr(png_ptr) != NULL) png_last_error = (volatile char*)message; - longjmp(png_ptr->jmpbuf, 0); + png_longjmp(png_ptr, 0); } static bool png_is_valid_file(const char *filename) @@@@ -56,7 +56,7 @@@@ static bool png_is_valid_mem(const uint8 // PNG READ METHODS: static void read_data_fn(png_structp png_ptr, png_bytep d, png_size_t length) { - ((Fl_IO*)png_ptr->io_ptr)->read(d, length); + ((Fl_IO*)png_get_io_ptr(png_ptr))->read(d, length); } #define return_error() \ @@@@ -81,7 +81,7 @@@@ static bool png_create(Fl_IO &png_io, ui if(!end_info_ptr) { return_error(); } png_bytepp rows = 0; - if(setjmp(png_ptr->jmpbuf)) { + if(setjmp(png_jmpbuf(png_ptr))) { if(rows) free(rows); if(png_ptr) png_destroy_read_struct (&png_ptr, &info_ptr, &end_info_ptr); fputs((const char *)png_last_error, stderr); @@@@ -94,6 +94,8 @@@@ static bool png_create(Fl_IO &png_io, ui int i=0; uint32 Rmask=0, Gmask=0, Bmask=0, Amask=0; png_color_16 *transv=0; + png_colorp png_palette; + int png_num_palette; Fl_Colormap *palette=0; png_set_error_fn(png_ptr, (png_voidp)0, my_png_error, my_png_warning); @@@@ -108,15 +110,15 @@@@ static bool png_create(Fl_IO &png_io, ui Rmask = 0x000000FF; Gmask = 0x0000FF00; Bmask = 0x00FF0000; - Amask = (info_ptr->channels == 4) ? 0xFF000000 : 0; + Amask = (png_get_channels(png_ptr, info_ptr) == 4) ? 0xFF000000 : 0; #else - int s = (info_ptr->channels == 4) ? 0 : 8; + int s = (png_get_channels(png_ptr, info_ptr) == 4) ? 0 : 8; Rmask = 0xFF000000 >> s; Gmask = 0x00FF0000 >> s; Bmask = 0x0000FF00 >> s; Amask = 0x000000FF >> s; #endif - if(info_ptr->channels == 4) + if(png_get_channels(png_ptr, info_ptr) == 4) fmt.masktype = FL_MASK_ALPHA; } @@@@ -144,13 +146,13 @@@@ static bool png_create(Fl_IO &png_io, ui palette->colors[i].g = i; palette->colors[i].b = i; } - } else if(info_ptr->num_palette > 0 ) + } else if(png_get_PLTE(png_ptr, info_ptr, &png_palette, &png_num_palette) != 0 ) { - palette->ncolors = info_ptr->num_palette; - for( i=0; inum_palette; ++i ) { - palette->colors[i].b = info_ptr->palette[i].blue; - palette->colors[i].g = info_ptr->palette[i].green; - palette->colors[i].r = info_ptr->palette[i].red; + palette->ncolors = png_num_palette; + for( i=0; icolors[i].b = png_palette[i].blue; + palette->colors[i].g = png_palette[i].green; + palette->colors[i].r = png_palette[i].red; } } } @@@@ -178,10 +180,11 @@@@ bool setup_png_transformations(png_struc { int bit_depth, interlace_type, compression_type, filter_type; int channels; + png_uint_32 w, h; /* Get the image info */ png_get_IHDR(png_ptr, info_ptr, - (ulong*)&width, (ulong*)&height, + &w, &h, &bit_depth, &col_type, &interlace_type, @@@@ -191,10 +194,10 @@@@ bool setup_png_transformations(png_struc /* Extract multiple pixels with bit depths of 1, 2, and 4 from a single * byte into separate bytes (useful for paletted and grayscale images). */ - if (info_ptr->bit_depth < 8) + if (png_get_bit_depth(png_ptr, info_ptr) < 8) png_set_packing(png_ptr); /* tell libpng to strip 16 bit/color files down to 8 bits/color */ - else if (info_ptr->bit_depth == 16) + else if (png_get_bit_depth(png_ptr, info_ptr) == 16) png_set_strip_16(png_ptr) ; /* scale greyscale values to the range 0..255 */ @@@@ -234,7 +237,7 @@@@ bool setup_png_transformations(png_struc /* Update the info the reflect our transformations */ png_read_update_info(png_ptr, info_ptr); png_get_IHDR(png_ptr, info_ptr, - (ulong*)&width, (ulong*)&height, + &w, &h, &bit_depth, &col_type, &interlace_type, @@@@ -242,6 +245,8 @@@@ bool setup_png_transformations(png_struc &filter_type); channels = png_get_channels(png_ptr, info_ptr); bitspp = bit_depth*channels; + width = w; + height = h; if(channels < 1 || channels > 4) { return false; @@@@ -254,7 +259,7 @@@@ bool setup_png_transformations(png_struc // PNG WRITE METHODS: static void write_data_fn(png_structp png_ptr, png_bytep d, png_size_t length) { - ((Fl_IO*)png_ptr->io_ptr)->write(d, length); + ((Fl_IO*)png_get_io_ptr(png_ptr))->write(d, length); //png_io.write(d, length); } @@@@ -318,7 +323,7 @@@@ static bool png_write(Fl_IO &png_io, con bool allocated = false; uint8 *wr_data = (uint8*)data; - if(setjmp(png_ptr->jmpbuf)) { + if(setjmp(png_jmpbuf(png_ptr))) { if(png_ptr) png_destroy_write_struct(&png_ptr, &info_ptr); if(allocated && wr_data) free(wr_data); return false; @@@@ -373,7 +378,6 @@@@ static bool png_write(Fl_IO &png_io, con * PNG_INTERLACE_ADAM7, and the compression_type and filter_type MUST * currently be PNG_COMPRESSION_TYPE_BASE and PNG_FILTER_TYPE_BASE. REQUIRED */ - info_ptr->channels = wr_fmt->bytespp; png_set_IHDR(png_ptr, info_ptr, w, h, (wr_fmt->bitspp==1) == 1 ? 1 : 8 /* per channel */, @@@@ -385,9 +389,14 @@@@ static bool png_write(Fl_IO &png_io, con PNG_FILTER_TYPE_BASE ); - info_ptr->sig_bit.red = 8; - info_ptr->sig_bit.green = 8; - info_ptr->sig_bit.blue = 8; + png_color_8 sig_bit; + sig_bit.red = 8; + sig_bit.green = 8; + sig_bit.blue = 8; + if(wr_fmt->Amask) { + sig_bit.alpha = 8; + } + png_set_sBIT(png_ptr, info_ptr, &sig_bit); #if !WORDS_BIGENDIAN if(wr_fmt->bitspp==1) png_set_packswap(png_ptr); #endif @@@@ -418,10 +427,6 @@@@ static bool png_write(Fl_IO &png_io, con png_set_PLTE(png_ptr, info_ptr, palette, wr_fmt->palette->ncolors); } - if(wr_fmt->Amask) { - info_ptr->sig_bit.alpha = 8; - } - /* Write the file header information. REQUIRED */ png_write_info(png_ptr, info_ptr); @