diff options
Diffstat (limited to 'graphics/netpbm/patches/patch-bp')
-rw-r--r-- | graphics/netpbm/patches/patch-bp | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/graphics/netpbm/patches/patch-bp b/graphics/netpbm/patches/patch-bp new file mode 100644 index 00000000000..4d68010221b --- /dev/null +++ b/graphics/netpbm/patches/patch-bp @@ -0,0 +1,174 @@ +--- /dev/null Thu Oct 16 09:27:24 1997 ++++ ./pnm/pnmsmooth.c Sun Aug 13 00:21:29 1995 +@@ -0,0 +1,171 @@ ++/* pnmsmooth.c - smooth out an image by replacing each pixel with the ++** average of its width x height neighbors. ++** ++** Version 2.0 December 5, 1994 ++** ++** Copyright (C) 1994 by Mike Burns (burns@chem.psu.edu) ++** ++** Permission to use, copy, modify, and distribute this software and its ++** documentation for any purpose and without fee is hereby granted, provided ++** that the above copyright notice appear in all copies and that both that ++** copyright notice and this permission notice appear in supporting ++** documentation. This software is provided "as is" without express or ++** implied warranty. ++*/ ++ ++/* Version 2.0 - December 5, 1994 ++** ------------------------------ ++** Rewrote as a C program that accepts a few options instead of a shell ++** script with no options. ++** ++*/ ++ ++#include "pnm.h" ++#include <sys/wait.h> ++ ++#define TRUE 1 ++#define FALSE 0 ++ ++int ++main( argc, argv ) ++ int argc; ++ char* argv[]; ++ { ++ FILE *cofp; ++ char *tempfn; ++ char *pnmfn; ++ int argn; ++ int col, row; ++ int format, forceplain; ++ int cols, rows; ++ int newmaxval; /* normally xelval, but want int here */ ++ xelval g; ++ xel *outputrow; ++ int pid, status; ++ int DUMPFLAG = FALSE; ++ char *usage = "[-size width height] [-dump dumpfile] [pnmfile]"; ++ ++ pnm_init( &argc, argv ); ++ ++ /* set up defaults */ ++ cols = 3; ++ rows = 3; ++ format = PGM_FORMAT; ++ forceplain = 1; ++ pnmfn = (char *) 0; /* initialize to NULL just in case */ ++ ++ argn = 1; ++ while ( argn < argc && argv[argn][0] == '-' && argv[argn][1] != '\0' ) ++ { ++ if ( pm_keymatch( argv[argn], "-size", 2 ) ) ++ { ++ ++argn; ++ if ( argn+1 >= argc ) ++ { ++ pm_message( "incorrect number of arguments for -size option" ); ++ pm_usage( usage ); ++ } ++ else if ( argv[argn][0] == '-' || argv[argn+1][0] == '-' ) ++ { ++ pm_message( "invalid arguments to -size option: %s %s", ++ argv[argn], argv[argn+1] ); ++ pm_usage( usage ); ++ } ++ if ( (cols = atoi(argv[argn])) == 0 ) ++ pm_error( "invalid width size specification: %s", argv[argn] ); ++ ++argn; ++ if ( (rows = atoi(argv[argn])) == 0 ) ++ pm_error( "invalid height size specification: %s",argv[argn] ); ++ if ( cols % 2 != 1 || rows % 2 != 1 ) ++ pm_error( "the convolution matrix must have an odd number of rows and columns" ); ++ } ++ else if ( pm_keymatch( argv[argn], "-dump", 2 ) ) ++ { ++ ++argn; ++ if ( argn >= argc ) ++ { ++ pm_message( "missing argument to -dump option" ); ++ pm_usage( usage ); ++ } ++ else if ( argv[argn][0] == '-' ) ++ { ++ pm_message( "invalid argument to -dump option: %s", ++ argv[argn] ); ++ pm_usage( usage ); ++ } ++ cofp = pm_openw( argv[argn] ); ++ DUMPFLAG = TRUE; ++ } ++ else ++ pm_usage( usage ); ++ ++argn; ++ } ++ ++ /* Only get file name if given on command line to pass through to ++ ** pnmconvol. If filename is coming from stdin, pnmconvol will read it. ++ */ ++ if ( argn < argc ) ++ { ++ pnmfn = argv[argn]; ++ ++argn; ++ } ++ ++ if ( argn != argc ) ++ pm_usage( usage ); ++ ++ ++ if ( !DUMPFLAG ) ++ { ++ if ( (tempfn = tmpnam((char *) 0)) == NULL ) ++ pm_error( "could not create temporary file name" ); ++ if ( (cofp = pm_openw(tempfn)) == NULL ) ++ pm_error( "could not create temporary convolution file" ); ++ } ++ ++ /* Generate mean value for all pixels in convolution matrix. */ ++ g = rows * cols + 1; ++ ++ /* Make sure newmaxval is not larger than PNM_MAXMAXVAL or else ++ ** newmaxval will overrun its defined data size and become garbage. ++ */ ++ newmaxval = ( rows * cols ) * 2; ++ if ( newmaxval > PNM_MAXMAXVAL ) ++ pm_error( "generated maxval is too large: %d", newmaxval ); ++ ++ pnm_writepnminit( cofp, cols, rows, newmaxval, format, forceplain ); ++ outputrow = pnm_allocrow( cols ); ++ ++ for ( row = 0; row < rows; ++ row ) ++ { ++ for ( col = 0; col < cols; ++col ) ++ PNM_ASSIGN1( outputrow[col], g ); ++ pnm_writepnmrow( cofp, outputrow, cols, newmaxval, format, forceplain ); ++ } ++ pm_close( cofp ); ++ pnm_freerow( outputrow ); ++ ++ /* If we're only going to dump the file, now is the time to stop. */ ++ if ( DUMPFLAG ) ++ exit( 0 ); ++ ++ /* fork a child process */ ++ if ( (pid = fork()) < 0 ) ++ pm_error( "fork" ); ++ ++ /* child process executes following code */ ++ if ( pid == 0 ) ++ { ++ /* If pnmfile name is not given on command line, then pnmfn will be ++ ** (char *) 0 and the arglist will terminate there. ++ */ ++ execlp( "pnmconvol", "pnmconvol", tempfn, pnmfn, (char *) 0 ); ++ pm_error( "error executing pnmconvol command" ); ++ } ++ ++ /* wait for child to finish */ ++ while ( wait(&status) != pid ) ++ ; ++ ++ unlink( tempfn ); ++ exit( 0 ); ++ } |