head 1.5; access; symbols pkgsrc-2026Q1:1.5.0.32 pkgsrc-2026Q1-base:1.5 pkgsrc-2025Q4:1.5.0.30 pkgsrc-2025Q4-base:1.5 pkgsrc-2025Q3:1.5.0.28 pkgsrc-2025Q3-base:1.5 pkgsrc-2025Q2:1.5.0.26 pkgsrc-2025Q2-base:1.5 pkgsrc-2025Q1:1.5.0.24 pkgsrc-2025Q1-base:1.5 pkgsrc-2024Q4:1.5.0.22 pkgsrc-2024Q4-base:1.5 pkgsrc-2024Q3:1.5.0.20 pkgsrc-2024Q3-base:1.5 pkgsrc-2024Q2:1.5.0.18 pkgsrc-2024Q2-base:1.5 pkgsrc-2024Q1:1.5.0.16 pkgsrc-2024Q1-base:1.5 pkgsrc-2023Q4:1.5.0.14 pkgsrc-2023Q4-base:1.5 pkgsrc-2023Q3:1.5.0.12 pkgsrc-2023Q3-base:1.5 pkgsrc-2023Q2:1.5.0.10 pkgsrc-2023Q2-base:1.5 pkgsrc-2023Q1:1.5.0.8 pkgsrc-2023Q1-base:1.5 pkgsrc-2022Q4:1.5.0.6 pkgsrc-2022Q4-base:1.5 pkgsrc-2022Q3:1.5.0.4 pkgsrc-2022Q3-base:1.5 pkgsrc-2022Q2:1.5.0.2 pkgsrc-2022Q2-base:1.5 pkgsrc-2022Q1:1.3.0.88 pkgsrc-2022Q1-base:1.3 pkgsrc-2021Q4:1.3.0.86 pkgsrc-2021Q4-base:1.3 pkgsrc-2021Q3:1.3.0.84 pkgsrc-2021Q3-base:1.3 pkgsrc-2021Q2:1.3.0.82 pkgsrc-2021Q2-base:1.3 pkgsrc-2021Q1:1.3.0.80 pkgsrc-2021Q1-base:1.3 pkgsrc-2020Q4:1.3.0.78 pkgsrc-2020Q4-base:1.3 pkgsrc-2020Q3:1.3.0.76 pkgsrc-2020Q3-base:1.3 pkgsrc-2020Q2:1.3.0.72 pkgsrc-2020Q2-base:1.3 pkgsrc-2020Q1:1.3.0.52 pkgsrc-2020Q1-base:1.3 pkgsrc-2019Q4:1.3.0.74 pkgsrc-2019Q4-base:1.3 pkgsrc-2019Q3:1.3.0.70 pkgsrc-2019Q3-base:1.3 pkgsrc-2019Q2:1.3.0.68 pkgsrc-2019Q2-base:1.3 pkgsrc-2019Q1:1.3.0.66 pkgsrc-2019Q1-base:1.3 pkgsrc-2018Q4:1.3.0.64 pkgsrc-2018Q4-base:1.3 pkgsrc-2018Q3:1.3.0.62 pkgsrc-2018Q3-base:1.3 pkgsrc-2018Q2:1.3.0.60 pkgsrc-2018Q2-base:1.3 pkgsrc-2018Q1:1.3.0.58 pkgsrc-2018Q1-base:1.3 pkgsrc-2017Q4:1.3.0.56 pkgsrc-2017Q4-base:1.3 pkgsrc-2017Q3:1.3.0.54 pkgsrc-2017Q3-base:1.3 pkgsrc-2017Q2:1.3.0.50 pkgsrc-2017Q2-base:1.3 pkgsrc-2017Q1:1.3.0.48 pkgsrc-2017Q1-base:1.3 pkgsrc-2016Q4:1.3.0.46 pkgsrc-2016Q4-base:1.3 pkgsrc-2016Q3:1.3.0.44 pkgsrc-2016Q3-base:1.3 pkgsrc-2016Q2:1.3.0.42 pkgsrc-2016Q2-base:1.3 pkgsrc-2016Q1:1.3.0.40 pkgsrc-2016Q1-base:1.3 pkgsrc-2015Q4:1.3.0.38 pkgsrc-2015Q4-base:1.3 pkgsrc-2015Q3:1.3.0.36 pkgsrc-2015Q3-base:1.3 pkgsrc-2015Q2:1.3.0.34 pkgsrc-2015Q2-base:1.3 pkgsrc-2015Q1:1.3.0.32 pkgsrc-2015Q1-base:1.3 pkgsrc-2014Q4:1.3.0.30 pkgsrc-2014Q4-base:1.3 pkgsrc-2014Q3:1.3.0.28 pkgsrc-2014Q3-base:1.3 pkgsrc-2014Q2:1.3.0.26 pkgsrc-2014Q2-base:1.3 pkgsrc-2014Q1:1.3.0.24 pkgsrc-2014Q1-base:1.3 pkgsrc-2013Q4:1.3.0.22 pkgsrc-2013Q4-base:1.3 pkgsrc-2013Q3:1.3.0.20 pkgsrc-2013Q3-base:1.3 pkgsrc-2013Q2:1.3.0.18 pkgsrc-2013Q2-base:1.3 pkgsrc-2013Q1:1.3.0.16 pkgsrc-2013Q1-base:1.3 pkgsrc-2012Q4:1.3.0.14 pkgsrc-2012Q4-base:1.3 pkgsrc-2012Q3:1.3.0.12 pkgsrc-2012Q3-base:1.3 pkgsrc-2012Q2:1.3.0.10 pkgsrc-2012Q2-base:1.3 pkgsrc-2012Q1:1.3.0.8 pkgsrc-2012Q1-base:1.3 pkgsrc-2011Q4:1.3.0.6 pkgsrc-2011Q4-base:1.3 pkgsrc-2011Q3:1.3.0.4 pkgsrc-2011Q3-base:1.3 pkgsrc-2011Q2:1.3.0.2 pkgsrc-2011Q2-base:1.3 pkgsrc-2011Q1:1.2.0.2 pkgsrc-2011Q1-base:1.2 pkgsrc-2010Q4:1.1.1.1.0.60 pkgsrc-2010Q4-base:1.1.1.1 pkgsrc-2010Q3:1.1.1.1.0.58 pkgsrc-2010Q3-base:1.1.1.1 pkgsrc-2010Q2:1.1.1.1.0.56 pkgsrc-2010Q2-base:1.1.1.1 pkgsrc-2010Q1:1.1.1.1.0.54 pkgsrc-2010Q1-base:1.1.1.1 pkgsrc-2009Q4:1.1.1.1.0.52 pkgsrc-2009Q4-base:1.1.1.1 pkgsrc-2009Q3:1.1.1.1.0.50 pkgsrc-2009Q3-base:1.1.1.1 pkgsrc-2009Q2:1.1.1.1.0.48 pkgsrc-2009Q2-base:1.1.1.1 pkgsrc-2009Q1:1.1.1.1.0.46 pkgsrc-2009Q1-base:1.1.1.1 pkgsrc-2008Q4:1.1.1.1.0.44 pkgsrc-2008Q4-base:1.1.1.1 pkgsrc-2008Q3:1.1.1.1.0.42 pkgsrc-2008Q3-base:1.1.1.1 cube-native-xorg:1.1.1.1.0.40 cube-native-xorg-base:1.1.1.1 pkgsrc-2008Q2:1.1.1.1.0.38 pkgsrc-2008Q2-base:1.1.1.1 cwrapper:1.1.1.1.0.36 pkgsrc-2008Q1:1.1.1.1.0.34 pkgsrc-2008Q1-base:1.1.1.1 pkgsrc-2007Q4:1.1.1.1.0.32 pkgsrc-2007Q4-base:1.1.1.1 pkgsrc-2007Q3:1.1.1.1.0.30 pkgsrc-2007Q3-base:1.1.1.1 pkgsrc-2007Q2:1.1.1.1.0.28 pkgsrc-2007Q2-base:1.1.1.1 pkgsrc-2007Q1:1.1.1.1.0.26 pkgsrc-2007Q1-base:1.1.1.1 pkgsrc-2006Q4:1.1.1.1.0.24 pkgsrc-2006Q4-base:1.1.1.1 pkgsrc-2006Q3:1.1.1.1.0.22 pkgsrc-2006Q3-base:1.1.1.1 pkgsrc-2006Q2:1.1.1.1.0.20 pkgsrc-2006Q2-base:1.1.1.1 pkgsrc-2006Q1:1.1.1.1.0.18 pkgsrc-2006Q1-base:1.1.1.1 pkgsrc-2005Q4:1.1.1.1.0.16 pkgsrc-2005Q4-base:1.1.1.1 pkgsrc-2005Q3:1.1.1.1.0.14 pkgsrc-2005Q3-base:1.1.1.1 pkgsrc-2005Q2:1.1.1.1.0.12 pkgsrc-2005Q2-base:1.1.1.1 pkgsrc-2005Q1:1.1.1.1.0.10 pkgsrc-2005Q1-base:1.1.1.1 pkgsrc-2004Q4:1.1.1.1.0.8 pkgsrc-2004Q4-base:1.1.1.1 pkgsrc-2004Q3:1.1.1.1.0.6 pkgsrc-2004Q3-base:1.1.1.1 pkgsrc-2004Q2:1.1.1.1.0.4 pkgsrc-2004Q2-base:1.1.1.1 pkgsrc-2004Q1:1.1.1.1.0.2 pkgsrc-2004Q1-base:1.1.1.1 pkgsrc-base:1.1.1.1 TNF:1.1.1; locks; strict; comment @# @; 1.5 date 2022.04.24.10.57.28; author tnn; state Exp; branches; next 1.4; commitid vutGeKJE6Bm9vrBD; 1.4 date 2022.04.23.20.44.01; author tnn; state dead; branches; next 1.3; commitid EUGRUXsiwOelMmBD; 1.3 date 2011.07.05.03.27.22; author dholland; state Exp; branches; next 1.2; 1.2 date 2011.01.14.10.55.42; author wiz; state Exp; branches; next 1.1; 1.1 date 2004.01.26.11.36.38; author jmmv; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2004.01.26.11.36.38; author jmmv; state Exp; branches; next ; desc @@ 1.5 log @revive fxtv, was told it can be used as a composite video viewer @ text @$NetBSD: patch-ae,v 1.3 2011/07/05 03:27:22 dholland Exp $ Support png screenshots. Fix LP64 problems. --- imgsav.c.orig 1999-09-26 14:35:06.000000000 +0000 +++ imgsav.c @@@@ -29,6 +29,8 @@@@ /* ******************** Include Files ************** */ +#include +#include #include #include #include @@@@ -137,7 +139,7 @@@@ static void TVIMGSAVFmtScanline24bpp( break; default: fprintf( stderr, - "TVIMGSAVFmtScanline24bpp: Unsupported Bpp %ld\n", + "TVIMGSAVFmtScanline24bpp: Unsupported Bpp %d\n", img->pix_geom.Bpp ); exit(1); } @@@@ -146,7 +148,7 @@@@ static void TVIMGSAVFmtScanline24bpp( if (( !img->pix_geom.swap_shorts ) && ( img->pix_geom.Bpp == 4 )) pix = (pix >> 16) | (pix << 16); - if ( !img->pix_geom.swap_bytes ) + if ( !img->pix_geom.swap_bytes ) { if ( img->pix_geom.Bpp == 3 ) pix = ((pix & 0x00FF0000) >> 16) | ((pix & 0x000000FF) << 16); @@@@ -155,6 +157,7 @@@@ static void TVIMGSAVFmtScanline24bpp( ((pix & 0x00FF0000) << 8) | ((pix & 0x0000FF00) >> 8) | ((pix & 0x000000FF) << 8); + } pix = SHIFT_AND_MASK( pix, shf[0], msk[0] ) | SHIFT_AND_MASK( pix, shf[1], msk[1] ) | @@@@ -216,7 +219,7 @@@@ void TVIMGSAVDoSaveTIFF( char filename[] #endif if ( TIFFScanlineSize(out) != linebytes ) { - fprintf( stderr, "Linebytes mismatch: TIFF says %ld, we say %ld\n", + fprintf( stderr, "Linebytes mismatch: TIFF says %d, we say %d\n", TIFFScanlineSize(out), linebytes ); exit(1); } @@@@ -254,6 +257,96 @@@@ void TVIMGSAVDoSaveTIFF( char filename[] } +void TVIMGSAVDoSavePNG( char filename[], TV_IMAGE *img ) +{ + char errmsg[160]; + png_structp png_ptr; + png_infop info_ptr; + FILE *out; + TV_INT32 linebytes, + y, + pass, + compon; + TV_UINT8 *buf; + + buf = NULL; + if ( img->pix_geom.type != TV_PIXELTYPE_RGB ) { + fprintf( stderr, "Attempt to save non-RGB data as TIFF\n" ); + exit(1); + } + + /* Open output file */ + if ( (out = fopen( filename, "wb" )) == NULL ) { + sprintf( errmsg, "Can't open output file '%s'", filename ); + XUTILDialogPause( TVTOPLEVEL, "Error", errmsg, TV_DIALOG_TYPE_OK ); + return; + } + + /* Create PNG data structures and initialize */ + png_ptr = png_create_write_struct + (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if (!png_ptr) { + sprintf( errmsg, "Can't create PNG write structure" ); + XUTILDialogPause( TVTOPLEVEL, "Error", errmsg, TV_DIALOG_TYPE_OK ); + return; + } + info_ptr = png_create_info_struct(png_ptr); + if (!info_ptr) { + png_destroy_write_struct(&png_ptr, NULL); + sprintf( errmsg, "Can't create PNG info structure" ); + XUTILDialogPause( TVTOPLEVEL, "Error", errmsg, TV_DIALOG_TYPE_OK ); + return; + } + + if (setjmp(png_jmpbuf(png_ptr))) { + fprintf( stderr, "PNG write error\n" ); + XBell( TVDISPLAY, 100 ); + png_destroy_write_struct( &png_ptr, &info_ptr ); + free( buf ); + fclose( out ); + unlink( filename ); + return; + } + png_init_io(png_ptr, out); + /* fast compression */ + png_set_compression_level(png_ptr, Z_BEST_SPEED); + + /* Setup image format info (chunks) */ + png_set_IHDR(png_ptr, info_ptr, img->geom.w, img->geom.h, + TV_BITS_PER_COMP, PNG_COLOR_TYPE_RGB /* XXX: ? */, + PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, + PNG_FILTER_TYPE_DEFAULT); + /* and write it */ + png_write_info(png_ptr, info_ptr); + /* flush image out every 50 rows */ + png_set_flush(png_ptr, 50); + + linebytes = img->geom.w * TV_BYTES_PER_PIX; + + if ( (buf = malloc( linebytes )) == NULL ) + TVUTILOutOfMemory(); + + /* Convert & write the image data */ + for ( pass = 0; pass < 1; pass++ ) { + compon = DoRed | DoGreen | DoBlue; + for ( y = 0; y < img->geom.h; y++ ) { + + /* Format scanline */ + TVIMGSAVFmtScanline24bpp( img, y, compon, buf ); + + /* And write it in PNG */ + png_write_row(png_ptr, buf); + } + } + + /* All done. Close up shop and go home */ + png_write_end(png_ptr, NULL); + png_destroy_write_struct(&png_ptr, &info_ptr); + fclose(out); + free( buf ); +} + + void TVIMGSAVDoSavePPM( char filename[], TV_IMAGE *img ) { static char *S_fp_buf = NULL; @@@@ -288,7 +381,7 @@@@ void TVIMGSAVDoSavePPM( char filename[], out = stdout; /* Write binary PPM header */ - fprintf( out, "P6\n%ld %ld\n%d\n", img->geom.w, img->geom.h, + fprintf( out, "P6\n%d %d\n%d\n", img->geom.w, img->geom.h, (1 << TV_BITS_PER_COMP) - 1 ); linebytes = img->geom.w * TV_BYTES_PER_PIX; @@@@ -408,6 +501,9 @@@@ void TVIMGSAVDoSave( char filename[], TV } TVIMGSAVDoSaveTIFF( filename, img ); break; + case TV_STILL_FMT_PNG : + TVIMGSAVDoSavePNG ( filename, img ); break; + case TV_STILL_FMT_PPM : TVIMGSAVDoSavePPM ( filename, img ); break; @ 1.4 log @multimedia/fxtv: remove Analog PAL/NTSC television broadcasts have ended in most of the world. This is this unlikely to be usable any more. https://en.wikipedia.org/wiki/Digital_television_transition @ text @@ 1.3 log @Patch LP64 problems, add patch comments, fix some pkglint. This may or may not fully run on LP64 platforms but it's much more likely to now than previously. @ text @d1 1 a1 1 $NetBSD: patch-ae,v 1.2 2011/01/14 10:55:42 wiz Exp $ @ 1.2 log @Fix build with png-1.5. @ text @d1 1 a1 1 $NetBSD: patch-ae,v 1.1.1.1 2004/01/26 11:36:38 jmmv Exp $ d4 1 d17 36 a52 1 @@@@ -254,6 +256,96 @@@@ void TVIMGSAVDoSaveTIFF( char filename[] d149 10 a158 1 @@@@ -408,6 +500,9 @@@@ void TVIMGSAVDoSave( char filename[], TV @ 1.1 log @Initial revision @ text @d1 1 a1 1 $NetBSD: patch-ae,v 1.5 2002/12/21 11:10:01 wiz Exp $ d3 3 a5 1 --- imgsav.c.orig Sun Sep 26 16:35:06 1999 d7 1 a7 1 @@@@ -29,6 +29,7 @@@@ d12 1 d16 1 a16 1 @@@@ -254,6 +255,96 @@@@ void TVIMGSAVDoSaveTIFF( char filename[] d113 1 a113 2 @@@@ -407,6 +498,9 @@@@ void TVIMGSAVDoSave( char filename[], TV exit(1); d116 1 a116 1 + d119 1 a119 1 d122 1 @ 1.1.1.1 log @Move fxtv to the new multimedia category (coming from graphics). This is version 1.03nb4. @ text @@